Obstacle Avoiding Robot using AVR ATmega32 – Part II

Hello and Welcome back to the second part of Obstacle Avoiding Robot Tutorial. In the last part we studied the drive system and the mechanical construction of our robot. In this part we will make the sensor part. The sensors will help our robot detect obstacle in its path. The sensor system is of very basic type of infrared(IR) reflectance sensor. It is made up of an IR Transmitter and an IR receiver. The IR transmitter is an IR LED which emits light in IR spectrum that is invisible to human eye. The IR receiver can detect those rays. A Matching Pair of IR Rx and Tx, The Blue One is Tx (LED). The IR Sensor Element The IR Sensor element is made up of an IR Tx,IR Rx and few resistors. The schematic is given below. We need three such elements mounted in front of the robot to sense obstacles in front of it. IR Reflectance sensor schematic. As you can see the sensor element has two pins for power supply and an Output pin. The output is a variable voltage between 0 and 5v depending on the type and distance of the obstacle. It tends to 5v as some obstacle comes near it. IR Sensor Construction Guidelines. The value of R1 is 150 ohms and R2 is 22K. […]

Multiplexed Seven Segment Display using PIC16F877A and HI-TECH C

#include <htc.h> #define _XTAL_FREQ 20000000UL typedef unsigned char UINT8; typedef signed char INT8; typedef unsigned int UINT16; typedef signed int INT16; //Connection of Seven segment display #define SEVEN_SEGMENT_LAT PORTD #define SEVEN_SEGMENT_TRIS TRISD //MUX Control #define MUX_PORT PORTB #define MUX_START_POS 1 //From which bit on port the select lines start //MUX settings #define MUX_DISP_COUNT 4 //Number of displays //Global Varriable UINT8 DisplayArray[MUX_DISP_COUNT];//Holds ‘data’ for each disp void SevenSegmentWrite(UINT16 n) { /* n=data to dislay example: n=1234 will display 1234 in a 4 segment display Working: This function breaks apart a given integer into separete digits and writes them to the display array i.e. digits[] */ UINT8 i=0; UINT8 j; while(n) { DisplayArray[i]=n%10; i++; if(i==MUX_DISP_COUNT) break; //We don’t have room for more digits n=n/10; } //Fill Unused area with 0 for(j=i;j<MUX_DISP_COUNT;j++) DisplayArray[j]=0; } void WriteSegment(UINT8 num) { switch (num) { case 0: //-GFEDCBA SEVEN_SEGMENT_LAT = 0B01000000; break; case 1: //-GFEDCBA SEVEN_SEGMENT_LAT = 0B01111001; break; case 2: //-GFEDCBA SEVEN_SEGMENT_LAT = 0B00100100; break; case 3: //-GFEDCBA SEVEN_SEGMENT_LAT = 0B00110000; break; case 4: //-GFEDCBA SEVEN_SEGMENT_LAT = 0B00011001; break; case 5: //-GFEDCBA SEVEN_SEGMENT_LAT = 0B00010010; break; case 6: //-GFEDCBA SEVEN_SEGMENT_LAT = 0B00000010; break; case 7: //-GFEDCBA SEVEN_SEGMENT_LAT = 0B01111000; break; case 8: //-GFEDCBA SEVEN_SEGMENT_LAT = 0B00000000; break; case 9: //-GFEDCBA SEVEN_SEGMENT_LAT = 0B00010000; break; } } void Wait() { UINT8 i; for(i=0;i<1;i++) __delay_ms(10); } void main() […]

Obstacle Avoiding Robot using AVR ATmega32 – Part I

Hi and Welcome All, In this tutorial series I will show you how to make a simple obstacle avoiding robot using the xBoard v2.0 microcontroller board. xBoard v2.0 is well suited for developing small intelligent robots as it is compact in size, has four DC motor controller, can be programmed using USB Port and many other features. It is also very easy to learn and use. The xAPI, which is a set of C functions which makes complex programming tasks such as PWM ,LCD, Remote Control etc very easy for beginners. You can buy it from here http://shop.extremeelectronics.co.in/product_info.php?cPath=23&products_id=111 Its design is open so if you don’t want to buy the board you can make it yourself at home by the help of its schematic. The Robo’s Task The task of our robo is simple. To move randomly in an area avoiding obstacles, that’s it ! Though the task is simple, its a complete autonomous robot in itself. It has a brain which reads sensors and makes decisions and command the motors. In the course of making the robot you will learn various basic techniques which will be of great use for your further projects. Our Final Robot will look like this. AVR ATmega32 Based Obstacle Avoiding Robot The following Video Demo Shows the Robo in Action The following Video was […]