5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 771|回复: 1
打印 上一主题 下一主题

(雷傲知识堂)【转帖】如何实现电机双向转数控制

[复制链接]
跳转到指定楼层
楼主
发表于 2016-10-30 22:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 alden 于 2017-2-7 14:10 编辑

如何实现电机双向转数控制?这篇文章或许会给你一些启发
在一次聚会时,一个玩模型的好友让我帮忙给他的儿子改装遥控汽车(可以坐小孩的那种)。听他的描述,他自己做的小车是用继电器控制前进和后退的。速度始终处于定数状态,而电源也就使用4节1.5V的电池。喜欢玩模型的他就想更换成功率更大的锂电池。同时,必须使用更大功率的电机。最终我答应帮他做一个,于是本文介绍的小制作诞生了。这个小制作在模型圈子里也称作可以正反旋转的“有刷电调”。
它有什么功能和作用?
图1
它是一个可以控制电机转数的小制作,并且可以让电机在正和反两个方向上都能得到控制。当控制摇杆在中间时,电机将会处于停滞状态。如图1所示,这是这个制作的最小工作环境。
图1中最右面的是天地飞4通道遥控器,左边发红光的是这个遥控器对应的接收机。锂电池在接收机上方,并且正在给电机控制器供电!电机控制器里有稳压芯片。可以把两三节串联的锂电池电压经过转换、稳压,转换成5V的电压供应给接收机。接收机的4个通道分别由右边4个摇杆控制。当你改变某个摇杆的位置时,对应通道的输出也会发生改变。程序通过读取连接在接收机那个通道的脉宽,相应改变PWM的高电平脉冲波长,来实现转数控制。程序不多仅仅有几十行(一页都不到),相信大家很容易读懂。有不完善的地方,还请大家自己修改了。
准备元器件
图2
制作所需元器件“全家福” 本制作使用的单片机仍然是8个引脚的ATtiny13单片机,图2中编号为11的零件。
其中的两个PMOS管正是实现电机正反转的主要部件,必不可少。
MOS管分为增强型和耗尽型,它们的最大区别在于默认的导通状态。增强型只有在“G”极有相对电压时才会导通。而耗尽型在“G”极没有相对电压时就已经处于导通状态。这次的制作使用的都是增强型MOS管,并且使用了PMOS和NMOS两种型号。PMOS在“G”极电压为0时导通,为“VCC”电压时截止。而NMOS在“G”极电压为0时截止,为“VCC”电压时导通。 下面是元器件清单表拿走不谢
制作过程详解
首先准备好合适大小的万用板,如果太大就剪裁一下。笔者怕麻烦就懒得弄了,你们可别向我学习!我先选择焊接容易的大器件。于是,第一步焊接好插针、插座和78M05(由于手头没有78M05,我用L7805CV替代)
图3
焊接稳压芯L7805CV片对应的4个电容,当时布局想得不是很周到,导致了电容间没有足够的空间分散开,看上去太“紧密”了些。
图4
本来是不用打孔的。由于我手头没有IN5819肖特基二极管,于是我使用了能够通过更高电流的IN5824。IN5824二极管的引脚可是比IN5819粗多了。这样,我就不得不先给万用板钻孔了。
图5
接下来可以焊接肖特基二极管和贴片的场效应管了,焊接好场效应管后,用过锡飞线的方法焊接大电流回路。
图6
焊接好剩下的电阻以及舵机插头。最后,用4条绝缘导线连接4个MOS管的“G”极到单片机的引脚上。最后用螺丝刀把JST插头连接到2PIN的电气插座上。 休息下,别急着上电。用万用表测试一下焊接有没有短路或断路。等检查完毕,再下载程序,验证一下功能有没有问题(有示波器的话,可以查看一下单片机引脚的波形)。一切都OK的话,就可以用热熔胶固定容易折损的部位。好好地享受使用它的乐趣吧。
图7
制作到现在为止就大功告成了
为了让文章更有营养
我决定讲一下控制原理
控制原理解析
控制板通过标准的2.54mm舵机插头和接收机连接,接收来自接收机的信号,再去控制相应的电机旋转。因此要先判断接收机发出的信号才行。那么接收机输出的是怎样的信号呢?如果不清楚这个信号,怎么读取并处理呢?其实,接收机输出的信号是1~2ms脉宽的PWM(脉宽调制)波形,1~2ms的脉冲是高电平。而PWM信号每过20ms(50Hz)更新一下新的信号。这样,先通过读取接收机的信号脉冲宽度,再控制好相对应的电机的导通时间,就能控制转速了。
那么导通时间又是如何控制的呢?
控制导通时间是通过软PWM实现的。软PWM是通过程序的方式实现高电平、低电平的持续时间。相对应的硬PWM就是单片机自带有PWM单元。只要程序向PWM单元的寄存器写入控制数据,PWM引脚就会自动输出波形。
ATtiny13有硬件PWM,为什么使用软PWM增加单片机的负担和编写程序的难度呢?
最初,当我要驱动较大的电机时,MOS管发烫严重,很容易烧坏。后来经过查看资料,原来是我的PWM频率过高,使得MOS管处于放大状态的次数也增多。这样,很多功耗就消耗在MOS管上了。那么对于资源不怎么丰富的ATtiny13,如何降低它的频率又能读取接收机的信号呢?
想了几天都没解决这个问题。后来心一狠,程序重新编写了。PWM不用硬件自带的了,用软件来实现。软PWM使得PWM的频率降低到200Hz左右(原来为37.5kHz)。程序写好后,电流较大的电机果然也能从容驱动,并且发热严重问题也得到了有效解决。
要实现电机转数的控制,实际就是功率输出的控制。单片机的PWM输出和场效应管的栅极(G)连接。在程序中,通过调整NMOS管的占空比,来实现功率的增加或减少。这相当于在重复的时间片段内,调整了输出的5V电压占用的时间比例。占用比例大了,做功的时间就长,电机转数自然就提升了。
上面说了那么多的PWM,那么什么是PWM呢?
PWM是英文“Pulse Width Modulation”的缩写,简称脉宽调制。它是利用微处理器的输出来对模拟电路进行控制的一种技术,广泛应用于测量、通信、功率控制与变换等许多领域。这次的小制作就用到了数据变换(摇杆的位置与脉冲的宽度相对应)和功率控制(脉冲的宽度和功率的大小相对应)。
下面是本制作的原理图,对于有电路基础的人应该很简单,我就不多讲了。
电路原理图




沙发
发表于 2016-12-16 23:17 | 只看该作者

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表