开发者社区> KB小秘书> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 以前对步进电机和直流电机的控制了解不深,以为仅对步进电机而言,才能进行PWM控制,及到购买相关的驱动板和步进电机后,才发现由于驱动板的原因,控制步进电机的方向、速度只能通过IO控制
+关注继续查看

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

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

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

  

(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桥电路,可以同时控制两路直流电机。
image.png

   

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

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

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

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

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

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

image.png
 

和红牛开发板的具体接线如下:

M1_S – PA6   (TIM3_CN1)

M1_D – PA4

M2_S – PA7   (TIM3_CN2)

M2_D – PA5

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

image.png
 

(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);

  

(运行时的截图)

小车的运行视频: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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【STM32 .Net MF开发板学习-15】红外遥控智能小车
我前段时间写了《用PWM驱动智能小车》和《红外遥控器编码识别》两篇博文,分别介绍了如何用PWM驱动直流电机及红外遥控器编码识别,这一次我们把二者结合起来,用红外遥控器遥控智能小车。
566 0
【STM32 .Net MF开发板学习-18】GPRS遥控智能小车
有了Wifi间接控制智能小车的经验,很自然的想到,也可以通过GPRS远程遥控智能小车,因为从通信原理上看,二者其实没有什么本质的不同,都是基于Socket的TCP通信
560 0
【STM32 .Net MF开发板学习-10】SPI测试之触摸屏坐标获取
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)
534 0
STM32 .Net MF开发板学习-16】Zigbee遥控智能小车
Zigbee技术目前在物联网领域和RFID一样,受关注度非常高。日前中科院上海微系统与信息技术研究所、无锡物联网产业研究院等传感器网络标准工作组成员单位联合发布了名为VW628、WSNS1_SCBR的两款中国自主知识产权的无线传感网SoC芯片,其中WSNS1_SCBR为中国首款符合IEEE802.1
597 0
【STM32 .Net MF开发板学习-17】Wifi遥控智能小车
恰好以前购买的一个PDA含Wifi功能,所以与其用PC通过Zigbee控制智能小车,不如用PDA来控制,这样更为方便,不过由于目前.NET MF开发板不直接支持Wifi功能,所以我们也只好间接控制了,也就是PDA控制PC,PC通过Zigbee控制智能小车。
719 0
【STM32 .Net MF开发板学习-16】Zigbee遥控智能小车
Zigbee技术目前在物联网领域和RFID一样,受关注度非常高。日前中科院上海微系统与信息技术研究所、无锡物联网产业研究院等传感器网络标准工作组成员单位联合发布了名为VW628、WSNS1_SCBR的两款中国自主知识产权的无线传感网SoC芯片,其中WSNS1_SCBR为中国首款符合IEEE802.15.4g标准的验证型全集成传感网节点SoC芯片。
818 0
【STM32 .Net MF开发板学习-15】红外遥控智能小车
我前段时间写了《用PWM驱动智能小车》和《红外遥控器编码识别》两篇博文,分别介绍了如何用PWM驱动直流电机及红外遥控器编码识别,这一次我们把二者结合起来,用红外遥控器遥控智能小车。
638 0
+关注
1092
文章
1262
问答
来源圈子
更多
阿里云最有价值专家,简称 MVP(Most Valuable Professional),是专注于帮助他人充分了解和使用阿里云技术的意见领袖阿里云 MVP 奖项为我们提供了这样一个机会,向杰出的意见领袖表示感谢,更希望通过 MVP 将开发者的声音反映到我们的技术路线图上。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载