上述模糊信号的获取通过EPM7128用VHDL语言编程实现,此部分的编程相对简单,不再赘述。由于光电传感器信号的改变可以实时反映在CPLD的输出上,′F240只需定时读取此信号并做相应从处理即可。假设前光电检测板和后光电检测板的信号分别保存在RE_CPLD字节的高半字节、低半字节中,若这两个信号大于lO则保持原数据不变,否则根据信号的大小计算此值在转速控制信号输出表中的偏移量:
LDP #04h
LACC #MATRIXL
ADD ADDER_PS
其中#04h为保存转速表的页面,#MATRIXL为转速表起始地址在页面中的偏移量,ADDER_PS为查表值相对转速表起始地址的偏移量。若将查表得到的值变化后保存为控制步进电机转速的定时器的周期.则可以实时改变步进电机的转速:
LDP #04h
LACC Ml_TlPR
LDP #O0E8h
SACL TlPR
4 步进电机调速的实现
步进电机是纯粹的数字控制电动机。它将电脉冲信号转换成角位移,即给一个脉冲信号,电机转一定角度。步进电机控制器的输入端口有:VDD——电机电源正极; GND——电源地线;OPTO——控制信号的公共阳极;DIR——电机方向控制端;FREE——脱机输入端;CP——脉冲输入端(CP停止施加脉冲时,要保证CP为高电平,使内部光耦截止)。此处给DIR端加高电平,使机器人只向前行进,在程序中只需对CP端进行处理。
脉冲的产生通过控制I/O端口的电平变化实现。在设定了定时中断的各种参数后,在定时器中断处理程序中使一个标志字不停地加1:
LDP #04h
LACC TESTl
ADD #1
SACL TESTl
在主程序中可以设定行走距离,定时中断的时间间隔决定脉冲的频率,也即决定步进电机的运动速度:
LDP #04h
LACC TEST1
SUB #2000
BCND STOP,GT
其中,数值2000代表机器人行走的距离单位。利用模糊控制策略,改变控制两个步进电机的定时器定时周期的长短以及行进的距离,可以实现机器人的寻线行进。
在总结近期参加的机器人比赛和电子设计竞赛的基础上,针对机器人寻线行走的普遍要求,提出了一种基于DSP+CPLD和模糊控制策略的机器人实现方法。利用该方法设计的机器人参加了多种不同的机器人比赛(如全国大学生机器人电视大赛、足球机器人比赛子项和电子设计竞赛等),运行状况良好,取得了较理想的成绩,进而证实了此设计的有效性。