描述
<h3 style="line-height:1.8;">* 1、项目功能介绍</h3>
<hr>
<p style="line-height:1.8;">通过磁编码器检测旋转角度,通过can、usart控制步进电机旋转</p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*2、项目属性</h3>
<hr>
<p style="line-height:1.8;"><span style="color:#000000;font-size:14px;">首次公开,原创</span></p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">* 3、开源协议</h3>
<hr>
<p style="line-height:1.8;">GPL 3.0 </p>
<p> </p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*4、硬件部分</h3>
<hr>
<p style="line-height:1.8;"><span style="color:#000000;font-size:14px;">大部分元件放置在顶层,推荐使用加热台进行焊接,底层的mt6701磁编码器推荐在测试完电机驱动没问题后在焊;板子安装时,四个螺孔与42步进电机之间各垫高3mm、半径3mm的塑料空心圆柱;对于can的120欧(R6)终端电阻,如果can总线上已经有了两个120终端电阻就不用焊</span></p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*5、软件部分</h3>
<hr>
<p style="line-height:1.8;">can和usart控制的功能相同,只是各自约定的协议不同;软件模块化了,方便移植;can自拟了极简版本的canopen协议,使用也可以自行制定通信协议</p>
<p style="line-height:1.8;">电机控制采用定时器级联的发送,TIM1输出PWM,通过控制PWM频率实现控速的效果;TIM3的时钟源是TIM1的更新事件,通过调节TIM3的自动重装值可以实现控制旋转角度。</p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><img src="https://image.lceda.cn/oshwhub/pullImage/bc52922eaf684255a8e668b5f1a376f8.png" alt="bc52922eaf684255a8e668b5f1a376f8.png"></p>
<p style="line-height:1.8;">StepperMotor文件存放控制电机的最底层代码;</p>
<p style="line-height:1.8;">MT6701用于获取电机角度(0°到360°)的函数;</p>
<p style="line-height:1.8;">soft_ring是一个极简的用于对环形缓存区进行操作的文件,包括初始化、字节写/读、数据块写/读等;</p>
<p style="line-height:1.8;">task_can存放can通信的任务,包括发送和对can的接收缓存区进行解析的函数的入口;</p>
<p style="line-height:1.8;">task_usart存放usart通信的任务,包括发送和对usart的接收缓存区进行解析的函数的入口;</p>
<p style="line-height:1.8;">task_motor存放根据接收的数据控制步进电机的任务(所有对步进电机的操作都从这里进入);</p>
<p style="line-height:1.8;">task_sensor存放传感器的任务,主要是从mt6701磁传感器获取当前角度;</p>
<p style="line-height:1.8;">CanOpen存放canopen协议相关的函数,同时存放有对can的接收缓存区进行解析的函数;</p>
<p style="line-height:1.8;">Serial存放对usart的接收缓存区进行解析的函数;</p>
<p style="line-height:1.8;"> </p>
<div>
<div> (节点编号1(默认,可以更改))</div>
<div> 串口波特率115200</div>
<div> (小端字节序)</div>
<div> 串口接收格式:0xAA+0x55+数据的长度(uint8_t)+数据+CRC16校验低8位+CRC16校验高8位+0x0D+0x0A</div>
<div> 数据格式: 0x42('B')+每步的细分值(uint8_t)</div>
<div> (范围:8,16,32,64)</div>
<div> (发送其它范围的,回发“Viol1xxx”(x:三位节点编号))</div>
<div> 0x53('S')+旋转速度(int32_t)</div>
<div> (精度是三位小数)</div>
<div> (速度变化不要过大,否则会丢步、停转)</div>
<div> (接收的是原始数据放大1000倍后的结果,例如想要设置旋转为90 °/s,则发送时是发送90000)</div>
<div> (范围[-7*360,约-27.466/每步的细分值]并[约27.466/每步的细分值,7*360] °/s)</div>
<div> (发送0,回发“Viol2xxx”(x:三位节点编号))</div>
<div> 0x4c('L')+旋转圈数(int16\_t)</div>
<div> (范围(-32768,32767]圈)</div>
<div> (完成后返回"AnGetxxx"(xxx:三位节点编号))</div>
<div> 0x41('A')+旋转角度(int32\_t)</div>
<div> (完成后返回"AnGetxxx"(xxx:三位节点编号))</div>
<div> (精度是四位小数)</div>
<div> (接收的是原始数据放大10000倍后的结果,例如想要设置旋转90°,则发送时是发送900000)</div>
<div> (范围\[-360,360] °)</div>
<div> 0x52('R')+电机的驱动的开/关(uint8\_t)</div>
<div> (范围:0关,1开)</div>
<div> (发送其它范围的,回发“Viol0xxx”(x:三位节点编号))</div>
<div> 0x4f('O')+0x41('A')</div>
<div> (代表获取当前角度,会返回一个扩大100后的角度,如返回0x28 0x23,实际是90.00°)</div>
<div> 旋转方向由旋转角度、旋转圈数和旋转速度的符号决定,决定方向的优先级:旋转角度的符号>旋转圈数的符号>旋转速度的符号</div>
<br>
<div> CAN通信波特率500k bit/s</div>
<div> (小端字节序)</div>
<div> </div>
<div> 写速度 90000(90°/s) 发送SDO 0x600+节点编号 23 10 10 00 90 5F 01 00 返回SDO 0x580+节点编号 60 10 10 00 00 00 00 00</div>
<div> (注释同上,但是错误回发 SDO中止码 0x0609 0020)</div>
<div> 写圈数 5(圈) 发送SDO 0x600+节点编号 2B 11 10 00 05 00 00 00 返回SDO 0x580+节点编号 60 11 10 00 00 00 00 00</div>
<div> (注释同上,完成后返回"AnGetxxx"(xxx:三位节点编号))</div>
<div> 写角度 900000(90°) 发送SDO 0x600+节点编号 23 12 10 00 A0 BB 0D 00 返回SDO 0x580+节点编号 60 12 10 00 00 00 00 00</div>
<div> (注释同上,完成后返回"AnGetxxx"(xxx:三位节点编号))</div>
<div> 写细分 8 发送SDO 0x600+节点编号 2F 13 10 00 08 00 00 00 返回SDO 0x580+节点编号 60 13 10 00 00 00 00 00</div>
<div> (注释同上,但是错误回发 SDO中止码 0x0609 0000)</div>
<div> 写驱动 开 发送SDO 0x600+节点编号 2F 14 10 00 01 00 00 00 返回SDO 0x580+节点编号 60 14 10 00 00 00 00 00</div>
<div> (注释同上,但是错误回发 SDO中止码 0x0609 0000)</div>
<div> 读当前角度 90° 发送SDO 0x600+节点编号 40 15 10 00 00 00 00 00 返回SDO 0x580+节点编号 43 15 10 00 28 23 00 00 和 0x180+节点编号 28 23</div>
<div> (注释同上,返回角度)</div>
<br>
<div>注意:有些条件下的状况未测试,只测试了基本功能</div>
</div>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*6、BOM清单</h3>
<hr>
<p style="line-height:1.8;"><img src="https://image.lceda.cn/oshwhub/pullImage/5fc7dc0e517b4587a718c4cab4894438.png" alt="" width="1200" height="670"></p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*7、大赛LOGO验证</h3>
<hr>
<p style="line-height:1.8;"><img src="https://image.lceda.cn/oshwhub/pullImage/f6b0b1d4d77e478a95e25217d5cb8477.jpg" alt="" width="1200" height="1200"></p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">* 8、演示您的项目并录制成视频上传</h3>
<hr>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><span style="font-size:14px;"><a href="/posts/42551e8f2f2548cabc1c36626a42da94" target="_blank">前往查看更多详情 ></a></span></p>
<p style="line-height:1.8;"> </p>
-
video_20251017_230713.mp4
-
立创电赛:《单路步进电机开环控制板(带角度反馈)》-usart通信.mp4
-
立创电赛:《单路步进电机开环控制板(带角度反馈)》-can通信.mp4
评论(0)