Tehke sellest teadlasmesside projektist reajälgija robot

Proovige Meie Instrumenti Probleemide Kõrvaldamiseks





Selles postituses õpime, kuidas luua Arduino abil joonejälgija robotite vooluringi, mis jookseb üle spetsiaalselt joonistatud joone paigutuse ja järgib seda ustavalt seni, kuni see on andurite poolt kättesaadav ja jälgitav.

Autor navneet sajwan



Mis on liinijärgija robot

Autonoomne robot on masin, mis saab programmeerija juhiste järgi teha mitmeid toiminguid, ilma et inimene reaalajas käsitsi juhtiks.

Liinijälgijad (LFR) on ka autonoomsed robotautod, mida juhivad üks või mitu andurit ja musta või valge joone rada. Need on aluseks tänapäevastele isesõitvatele autodele.



Nagu igal autonoomsel robotil, on ka liinijärgijatel signaalitöötlus- ja otsustusüksus, andurid ja ajamid. Kui olete robootikas algaja ja soovite seda tõsiselt võtta, peaksite alustama sellest. Alustame selle tegemist.

Selle projekti tegemiseks olen kasutanud kahte infrapunaandurit ja kolme ratast. Minimaalne kasutatavate andurite arv on üks ja maksimaalselt kaheksa on piisavad PID-põhise liini jälgimiseks.

Vajalikud komponendid:

Arduino uno

Šassii

Kaks patareidega töötavat mootorit ja ühilduvad rehvid

Rataspall

Kaks infrapunaandurit

Mootori draiveri moodul

Toiteallikas

Arduino IDE tarkvara

Vaatame nüüd oma komponente:

ARDUINO ONE : Kujutage ette, et see on meie roboti juhtimisruum. Nüüd on selle projekti jaoks palju arendusplaate, kuid Arduino UNO lihtsalt ei sobinud teistega. Asi pole selles, et meie peategelane oli oma mitmemõõtmeliste tunnuste poolest parem.

Kui see nii oleks olnud, oleksid Raspberry Pi ja Intel Edison seda silma vahele löönud. Kõige veenvamad argumendid, mis viisid Arduino UNO valimiseni, koosnesid funktsioonide, hinna, suuruse ja projekti nõuete kombinatsioonist.

Mõned asjakohased põhjused olid:

SUURUS : See on üsna väike võrreldes Atmega16 või Atmega8 põhiste arendusplaatidega, kulutab šassiil vähe ruumi, nii et saate kompaktse ja käepärase roboti.

Robootikavõistlustel on see tõesti oluline. Uskuge mind, et te vihkaksite selle suure koleda botiga ringi kolamist, vahetades kogu päeva kohti.

Väiksem suurus, kiirem robot ja tõhusamad pöörded.

PARIM PROTOTÜÜPIMISNÕUKOGU : Kahtlemata on Arduino UNO-l parim funktsioonide kombinatsioon prototüüpimine . Kui teie vooluringid on paigas ja teie projekt töötab ideaalselt, saate selle asendada millegi väiksema ja odavamaga, näiteks Arduino Nano ja Attiny85 ic.

Neile, kes on kolledžiprojektide jaoks jälgijad, soovitan lõpus asendada UNO nanoga.

Šassii : See on raam, mis hoiab kõiki komponente paigas. Uue veermiku ostmisel tuleb arvestada mõnega,

See peaks olema kerge ja tugev.

Projektide jaoks on parem, kui ostate selle turult. Aga kui te valmistute võistluseks, soovitan teil tungivalt enda omad kohandada, pidades silmas võistluse mõõtmeid ja nõudeid.

Valige šassii plastikust või puidust. Kui metallraamid puutuvad kokku Arduinoga, lühistatakse mitmeid tihvte. See on suur tegur, millele šassiile tähelepanu pöörates keskenduda.

Hoidke oma šassii võimalikult madalal - see annab botile stabiilsuse.

MOOTORID : Kasutage kerge akuga (B.O.) d.c. mootorid.

RATTUPALL : Tavalised rattad võimaldavad liikuvat liikumist mööda ühte telge, kuid rattapall on ette nähtud liikumiseks pinna mis tahes suunas. See annab meile kolmerattalise jõu.

