编辑: 阿拉蕾 | 2016-07-07 |
232 格式的终端.发送各位依次为一个起始位、l~8个 数据位、可选的一个奇偶校验位、1~2个停止位. 因此串口通讯能够传输的最大的数据单位为8位, 即一个字节.在设计中控制器和各终端会有各种 类型的数据交流,如整形数据和浮点数据,因此 需要对串口发送和接收的数据进行数据转换. 四个字节的单精度浮点数的数据传输,因为 串口每次最多只能传输一个字节,所以只需要把 每个四字节浮点数的存储数据转换成字节形式发 送即可,设计中采用强制转换的方式完成.数据 接收的时候也可以采取同样的处理方式,反向转 换即可.另外在数据转换上也可选择共用体来实 现,共用体的实质和上面讲述的类型转换是一样 的,只是共用体的各个数据类型占用的存储空间 是共同的,对于这个存储空间,共用体定义的任 何结构类型变量都可以调用.上位机里的串口数 据处理采用的是这种方法,十分方便. 对于正交编码脉冲的检测,TMS320LF2407A 具有独立的正交编码脉冲单元,只要对单元寄存 器进行简单设置即可得到机器人驱动轮的运行方 向和距离参数.TMS320LF2407A将这些数据通过 串口发送到上位机,由上位机建模,对数据加以 处理后得到机器人的位姿信息.
3 电机驱动软件设计 电机驱动软件完成电机的驱动控制和闭环调 速.驱动控制使用的是电机驱动主控芯片STCl2C- 4052AD的片内PWM外设单元,生成的PWM信号 经过电机驱动芯片驱动电机,可以通过调节PWM 占空比来调节加载在电机上24VDC电压的占空 比,从而调节电机转速.PWM占空比由片内8位的 PWM控制寄存器进行控制,该寄存器取值范围为 0-255,分别代表PWM信号占空比从l到0的连续 变化.同时STCl2C4052AD接收电机光电码盘的 脉冲信号,利用片内时钟计算出电机运行速度, 通过速度控制算法完成电机的闭环调速. 如2图所示,程序开始后进行初始化,初始化 包括程序使用相关变量定义、10ms定时器
0、定 时器l及串口、脉冲计数用外中断
0、看门狗等寄 存器的设置和电机状态参数(刹车、速度)等的初始 图1 主控板控制器程序流程图 图2 电机驱动控制器程序流程图
86 87 SERVO &
MOTION CONTROL 2015・04 NO.65 SERVO &
MOTION CONTROL 2015・04 NO.65 机器人 化.然后进入循环状态,循环过程中更新看门狗 寄存器的相关标志位.速度检测和闭环调速程序 分别在外中断0和定时器0中完成.中断服务程序 也就包含了外中断
0、定时器0以及串口中断服务 程序. 外中断0是电机光电码盘的脉冲检测外设,所 有电机光电码盘的脉冲都会引起外中断0的中断. 码盘脉冲测速的原理是计算STCl2C4052AD单位 定时时间内的脉冲数目,因此外中断0的中断服务 程序的内容就是对脉冲计数.而上位机设定的目 标电机转速也会被转换为此单位定时时间内的脉 冲数目.可以定义一个全局变量,每次进入外中 断0的中断将该变量加1即可.另外为防止程序干 扰,应该对计数值加以修正,如小于0的时候等于 0,大于某一设定值的时候等于某一设定值等.
4 超声波测距软件设计 设计中的超声波测距软件利用了常用超声波 测距的渡越时间法.渡越时间法的工作原理为发 射超声波的同时开始计时,接收到超声波后停止 计时,记录超声波的传输时间为t,那么超声波测 距模块和障碍物的距离为s由下式表示. S=v*t/2 其中v为超声波在空气中的传播速度.由下式 表示. 其中,T为空气的华氏温度. 在常温下,超声波的传输速度随温度变化并 不太大,而且超声波的传输时间都为毫秒级,因 此影响不是很大.不过也可以为超声波测距模块 添加一个温度校正模块,检测环境温度,再在主 控板控制器计算超声波速度时进行修正.现在市 场已有集成温度检测器件,也很方便. 超声波测距的主要流程为发射超声波以后, 如果有反射超声波信号返回,则由外中断0接收计 算距离.在超声波信号发射的同时打开定时器3, 定时时间为最大超声波测量距离所需的传输时间, 图3 超声波测距程序流程图 图4 外中断0和定时器3程序流程图 如果在定时器3中断的时候还没有外中断0中断事 件发生,即没有反射超声波信号返回,那么在进 入定时器3中断的时候关闭超声波返回中断和超声 波传输时间定时器l,进行下一次的超声波测距循 环.程序流程图如图3所示. 外中断0接收到超声波测距信号返回,则进入 外中断0服务程序进行测距程序处理.若没有超声 波信号返回则将发生定时器3的定时中断,说明等 待超时,设定测距范围内无障碍物.两种情况都 将引发等待标志位的改变,程序跳出等待状态, 更改工作超声波测距模块,进行下一个超声波模 块的测距处理. 图4中A为外中断0程序流程图.进入中断服 务程序表示有超声波信号返回.程序开始关闭所 有系统的可屏蔽中断和测距使用外设,读取定时 器l计数值,计算障碍物距离.更改程序循环标 志,然后中断服务程序返回.B为定时器3的程序 流程图.进入中断服务程序表示测距范围内无障 碍物,因此只用关闭系统的可屏蔽中断和测距使 用外设,直接更改程序循环标志,退出中断服务 程序即可.设置定时器1不产生中断,而设置定时 器1为定时最大值也不会发生定时器l中断.因此不 必写定时器1的中断服务程序.