Vyrobte si tohto robota Line Traer pre projekt Fair Fair

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





V tomto príspevku sa dozvieme, ako zostaviť obvod robota sledovača liniek pomocou Arduina, ktorý bude prebiehať cez konkrétne nakreslené rozloženie čiary a bude ho verne nasledovať, pokiaľ bude k dispozícii a bude ho možné vysledovať jeho senzormi.

Navneet sajwan



Čo je robot na sledovanie liniek

Autonómny robot je stroj, ktorý môže vykonávať sériu akcií podľa pokynov programátora bez toho, aby ho človek v reálnom čase ovládal manuálne.

Sledovače čiary (LFR) sú tiež autonómne robotické vozidlá, ktoré sú vedené jedným alebo viacerými snímačmi a čiernou alebo bielou čiarou. Tvoria základ moderných samoriadiacich automobilov.



Ako každý autonómny robot, aj sledovatelia linky majú jednotku na spracovanie a rozhodovanie signálu, senzory a akčné členy. Ak ste v robotike začiatočníci a chcete sa jej venovať vážne, tu by ste mali začať. Poďme na to.

Na uskutočnenie tohto projektu som použil dva infračervené snímače a pohon troch kolies. Minimálny počet senzorov, ktoré je možné použiť, je jeden a maximálne osem postačuje na sledovanie linky založenej na PID.

Požadované komponenty:

Arduino uno

Podvozok

Dva motory napájané z akumulátora (kompatibilné s pneumatikami)

Ricínová guľa

Dva infračervené snímače

Modul ovládača motora

Zdroj

Softvér Arduino IDE

Poďme sa teraz pozrieť na naše komponenty:

ARDUINO ONE : Predstavte si to ako riadiacu miestnosť nášho robota. Teraz existuje veľa vývojových dosiek, ktoré boli pre tento projekt zohľadnené, ale Arduino UNO sa jednoducho nevyrovnal ostatným. Nie je to tak, že náš protagonista bol lepší, pokiaľ ide o jeho viacrozmerné vlastnosti.

Keby to tak bolo, Raspberry Pi a Intel Edison by mu to vrazili medzi oči. Najpôsobivejšie argumenty, ktoré viedli k výberu Arduino UNO, boli tvorené kombináciou funkcií, ceny, veľkosti a požiadaviek na projekt.

Niektoré relevantné dôvody boli:

VEĽKOSŤ : Je to dosť málo v porovnaní s vývojovými doskami založenými na Atmega16 alebo Atmega8, zaberá trochu miesta na šasi, takže získate kompaktného a šikovného robota.

Na robotických súťažiach to skutočne záleží. Verte mi, že by ste nenávideli túlať sa okolo toho veľkého škaredého robota, ktorý celý deň mení miesto.

Menšia veľkosť, rýchlejší robot a efektívnejšie zákruty.

NAJLEPŠIA RADA PROTOTYPOVANIA : Arduino UNO má nepochybne najlepšiu kombináciu funkcií pre prototypovanie . Keď budú vaše okruhy na mieste a váš projekt bude fungovať perfektne, môžete ho nahradiť niečím menším a lacnejším, ako sú Arduino Nano a Attiny85 ic.

Pre tých, ktorí sa snažia riadiť projekty vysokých škôl, navrhujem na konci nahradiť OSN za Nano.

PODVOZOK : Je to rám, ktorý drží všetky komponenty na danom mieste. Pri kúpe nového podvozku je potrebné vziať do úvahy niekoľko bodov,

Mal by byť ľahký a silný.

Pre projekty je lepšie, ak si kúpite nejaký z trhu. Ak sa však pripravujete na súťaž, dôrazne vám odporúčam, aby ste si prispôsobili svoj vlastný, pričom nezabudnite na rozmery a požiadavky súťaže.

Vyberte si plastový alebo drevený podvozok. Keď kovové rámy prídu do styku s Arduinom, dôjde k skratu mnohých pinov. Toto je veľký faktor, na ktorý sa treba zamerať pri hľadaní podvozku.

Udržujte svoj podvozok čo najnižšie - to dáva robotu stabilitu.

MOTORY : Používajte ľahký batériový napájací zdroj (B.O.) motory.

KASTOROVÁ GUĽA : Normálne kolesá poskytujú translačný pohyb pozdĺž jednej osi, ale koliesko je určené na pohyb v ľubovoľnom smere na povrchu. Dáva nám pohon troch kolies.

