I designed my Robot, which use two motors control rear wheels and the single front wheel is free. It has 4-infrared sensors on the bottom for detect black tracking tape, when the sensors detected black color, output of comparator, LM324 is low logic and the other the output is high.
Microcontrollor AT89C2051 and H-Bridge driver L293D were used to control direction and speed of motor.Fig 1. schematic diagram of my Robot.
Fig 2. schematic diagram of Infrared sensors and comparators.
Fig 4. Position of sensors, left hand side is
side view and right hand side is top view.
#include d:\mc51\8051io.h
#include d:\mc51\8051reg.h
extern register unsigned char speedleft,speedright;
register unsigned char high,low,flag,time;
main()
{
P1=0x40;
P3=0xff;
high = 80;
low = 30;
flag = 0;
time = 50;
Start();
while(1) {
P3|= 0x0f;
Run();
}
}
Start()
{
char exit,key;
exit =1;
while(exit)
{
key = P1;
if((key & 0x40)==0) exit=0;
}
}
Run()
{
char sensors;
sensors = (P3 &=0x0f);
if((sensors & 0x01)==0) {
TurnRight();
flag = 1; }
else if((sensors & 0x08)==0) {
TurnLeft();
flag = 2; }
else if(sensors == 0x09) {
Forward(high);
flag = 0; }
else if(((sensors==0x0b)||(sensors==0x0d))&&(flag==0))
Forward(low);
}
Forward(char speed)
{
P1=0x64;
speedright = speed+10;
speedleft = speed;
delay(time);
}
TurnRight()
{
P1=0x68;
speedright = low+5;
speedleft = low;
delay(time);
}
TurnLeft()
{
P1=0x54;
speedright = low+5;
speedleft = low;
delay(time);
}
Reverse(char speed)
{
P1=0x58;
speedright = speed;
speedleft = speed+5;
delay(time);
}
( watch video tutorial )
No comments:
Post a Comment