Gawin ang Robot na Tagasunod ng Linya para sa Project Fair ng Agham

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Sa post na ito natututunan namin kung paano bumuo ng isang linya ng tagasubaybay ng robot circuit gamit ang Arduino, na tatakbo sa isang partikular na iginuhit na layout ng linya at matapat itong susundan hangga't magagamit at mahahanap ito ng mga sensor.

Ni navneet sajwan



Ano ang isang Robot na Sumusunod sa Linya

Ang isang autonomous na robot ay isang makina na maaaring gumawa ng isang serye ng mga pagkilos na itinuro ng programmer, nang hindi manu-manong kontrolado ng isang tao nang real-time.

Ang mga tagasunod sa linya (LFRs) ay mga autonomous robot car na ginagabayan ng isa o higit pang mga sensor at isang itim o puting linya ng linya. Bumubuo sila ng batayan ng mga modernong kotse na nagmamaneho sa sarili.



Tulad ng bawat autonomous na robot, ang mga tagasunod sa linya ay may signal processing at paggawa ng desisyon unit, sensor at actuators. Kung ikaw ay isang nagsisimula sa robotics at nais itong seryosohin, dito ka dapat magsimula. Magsimula tayo sa paggawa nito.

Gumamit ako ng dalawang infra-red sensor at three wheel drive para sa paggawa ng proyektong ito. Minimum na bilang ng mga sensor na maaaring magamit ay isa at maximum ng walong ay sapat para sa sumusunod na linya na batay sa PID.

Kinakailangan ang Mga Bahagi:

Arduino uno

Chassis

Dalawang baterya na pinapatakbo (b.o.) Na mga motor at katugmang gulong

Castor ball

Dalawang infrared sensor

Modyul ng driver ng motor

Power Supply

Arduino IDE software

Ngayon, tingnan natin ang aming mga bahagi:

ARDUINO ONE : Isipin ito bilang control room ng aming robot. Ngayon, maraming mga development board, na isinasaalang-alang para sa proyektong ito, ngunit ang Arduino UNO ay walang tugma sa iba. Hindi iyon ang aming bida ay nakahihigit sa mga tuntunin ng mga multidimensional na tampok.

Kung iyon ang kaso, ang Raspberry Pi at Intel Edison ay maaaring smacked ito sa pagitan ng mga mata. Ang pinaka-nakakahimok na mga argumento na humantong sa pagpili ng Arduino UNO ay nabuo ng kombinasyon ng mga tampok, presyo, laki at kinakailangan para sa proyekto.

Ang ilang mga kaugnay na dahilan ay:

SIZE : Medyo maliit ito kumpara sa Atmega16 o Atmega8 based development boards, kumokonsumo ng kaunting puwang sa chassis, kaya makakakuha ka ng isang compact at madaling gamiting bot.

Mahalaga talaga ito sa mga kumpetisyon ng robotics. Tiwala sa akin ay galit ka sa paggala sa paligid ng malaking pangit na bot na iyon, binabago ang mga lugar sa buong araw.

Mas maliit ang sukat, mas mabilis ang robot at mas mahusay ang mga pagliko.

PINAKA LAMANG PROTOTYPING BOARD : Walang alinlangan, ang Arduino UNO ay may pinakamahusay na kumbinasyon ng mga tampok para sa prototype . Kapag ang iyong mga circuit ay nasa lugar at ang iyong proyekto ay gumagana perpekto maaari mong palitan ito ng isang bagay na mas maliit at mas mura tulad ng Arduino Nano at Attiny85 ic.

Para sa mga iyon, na gumagawa ng tagasunod sa linya para sa mga proyekto sa kolehiyo, iminumungkahi kong palitan ang UNO ng Nano sa huli.

CHASSIS : Ito ang frame na humahawak sa lahat ng mga bahagi sa posisyon. Mayroong ilang mga puntos na isasaalang-alang habang bumibili ng isang bagong chassis,

Dapat itong magaan at malakas.

Para sa mga proyekto, mas mabuti kung bumili ka ng isa mula sa merkado. Ngunit Kung naghahanda ka para sa kumpetisyon, masidhi kong iminumungkahi na ipasadya mo ang iyong sarili, na isinasaalang-alang ang mga sukat at mga kinakailangan ng kumpetisyon.