Dôvodom uprednostnenia pohonu troch kolies pred 4 kolesami je jeho porovnateľne rýchlejší zatáčací chod. Možno ste si všimli, že cyklistické rikše prerážajú premávku ako plazy. To isté je prípad nášho robota.

SNÍMAČE : Je to zariadenie, ktoré deteguje alebo meria akýkoľvek fyzický parameter nášho prostredia a prevádza ho na elektrické signály. V tomto prípade sú detekovaným parametrom infračervené lúče.

Senzory sú pre každého robota veľmi dôležité. Ak je arduino mozog nášho robota, senzory môžu tiež hrať úlohu očí. Tu je niekoľko vecí o senzoroch:

Senzory musia byť orientované tak, aby vodiče smerovali k zemi.

Mali by byť umiestnené na prednom konci robota.

Minimálna vzdialenosť medzi nimi musí byť väčšia ako šírka čiernej čiary.

DOSKA MOTORA VODIČA : Budiče motorov sú vyrovnávacie obvody, ktoré prijímajú signály nízkeho napätia na napájanie motorov vyžadujúcich vyššie napätie.

V našom prípade môže Arduino poskytnúť dostatočné napätie na pohon motorov, ale nedokáže poskytnúť dostatočný prúd. Piny Arduino UNO 5v a GND majú prúdové hodnotenie 200mA, zatiaľ čo akýkoľvek pin GPIO má hodnotenie 40mA. To je oveľa menej ako motory na štartovanie a zastavenie prúdov, ktoré potrebujeme.

Pre tento projekt uprednostňujem dva motorové ovládače: L298N a L293D. Oba sú rovnako vhodné na realizáciu tohto projektu.

Predsa, L293D je porovnateľne lacnejšia ale má nízke prúdové hodnotenie. Ich spojenia sú takmer rovnaké. Pretože som uviedol spojenia pre obidve, je úplne na vás, ako si vyrobíte svojho robota.

ZDROJ :

Použite 12 V adaptér alebo batériu (nie viac ako 12 V).

Umiestnenie komponentov (spredu dozadu):

Senzory na čele vášho robota.

V strede koliesko.

Motory a pneumatiky vzadu v jednom rade.

Pripojenia:

SNÍMAČE do ARDUINO :

Pripojte kolík snímača k arduino kolíku, ako je to znázornené,

Pin snímačaArduino pin
VCC (5v)5V
GND (G)GND
ĽAVÝ SNÍMAČ VONKAJŠÍ (DO)kolík 6
PRAVÝ SNÍMAČ VÝSTUPU (DO)kolík 7

Poznámka: Ak chcete skontrolovať, či sú vaše senzory zapnuté, namierte kameru svojho mobilného telefónu na led IR vysielač. Na obrazovke uvidíte svietiť led, ktorý nie je viditeľný našim voľným okom. Niektoré moderné fotoaparáty mobilných telefónov majú infračervený filter. Berte to prosím do úvahy.

MOTOROVÝ VODIČ:

Každý motor má dve svorky, ktoré je potrebné pripojiť k ovládaču motora. Nikdy sa ich nepokúšajte pripojiť priamo k arduinu. Pri pohľade zo zadnej časti robota, s motormi blízko vás a so senzormi preč, ich pripojte takto:

MOTORL298NL293D
ĽAVÝ MOTORPIN 1 A 2PIN 7 A 8
SPRÁVNY MOTORPIN 13 A 14PIN 9 A 10

VODIČ MOTORA do ARDUINO UNO:

VODIČ MOTORA (L298N)ARDUINO ONE
PIN 4VÍNO
PIN 5GND
PIN 65V
PIN 8 a PIN 9PIN 3 a PIN 9
PIN 10 a PIN 11PIN 5 a PIN 10
PIN 7 a PIN 125V
VODIČ MOTORA (L293D)ARDUINO ONE
PIN 3VÍNO
PIN 2GND
PIN 15V
PIN 5 A PIN 6PIN 3 a PIN 9
PIN 11 A PIN 12PIN 5 a PIN 10
PIN 4 A PIN 55V

POZNÁMKA: Kolíky 8 a 9 konektora l298n sa používajú na riadenie motora pripojeného k 1 a 2. A ovládacie motory 10 a 11 pripojené k pinom 13 a 14. Podobne sa konektory 5 a 6 konektoru l293d používajú na ovládanie motora pripojeného k 7 a 8. Ovládací motor 12 a 11 pripojený k pinom 9 a 10.

Sme tu, chlapci, až na koniec dizajnovej časti. Programovanie ešte musíme urobiť, ale predtým si prejdeme zásady, ktoré umožňujú sledovanie riadkov.

