Programming A Robot Using
Upcoming SlideShare
Loading in...5
×
 

Programming A Robot Using

on

  • 4,107 views

This is the presentation covers many concepts about programming the microcontrollers.

This is the presentation covers many concepts about programming the microcontrollers.

Statistics

Views

Total Views
4,107
Views on SlideShare
2,822
Embed Views
1,285

Actions

Likes
2
Downloads
122
Comments
1

17 Embeds 1,285

http://gecroboticsclub.blogspot.in 734
http://gecroboticsclub.blogspot.com 511
http://gecroboticsclub.blogspot.com.au 12
http://www.gecroboticsclub.blogspot.com 4
http://gecroboticsclub.blogspot.ca 4
http://gecroboticsclub.blogspot.com.es 3
http://gecroboticsclub.blogspot.fr 3
http://www.slideshare.net 3
http://translate.googleusercontent.com 2
http://gecroboticsclub.blogspot.co.uk 2
http://gecroboticsclub.blogspot.co.il 1
http://gecroboticsclub.blogspot.co.nz 1
http://gecroboticsclub.blogspot.sg 1
http://gecroboticsclub.blogspot.dk 1
http://gecroboticsclub.blogspot.hu 1
http://www.gecroboticsclub.blogspot.in 1
https://www.mturk.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Programming A Robot Using Programming A Robot Using Presentation Transcript

  • PROGRAMMING A ROBOT USING ICC AVR Ver 7.5
  • ICC AVR ver 7.5
    ICC AVR is a tool used to program Atmel microcontrollers.
    It uses a C compiler to compile the high level code into a low level code.
    ICC AVR then converts this low level code into HEX code.
    It also has built in tools to program the flash memory of the microcontroller.
  • HOW TO INSTALL ICC AVR ver 7.5
  • ICC AVR ver 7.5 is not a freeware and thus you have to purchase it.
    But 45 days trial versions are available on the net and they give almost the same features.
    Thus download the setup of the trial version from the site : http://www.imagecraft.com/
    Run the setup and install ICC AVR ver 7.5
  • HOW TO USE ICC AVR ver 7.5
  • H BRIDGE PIN-OUT
  • L293D
    IN1
    IN2
    EN1
    PC2
    PC3
    PC4
    PC5
    PC6
    PC7
    OUT1
    OUT2
    OUT3
    OUT4
    A
    T
    M
    E
    G
    A
    1
    6
    IN3
    IN 4
    EN2
  • IMPORTANT STUFF….
  • Input Output PORTS
    • Four, 8 bit I/O ports- PORT A,B,C,D
    • All I/O ports pins are bidirectional and can be
    configured individually
    • Input pins can be configured to utilize
    internal pullups.
    • Data Direction Register , DDRn
    • Port Driver Register, PORTn
    • Port Pin Register, PINn
  • Data Direction Register, DDRn
    • Determines the direction of individual pins of
    ports
    • If the bit of the DDR is set the corresponding pin
    of the port is configured as output pin
    • If the bit of the DDR is cleared the
    corresponding pin of the port is configured as
    input pin
    • DDRA = 0xF0;
    • 4 MSB pins of PORTA are output pins
    • 4 LSB pins of PORTA are input pins
  • Port Pin Register, PINn
    • Reading the input pins of port is done by
    reading PIN register
    • Temp = PINA;
    • Read the PORTA input and store in temp variable
  • Port Drive Register, PORTn
    • For pins configured as input
    (DDRn[x] = 0) microcontroller connects a
    internal pull up register if the
    corresponding bit of PORTn is set
    • If the PORTn bit is cleared, pin is Tristated
    • DDRA = 0x00;
    • PORTA = 0xF0
  • Buzzer On / OFF
    • PORT B pin 7
    • Pin is configured as output
    • DDRB= 0x80;
    • To turn on the buzzer output high
    • PORTB = 0x80;
    • To turn off the buzzer output low
    • PORTB = 0x00;
  • Buzzer Function
    void Buzzer_ON(void)
    {
    PORTB = 0x80;
    }
    void Buzzer_OFF(void)
    {
    PORTB = PORTB & 0x7F;
    }
  • LED DISPLAY
    8 bit LED display is connected to PORTD.
    To display any bit combination on the LED display, we use…
    PORTD=0xXX;
  • CODE FOR LED DISPLAY
    void main(void)
    {
    init_devices();
    while(1)
    {
    PORTD=0xFF;
    }
    }
  • Analog To Digital Converter
    • 10 bit resolution
    • 8 channels
    • PORTA(0 – 7)
    • Disable internal pull up
    • ADCH & ADCL – Data Register
    • ADMUX- Channel Select Register
    • ADCSR – Control & Status Register
  • unsigned char ADC_conversion (unsigned char ADC_channel_number)
    {
    unsigned inti = 0;
    ADCH = 0x00;
    i = ADC_channel_number & 0x0F; // keeping the loweatnibbel
    ADMUX = i | 0x20; //upper nibbel of 0x20 indicates the result is left adjusted (8 bit ADC conversion)
    ADCSR |= 0x40;
    for (i = 1; i < 255; i++); //delay of 93.2 uS
    i = ADCH;
    return (i);
    }
    void main(void)
    {
    unsigned char I, value[3];;
    for(i=0;i<3;i++)
    {
    value[i]=ADC_conversion(i);
    }
    }
  • HOW TO COMPILE AND BUILD YOUR CODE
  • After you program your robot, it is ready to run the code written onto the microcontroller.
    So just power on the microcontroller and it will start the execution of the code.
  • MOTION CONTROL AND LINE FOLLOWING
  • PORT CONFIGURATION
    PORTA is ADC port.
    3 white line sensors are connected to pin1, pin2, pin 3 of PORTA.
    PORTC is connected to the H-bridge.
  • CODE FOR MOTION
    void delay(int time)
    {
    inti,j; for(i=0;i<time;i++) for(j=0;j<500;j++);}void backward(void) // subroutine for backward motion{ PORTC=0xB4; delay(100);}void right(void) // subroutine for right motion{ PORTC=0xB8; delay(100);}void left(void) // subroutine for left motion{ PORTC=0xD4; delay(100);}void forward(void) // subroutine for forward motion{ PORTC=0xD8; delay(100);} void stop(void) // subroutine for stop motion{ PORTC=0xFF; delay(100);}
    //void main(void){init_devices(); //insert your functional code here... forward(); delay(1000); left(); delay(100); forward(); delay(1000); right(); delay(100); backward(); delay(1000); stop(); delay(100);}
  • CODE FOR LINE FOLLOWER
    unsigned intADC_conversion (unsigned intADC_channel_number)
    {
    unsigned inti = 0;
    ADCH = 0x00;
    i = ADC_channel_number & 0x0F; // keeping the loweatnibbel
    ADMUX = i | 0x20;
    ADCSR |= 0x40;
    for (i = 1; i < 255; i++); //delay of 93.2 uS
    i = ADCH;
    return (i);
    }
    void forward(void)
    {
    PORTC=0xD8;
    }
    void left(void)
    {
    PORTC=0xB8;
    }
    void right(void)
    {
    PORTC=0xD4;
    }
    void backward(void)
    {
    PORTC=0xB4;
    }
    //
    void main(void)
    {
    unsigned char value[3];
    unsigned char i;
    init_devices();
    while(1)
    {
    for(i=0;i<3;i++)
    {
    value[i]=ADC_conversion(i);
    }
    if (value[1] < 50)
    {
    forward();
    }
    else
    {
    if(value[2] > 90)
    {
    left();
    }
    else
    {
    if (value[0] > 90)
    {
    right();
    }
    else
    {
    backward();
    }
    } } } }
  • THANK YOU…