博客
关于我
【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/

    你可能感兴趣的文章
    npm run build报Cannot find module错误的解决方法
    查看>>
    npm run build部署到云服务器中的Nginx(图文配置)
    查看>>
    npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
    查看>>
    npm start运行了什么
    查看>>
    npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
    查看>>
    npm 安装依赖过程中报错:Error: Can‘t find Python executable “python“, you can set the PYTHON env variable
    查看>>
    npm.taobao.org 淘宝 npm 镜像证书过期?这样解决!
    查看>>
    npm—小记
    查看>>
    NPM使用前设置和升级
    查看>>
    npm入门,这篇就够了
    查看>>
    npm切换到淘宝源
    查看>>
    npm前端包管理工具简介---npm工作笔记001
    查看>>
    npm升级以及使用淘宝npm镜像
    查看>>
    npm发布自己的组件UI包(详细步骤,图文并茂)
    查看>>
    npm和yarn清理缓存命令
    查看>>
    npm和yarn的使用对比
    查看>>
    npm学习(十一)之package-lock.json
    查看>>
    npm安装crypto-js 如何安装crypto-js, python爬虫安装加解密插件 找不到模块crypto-js python报错解决丢失crypto-js模块
    查看>>
    npm报错Cannot find module ‘webpack‘ Require stack
    查看>>
    npm报错Failed at the node-sass@4.14.1 postinstall script
    查看>>