Kolme rattaveo eelistamine neljale rattale on tingitud suhteliselt kiiremast pöörlemisest. Võib-olla olete märganud, et rattarikšad läbivad liiklust nagu roomajad. Sama lugu on ka meie robotiga.

SENSORID : See on seade, mis tuvastab või mõõdab meie keskkonna mis tahes füüsikalisi parameetreid ja teisendab selle elektrisignaalideks. Sel juhul on tuvastatud parameeter infrapunakiired.

Andurid on iga roboti jaoks väga olulised. Noh, kui arduino on meie roboti aju, võivad sensorid samuti silmade rolli mängida. Andurite kohta on mõned asjad:

Andurid peavad olema suunatud viisil, mis viiks (id) vastu maad.

See tuleks asetada oma roboti esiotsa.

Minimaalne vahe nende vahel peab olema suurem kui musta joone laius.

Mootorijuhi juhatus : Mootoridraiverid on puhverahelad, mis võtavad kõrgemat pinget nõudvate mootorite sisselülitamiseks madalpinge signaale.

Meie juhul suudab Arduino pakkuda mootorite käitamiseks piisavat pinget, kuid see ei taga piisavalt voolu. Arduino UNO 5v ja GND tihvtide praegune reiting on 200mA, samas kui mis tahes GPIO tihvtide reiting on 40 mA. See on palju madalam kui vajaminevad käivitus- ja seiskamisvoolumootorid.

Selle projekti jaoks eelistan kahte mootori draiverit: L298N ja L293D. Mõlemad sobivad selle projekti tegemiseks võrdselt.

Kuigi, L293D on suhteliselt odavam kuid praegune reiting on madal. Nende ühendused on peaaegu samad. Kuna ma olen andnud ühendused mõlema jaoks, on täiesti teie teha see, kuidas te oma roboti teete.

TOITEALLIKAS :

Kasutage 12 V adapterit või akut (mitte üle 12 volti).

Komponentide paigutus (eest taha):

Andurid teie roboti eesotsas.

Keskel rattaratas.

Mootorid ja rehvid taga ühes reas.

Ühendused:

ANDURID ARDUINO-le :

Ühendage anduri tihvt arduino tihvtiga, nagu näidatud,

Anduri tihvtArduino tihvt
VCC (5v)5V
GND (G)GND
VASAK SENSOR VÄLJAS (DO)tihvt 6
PAREM SENSOR OUT (DO)tihvt 7

Märkus. Kui soovite kontrollida, kas teie andurid on sisse lülitatud, suunake mobiiltelefoni kaamera IR-saatja juhi poole. Näete ekraanil hõõguvat led, mida meie palja silmaga ei näe. Mõnel kaasaegsel mobiiltelefoni kaameral on infrapunane filter. Nii et palun võtke seda arvesse.

Mootor mootorijuhile:

Igal mootoril on kaks klemmi, mis tuleb mootorijuhiga ühendada. Ärge kunagi proovige neid otse arduinoga ühendada. Vaadates oma roboti tagant, läheduses olevate mootorite ja andurite kaugusel, ühendage need järgmiselt:

MOOTORL298NL293D
VASAK MootorPIN-kood 1 JA 2PIN 7 ja 8
PAREM MOTORPIN 13 ja 14PIN 9 ja 10

Mootorsõidukijuht ARDUINO UNO-sse:

Mootorijuht (L298N)ARDUINO ONE
PIN-kood 4VEIN
PIN-kood 5GND
PIN-kood 65V
PIN 8 ja PIN 9PIN 3 ja PIN 9
PIN 10 ja PIN 11PIN 5 ja PIN 10
PIN 7 ja PIN 125V
Mootorijuht (L293D)ARDUINO ONE
PIN-kood 3VEIN
PIN-kood 2GND
PIN-kood 15V
PIN 5 ja PIN 6PIN 3 ja PIN 9
PIN 11 ja PIN 12PIN 5 ja PIN 10
PIN 4 ja PIN 55V

MÄRKUS. Ühenduse 1 ja 2 ühendatud mootori juhtimiseks kasutatakse l298n kontakte 8 ja 9. Ja tihvtidega 13 ja 14 ühendatud juhtmootorit 10 ja 11 kasutatakse samamoodi. 7. ja 8. Ja tihvtidega 9 ja 10 ühendatud 12 ja 11 juhtmootor.