Pumili ng isang plastic o kahoy na chassis. Kapag ang mga metal na frame ay nakikipag-ugnay sa Arduino, ang isang bilang ng mga pin ay pinapaliit. Ito ay isang malaking kadahilanan upang ituon habang naghahanap ng mga chassis.

Panatilihing mababa ang iyong chassis hangga't maaari - nagbibigay ito ng katatagan sa bot.

Mga MOTOR : Gumamit ng magaan na baterya na pinapatakbo (B.O.) d.c. mga motor

CASTOR BALL : Ang mga normal na gulong ay nagbibigay ng galaw na nagsasalin kasama ang isang solong axis ngunit ang isang castor ball ay dinisenyo upang ilipat kasama ang anumang direksyon sa ibabaw. Nagbibigay ito sa amin ng tatlong gulong.

Ang dahilan para sa kagustuhan ng tatlong wheel drive sa 4 na gulong ay dahil sa medyo mabilis na pagkilos na ito. Maaaring napansin mo ang mga cycle rickshaw na tumusok sa trapiko tulad ng mga reptilya. Parehas ang kaso ng aming robot.

SENSORS : Ito ay isang aparato na nakakakita o sumusukat sa anumang pisikal na parameter ng aming kapaligiran at ginagawang electric signal. Sa kasong ito ang parameter na napansin ay mga infra-red ray.

Ang mga sensor ay lubos na pangunahing para sa anumang robot. Kaya, kung ang arduino ay utak ng ating bot, ang mga sensor ay maaaring gampanan ng mga mata. Narito ang ilang mga bagay tungkol sa mga sensor:

Ang mga sensor ay dapat na nakatuon sa isang paraan na humantong sa (mga) mukha sa lupa.

Dapat ilagay sa harap na dulo ng iyong bot.

Ang minimum na spacing sa pagitan ng mga ito ay dapat na mas malaki kaysa sa lapad ng itim na linya.

MOTOR DRIVER BOARD : Ang mga motor-driver ay mga buffer circuit na kukuha ng mga signal ng mababang boltahe upang mapalakas ang mga motor na nangangailangan ng mas mataas na boltahe.

Sa aming kaso, ang Arduino ay maaaring magbigay ng sapat na boltahe upang himukin ang mga motor ngunit hindi ito maaaring magbigay ng sapat na kasalukuyang. Ang 5v at GND na pin ng Arduino UNO ay mayroong kasalukuyang rating na 200mA habang ang anumang pin ng GPIO ay mayroong rating na 40 mA. Ito ay mas mababa sa paraan kaysa sa mga nagsisimula at stall na alon ng motor na kailangan namin.

Mayroong dalawang mga driver ng motor na mas gusto ko para sa proyektong ito: L298N at L293D. Pareho sa kanila ay pantay na angkop para sa paggawa ng proyektong ito.

Kahit na, Ang L293D ay medyo mura ngunit may isang mababang kasalukuyang rating. Ang kanilang mga koneksyon ay halos pareho. Dahil, naibigay ko ang mga koneksyon para sa pareho, ganap na nakasalalay sa iyo kung paano mo ginawa ang iyong bot.

POWER SUPPLY :

Gumamit ng isang 12 v adapter o isang baterya (hindi hihigit sa 12 volts).

Ang paglalagay ng mga bahagi (mula sa harap hanggang sa likod ng dulo):

Ang mga sensor sa ulo ng iyong bot.

Castor wheel sa gitna.

Mga motor at gulong sa isang linya sa likuran.

Mga koneksyon:

SENSORS hanggang ARDUINO :

Ikonekta ang sensor pin sa arduino pin tulad ng ipinakita,

Sensor pinArduino pin
VCC (5v)5V
GND (G)GND
LEFT SENSOR OUT (GUMAWA)pin 6
RIGHT SENSOR OUT (GUMAWA)pin 7

Tandaan: Upang suriin kung ang iyong mga sensor ay pinalakas, ituro ang iyong cell phone camera sa led ng IR transmitter. Makikita mo ang humantong kumikinang sa screen na hindi makikita ng aming mga mata. Ang ilang mga modernong cell phone camera ay mayroong Infra red filter. Kaya, mangyaring isaalang-alang iyon.

MOTOR sa MOTOR DRIVER:

