工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

轮式机器人的制作

作者:dolphin时间:2016-09-20


控制板是由较简单的单片机系统加直流电机构成的控制电路。如果需要完成某些“任务”还要增加传感器控制单元。

在家庭环境下可以用一台玩具小车的底盘改装,如果条件允许,可以参考图4简便的结构自制。材料采用3mm厚的有机玻璃。

A.减速直流小电机是用舵机去掉控制电路,并切去输出轴的限位杆。

B.车轮用6mm厚的有机玻璃,切割成直径60mm的圆形,外框橡胶圈用录音机的传动皮带套上,并用双面胶纸粘好。

C.底盘支架采用20mm长度的六角铜柱。

D.转向辅助小轮用录音机上的压带轮。

传感器是个独立的元件,其种类繁多。这里向大家介绍一款价格便宜,容易找到的“红外线接收模块”,也就是我们电视机、空调上的遥控接收组件。






下面是以CodeVisionAVR为编译器写的C语言示范程序。该程序通过PA.7口输出脉冲并让红外线发射二极管输出红外线投射信号。单片机12腿(INTO/PD2)接上红外线接收组件,使得可以接收前面阻挡物所反射回来的红外线脉冲。程序如下:

#includemega8515.h

unsigned char i:

unsigned char speed_R=255,

speed_L=255;//小车速度0-255

bit key;

bit key_l:

bit key_2;

bit key_s;

//38kHz红外线载波脉冲

interrupt【TIMO_OVF】void timerO_oVf_isr

(void)

{

//TCNTO=OXA8是38kHz,的红外线载波

//并通过PA.7口输出方波

TCNTO=OxA8;

PORTA.7=((!PORTA.7)&key);

)

//红外线调制脉冲

interrupt[TIMl_OVF】void timerl_oVf_isr

(void) ·

(

TCNTl H=OxFF;

TCNT lL=Ox00; //大约产生2MS的脉冲
1++:

if(i20)key=!key: //产生脉冲间隔

else{key=0;if(i50)i=O;}

}

void main(void)

{

unsigned int j,n:

unsigned char s_L,s_R,k:

PORTA=0x00;DDRA=Obl0000000;

PORTB=0x00;DDRB=Ox00;

PORTC=0x00;DDRC=Obl0100011:

PORTD=0x00;DDRD=Obl1110000;

//CLOCk source:System Clock

//Clock value:8000.000 kHz

TCCR0=0x01: TCNTO=Ox00:

TCCRlA=0x00;TCCRl B=Ox03;

TCNTlH=0x00;TCNTlL=0x00;

OCRlAH=0x00;OCRlAL=0x00;

OCRlBH=0x00;OCRlBL=0x00;

TlMSK=0x82;

ACSR=Ox80;

#asm(“sei“)

PORTD.5=1:PORTD 7=1://打开两台电机的使能端

PORTC.0=0:PORTD.4=1://电动机1,正方向

PORTC 1=0:PORTD.6=1://电动机2,正方向

while(1)

{

s_L++:

s_R++:

while(!PINDl2)j++:

if((0x0520j)&(j0×0590))

k++://匹配脉宽

if(i20)

{if(k=9)

(n=O:PORTC.7=1;}//打开LED

else

n++:k=O:}

if(n3500)PORTC 7=O://关闭

LED

j=0:

if(PORTC.7)

{ key_l=1:key_2=O;

if(key_s)speed_R=30;else
speed_L=30;

}

else {key_2=l:speed_R=255;

speed_L=255;}

if(key_l&key_2){key_s=!key_s;

key_l=O:key_2=0;}

//软件产生电机PWM

if(s_Lspeed_L)PORTD.5=1:else

PORTD.5=O:

if(s_Rspeed_R)PORTD.7=1;else

PORTD_7=0:

l:

}

以上程序是让单片机产生38kHz的调制脉冲。在PA.7口通过红外线发射二极管发射出去。当前面有阻挡物体时信号被反射回来,让红外线接收模块接收后输出到12脚检测,并让小车做出相应躲避动作。

大家可以研究一下,用上面的线路修改程序,是否可以让控制板成为一台“万能学习遥控器”?

提示:用红外线接收组件接收家庭遥控器发射出来的按键脉冲信号,并存储起来,而后再用控制板上的红外线发射二极管把记录下来的脉冲格式重新发射出去。使其可以代替家庭遥控器来完成相同的功能。



评论

技术专区