Siin oleme kutid, disainiosa lõpuni. Kodeerimine on meil veel teha, kuid enne seda läbime põhimõtted, mis võimaldavad joone järgimist.

Infrapunaanduri tööpõhimõte:

Infrapunaandureid (IR-andureid) saab kasutada värvide kontrasti ja objektide läheduse tajumiseks. IR-anduri töö taga on põhimõte.

Nagu näeme, on sellel kaks ledi - IR kiirgav led ja fotodiood. Nad toimivad saatja-vastuvõtja paarina. Kui kiirgavate kiirte ette satub takistus, peegelduvad need tagasi ja vastuvõtja saab neist kinni.

See genereerib digitaalse signaali, mida saab mikrokontrolleritele ja täiturmehhanismidele suunata takistuste tekkimisel vajalike meetmete võtmiseks.

Põhifüüsika ütleb meile, et must keha neelab kogu talle langenud elektromagnetkiirguse, samal ajal kui valge keha peegeldab seda. Seda põhimõtet kasutab joonejälgija, et eristada valget ja musta pinda.

Kuidas liinijärgija robot töötab:

RIDA JÄLGIMISE PAIGUTUS

Tavalises olekus liigub robot nii, et mõlemad andurid on üle valge ja must joon jääb mõlema anduri keskele.

See on programmeeritud pöörlema ​​mõlemat mootorit nii, et robot liiguks edasi.

Üsna loomulikult tuleb aja möödudes üks kahest andurist üle musta joone.

Kui vasak andur tuleb üle joone, pannakse vasakpoolsed mootorid puhkama ja selle tagajärjel hakkab bot pöörama vasakule, välja arvatud juhul, kui vasak sensor tuleb tagasi valgele pinnale ja saavutatakse normaalne seisund.

Samamoodi, kui parempoolne andur tuleb üle musta joone, peatatakse parempoolsed mootorid ja järelikult pöörab bot nüüd paremale, kui andur ei tule tagasi üle valge pinna. Seda pööramismehhanismi tuntakse diferentsiaalmehhanismina.

VÖÖDIAGRAMM:

Juhtmeta detailid:

Programmeerimine ja kontseptsioonid:

Kui olete teinud vooluahela osaga, liigume nüüd programmeerimisosa juurde. Selles osas mõistame programmi, mis juhib meie robotit. Siin on kood: / *
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()
}
}

Kasutatavate funktsioonide kirjeldus:

read_sensors (): See võtab mõlema anduri näidud ja salvestab need muutujatesse vasakule ja paremale.

move_forward (): Kui arduino selle funktsiooni täidab, liiguvad mõlemad mootorid edasi.

turn_left (): vasak mootor seiskub. Bot pöörab vasakule.

turn_right (): Parem mootor seiskub. Bot pöörab paremale.

halt (): Bot peatub.

print_readings (): kuvab andurite näidud seeriamonitoril. Selleks peate tühistama seadistamise „Serial.begin (9600)” kommentaarist.

SENSORI LUGEMISED:

SENSOR ÜLE RIDASENSORI LUGEMISED
VASAKPAREM
VASAK SENSOR01
PAREM ANDUR10
Puudub11
MÕlemad00

KIIRUSKONTROLL:

Mõnikord on mootorite kiirus nii suur, et enne, kui arduino andurisignaale tõlgendab, kaotab robot liini. Lühidalt öeldes ei järgi bot suure kiiruse tõttu joont ja kaotab liini, kuigi algoritm on õige.

Selliste asjaolude vältimiseks vähendame PWM-tehnikat kasutades roboti kiirust. Ülaltoodud koodis on muutuja nimega väärtus.

Kiiruse vähendamiseks lihtsalt vähendage funktsiooni arvväärtust. Arduino UNO-s saate pwm-väärtused olla ainult vahemikus 0 kuni 255.

analogWrite (tihvt, väärtus)

0<= value <=255

See on minu postituse jälgija lõpp. Loodan, et see on piisavalt üksikasjalik, et vastata kõigile teie põletavatele küsimustele ja kui kõige haruldasemas reaalsuses see nii pole, siis on meil alati kommentaaride jaotis teile saadaval. Kommenteerige oma kahtlusi. Head meisterdamist!




Paari: DTMF-mooduli abil mobiiltelefoniga juhitav robotauto Järgmine: parooliga juhitavate vahelduvvooluvõrkude sisse / välja lüliti