寻迹小车 FollowMe―― 之六:电机驱动部分调试 写于: 星期一 04 九月 @ 03:29:59 |
电机驱动部分程序已全部编完,进入实际调试阶段,为了便于调试,在PC机上编写了一个测试程序,以实现发送PWM控制值、转速控制值,以及设置PWM频率、PID参数,使调试的过程更方便。 寻迹小车 FollowMe ―― 之六:电机驱动部分调试 作者:Hanker 前面的章节: 6.2 电机驱动模块调试 6.2.1 调试前准备电机驱动部分程序已全部编完,进入实际调试阶段,为了便于调试,在PC机上编写了一个测试程序,以实现发送PWM控制值、转速控制值,以及设置PWM频率、PID参数,使调试的过程更方便。 由于电机驱动部分支持了转速测量的功能,为了在调试中能直观的看到转速的变化,增加一个读转速命令,命令帧格式如下: 返回帧为: 其中: PC机调试界面如下: 按下“读取”按钮后程序每秒读一次速度值并显示,再按则停止读取。 在单片机程序中也要加入相应的程序。见程序附件。
利用上述程序实现了参数设置和转速读取的功能,但是对于小车这类移动性的应用,使用有线的方式通讯将给调试带来困难,因为小车自身重量和动力都有限,如果拖上一根通讯电缆,将影响小车的运动,使得调试时观察的结果大打折扣。而且运动范围也受到影响,可能无法实现调试的目的,因为小车还没有运动到稳态就被电缆拖住了。 所以上述调试软件如果要切实发挥作用,还必须有一个无线的信道,而且要是使用串口的,否则单片机很难支持(或者要花费较大精力),成本还不能高。 正巧找到了一个低价的无线收发模块,加了一片单片机控制,构成了一个无线串口转换器。这个转换器对于通讯的双方而言是“透明”的,与原来有线通讯一样,只是中间有些延时。 因为目前笔记本电脑很少有串口了,所以在这个转发器上设计了USB转串口的功能,提供一个TTL电平的串口,这一方面为无线转发器接入PC提供了方便,另一方面为STC12系列单片机提供了一个USB口的ISP(在线编程器),为那些没有串口的PC机学习者提供了方便。 串口无线转发器的功能示意如下: 作为STC12系列单片机ISP(在线编程)使用如下:(点击看大图) 对于PC机侧,使用USB口入(在PC机内虚拟为一个串口,程序按串口控制),无线出。对于单片机(小车)侧,使用TTL电平串口信号入,无线出。 目前所做的转发器为固定波特率,串口为 19200bps 8 N1,无线为19200bps。因为使用的也是STC12系列单片机控制,所以修改很方便,自身的USB转换器就可以为自己编程。 这个串口无线转发器对于调试移动类的机器人项目应当很有帮助,拿最常见的轨迹项目来说,如果能在调试时不断返回小车的速度、控制状态、采集的信号,我想调试者也不用一次次盲目地改变参数。在走线失败的情况下,也不至于靠猜测的原因来修改程序了。 6.2.2 调试步骤
R5 = 10k, R6 = 33k 根据信号的幅度(2.52 +/- 0.6V)可以将比较器的回差定为0.3V,即输入上升时大于2.8V、下降时小于2.2V时输出发生翻转。 根据上限计算:R7 = 14.39k ―〉15k, 因为上下分压电阻的差异,所以导致不对称,同样的电阻,对上限的作用小,下限的作用大,用适当抬高判断的中心值来弥补,即将R6 改为43k, R7 选用 43k,根据这个值计算出实际的上下限为: 上限 = 2.78V ; 下限 = 2.28V 基本符合所期望的值。 上图中蓝色为输入波形,黄色为比较器输出波形(U5 的1脚),即输入到单片机的信号。注意两道蓝色横线所对应的电平,上面一根电压为2.92V,对应输入信号上升的转换点(即上限),下面一根电压为2.28V,对应输入信号下降的转换点(即下限),和前面的计算基本一致。(输入中的蓝色毛刺信号可能是测量时接触不良带来的,也可能是电机的干扰)。 6.2.3.2 电机PWM控制调试因为衡量PWM的效果需要测量速度,而测速时出现以下问题: 在测量转速中发现,转速有跳变的现象,结合上面的波形分析,估计是毛刺干扰造成,应当在设计硬件时加以防护,目前硬件已做好,且是表贴器件,不易加装滤波元件,故考虑用软件消除。 从波形上可以看出,毛刺通常为负尖脉冲,影响正跳边沿。所以考虑:
但是,程序修改后效果仍不理想,用示波器观察后发现,电机在高速转动时带来的干扰很大,而且所用的两个电机干扰还不同,一个略好,这可能与所用电机的电刷质量有关,我目前所用的是奥迪291系列玩具遥控车的电机,工作电压3V,可能性能一般。基于这个情况,我只能将调试的大概情况汇总一下,抛砖引玉,供日后有意尝试者参考。 测量的转速波动见前面的PC调试界面。 PWM控制的效果汇总如下:
由于直行会很快遇到障碍物,来不及测量、观察,所以采用了单轮转动模式测量,这样可以在原地不动。调试时使用了无线串口转换器,效果很好。 从图中可以看出,这样的结构有些累赘,正好有个大学生基于这篇文章设计了一个方案,使用一片MCU实现完整的小车寻迹,所有电路在一片PCB上,单片机仍然使用的是STC12C5412AD,我觉得这样更合理,所以准备着手基于这个方案继续,完成小车寻迹功能。而前面所做的电机驱动器可以用在一些要扩充电机驱动能力和改善电机驱动的场合,如增加RCX的驱动能力,或者让RCX能够驱动非LEGO电机等。 因为目前的转速测量存在问题,PID转速控制暂时无法调试,待转速测量问题解决后再进行。 6.3 补白以上调试的纪录主要目的是为了能让有意学习者了解如何去实施,需要什么手段?应该如何着手?遇到问题该如何处理?那段输入采样电路的计算、调试过程本打算忽略,但我尝试问了一下周围的大学生,很遗憾。所以我还是详细的记录了这个过程,希望能够帮助学习者了解理论、实践的关系,学会分析问题。 当然,如果是以小车的性能为核心目标,那不妨尝试使用无刷直流电机。 程序在调试中做了多处修改,望及时更新,以免前面的Bug产生误导。 附件: 由于文章是分开多节上传到网站上,为了方便大家讨论,请把相关的问题集中在这个帖子上,这样可以方便作者回答大家的问题,谢谢! |
共2条
1/1 1 跳转至页
寻迹小车 FollowMe―― 之六:电机驱动部分调试
只看楼主 1楼
关键词: 寻迹 小车 FollowMe 之六 电机 驱动 部
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |