博客
关于我
【STM32 .Net MF开发板学习-13】用PWM驱动智能小车
阅读量:469 次
发布时间:2019-03-06

本文共 1828 字,大约阅读时间需要 6 分钟。

基于.NET Micro Framework系统的远程医疗系统开发已经占用了大部分时间,近一个月后才有精力重新开始PWM驱动智能小车的研究。之前对步进电机和直流电机的控制了解有限,以为只有步进电机才能实现PWM控制,直到购买驱动板和步进电机后才发现,控制步进电机方向和速度需要通过IO控制。相关内容可以参考之前写的博文。

在介绍具体控制代码之前,为了更好地理解PWM控制直流电机的机制,我们需要先了解H桥驱动直流电机的原理。H桥式电机驱动电路包括4个三极管和一个电机,具体包括Q1和Q4导通时,电流从Q1经电机流到Q4,电机顺时针转动;Q3和Q2导通时,电流从Q3经电机流到Q2,电机逆时针转动。电流的大小决定了电机转速,通过PWM的占空比(电流通断比)来控制转速。

为了提高驱动能力,三级管会被换为MOS管,但原理是一样的。实际使用中,H桥电路通常采用封装好的集成电路芯片,如L293B、L293D、L298N、TA7257P等。

更多关于H桥驱动电机的知识可以参考相关文章。

我们选用的四路直流电机驱动器的核心芯片是L293B芯片,每个芯片集成了两个H桥电路,可以同时控制两路直流电机。L293B芯片的原理图显示其内含两路H桥,四路输入,两路方向控制,两路PWM控制。

实际应用中,发现让直流电机正反转需要不同的组合控制。以A路为例:

  • A向高电平输入,PWMA输入PWM方波,直流电机正向旋转。
  • A向低电平输入,PWMA输入PWM方波,直流电机反向旋转。
  • A向和PWMA交换,A向输入PWM方波,PWMA保持高电平或低电平。
  • 不同的组合控制方式会导致直流电机运转方向不同,同时某些组合的PWM占空比高反而转速低,而有些组合占空比高则转速高。

    智能小车的选型上,我们选择了相对低价且安装容易的底盘,有两种组装方案,比较倾向推荐第二种方案。小车底盘散件安装后的小车,开发板固定到小车底盘上(蓝色区为固定位置),驱动板供电可以选择9V电池,开发板需要另行购买5V左右电池。此外可选6节普通5号充电电池(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); //PA6OutputPort 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作为方向控制。

    PWM声明:public PWM(PWM.Timer timer, uint f, ushort count)

    timer - 芯片时钟,可选Timer2、Timer3、Timer4、Timer5f - PWM输出频率,一般建议1000以上,但几百也可以,网友可以自行测试count - 计数(可看成占空比的分母)

    PWM.Start方法:public int Start(PWM.Channels ch, ushort dutyCycle, PWM.Mode mode)

    ch - PWM通道,可有四路通道dutyCycle - 占空比的分子mode - pwm输出方式,可是方波,也可以强制为高或低

    public int Stop(PWM.Channels ch)

    需要注意的是,红牛开发板固件必须在V0.9.9以上。

    本文相关模块或组件:

  • 小车底盘
  • 四路直流电机驱动器
  • .NET Micro Framework开发板
  • 双排电阻
  • 电池盒
  • 电源插头
  • 杜邦线
  • 此外,值得一提的是,微软官方越来越重视.NET Micro Framework,MSDN和微软中文技术论坛专门开辟了.NET Micro Framework栏目。

    转载地址:http://nnxbz.baihongyu.com/

    你可能感兴趣的文章
    nginx-vts + prometheus 监控nginx
    查看>>
    Nginx下配置codeigniter框架方法
    查看>>
    Nginx之二:nginx.conf简单配置(参数详解)
    查看>>
    Nginx代理websocket配置(解决websocket异常断开连接tcp连接不断问题)
    查看>>
    Nginx代理初探
    查看>>
    nginx代理地图服务--离线部署地图服务(地图数据篇.4)
    查看>>
    Nginx代理外网映射
    查看>>
    Nginx代理模式下 log-format 获取客户端真实IP
    查看>>
    Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
    查看>>
    Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
    查看>>
    Nginx反向代理与正向代理配置
    查看>>
    Nginx反向代理是什么意思?如何配置Nginx反向代理?
    查看>>
    nginx反向代理解决跨域问题,使本地调试更方便
    查看>>
    nginx启动脚本
    查看>>
    Nginx在Windows下载安装启动与配置前后端请求代理
    查看>>
    Nginx多域名,多证书,多服务配置,实用版
    查看>>
    nginx开机启动脚本
    查看>>
    nginx异常:the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf
    查看>>
    nginx总结及使用Docker创建nginx教程
    查看>>
    nginx报错:the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:128
    查看>>