博客
关于我
【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配置负载均衡到后台网关集群
    查看>>
    ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
    查看>>
    NHibernate学习[1]
    查看>>
    NHibernate异常:No persister for的解决办法
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
    查看>>
    NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
    查看>>
    NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
    查看>>
    NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
    查看>>
    NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
    查看>>
    NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
    查看>>