卢茹
摘 要:本文提出并研究了对自动行走机器狗在动作上的控制。设计中采用ATMEL公司的AVR系列的ATmegal16单片机作为系统核心部件,并采用9路舵机控制机器狗的动作,从而使机器狗的整个系统设计更加智能化。
关键词:机器狗 单片机 舵机
本课题采用关节型结构,成功地设计了智能机器狗的本体结构。本机器狗具有前后行、平地侧行等基本行走功能。所有的关节都用Futaba S3003舵机,主要完成腿部和头部的摆动,充分利用舵机的特性,使舵机具有大力矩、控制简单、装配灵活、相对经济的特点。机器狗实物图如图1所示。
图1 机器狗实物图
一、系统硬件结构设计
1.舵机功能模块设计
机器狗的每一个关节都由一个舵机来担任,通过单片机产生的PWM波形来控制舵机的角度。由于机器狗有9个自由度,所以机器狗身上有9个舵机。要控制机器狗动起来就必须同时控制9个舵机。由于ATmega16内部集成只有4路PWM输出,已经不能满足本系统需求,所以只能通过T0定时器产生20us的溢出中断配合I/O口,在中断服务函数中比较产生占空比在2.5%~12.5%范围内可调的PWM波形输出,从电动机的控制线输入就能同时控制9个舵机在-90°~90°范围内旋转。由于要同时输出9路PWM,所以系统采用12MHz外部晶体振荡器作为时钟源。
(1)Futaba S3003舵机的简述。舵机本质上是可定位的微型马达,即微型伺服马达。当接收到一个位置指令后,它就会运动到指定的位置。它常用于个人机器人模型的可控运动关节,也常称这种关节为自由度,并具有大力矩、控制简单、装配灵活、相对经济的特点。
(2)Futaba S3003舵机的控制方式。标准的舵机有三条连接线,分别为电源线、地线、控制线。本舵机的三条线中,红色为电源线、黑色为地线、白色为控制线。工作电源为4.8~6V。由于舵机在工作中会产生噪声,所以舵机电源与单片机的电源是相互独立的。
周期为20ms脉冲信号的正向脉冲宽度与舵机输出臂位置的关系,如下表所示。
表 周期为20ms脉冲信号的正向脉冲宽度与舵机输出臂位置的关系
输入正脉冲宽度 伺服马达输出臂位置(。)
t=1.44ms δ=7.2% 0
t=0.89ms δ=4.4% -45
t=2.05ms δ=10% 45
t=0.6ms δ=3% -90
t=2.32ms δ=11.7% 90
2.鍵盘功能模块设计
本系统需要的按键较多,为了减少系统的I/O资源,系统的功能键盘设计采用的是4×4矩阵式键盘结构。矩阵式键盘由行线和列线组成,而按键则在行线和列线的交叉处用于连接行线和列线,这样一个矩阵式键盘含有的按键个数就等于键盘的行数和列数的乘积,只需要8个I/O口就能实现16个按键的输入,这样就大大减少了系统所需的资源。
键盘主要用于机器狗动作的调试,实际运行时要去掉这个模块。
3.电源功能模块设计
本系统的电源共有6V、5V、3.3V三种,其中系统6V电源由4节1.5V电池串联提供,用作舵机的电源输入。系统的5V电源由7~12V锂电池通过LM7805稳压提供,用作控制系统的电源输入和光电传感器的电源输入。系统的3.3V电源由系统的5V电源通过LM1117稳压提供,用作语音芯片的电源输入。其中电阻R1和发光二极管DS1组成电源工作指示灯。系统电源设计电路原理图,如图2所示。
图2 系统电源的电路原理图
二、系统软件设计
1.舵机驱动程序设计
舵机驱动程序主要完成对9个舵机的控制,通过ATmega16单片机的T0定时器中断产生20us的中断计数,当中断计数到1000时,对计数值进行清零。在中断服务函数中设定一个比较值,当大于比较值时,输出电平取反,从而达到0.0%~100%的占空比的可调的脉宽调制波形输出(PWM)。Futaba S3003舵机的驱动只要占空比在2.5%~12.5%范围就能控制舵机的位置在-90°~90°范围。
2.键盘扫描程序设计
矩阵式键盘的处理方式同非矩阵式键盘基本相同,但由于矩阵式键盘的每个按键并不独立占一个I/O口,因此它的键盘识别采用了行扫描法。
行扫描法的基本原理为:程序首先使键盘陈列的一条列线为低电平,如果这条线上没有键被按下,则各行线的电平也都为高;如果列线上有键被按下,则相应的行线上的电平变为低电平,这样根据行线和列线的编号就可得到按键的键值。
3.机器狗运行程序设计
机器狗运行程序是本系统的核心程序之一。由于机器狗的每一个动作都调过机器狗动作调试程序,机器狗要执行某一个动作时,只需要指定相应的地址调用其中的数据即可。
在程序执行时,先读取起始地址、结束地址、速度、方向,根据读取的命令字执行机器狗的动作。机器狗要执行一个向前走的一套动作中就包含了6个动作,运行时先要执行第一个动作,直到完成第一个动作时,再执行下一个动作,以此类推,直到完成了6个动作时,向前走的一套动作才能完成。
4.机器狗动作调试程序设计
机器狗动作调试程序是本系统的一个重要子程序。机器狗在运行时的每一个动作的数据都是通过这一子程序调试得出的。机器狗动作调试子程序把机器狗运行的动作拆分为若干个姿势,并记录每一个姿势的数据,得出数据的好坏直接影响机器狗在运行中动作的灵活性和稳定性。
在程序执行时,先读取4×4键盘的键值,同时可以通过按键11来控制舵机转动的方向。当调试好一个动作时,按下按键15,单片机通过UART串行发送每一个舵机的数据到计算机。
三、小结
本课题主要是研究智能机器狗在动作上的控制,使其能够实现简单的动作功能。本文论述了整个系统的工作原理以及硬件和软件的设计方法。在实际应用中,基于舵机的特点,机器狗可以更加智能化,将会给人们的生活带来更多的方便和乐趣。
参考文献:
[1]易格斯.适用于机器人的关节模块[J].航空制造技术,2009(18).