【STM32 .Net MF开发板学习-13】用PWM驱动智能

系统 2180 0

这段时间一直忙着开发基于 .NET Micro Framwork 系统的远程医疗系统(参见: http://space.cnblogs.com/group/topic/41835/ ),所以隔了近一个礼拜的时间,才有精力继续研究 PWM 驱动智能小车的问题。

以前对步进电机和直流电机的控制了解不深,以为仅对步进电机而言,才能进行 PWM 控制,及到购买相关的驱动板和步进电机后,才发现由于驱动板的原因,控制步进电机的方向、速度只能通过 IO 控制,相关内容请参见我以前写的博文《 步进电机控制(非 PWM 模式) 》。

在介绍具体的控制代码之前,为了便于更深入的了解 PWM 控制直流电机的机制,我们先粗略了解一下 H 桥驱动直流电机的原理。

【STM32 .Net MF开发板学习-13】用PWM驱动智能小车

1 )、 H 桥式电机驱动电路包括 4 个三极管和一个电机;

2 )、导通 Q1 Q4 ,电流从 Q1 经电机流到 Q4 ,电机顺时针转动;

3 )、导通 Q3 Q2 ,电流从 Q3 经电机流到 Q2 ,电机逆时针转动;

4 )、电流的大小,决定了电机的转速,通过 PWM 的占空比(电流通断比)来决定电流的大小,从而间接控制了电机的转速。

当然为了提高驱动能力三级管会换为 MOS 管,不过其原理都是一样的。但是实际使用的时候,用分立元件制作 H 桥是很麻烦的,现在都是采用封装了 H 桥的集成电路芯片,如比较常用芯片有 L293B L293D L298N TA7257P SN754410 等。

更多关于 H 桥的相关知识,请参见如下文章:

1 )、《 关于直流电机 H 桥驱动方案的选择

2 )、《 H 桥及直流电机驱动电路详述文档信息

3 )、《 直流电机的 PWM 冲调速控制技术

我们目前所选用的四路直流电机驱动器,其核心芯片就是 L293B 芯片,每个芯片集成了两个 H 桥电路,可以同时控制两路直流电机。

【STM32 .Net MF开发板学习-13】用PWM驱动智能小车

L293B 芯片的原理图如上图所示,内含两路 H 桥,四路输入,两路方向控制,两路 PWM 控制。

实际应用发现,让直流电机正反转有如下组合控制(仅以 A 路示例)

1 )、 A 高电平输入 PWMA 输入 PWM 方波 直流电机正向旋转

2 )、 A 低电平输入 PWMA 输入 PWM 方波 直流电机反向旋转

3 )、 A 向和 PWMA 交换, A 向输入 PWM 方波, PWMA 保持高电平或低电平

不同的组合,不同的控制方式,则直流电机的运转方向不同,并且有的组合 PWM 占空比高,反而转速低,而有的就是占空比高,则转速也高。

【STM32 .Net MF开发板学习-13】用PWM驱动智能小车 和红牛开发板的具体接线如下:

M1_S – PA6 (TIM3_CN1)

M1_D – PA4

M2_S – PA7 (TIM3_CN2)

M2_D – PA5

智能小车,我们选用相对低价,且比较容易安装红牛开发板的小车底盘,共有两种组装方案,如下图所示,我比较倾向推荐第二种组装方案。

【STM32 .Net MF开发板学习-13】用PWM驱动智能小车

1 )、小车底盘散件;

2 )、安装后的小车;

3 )、 .NET Micro Framework 开发板固定到小车底盘上(蓝色区为安装固定位置)

4 )、不用小车上层板,直接用铜轴固定开发板;

驱动板供电,可以直接选择 9V 的电池,不过开发板也需要另行购买 5V 左右的电池。此外也可以购买 6 节普通的 5 号充电电池( 3 节给开发板供电, 3+3 节给驱动板供电),通过电池盒给驱动板和开发板供电。

由于底层我已经封装了 PWM 驱动库,所以用 C# 开发小车的控制代码,将非常的容易,本示例的代码如下:

public static void Main()

{

PWM pwm = new PWM ( PWM . Timer .T3, 1000, 100);

OutputPort Lc = new OutputPort (( Cpu . Pin ) GPIO_NAMES .PA4, false );

pwm.Start( PWM . Channels .CH1, 50, PWM . Mode .PWM1); //PA6

OutputPort Rc = new OutputPort (( Cpu . Pin ) GPIO_NAMES .PA5, false );

pwm.Start( PWM . Channels .CH2, 90, PWM . Mode .PWM1); //PA7

while ( true )

{

Thread .Sleep(1000);

}

}

我们选用 Timer3 进行 PWM 输出,查看开发板原理图, Timer3 的第一路 PWM 输出的管脚为 PA6 ,第二路为 PA7 ,我们选择 PA4 PA5 作为方向控制。

函数简介:

1 )、 PWM 声明

public PWM( PWM . Timer timer, uint f, ushort count);

timer 芯片时钟,可选 Timer2 Timer3 Timer4 Timer5

f PWM 输出频率,一般建议 1000 以上,不过几百也可以,网友可以自行测试。

Count 计数(可看成占空比的分母)

2 )、 PWM 开始输出

public int Start( PWM . Channels ch, ushort dutyCycle, PWM . Mode mode);

ch PWM 通道,可有四路通道

dutyCycle 可看成占空比的分子

mode pwm 输出方式,可以是方波,也可以强制为高或低;

3 )、 PWM 停止输出

public int Stop( PWM . Channels ch);

【STM32 .Net MF开发板学习-13】用PWM驱动智能小车

(运行时的截图)

小车的运行视频: http://video.sina.com.cn/v/b/37930017-1804832611.html

由于目前还没有考虑添加遥控设备,所以我们只能先让智能小车进行转圈了,后续文章我会考虑添加无线控制设备,使我们可以远程控制小车的行进及快慢。

附:网友写的相关文章《 MF 控制小车 (PWM 驱动直流电机 ) 》:

http://blog.csdn.net/fangyuantdy/archive/2010/08/29/5848506.aspx

【本文相关模块或组件】

1 )、小车底盘

http://item.taobao.com/item.htm?id=7218838776

2 )、四路直流电机驱动器

http://item.taobao.com/item.htm?id=7218717808

3 )、 .NET Micro Framework 开发板

http://item.taobao.com/item.htm?id=7117999726

4 )、双排阵

http://item.taobao.com/item.htm?id=7167440992

5 )、电池盒

http://item.taobao.com/item.htm?id=7234239692

http://item.taobao.com/item.htm?id=7233955466

6 )、电源插头

http://item.taobao.com/item.htm?id=7254102440

7 )、杜邦线

http://item.taobao.com/item.htm?id=7233742386

此外尤值得一提的是,目前微软官方越来越凸显对 .NET Micro Framework 的重视,在 MSDN 微软中文技术论坛 专门开辟了 .NET Micro Framework 栏目。

Windows Embedded 嵌入式技术论坛链接地址如下:

http://social.msdn.microsoft.com/Forums/zh-CN/category/embeddedtechnologycn

注: 需要红牛开发板固件在 V0.9.9 以上

本文源码: http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/PWMCar.rar

MF 快速参考: .NET Micro Framework 快速入门

MF 中文讨论组: http://space.cnblogs.com/group/MFSoft/

微软官方论坛: MSDN 微软中文技术论坛 (.NET Micro Framework)

开发板简明手册: http://blog.sina.com.cn/s/blog_6b938f630100kh0k.html

【低价开发板】 http://item.taobao.com/item.htm?id=7117999726

【STM32 .Net MF开发板学习-13】用PWM驱动智能小车


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论