发 帖  
原厂入驻New

转载:【Hanker循迹小车系列】循迹小车 FollowMe 之四

2011-7-21 11:56:21  1619
分享
前面已完成了各部分的硬件设计,从本篇开始着手各部分的软件设计。
六、控制部分软件设计

       因为在硬件设计中,将电机驱动和逻辑控制分成了两个独立的模块,所以在软件设计时也将分别设计。

6.1 电机驱动模块软件设计

       根据前面的硬件设计,电机驱动模块可以独立成为一个智能的功率驱动器使用,在硬件的设计中考虑了可以支持多种控制信号。但在目前的项目中,拟使用串口控制方式,以下的软件设计是基于这个前提的。

6.1.1 软件要实现的功能

1)接收并解析控制命令
2)使电机有良好的驱动特性,可正、反转动,且转动平稳、有力;
3)可靠的获取转速反馈信号;
4)根据反馈信号使用有效的控制策略使电机达到所需的转速;
5)利用码盘的反馈信号控制行走距离;
6)可以根据命令实现电机的特殊运行状态:刹车、惰行。

       在上述功能中,真正影响驱动器性能的是第二项(驱动特性)和第四项(控制策略)。虽然通常认为控制策略最重要,在自动控制中所着笔墨最多,但是在我们这个项目中,因为电机特性不是十分理想,驱动又是通过软件完成的,这两部分组成的执行机构如果没有良好的特性,那有再好的控制算法、策略也无法实现良好的电机驱动。
6.1.2 概要设计

      根据要实现的功能,软件分为以下几个部分:

命令接收解析 —— 完成命令接收,命令内容解析;
电机PWM驱动 —— 根据电机控制参数产生驱动信号,使电机进入期望的运转状态;
速度反馈 —— 读取码盘信号,计算出速度数据,兼完成计数功能,实现行走距离控制;
控制策略 —— 根据命令给出的数据和反馈得到的数据计算出电机控制参数,实现速度控制;

       电机驱动实际上构成了一个典型的自动控制系统

自动控制.jpg

       其中的“PID调节器”由软件的控制策略部分实现,驱动器硬件只提供了电流的开关放大功能,而主要的驱动特性实现是由软件中电机PWM驱动完成。

       这样设计使得系统的灵活性增强,同时便于学习者掌握控制的实质,领会其中的奥妙。

       软件总体框架采用消息驱动方式,根据消息作相应的处理,消息多数由中断产生,如:接收到串口数据、码盘光电采样中断等,对于没有中断源的信号,由系统的时基产生的中断定时查询、处理。

       电机驱动所需的PWM信号在中断服务程序中完成,因为需要比较准确的脉冲宽度和周期。
虽然硬件设计上考虑了许多扩充功能,但是在目前的寻迹小车项目中不是都需要,所以在此对于脉冲输入只处理一个主速度检测脉冲,主方向、跟踪测速脉冲、方向等功能留到有具体需求时再做考虑。

       无线模块的控制也是留作日后有需求时再作考虑。

       测速用码盘用CAD 软件绘制后打印在纸上,然后用双面胶贴在轮毂上,使用反射式光电采样器采样。我所设计码盘如下:

码盘.jpg

       因为码盘的分辨率较低,所以采用测周期的方式来得到转速。如果按照正常的脉冲测量方式,采集一个跳变沿,那这个码盘一圈只能得到10个数据,为了提高性能,利用了STC12C54XX 单片机PCA模块的正、负跳变均能中断的特性,一周可获取20个数据。为了避免脉冲的占空比不等带来的问题,采用正跳对正跳、负跳对负跳的测量方式。

      程序的流程如下

程序流程.jpg


程序流程2.jpg

6.1.3 详细设计

6.1.3.1 命令接收及解析

       在硬件设计上虽然考虑了多种控制的可能,那是为了日后这个硬件可以满足不同的需要,而目前的设计使用串口控制。

       考虑到这个小车要使用两个驱动电机,所有在串口的连接上采用并接方式,即将两个电机驱动器的接收端RXD、发送端TXD并联,RXD并联没有问题,而TXD端并联必须将口特性置为标准51口(有内部弱上拉电阻的准双向口),以保证口输出的正常,同时通过协议保证不同时发送。

       并接后的串口相当于一个设备,接受逻辑控制部分的命令。

       基于这样的设计,通讯协议设计如下:

帧格式:
帧头(2字节)  帧长(1字节) 命令字(1字节) 数据区(N字节)校验和(1字节)

其中:
帧头 —— 0x55  0xAA
帧长 ——  命令字 + 数据区的长度
命令字 ——

0x01 :电机转动控制参数,开环模式,电机的PWM值、转动持续脉冲数;
0x02 :电机转动控制参数,闭环模式,电机的转速、转动持续脉冲数;
0x03 :电机工作参数,PWM频率、PID参数

数据区 ——
命令01:电机1数据(2字节PWM值,2字节转动持续脉冲数)电机2数据(2字节PWM值,2字节转动持续脉冲数),共 8字节;
命令02:电机1数据(2字节转速值,2字节转动持续脉冲数)电机2数据(2字节转速值,2字节转动持续脉冲数),共 8字节;
命令03:2字节PWM频率,2字节比例系数,2字节积分系数,2字节微分系数,2字节PID系数的分母, 共10字节,两个电机驱动器相同;

校验和 —— 从命令字开始到数据区结束所有字节的算术和的反码,取低字节。

上述数据中,PWM值,速度值、PWM频率、PID系数等定义如下:

PWM值 —— 2字节有符号数,正对应正转,负对应反转,数值为占空比的百分数,取值范围:- 1000 ——  +1000, 对应 0.1% ~ 100%;1001为电机“惰行”,1002为“刹车”;
转动持续脉冲数 ——  2字节无符号数,0 表示连续转动;
转速值 —— 2字节有符号数,正对应正转,负对应反转,单位为:0.1转/每分钟;取值范围:- 10000~ +10000,10001为电机“惰行”,10002为“刹车”;
PWM频率 —— 2字节整数,单位Hz,取值范围:200 – 2000;因为不同的电机所需的PWM 频率不同,需要通过测试确定,所以考虑了此参数;
PID系数 —— 均为 2字节无符号数;
PID系数分母 ——  2字节无符号数,为避免使用浮点数而增加了此参数,实际作用的PID系数为上蕄arty?酥担蝗纾罕壤?凳?
0
电机控制逻辑.jpg

电机驱动模块程序压缩包.rar

下载积分: 积分 -1 分

10.16 KB , 下载次数: 20 , 下载积分: 积分 -1 分

2011-7-21 11:56:21   评论 分享淘帖
6 个讨论
本帖最后由 eehome 于 2013-1-5 09:57 编辑

ddddddddddddddddddddddd






2012-5-17 16:07:12 评论

举报

这个不错
2012-8-15 08:34:16 评论

举报

恩,看看
2013-3-13 22:28:28 评论

举报

不错!!!!{:1:}{:1:}
2013-5-6 22:13:26 评论

举报

先看看再学习!最后弄明白!
2013-5-7 22:58:35 评论

举报

感谢分享感谢分享
2013-6-8 08:56:58 评论

举报

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发表新帖
关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表