Ang bawat motor ay may dalawang mga terminal na kailangang ikonekta sa motor driver. Huwag kailanman subukang ikonekta ang mga ito nang direkta sa arduino. Naghahanap mula sa likuran ng iyong bot, na may mga motor na malapit sa iyo at mga sensor ang layo, ikonekta ang mga ito tulad ng sumusunod:

ENGINEL298NL293D
KALIWANANG MOTORPIN 1 AT 2PIN 7 AT 8
TAMA NA MOTORPIN 13 AT 14PIN 9 AT 10

MOTOR DRIVER sa ARDUINO UNO:

MOTOR DRIVER (L298N)ARDUINO ONE
PIN 4WINE
PIN 5GND
PIN 65V
PIN 8 & PIN 9PIN 3 at PIN 9
PIN 10 & PIN 11PIN 5 at PIN 10
PIN 7 at PIN 125V
MOTOR DRIVER (L293D)ARDUINO ONE
PIN 3WINE
PIN 2GND
PIN 15V
PIN 5 AT PIN 6PIN 3 at PIN 9
PIN 11 AT PIN 12PIN 5 at PIN 10
PIN 4 AT PIN 55V

TANDAAN: Ang mga pin 8 at 9 ng l298n ay ginagamit upang makontrol ang motor na konektado sa 1 at 2. At, 10 at 11 control motor na konektado sa mga pin 13 at 14. Katulad nito, ang mga pin 5 at 6 ng l293d ay ginagamit upang makontrol ang motor na konektado sa 7 at 8. At, 12 at 11 control motor na konektado sa mga pin 9 at 10.

Narito kami mga tao, sa dulo ng bahagi ng disenyo. Mayroon pa kaming coding na dapat gawin ngunit bago iyon ay dumaan kami sa mga prinsipyo na pinapayagan ang pagsunod sa linya.

Paano gumagana ang isang infra red sensor:

Ang mga infra red sensor (IR sensors) ay maaaring magamit upang maunawaan ang kaibahan ng mga kulay at kalapitan ng mga bagay dito. Ang prinsipyo na namamalagi sa likod ng pagtatrabaho ng IR sensor ay medyo pangunahing.

Tulad ng nakikita natin, mayroon itong dalawang mga leds - IR na nagpapalabas ng led at isang photodiode. Kumikilos sila bilang pares ng transmitter-receiver. Kapag ang isang balakid ay dumating sa harap ng mga emitter ray, makikita ang mga ito pabalik at naharang ng tatanggap.

Bumubuo ito ng isang digital signal na maaaring mapakain sa mga microcontroller at actuator upang gumawa ng kinakailangang aksyon sa pag-engkwentro ng balakid.

Sinabi sa amin ng pangunahing pisika na ang isang itim na katawan ay sumisipsip ng lahat ng insidente ng electromagnetic radiation dito habang ipinapakita ito ng isang puting katawan. Ang prinsipyong ito ay pinagsamantalahan ng isang tagasunod sa linya upang makilala ang pagkakaiba sa pagitan ng puti at itim na ibabaw.

Paano gumagana ang isang tagasunod na robot na linya:

LINE FOLLOWER LAYOUT

Sa normal na kondisyon, ang robot ay gumagalaw sa isang paraan na ang parehong mga sensor ay sobrang puti at ang itim na linya ay nasa gitna ng parehong sensor.

Ito ay nai-program upang paikutin ang parehong mga motor tulad ng bot na gumagalaw sa pasulong na direksyon.

Medyo natural, habang lumilipas ang oras ang isa sa dalawang mga sensor ay dumarating sa itim na linya.

Kung ang kaliwang sensor ay umabot sa linya, ang mga kaliwang motor ay mapahinga at bilang isang resulta ang bot ay nagsisimulang lumiko patungo sa kaliwa maliban kung ang kaliwang sensor ay bumalik sa puting ibabaw at nakamit ang normal na kondisyon.

Katulad nito, kapag ang tamang sensor ay dumating sa itim na linya, ang mga tamang motor ay tumitigil at dahil dito ang bot ngayon ay lumiliko patungo sa kanan maliban kung ang sensor ay bumalik sa puting ibabaw. Ang mekanismong ito ng pagikot ay kilala bilang mekanismo ng kaugalian sa pagmamaneho.

DIIRA NG CIRCUIT:

Mga DETALYONG WIRING:

