my first robot

Posted on 23/07/2015 by nadarponsudhan
Modified on: 13/09/2018
Introduction
This is an automatic import from our previous community platform. Some things can look imperfect.

If you are the original author, please access your User Control Panel and update it.

This was my first project. I started out on a quite ambitious note. but i couldn't complete it the way i expected it to be. The robot, all it does is whenever it faces a black obstacle it steers away. I use ldr led setup for sensor along with bjt. i enjoyed the process.after graduation, I am hoping to invest my time and money in learning and making robots. i am interested in the concepts of AI and automation. i joined this group to meet like minded people and share our experience and knowledge ...


my first robot

This was my first project. I started out on a quite ambitious note. but i couldn't complete it the way i expected it to be. The robot, all it does is whenever it faces a black obstacle it steers away. I use ldr led setup for sensor along with bjt. i enjoyed the process.after graduation, I am hoping to invest my time and money in learning and making robots. i am interested in the concepts of AI and automation. i joined this group to meet like minded people and share our experience and knowledge with each other. ABOUT THIS PROJECT. This project has a old school appeal to it. Robot body is salvaged from Chinese toys, coded in assembly language and microcontroller used was at89c2051 of 8051 family my very first robot really simple . The only book i used for its construction was " embedded systems and robotics by subrata ghoshal" if you are a beginner who wants to get started with robotics right away i recommend this book.

 

ONE HALF OF TOY CAR

 

JOINING THE TWO HALVES

REINFORCING THE JOINT

BATTERY HOUSING

PLACING ON TOP

SENSOR ( LED IS MISSING IN THIS PIC I DIDNT TAKE THE PIC OF SENSOR WITH LED AT THIS POINT OF TIME)

CONTROLLER CARD ( AT89C2051 WITH 12 MHz EXTERNAL CRYSTAL)

LED INDICATOR ON TOP OF ROBOT

 THE PIC BELOW SHOWS MICROCONTROLLER IC AT89C2051 (LEFT) AND MOTOR CONTROLLER IC LD193D (RIGHT)

SESOR IS PLACED IN THE FRONT FACE OF ROBOT( AGAIN LIGHT SOURCE LED IS MISSING)

The top view of robot (you might notice to many loose wires, those wires were used to support line sensor at the bottom which i hadn't started at that point of time when this picture was taken. I did eventually add line sensor in the bottom surface of robot but it didn't workout that well this picture were taken during the early stages of development of the robot show in video, you might notice a white led on the front face of robot which is missing in these pics, you might also notice white led light glow below the robot, those lights are from leds fixed at the bottom for line sensor)

