欢迎光临haoDIY - DIY制作从这里开始!

diy音响功放音箱胆机电子单片机电脑科技小发明机器人制作_haoDIY

haodiy微信
当前位置: 主页 > DIY资讯 > DIY资讯 >

基于AVR单片机的六足机器人

时间:2017-05-12 20:14来源:本站 作者:haodiy 点击:
本作品以8位AVR单片机ATmega32作为核心控制器,以TI公司生产的大功率集成稳压芯片LMZ12010作为供电系统的核心器件,以嵌入式C语言作为控制算法实现手段,以So

本作品以8位AVR单片机ATmega32作为核心控制器,以TI公司生产的大功率集成稳压芯片LMZ12010作为供电系统的核心器件,以嵌入式C语言作为控制算法实现手段,以SolidWorks作为机械结构建模平台,以Altium Designer作为电子电路设计软件,以数控雕刻机作为工具实现机械结构的加工与PCB电路板的制作,初步设计完成了一个以三角步态法作为控制原理的仿生六足机器人。该机器人功能如下:1、普通六足蜘蛛和普通螃蟹两种行走模式;2、红外无线通讯遥控控制;3、12种仿生运行动作;4、6种可调节运行速度。该版本机器人利用定时中断法初步实现了18路舵机的同时控制以及18路舵机的速度调节。针对机器人对供电系统要求较高的特点,本作品设计了一种稳定、简单、可靠的新型电路供电系统。

一、控制算法


1、控制原理

本次六足机器人的控制采用经典的三角步态法。六足机器人采用了仿昆虫的结构,6条腿分布在身体的两侧,身体左侧的前、后足及右侧的中足为一组,右侧的前、后足和左侧的中足为另一组,分别组成两个三角形支架,依靠大腿前后划动实现支撑和摆动过程,这就是典型的三角步态行走法,如图所示。图中机器人的髋关节在水平和垂直方向上运动。此时,B、D、F 脚为摆动脚,A、C、E脚原地不动,只是支撑身体向前。由于身体重心低,不用协调Z向运动,容易稳定,所以这种行走方案能得到广泛运用。

 

2、算法实现

    以六足机器人的前进为例,结合三角步态法原理,六足前进一步可由如下八个步骤实现:

    第一步:1腿,3腿,5腿抬起;

    第二步:1腿,3腿,5腿前移;

    第三步:1腿,3腿,5腿放下;

    第四步:2腿,4腿,6腿抬起;

    第五步:2腿,4,腿,6腿前移,同时1腿,3腿,5腿归位;

    第六步:2腿,4腿,6腿放下;

    第七步:1腿,3腿,5腿抬起;

    第八步:1腿,3腿,5腿前移;2腿,4腿,6腿归位。

 二、硬件设计

 

1、电源选型方法论证

    方案一:选用普通锂电池。普通充电锂电池的额定工作电流为2安左右,若实现最大9安培电流的输出,需将几节电池并联使用。该方案有诸多弊端:体积较大;使用时间较短;若工作的电池电压相差较大,将导致电池之间的充电与放电,效率将大大降低。

    方案二:选用大功率开关电源。开关电源虽然能够满足舵机的功率要求,但是由于需要将机器人系统与电源之间用导线连接,因而限制了机器人的活动空间。

    方案三:选用大功率航模电池。航模锂电池的体积较小,可以方便地作为机器人的负载移动电源。大功率的航模锂电池可以输出几十安的电流,完全满足18路舵机的供电需求。另外,航模锂电池与上述方案相比,成本较低。

 

2、稳压电路方案论证

    方案一:选用普通稳压芯片。普通稳压芯片的输出电流为1.5安培至3安培,虽然可以通过大功率二极管的方式实现扩流效果,但如果完成最大9安培的电流输出,必须将几个稳压芯片并联使用,这样将导致稳压电路复杂化。

    方案二:选用大功率整流桥降压。大功率整流桥降压的工作原理是单个二极管正向导通会产生0.6V的压降。由于整流桥导通时会有两个二极管正向导通,而已单个整流桥会产生1.2V左右的压降。航模锂电池的正常工作电压为7.2V至8.4V,串联两个整流桥即可让电池工作电压满足舵机的正常工作电压。虽然该方案相对方案一电路简单,但是舵机的工作电压将从6V降低到4.8V,由于舵机的工作扭矩与工作电压成正比,随着航模电池工作电压的下降,舵机承受负载的能力也将随之下降。

    方案三:选用大功率稳压芯片。本次机器人供电系统的设计选用的是TI公司生产的大功率集成稳压芯片LMZ12010。该稳压芯片最大输出电压为6V,最大输出电流为10A,完全满足本次设计的要求,且工作电流比较简单。

 

三、舵机控制

 

1、18路舵机控制算法

    方案一:利用单个定时器中断法。18路舵机同时控制的算法如下:将20ms周期平均分成8份(每份时间完成3个舵机的控制);单片机上电之后将所有IO口电平拉低;利用数组pwm[3]存放3个舵机的预期PWM值,并对三个PWM值进行从小到大的排序(注意:数值排序过程中同时要对与之对应的IO口进行排序(可用数组存放IO口权值,如0x01,0x02,0x04,0x08),以保障对舵机的正确操作);再利用新的数组dpwm[3]存放3个新的数据,其中,第一个数据为pwm[0]的值,第二个数据为pwm[1]-pwm[0]的值,第三个数据为pwm[2]-pwm[1]的值;定时器第一次中断产生时,寄存器的所赋值为dpwm[0]的值,并将三个IO口拉高;定时器第二次中断产生时,寄存器的所赋值为dpwm[1]的值,并将pwm[0]对应的IO口拉低;定时器第三次中断产生时,寄存器的所赋值为dpwm[2]的值,并将pwm[1]对应的IO口拉低;定时器第四次中断产生时,寄存器的所赋值为2.5ms减去pwm[2]的值,并将pwm[2]对应的IO口拉低;剩下的17.5ms时间内重复七次上述操作,这样即可完成24路舵机的同时控制。

    方案二:利用多个定时器中断法。本次机器人舵机控制算法的实现如下:利用两个定时器中断控制18路舵机,其中每个定时器控制9个舵机。先将将20ms的周期分解成8份,这样每个定时器就能控制8个舵机。由于机器人在执行每个动作时舵机的运行并非完全不一致,因而可将剩余的两个舵机与其它的舵机进行捆绑控制。

 

2、18路舵机调速控制算法

    方案一:软件延时。该方案的具体实现方法是每次产生新的PWM值时调用延时子程序,让舵机在规定的延时时间内保持现有角度不变。该方法虽然在一定程度上能够减慢舵机的运行速度,但是仍然无法满足机器人动作平滑的要求。

    方案二:脉冲细分法。改方案的具体实现操作位:将预期PWM值分解成若干PWM值,每个PWM值对应舵机一个角度,即让舵机从起始位置转动若干次后到达预期位置。由于舵机控制信号的周期为20ms,忽略舵机的实际转动时间,每产生一次预期PWM值,舵机将转动N次,将需要20*Nms的时间,如此可达到调速的目的。另外,为了进一步降低舵机的转速,可在定时器中断服务程序中设置中间变量控制定时器寄存器的赋值时间。

 

 

基于AVR单片机的六足机器人

 

基于AVR单片机的六足机器人

 

 

基于AVR单片机的六足机器人

 

详细的制作资料见附件

 

转自Atmel技术社区

 


赞一下
(0)
0%
一般般
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片
栏目列表
推荐DIY