I made a line follower robot with PIC16F84A microprocessor equipped with 4 IR sensors. This robot can run on the black and white lines.

Step 1: First Step

Before everything you must know how to make a Printed Circuit Board and how to solder components on it. You also need to know how to program a PIC16F84A IC.
Here are the links to good instructables about making a PCB and Soldering:


Step 2: Things You Need

To make this robot you need the following things:
  • Some copper board
  • Printed circuits
  • Saw
  • Sandpaper
  • Iron
  • Circuit board acid
  • 1mm drill
  • Soldering oil
  • Soldering wire
  • Soldering iron
  • Wire cutter
  • Some wire
  • 2x Plastic wheels
  • 1x Spherical front wheel
  • Glue
Circuit boards components:
  • A 4 AA battery holder
  • U1 = PIC16F84A Microcontroller + Socket
  • U2 = 7805 = 5V Voltage Regulator
  • U3 = LM324 Comparator
  • U4 = L298 Motor Driver + Aluminum Radiator
  • XT = 4MHz Crystal
  • C1 = C2 = 22pF Ceramic Capacitors
  • C3 = 100uF Electrolyte Capacitor
  • C4 = C5 = 100nF Ceramic Capacitors (104)
  • D = 8 x 1N4148 Diodes
  • R1 = 4.7K Resistor
  • R2 = R3 = 10K Resistors
  • R4 = R5 = R6 = R7 = 1K Resistors
  • R8 = 10K Resistor
  • R9 = 1K Resistor
  • R10 = R11 = 47K Resistors
  • R12 = R13 = R14 = R15 = 100ohm Resistors
  • R16 = R17 = R18 = R19 = 10K Resistors
  • RP = LP = MP = FP = 10K Potentiometers
  • L Motor = R Motor = 60rpm MiniMotors with Gearbox (6V)
  • R Sensor = L Sensor = M Sensor = F Sensor = TCRT5000 Infrared Sensors
  • ModeLED = LBLED = RBLED = Small Red LEDs
  • LFLED = RFLED = Small Green LEDs
  • Mode = Left = Right = Small Buttons
  • SW = Toggle Switch = On/Off Switch
  • J = Jumper = A piece of wire

Step 3: Making the Circuit Boards

Print the circuits on a glossy paper with a laser printer. Cut copper boards, clear them with sandpaper and put the printed circuits on them. After pressing the hot iron on the boards remove the papers and soak boards in acid, wait till visible copper disappears. Wash the boards, drill the holes and clear them with sandpaper.

* I have only a symbolic diagram of the robot that you can see here.

Step 4: Soldering Components

Solder all parts on the boards.
Be careful of the correct direction of components.
Use a socket for PIC16F84A IC.
Solder motors and battery holder on the back side of the Bottom board and put some pieces of paper around motors to avoid unexpected contacts in the circuit.
Solder C4 and C5 right on the motors.
Put a piece of paper among potentiometers legs to avoid contacts.

Step 5: Soldering All Together

Connect terminals with same name on the boards together by some piece of wires (You can use the extra legs of the other components).
Solder the Back board to the Top board.
Solder the Front board to the Top board.
Bend the wires and put three boards on the battery holder and solder Front board and Back board to the Bottom board (Use some long flexible wires to contact terminals of the Back and Bottom boards).
Connect + terminal on the Top board to the battery holders + pole.

Step 6: Wheels

Connect 2 plastic wheels to the motors and cover them with a rubber band.
Attach a wheel to the Back board in front of the robot with some glue, I used a dead LED as front wheel but it makes the robot move slow and I recommend to use a spherical wheel.
Cover the gearboxes with sheets of thin plastic.

Step 7: Programming the Robot

Download the robot program (Code.hex) and program the PIC16F84A IC.

Step 8: RUN

Put 4 AA batteries into the battery holder, make a path, and turn on the robot.
If the robot does not work check soldering carefully.
Now you must adjust potentiometers to robot be able to detect black and white areas. Turn all potentiometers to leftmost position then turn back about 90 degrees to the right. Hold the robot on the line, move it over a turning if the motors state does not changed change the potentiometers value.
Now put the robot on the path to follow it.

Step 9: Custom Movement