Finally a 9v battery for motor driver ic ld293d ( i don't know if using 9v battery for motor driver was a good idea. the would drain out quickly and its voltage would reduce to 5v .Then the motor diriver wont work since the minimum required voltage for motor driver is 6volt)  

 

SOFTWARE DEVELOPEMENT OF OF MOUSET (ASSEMBLY PROGRAMMING)

______________________________________

 

 

;program code for obstacle avoidance robot

;the robot uses ldr sensor to detect the presence of obstacle if obstacle is found to present it takes a quick turn and moves forward

 

;--------------------------------------------MOUSET-------------------------------------------------------------------------

;[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[-------]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]



; MOUSET IS A FOUR WHEELED ROBOT WITH OBSTACLE SENSOR IN THE FRONT AND LINE SENSOR AT THE BOTTOM

;----------------------------------------------------------------------------------------------------------------------------------




-----------------------------------------------------------------------------------------------------------------------------------

;MICRO CONTROLLER AT89C2051 WITH 12MHZ CRYSTAL OSCILLATOR

;PIN CONFIGURATION:--_____________________________________________________________________________________________________________

;PORT 1{MOTOR CONTROL AND OBSTACLE SENSOR}

;PORT 3{INDICATOR LED AND LINE SENSOR}

;_________________________________________________________________________________________________________________________________


;MOTOR CONTROL


-------- ------------ -------------- ----------------- -------------------

; P1.7 AND P1.6 CONTROLS RIGHT MOTOR>>>>>>>>>>>>>

; P1.7 = 1 P1.6 = 0 RIGHT MOTOR ROTATES IN FORWARD DIRECTION

; P1.7 = 0 P1.6 = 1 RIGHT MOTOR ROTATES IN BACKWARD DIRECTION

;-------------------------------------------------------------------


; P1.5 AND P1.4 CONTROLS LEFT MOTOR>>>>>>>>>>>

; P1.5 = 1 P1.6 = 0 LEFT MOTOR ROTATES IN FORWARD DIRECTION

; P1.5 = 0 P1.6 = 1 LEFT MOTOR ROTATES IN BACKWARD DIRECTION

;____________________________________________________________________________________


;OBSTACLE SENSOR 


;-------------------------- ------------------------ -------------------


;P1.0 IS CONNECTED TO OBSTACLE SENSOR

;THE SENSITIVITY OF THE SENSOR CAN BE ADJUSTED BY ADJUSTING THE 20K POTENTIOMETER

;SENSOR INPUT TOGGLES BETWEEN 0 AND 1 DEPENDING ON THE PRESENCE OR ABSENCE OBSTACLE

;______________________________________________________________________________________


;INDICATOR LED 


;------------------- ---------------------- --------------------- ----------------


; P3.7 IS CONNECTED TO INDICATOR LED

; INDICATOR LED IS TURNED ON WHEN P3.7 = 0

;INDICATOR LED IS TURNED OFF WHEN P3.7 = 1

;_________________________________________________________________________________________


;LINE SENSOR


;-------------------- ------------------------ ---------------------- ------------------ 

;P 3.2 CENTRAL LDR LINE SENSOR (LIGHT RED WIRE)

;P 3.3 RIGHT LDR LINE SENSOR   (DARK RED WIRE)

;P 3.4 LEFT LDR LINE SENSOR    (BLACK WITE)

;____________________________________________________________________________________________________________________________________________________

;____________________________________________________________________________________________________________________________________________________

;____________________________________________________________________________________________________________________________________________________


fwdhex equ 0a1h    ; hex code for moving forward when mov port1

trnhex equ 091h    ; hex code for turning right when mov port1

linsenhex equ 09ch      ;hex code for activating line sensor without turning on the indicator led

trntim equ 10h     ;time duration for turning

stpsnshex equ 01h  ; stop motor but sense when mov to port 3

onpwm equ 0ffh     ;+ve pulse width for pwm

offpwm equ 0ffh    ;0 level pulse width for pwm


 


;booting led indicator blink program

;------------------------------------

          mov r1,#02h;                         ;blink counter

          mov p1,#00h                          ;sensor off motor off

blink:    clr p3.7                             ; led indicator turned on

          lcall delay

          setb p3.7                             ;led indicator turned off

          lcall delay

          djnz r1,blink                         ; blink twice

          ljmp main

DELAY:       MOV R5,#08H

DELAY1:      MOV R6,#0FFH

DELAY2:      MOV R7,#0FFH

DELAY3:      DJNZ R7,DELAY3

             DJNZ R6,DELAY2

             DJNZ R5,DELAY1

             RET 

;-----------------------------------

;program for copying status of sensor to indicator

;-------------------------------------------

;SENSOR MODULE

;IF SENSOR RECEIVES LIGHT LED IS TURNED ON

;NOTE ADJUST 20K POTENTIOMETER FOR PROPER SENSITIVITY

;out put is sensor status "c"

sense:setb p3.7

      MOV C,P1.7                ;READ SENSOR

      MOV P3.7,C                ;ECHO IT TO LED

      nop

      nop

      nop

      ret

;------------------------------------------------

;main module

;-----------------------------------------------


main:acall sense

     jc steer

     MOV P1,#0A0H;                         MOTOR1 &  MOTOR2 ROTATE IN ONE DIRECTION

     lcall pulse;                          pulse width for speed adjustment

     mov p1,#01h;                           sensor on motor off for fraction of second

     sjmp main

steer:mov p1,#91h;                         motor1 motor2 rotating in opposite direction

      lcall pulse2;                          steering time for robot

      ljmp main

;----------------------------------------------------

;pulse and pulse2

;--------------------------------------------------------

pulse:mov r5,#0ffh

repeat:djnz r5,repeat

       ret


pulse2:      MOV R5,#steertime

sub1:      MOV R6,#0FFH

sub2:      MOV R7,#0FFH

sub3:      DJNZ R7,sub3

           DJNZ R6,sub2

           DJNZ R5,sub1

 

           RET 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

you may notice a lot of  discrepancies in the program like some of the identifiers defined on top not being used in the program . its because i made several versions of the program and  in some i defined the pin configuration and in some i didn't and jumped straight to coding it has been along time since i made this robot (3months),  i just compiled the notes by copy pasting the codes i had on my laptop to make the code roughly sensible.  A queries about hardware or codes will be acknowledged.

Flag this post

Thanks for helping to keep our community civil!


Notify staff privately
It's Spam
This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.

You flagged this as spam. Undo flag.Flag Post