Ako funguje infračervený senzor:

Infračervené snímače (infračervené snímače) možno použiť na snímanie farebného kontrastu a blízkosti objektov. Princíp fungovania IR snímača je dosť základný.

Ako vidíme, má dve led diódy - led emitujúcu IR a fotodiódu. Fungujú ako pár vysielač - prijímač. Keď sa prekážka dostane pred lúče vysielača, odrazí sa späť a zachytí ju prijímač.

Toto generuje digitálny signál, ktorý sa môže priviesť do mikrokontrolérov a akčných členov, aby sa podnikli potrebné kroky pri narušení prekážky.

Základná fyzika nám hovorí, že čierne teleso pohlcuje všetko elektromagnetické žiarenie na neho dopadajúce, zatiaľ čo biele telo ho odráža. Tento princíp využíva sledovač čiar na rozlíšenie medzi bielym a čiernym povrchom.

Ako pracuje robot na sledovanie línie:

ROZDIELAJÚCI RIADOK

Za normálnych podmienok sa robot pohybuje takým spôsobom, že obidva snímače sú cez bielu a čierna čiara je medzi oboma snímačmi.

Je naprogramovaný na otáčanie oboch motorov tak, aby sa robot pohyboval vpred.

Celkom prirodzene, ako uplynie čas, jeden z dvoch senzorov prekročí čiernu čiaru.

Ak ľavý snímač prejde cez čiaru, ľavé motory sa uvedú do pokoja a v dôsledku toho sa robot začne otáčať smerom doľava, pokiaľ sa ľavý snímač nevráti späť na biely povrch a nedosiahne sa normálny stav.

Podobne, keď pravý senzor prejde cez čiernu čiaru, pravé motory sa zastavia a následne sa robot teraz otočí doprava, pokiaľ sa senzor nevráti na biely povrch. Tento mechanizmus otáčania je známy ako diferenciálny pohonný mechanizmus.

SCHÉMA OKRUHU:

PODROBNOSTI O ZAPOJENÍ

PROGRAMOVANIE A POJMY:

Po dokončení obvodovej časti teraz prejdeme k programovacej časti. V tejto časti pochopíme program, ktorý riadi nášho robota. Tu je kód: / *
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()
}
}

Popis použitých funkcií:

read_sensors (): Berie údaje oboch senzorov a ukladá ich do premenných vľavo a vpravo.

move_forward (): Keď arduino vykoná túto funkciu, oba motory sa pohybujú smerom dopredu.

turn_left (): Ľavý motor sa zastaví. Bot sa stáča doľava.

turn_right (): Pravý motor sa zastaví. Bot sa stáča doprava.

halt (): Bot sa zastaví.

print_readings (): Zobrazí namerané hodnoty senzorov na sériovom monitore. Z tohto dôvodu musíte v nastavení neplatnosti odkázať na „Serial.begin (9600)“.

ČÍTANIA SENZOROV:

SENZOR NAD RIADKOMČÍTANIA SNÍMAČOV
VĽAVOSPRÁVNY
ĽAVÝ SNÍMAČ01
SPRÁVNY SNÍMAČ10
ŽIADNE11
OBOJ00

KONTROLA RÝCHLOSTI:

Niekedy sú otáčky motorov také vysoké, že skôr ako arduino interpretuje signály senzora, robot stratí linku. Stručne povedané, robot nesleduje riadok kvôli vysokej rýchlosti a stále stráca riadok, aj keď je algoritmus správny.

Aby sme sa vyhli takýmto okolnostiam, znižujeme rýchlosť robotu pomocou techniky PWM. V kóde vyššie je premenná s názvom hodnota.

Stačí znížiť číselnú hodnotu vo funkcii a znížiť rýchlosť. V Arduino UNO môžete mať hodnoty pwm iba od 0 do 255.

analogWrite (pin, hodnota)

0<= value <=255

Týmto sa skončil môj príspevok on-line. Dúfam, že je dostatočne podrobný na to, aby odpovedal na všetky vaše pálčivé otázky, a ak to v tej najvzácnejšej realite nie je, potom máme pre vás vždy k dispozícii sekciu komentárov. Vyjadrite svoje pochybnosti. Prajeme šťastné šťuchanie!




Dvojica: Robotické auto riadené mobilným telefónom pomocou modulu DTMF Ďalej: Prepínač ZAPNUTÝ / VYPNUTÝ sieťovým napájaním ovládaný heslom