掌上单片机实验室 - 实现运动功能(10)

一、背景

        前面已完成了硬件激活、编程环境选择、软件框架构建,并且基于软件框架尝试了基于 RTOS 编程,为在此软硬件环境下学习单片机编程做了充分的准备。

        从本篇开始,开始以其为载体,一步步完善其功能、性能,并基于其具备的能力去完成一些有趣的任务,在这个过程中,逐步掌握用单片机解决实际问题的技能。

        掌上单片机实验室实质是一个小车,小车可以衍生出丰富的学习素材。

        首先,让其按照需要运动就涉及到很多内容,如:直流电机驱动、运动反馈、PID调速、堵转保护等,以及两轮差分驱动方式下的直线行走,需要用到很多单片机知识。

        在这些完成后,还可以基于其可动性,去设计、完成一些有趣的任务,如按特定轨迹行走、避障、“搬运”物体等,这些又将蕴含很多学习素材,可以外延到更多的知识范畴。

        可以说,小车是一道有丰富发挥空间的单片机学习应用题

        既然是小车,第一步就要使其按需运动,本篇就着手实现此功能。

二、需求

        因小车是作为学习平台,考虑到学习成本,使用的是最便宜的130直流电机,性能较低,用 PWM 调功方式很难得到期望的转速,阻力稍有变化将会改变转速。为使小车能按需要行走,控制车轮转速是必须的。

        而控制转速首先需要测速!同样由于成本原因,小车码盘是在轮毂上直接做的,只有60齿,分辨率太低,尤其是用于PID调速时,计算周期如果设计为20ms,最快时才几个脉冲,无法满足计算需求,因此需要通过算法提高测速分辨率。

        综合而言,驱动小车运动的需求如下:

        1、可以方便的驱动电机

        2、可实现满足调速要求的测速

        3、可控制车轮转速

        4、可控制车轮行走距离

三、设计

3.1 驱动任务构思

        前面虽然实现了电机的驱动,能让小车动起来,但那个只是为了硬件测试,功能设计比较简单。

        此处要实现的驱动是为了满足后续小车的行为可控,能根据需要完成相应的轨迹运动,速度、距离可控,能完善、可靠的执行相应的操作命令,且易于和其它任务交互,协同实现期望的功能。

        按面向对象的思路,拟将两个车轮的驱动作为对象,将小车运动的相关功能均纳入,以其为基础构建一个任务:驱动任务

        驱动任务应包含:

        1)电机驱动

        2)测速

        3)调速

        4)距离控制

        5)左、右轮配合实现运动轨迹控制

        6)电机驱动保护

        7)当前电机工作状态反馈

        上述功能的罗列顺序是基于相互依存关系的,按上述顺序实现各个功能,驱动任务应能满足需求。

        因为要驱动两个电机,功能一样,故考虑使用类方式实现电机驱动相关功能,以简化编程。

3.2 电机驱动

        电机驱动在前面做测试任务时已经完成,此处从实际使用角度再优化一下即可。

        电机驱动电路支持电机的4个工作状态:前进、后退、惰行、刹车。

        前进、后退不难理解,惰行和刹车需要说明一下:

    &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入之梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值