PROGRAMMING AT KONSEPTO:

Sa tapos na sa bahagi ng circuit, magpapatuloy kami ngayon sa bahagi ng programa. Sa seksyong ito, mauunawaan namin ang program na kumokontrol sa aming robot. Narito ang code: / *
Created and tested by Navneet Singh Sajwan
*Based on digital output of two sensors
*Speed control added
*/
int left, right
int value=250
void setup()
{
pinMode(6,INPUT)//left sensor
pinMode(7,INPUT)//right sensor
pinMode(9,OUTPUT)//left motor
pinMode(3,OUTPUT)//left motor
pinMode(10,OUTPUT)//right motor
pinMode(5,OUTPUT)//right motor
// Serial.begin(9600)
}
void read_sensors()
{
left=digitalRead(6)
right= digitalRead(7)
}
void move_forward()
{
analogWrite(9,value)//3,9 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_left()
{
digitalWrite(9,LOW)//9,3 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_right()
{
analogWrite(9,value)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void halt()
{
digitalWrite(9,LOW)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void print_readings()
{
Serial.print(' leftsensor')
Serial.print(' ')
Serial.print(left)
Serial.print('rightsensor')
Serial.print(' ')
Serial.print(right)
Serial.println()
}
void loop()
{
read_sensors()
while((left==0)&&(right==1)) // left sensor is over black line
{
turn_left()
read_sensors()
print_readings()
}
while((left==1)&&(right==0)) // right sensor is over black line
{
turn_right()
read_sensors()
print_readings()
}
while((left==0)&&(right==0)) // both sensors over the back line
{
halt()
read_sensors()
print_readings()
}
while((left==1)&&(right==1))// no sensor over black line
{
move_forward()
read_sensors()
print_readings()
}
}

Paglalarawan ng mga pagpapaandar na ginamit:

read_sensors (): Kinukuha ang mga pagbasa ng parehong mga sensor at iniimbak ang mga ito sa mga variable na kaliwa at kanan.

move_forward (): Kapag ang arduino ay nagpapatupad ng pagpapaandar na ito, ang parehong mga motor ay gumagalaw sa pasulong na direksyon.

turn_left (): Kaliwang motor na humihinto. Lumiko sa kaliwa si Bot.

turn_ Right (): Tamang paghinto ng motor. Lumiko sa kanan si Bot.

ihinto (): Humihinto ang bot.

print_readings (): Nagpapakita ng mga pagbabasa ng mga sensor sa serial monitor. Para sa mga ito kailangan mong i-unsment ang 'Serial.begin (9600)' sa walang bisa na pag-set up.

MGA PAGBASA NG SENSOR:

SENSOR OVER LINEPAGBASA NG SENSOR
KALIWANTAMA
Kaliwang SENSOR01
TAMA SENSOR10
WALA11
DALAWA00

KONTROL NG BILIS:

Minsan ang bilis ng mga motor ay napakataas na bago pa mabibigyang kahulugan ng arduino ang mga signal ng sensor, mawawala ang linya ng robot. Sa madaling salita, ang bot ay hindi sumusunod sa linya dahil sa mataas na bilis at patuloy na mawala ang linya kahit na ang algorithm ay tama.

Upang maiwasan ang mga ganoong pangyayari, binabawas namin ang bilis ng bot gamit ang diskarteng PWM. Sa code sa itaas mayroong isang variable na pinangalanang halaga.

Bawasan lamang ang numerong halaga sa pagpapaandar upang mabawasan ang bilis. Sa Arduino UNO maaari kang magkaroon ng mga halaga ng pwm sa pagitan ng 0 at 255 lamang.

analogWrite (pin, halaga)

0<= value <=255

Ito ang pagtatapos ng aking post sa tagasunod sa linya. Umaasa ako na ito ay sapat na detalyado upang sagutin ang lahat ng iyong nasusunog na mga query at kung sa pinakakailang katotohanan na ito ay hindi, pagkatapos ay palagi naming magagamit ang seksyon ng komento para sa iyo. I-comment ang iyong mga pagdududa. Magkaroon ng isang masayang tinkering!




Nakaraan: Kinokontrol ng Mobile Phone ng Car Car ng Paggamit ng DTMF Module Susunod: Kinokontrol ng Password AC Mains ON / OFF Switch