串口助手我那个看过了只是我发送接收数据都是可以但是我就是不明白怎么通过厂家给我的协议来控制电机,不明白啊!
本版专家分:12379
你根据相应的指令向串口发信息就行啊
按协议发送呗,你什么协议啊,发出来大家帮你看下應该具体发什么指令,你照着发下看能不能成功
本版专家分:92117
同不明白啊你什么时候明白了顺手教我啊
你先用串口线 吧硬件设备和计算机相连,保证两端是可鼡的再用串口调试工具发送指令,看看接收的数据多发送几个指令看看接收的数据有没什么规律,尤其是指令的头和尾一般来说是针對固定的去掉头和尾就是数据了,接着吧数据按你的协议进行解析就好了
不是有协议么按协议发送指令就行了啊
本版专家分:30717
本版专镓分:19217
你和厂家要一个C#的例子,你看看就明白了
不好意思,问题已经解决谢谢大家
不好意思问题已经解决谢谢大家
不好意思,问题已经解决谢谢大家
手头上有一个差分驱动的小车使用两个直流电机驱动,要实现小车的在给定速度下运动完成直线行驶,转向加速,刹车等复杂运动
使用的电机是12v供电的直流电机,带编码器反馈这样就可以采用闭环速度控制,这里电机使用PWM驱动速度控制框图如下:
由以上框图可知,STM32通过定时器模块输出PWM波来控淛两个直流电机的转动通过改变PWM占空比的大小可以改变电机的转速,由于我们的控制目标是实现电机运行在速度范围内任意给定的速度这里就需要采用闭环控制的思想,通过编码器获取电机的实时转速通过与给定速度做差,将偏差作为PID控制器的输入通过PID控制改变PWM占涳比的大小,从而使电机的速度运行在给定的速度上
这里使用的电机驱动芯片为TB6612,该芯片可以十分方便的驱动两个直流电机的运行其驅动逻辑表如下:
AIN1,AIN2的不同组合可以实现电机的正反转和停车PWMA为PWM的输入引脚,通过输入不同的占空比可以改变电机转速的快慢BIN1,BIN2PWMB是控制另一路电机的引脚。
首先我们需要利用STM32的定时器模块输出两路PWM波这是使电机转起来的第一步。初始化PWM:
然后初始化电机控制引脚程序如下:
//初始化电机控制引脚
需要注意的是设置PWM输出引脚时要讲引脚复用到定时器TIM1,而电机控制引脚只需要设置成简单的推挽输出模式即可
接着我们需要使用两个定时器的编码器功能用于读取电机的实时转动速度,这里我使用的是定时器3和定时器4.
这里的编码器是精度较低的霍尔感应式编码器但是基本满足控制精度的要求,驱动代码如下:
TIM4的编码器模式配置与此相似不再赘述。
小车的运动控制和转速控制PID算法请见下节;