You can define a custom movement for the robot by pressing the Mode button.
When the Mode LED is off the robot is on its default state.
After pressing the Mode button the Mode LED turns on, now you can hold the robot in different states and change the state of the motors depend on their default state by Left and Right buttons.
After pressing the Mode button again the Mode LED starts blinking, now you can hold the robot in different states and change the state of the motors depend on values of the sensors by the Left and Right buttons.
To switch to default state, press Mode button again.
There are four states for the motors:
  1. Default state
  2. Forward (Green LED is on)
  3. Backward (Red LED is on)
  4. Stop (Both Green and Red LEDs are on)

Step 10: How it works?

This robot has 4 IR sensors that scan the path.
If the Right and Left sensors has same values and the values of them are different from the Middle or Front sensors the robot is on the line and motors running forward. Else the robot is out of line so the robot keeps moving till one of  the side sensors value changes then it turns to the direction that its sensor value changed.
You can read the program source code (Code.bas) to understand it better.
sry....i just found it
<p>How do I wire the LS port on the front board to the bottom board? Please clarify all the front-bottom board connections.</p>
Just connect LS on the front board to LS on the bottom board with a piece of wire. Take a look at the PDF file of PCB drawings.
there is no LS on the bottom board..........you may check the pdf yourself
<p>i have seen the entire circuit thoroughly.......it needs only 3 AA batteries right..........i don't see the use of a 4th AA battery because it will just be left unconnected.......and the circuit only requires one 3V Supply and one 1.5V Supply.</p>
No, the circuit supply is 6V. The power comes from ends of battery holder and its mid-pins only used for fastening it.
<p>then the 3V and 1.5V terminals on silkscreen are for??also./...where do i wire the 6V +,- terminals on the circuit??</p>
<p>Solder + of your battery holder to +3V on the bottom board, and + on the top board.</p><p>Solder - of your battery holder to -3V on the bottom board, and - on the top board.</p><p>Solder + on the back of bottom board to to + on the rear board.</p><p>Solder - on the back of bottom board to to - on the rear board.</p><p>IGNORE +1.5V, -1.5V and 0V terminal they are not connected to anywhere.</p>
<p>Hi</p><p>How can I increase speed of motor? (robot should follow the line at the same time.)</p><p>There should be some methods. Can you enlighten me?</p>
Use a faster motor &amp; gearbox. Less gears, less power, more speed.
<p>I'd like to know that if I could achieve the same level of line following by using an Adruino ; because it's been only about an year or two since I have started electronics and I actually don't know anything about using PIC microcontrolers. :-)</p>
You can use any microcontroller you want, design a new circuit for your arduino and change the code for it, it's very easy!
<p>Is it going to affect the performance of the robot I mean PIC microcontrolers v/s Arduino . Besides, I'm a bit new to electronics and don't actually know how to program the PIC microcontrolers so, I'll not be able to understand the program for them that you have given in the instructable. Please explain me the logic of your program of the line follower :-)</p>
<p>Both work same. The code is written in Basic language, and all variables and symbols names are obviousse. The symbols are ti micro pins. Other parts of code that you don't understand is for configuring PIC and you don't need them for Arduino. Only parts that you understand is enough.</p>
<p>Thanks a lot! :-)</p>
<p>sir, i'm little confused with the battery connections. some explanation would be great :-)</p>
<p>Just use battery holder ends. (posetive pole is +3V and negetive pole is -3V) I marked others (+1.5V, -1.5V, 0V) just for fastening battery holder.</p>
<p>Please tell me the &quot;cheaper &quot;alternatives for TCRT5000 which are not hard to find online.......</p>
<p>Make your own, with a 3mm IR transmitter LED, a 3mm IR phototransistor, and a piece of plastic strip as a well between them.</p>
So it's just that basic???.... Only an infrared led and phototransistor simply held by a piece of plastic??? If that's so.... Does usage of tcrt5000 give any advantages???..... Alsoi would like to have a real-time chat with you regarding this project.... Please take some of your precious time out for me. I just want to have a 5 min chat with you.... Be it Gmail or whatsapp.... My email Id:<br>utkarsh.naveen@gmail.com
<p>Yes, That's it. You can make it yourself. Look at its datasheet.</p>
<p>yep....just took a close look at it......it really is nothing but a pair of ir leds......:) thnx for being so helpful.............</p>
<p>is it necessary for the motor to have a gearbox??</p>
If you can get enough torque of the motor at desired speed, no, but most motors have low torque and high speed.
<p>i have a lot of toy motors in spare..they don't have a gearbox...Will they work??</p>
<p>Just search the internet for &quot;minimotor with gearbox&quot;, to find the motor I used.</p><p>If you have lot of toy motors why don't you make your own motor with gearbox. Take a look at my balancing robot (http://www.instructables.com/id/Balancing-Robot/), I made its gearbox myself.</p><p>If you can't find gears just place a narrow rubber tube on motor shaft, place another rubber band on a large wheel and simply place motor shaft and the wheel in contact.</p>
<p>thnx</p><p>i will do that</p>
<p>thnx for your quick reply....would you please provide me with the link for buying this motor...also you may find the most cheap motor compatible with this line follower.....Sorry to bother you , but i just dont have enough money to try out things....it has to be perfect in the first purchase.....Thanks in advance</p>
<p>Hi .help me plz im in a compete </p><p>0911 462 45 22</p>
hey im newbie in here,how can i upload the code to PIC16F84A ,what tool must i have to upload the code ? ,please i need this for my school project
Use any PIC programmer. https://www.google.com/?ion=1&amp;espv=2#q=pic%20programmer
I have a question.<br>Can i make it using PIC16F877A??<br>Is there any code to change?
<p>Yes. You can use any PIC but you need a few modifictions in PCB and code depending on the pins of PIC you use in your project.</p>
<p>another question sir.</p><p>when i choose geared motor set,</p><p>i can't find 60rpm 6v geared motor.</p><p>then can i use another geared motor like</p><p>200rpm???</p><p>less than 60rpm is recommended or more is no problem?</p>
<p>It is a DIY project, so you can make any changes you need. The motor speed depends on your robot size and its wheels diameter. Test motors to find your ideal speed.</p>
<p>Can you tell me the role of capacitors..?? and how their values are found..??</p>
<p>C1 and C2 are for microprocessor oscillator, C3 are for voltage stabilization, C4 and C5 are for motors noise reduction. All of these are basic electronic blocks can be found in datasheets and atricles.</p>
<p>just one more thing... what does &quot;&lt;&gt;&quot; stands in the .bas file.</p>
<p>It is like != in C and means not equal, &quot;if a&lt;&gt;b&quot; means &quot;if a not equals b&quot;.</p>
<p>Can u help me?? sent me a full circuit about this project please..</p><p>Sent complete circuit diagram in here or just email me at sk94_epul@hotmail.com</p><p>Please I realy need it ASAP</p>
Please read step 3, specially the last line.
<p>Hi your project is very good and I want to make this robot, but in the proteus schematic, there is no complete circuit I mean there is no ic324 mentioned in there and there is no motor driver shown in that circuit so please send complete circuit to my email &quot;maheshjshetty@gmail.com&quot;</p>
<p>sorry but can you send me the pic program in a other kind of format because i cannot open the program (Code.hex) </p><p> -thank you so much -</p>
<p>Download &quot;Code.zip&quot; from step 7, you can see 4 files in the zip. The .hex file is the compiled file you must program to PIC. The program source code that is written by PicBasic PRO is the file with .bas extension, you can open it with any text editor software like notepad.</p>
<p>Could you please tell me what are those 1N4148 Diodes used for? Thanks.</p>
<p>I see diodes on your real car are not 1N4148, please tell me which is the right one, thank you, sir</p>
I used 1N4007, but 1N4148 is better, they are for back EMF damping (for more info refer to L298 datasheet).
<p>Nice build! I always wondering, where can I get that kind of skinny wheel?</p>
thanks, you can find them in toys.<br>
<p>Other replacement for 10k potentiometers? <br>Because I think the motor state of my work is not really that accurate in terms of turning left or right. like if it's suppose to go right the left motor is in stop mode. What can probably be the cause? thanks. </p>

About This Instructable



Bio: I'm a mechanical engineer, and I like computer programming, mechanics, electronics and specially the robotics.
More by vahid_you2004:Serial Port over WiFi Cheap Logic Analyzer Cheap STK500 AVR programmer for Atmel Studio 
Add instructable to: