Naj bo ta sledilni robot za projekt Science Fair

Preizkusite Naš Instrument Za Odpravo Težav





V tem prispevku se naučimo, kako z uporabo Arduina zgraditi robotsko vezje sledilca črte, ki bo prečkalo posebej narisano postavitev črte in ji bo zvesto sledilo, dokler bodo senzorji na voljo in sledljivi.

Z navneet sajwan



Kaj je Robot sledilca linij

Avtonomni robot je stroj, ki lahko izvede vrsto dejanj po navodilih programerja, ne da bi ga človek ročno nadzoroval v realnem času.

Linijski sledilci (LFR) so tudi avtonomni robotski avtomobili, ki jih vodi en ali več senzorjev in črna ali bela črta. So osnova sodobnih samovozečih avtomobilov.



Kot vsak avtonomni robot ima tudi sledilci linij enoto za obdelavo signala in odločanje, senzorje in aktuatorje. Če ste začetnik robotike in se je želite lotiti resno, bi morali tu začeti. Začnimo z izdelavo.

Za izdelavo tega projekta sem uporabil dva infrardeča senzorja in trikolesni pogon. Najmanjše število senzorjev, ki jih je mogoče uporabiti, je eno, največ osem pa zadostuje za sledenje črte na osnovi PID.

Potrebne komponente:

Arduino uno

Podvozje

Dva motorja na akumulator in združljive pnevmatike

Ricinusova žoga

Dva infrardeča senzorja

Modul pogonskega motorja

Napajanje

Programska oprema Arduino IDE

Zdaj pa si oglejmo naše komponente:

ARDUINO ONE : Predstavljajte si to kot nadzorno sobo našega robota. Zdaj obstaja veliko veliko razvojnih plošč, ki so bile upoštevane za ta projekt, vendar Arduino UNO preprosto ni bil kos drugim. Saj ni, da je bil naš protagonist boljši po svojih večdimenzionalnih značilnostih.

Če bi bilo tako, bi ga Raspberry Pi in Intel Edison udarila med oči. Najbolj prepričljivi argumenti, ki so privedli do izbire Arduino UNO, so bili sestavljeni iz kombinacije lastnosti, cene, velikosti in zahtev za projekt.

Nekaj ​​pomembnih razlogov je bilo:

VELIKOST : Je precej majhen v primerjavi z razvojnimi ploščami na osnovi Atmega16 ali Atmega8, porabi malo prostora na podvozju, zato dobite kompakten in priročen bot.

To je resnično pomembno na tekmovanjih iz robotike. Verjemite mi, da bi sovražili gostovanje s tistim velikim grdim botom, ki bi ves dan spreminjal prizorišča.

Manjša velikost, hitrejši robot in učinkovitejši zavoji.

NAJBOLJŠA PROTOTIPNA PLOŠČA : Nedvomno ima Arduino UNO najboljšo kombinacijo funkcij za izdelava prototipov . Ko so vaša vezja na mestu in vaš projekt deluje brezhibno, ga lahko zamenjate z nečim manjšim in cenejšim, kot sta Arduino Nano in Attiny85 ic.

Za tiste, ki izdelujejo sledilce linij za univerzitetne projekte, predlagam, da na koncu UNO nadomestite z Nano.

ŠASIJA : Okvir je tisti, ki drži vse komponente v položaju. Pri nakupu novega podvozja morate upoštevati nekaj točk,

Moral bi biti lahek in močan.

Za projekte je bolje, če jih kupite s trga. Če pa se pripravljate na tekmovanje, vam toplo priporočam, da prilagodite svoje, pri čemer upoštevate dimenzije in zahteve tekmovanja.

Izberite plastično ali leseno podvozje. Ko kovinski okvirji pridejo v stik z Arduinom, se številni zatiči skrajšajo. To je velik dejavnik, na katerega se je treba osredotočiti pri iskanju podvozja.

Naj bo vaše podvozje čim nižje - to botu zagotavlja stabilnost.

MOTORJI : Uporabljajte majhno težko baterijo (B.O.), d.d. motorji.

KOLO KOLESARJA : Običajna kolesa omogočajo translacijsko gibanje vzdolž ene osi, kotalna krogla pa je zasnovana tako, da se premika po kateri koli smeri na površini. Omogoča nam trikolesni pogon.

Razlog za to, da imajo raje trikolesni pogon pred 4 kolesi, je razmeroma hitrejše obračanje. Morda ste opazili, da se ciklične rikše prebijajo skozi promet kot plazilci. Enako velja za naš robot.

SENZORJI : Gre za napravo, ki zazna ali izmeri kateri koli fizični parameter našega okolja in ga pretvori v električne signale. V tem primeru so zaznani parametri infrardeči žarki.

Senzorji so zelo pomembni za vsakega robota. No, če so arduino možgani našega bota, bi lahko tudi senzorji igrali vlogo oči. Nekaj ​​stvari o senzorjih:

Senzorji morajo biti usmerjeni tako, da vodijo (-jo) proti tlom.

Moral bi biti nameščen na sprednjem koncu vašega bota.

Najmanjši razmik med njimi mora biti večji od širine črne črte.

MOTORNA VOZNIŠKA PLOŠČA : Motorni gonilniki so vmesni tokokrogi, ki zajemajo nizkonapetostne signale za napajanje motorjev, ki potrebujejo višjo napetost.

V našem primeru lahko Arduino zagotovi dovolj napetosti za pogon motorjev, vendar ne more zagotoviti dovolj toka. 5v in GND zatiči Arduino UNO imajo trenutno moč 200mA, kateri koli GPIO zatič pa 40 mA. To je precej nižje od zagonskih in zastojnih motorjev, ki jih potrebujemo.

Za ta projekt imam raje dva motorna gonilnika: L298N in L293D. Oba sta enako primerna za izdelavo tega projekta.

Čeprav, L293D je razmeroma cenejši vendar ima nizko trenutno oceno. Njihove povezave so skoraj enake. Ker sem dal povezave za oba, je popolnoma odvisno od vas, kako naredite svojega bota.

NAPAJANJE :

Uporabite 12-voltni adapter ali baterijo (ne več kot 12 voltov).

Namestitev komponent (od spredaj do zadnjega dela):

Senzorji na čelu vašega bota.

Ricinusovo kolo na sredini.

Motorji in pnevmatike v eni vrstici zadaj.

Povezave:

SENZORJI za ARDUINO :

Zatič senzorja priključite na zatič arduino, kot je prikazano,

Zatič senzorjaPin Arduino
VCC (5v)5V
GND (G)GND
LEVI SENZOR IZHOD (DO)zatič 6
DESNI SENZOR IZHOD (DO)zatič 7

Opomba: Če želite preveriti, ali so senzorji vklopljeni, usmerite kamero mobilnega telefona na vodilnik IR oddajnika. Na zaslonu boste videli led, ki sveti, česar naše gole oči ne morejo videti. Nekatere sodobne kamere za mobilne telefone imajo infrardeči filter. Torej, prosim, upoštevajte to.

MOTOR-MOTORNI VOZNIK:

Vsak motor ima dva priključka, ki ju je treba priključiti na voznik motorja. Nikoli jih ne poskušajte povezati neposredno z arduino. Če pogledate s hrbtne strani bota, z motorji v vaši bližini in senzorji stran, jih povežite na naslednji način:

MOTORL298NL293D
LEVI MOTORPIN 1 IN 2PIN 7 IN 8
DESNI MOTORPIN 13 IN 14PIN 9 IN 10

MOTORNI VOZNIK v ARDUINO UNO:

MOTORNI VOZNIK (L298N)ARDUINO ONE
PIN 4VINO
PIN 5GND
PIN 65V
PIN 8 in PIN 9PIN 3 in PIN 9
PIN 10 in PIN 11PIN 5 in PIN 10
PIN 7 in PIN 125V
MOTORNI VOZNIK (L293D)ARDUINO ONE
PIN 3VINO
PIN 2GND
PIN 15V
PIN 5 IN PIN 6PIN 3 in PIN 9
PIN 11 IN PIN 12PIN 5 in PIN 10
PIN 4 in PIN 55V

OPOMBA: Zatiči 8 in 9 l298n se uporabljajo za krmiljenje motorja, priključenega na 1 in 2. In, 10 in 11 krmilni motor, priključen na zatiča 13 in 14. Podobno se zatiča 5 in 6 l293d uporabljata za krmiljenje motorja 7 in 8. ter krmilni motor 12 in 11, priključen na zatiča 9 in 10.

Tu smo fantje, do konca oblikovalskega dela. Še vedno moramo narediti kodiranje, pred tem pa bomo preučili načela, ki omogočajo sledenje vrsticam.

Kako deluje infrardeči senzor:

Infrardeči senzorji (IR senzorji) se lahko uporabljajo za zaznavanje kontrasta barv in bližine predmetov. Načelo delovanja IR senzorja je precej osnovno.

Kot lahko vidimo, ima dve LED-diodi - led, ki oddaja IR, in fotodiodo. Delujejo kot par oddajnik-sprejemnik. Ko ovira pride pred sevalne žarke, se ti odbijejo nazaj in jih prestreže sprejemnik.

S tem se ustvari digitalni signal, ki ga je mogoče dovajati do mikrokrmilnikov in aktuatorjev, da sprejmejo potrebne ukrepe za nalet na oviro.

Osnovna fizika nam govori, da črno telo absorbira vse elektromagnetno sevanje, ki ga naseli, belo telo pa ga odbija. To načelo izkorišča črtni sledilnik, da razlikuje med belo in črno površino.

Kako deluje robot sledilca:

ČRTNI NASLEDNJI RAZPORED

V normalnem stanju se robot premika tako, da sta oba senzorja belo in črna črta sredi obeh senzorjev.

Programirano je tako, da oba motorja vrti tako, da se bot premika naprej.

Povsem naravno je, da sčasoma eden od obeh senzorjev pride čez črno črto.

Če levi senzor pride čez črto, levi motorji mirujejo in posledično se bot začne obračati v levo, razen če se levi senzor vrne na belo površino in ni doseženo normalno stanje.

Podobno, ko desni senzor pride čez črno črto, se desni motorji ustavijo in posledično bot zavije desno, razen če se senzor vrne čez belo površino. Ta mehanizem obračanja je znan kot mehanizem diferencialnega pogona.

KROG DIAGRAM:

PODROBNOSTI OŽIČENJA:

PROGRAMIRANJE IN KONCEPTI:

Po končanem delu vezja bomo zdaj prešli na programski del. V tem poglavju bomo razumeli program, ki nadzoruje našega robota. Tu je koda: / *
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()
}
}

Opis uporabljenih funkcij:

read_sensors (): Zajema odčitke obeh senzorjev in jih shrani v spremenljivke levo in desno.

move_forward (): Ko arduino izvede to funkcijo, se oba motorja premakneta naprej.

turn_left (): Levi motor se ustavi. Bot zavije levo.

turn_right (): Desni motor se ustavi. Bot zavije desno.

zaustavitev (): Bot se ustavi.

print_readings (): prikaže odčitke senzorjev na serijskem monitorju. Za to morate pri nastavitvi praznine razkomentirati 'Serial.begin (9600)'.

OBČITVE SENZORJA:

SENZOR NAD ČRTOOBČITVE SENZORJA
LEVOPRAV
LEVI SENZOR01.
DESNI SENZOR1.0
NI1.1.
OBOJE00

KONTROLA HITROSTI:

Včasih je hitrost motorjev tako visoka, da preden arduino interpretira signale senzorja, robot izgubi linijo. Skratka, bot ne sledi liniji zaradi visoke hitrosti in še vedno izgublja linijo, čeprav je algoritem pravilen.

Da bi se izognili takim okoliščinam, zmanjšamo hitrost bota s tehniko PWM. V zgornji kodi je spremenljivka z imenom value.

Samo zmanjšajte številsko vrednost v funkciji, da zmanjšate hitrost. V Arduino UNO imate lahko vrednosti pwm med 0 in 255.

analogWrite (pin, vrednost)

0<= value <=255

To je konec moje objave na spletu. Upam, da je dovolj podroben, da lahko odgovori na vsa vaša pereča vprašanja in če v najredkejših okoliščinah ni, potem imamo vedno na voljo odsek s komentarji. Komentirajte svoje dvome. Lepo igranje!




Prejšnji: Robotski avto, ki ga upravlja mobilni telefon z uporabo modula DTMF Naprej: Stikalo za vklop / izklop izmeničnega omrežja z geslom