Készítse el ezt a vonalkövető robotot a Science Fair projekt számára

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Ebben a bejegyzésben megtanuljuk, hogyan építsünk egy vonalkövető robot áramkört az Arduino segítségével, amely egy speciálisan megrajzolt vonalelrendezésen fog futni, és híven követi mindaddig, amíg elérhető és érzékelői nyomon követhetők.

By navneet sajwan



Mi az a vonalkövető robot

Az autonóm robot olyan gép, amely a programozó utasítása szerint képes végrehajtani egy sor műveletet, anélkül, hogy az ember valós időben kézzel irányítaná.

A vonalkövetők (LFR) szintén autonóm robotautók, amelyeket egy vagy több érzékelő és egy fekete vagy fehér vonalút vezet. Ezek képezik az alapját a modern önvezető autóknak.



Mint minden autonóm robot, a vonalkövetők is rendelkeznek jelfeldolgozó és döntéshozó egységgel, érzékelőkkel és működtetőkkel. Ha kezdő vagy a robotikában, és komolyan akarod venni, akkor itt kell kezdened. Kezdjük el elkészíteni.

A projekt elkészítéséhez két infravörös érzékelőt és három kerék meghajtást használtam. A PID-alapú sorkövetéshez a használható érzékelők minimális száma egy, a maximum nyolc pedig elegendő.

Szükséges alkatrészek:

Arduino uno

Alváz

Két akkumulátoros (egyebek mellett) motor és kompatibilis gumiabroncs

Ricinus labda

Két infravörös érzékelő

Motor meghajtó modul

Tápegység

Arduino IDE szoftver

Most nézzük meg az összetevőket:

ARDUINO ONE : Képzelje el, hogy robotunk vezérlőterme. Most nagyon sok fejlesztő tábla van, amelyet figyelembe vettek a projektnél, de az Arduino UNO egyszerűen nem volt megfelelő másokkal. Nem arról van szó, hogy főhősünk többdimenziós tulajdonságait tekintve felsőbbrendű volt.

Ha ez lett volna, a Raspberry Pi és az Intel Edison a szeme közé csapta volna. A legmeggyőzőbb érvek, amelyek az Arduino UNO kiválasztásához vezettek, a projekt jellemzőinek, árának, méretének és követelményeinek kombinációjával jöttek létre.

Néhány releváns ok a következők voltak:

MÉRET : Ez meglehetősen kicsi az Atmega16 vagy Atmega8 alapú fejlesztői táblákhoz képest, kis helyet foglal el az alvázon, így kompakt és praktikus botot kap.

Ez nagyon fontos a robotikai versenyeken. Hidd el, hogy utálnád barangolni azzal a nagy csúnya botdal, aki egész nap helyet cserél.

Kisebb méret, gyorsabb a robot és hatékonyabb a fordulat.

A LEGJOBB PROTOTYPING Tábla : Kétségtelen, hogy az Arduino UNO rendelkezik a funkciók legjobb kombinációjával prototípus készítése . Miután az áramkörök a helyükön vannak, és a projekt tökéletesen működik, kicserélheti valamivel kisebbre és olcsóbbra, például Arduino Nano és Attiny85 ic.

Azok számára, akik főiskolai projektek követői, azt javaslom, hogy a végén az UNO-t cseréljék le a nanóra.

ALVÁZ : Ez a keret tartja az összes alkatrészt a helyén. Néhány szempontot figyelembe kell venni egy új alváz vásárlásakor,

Könnyűnek és erősnek kell lennie.

Projektek esetében jobb, ha vásárol egyet a piacról. De ha versenyre készülsz, erősen javaslom, hogy testreszabja sajátját, szem előtt tartva a verseny méreteit és követelményeit.

Válasszon műanyag vagy fa vázat. Amikor a fémes keretek érintkezésbe kerülnek az Arduinóval, számos csap rövidre záródik. Erre nagy hangsúlyt kell fektetni, miközben az alvázra figyelünk.

Tartsa az alvázat a lehető legalacsonyabban - ez stabilitást ad a botnak.

MOTOROK : Használjon könnyű akkumulátorral működtetett (B.O.) d.c. motorok.

KERESKEDŐ BÁL : A normál kerekek egyetlen tengely mentén biztosítják az elmozdulási mozgást, de a görgős gömböt úgy tervezték, hogy a felület bármely irányában mozogjon. Három kerék meghajtást ad nekünk.

A három kerék meghajtásának előnyben részesítése a 4 kerék helyett a viszonylag gyorsabb kanyarodás miatt van. Talán észrevette, hogy a kerékpáros riksa hüllőként szúrja át a forgalmat. Ugyanez a helyzet a robotunkkal is.

ÉRZÉKELŐK : Ez egy olyan eszköz, amely érzékeli vagy megméri a környezetünk fizikai paramétereit, és elektromos jelekké alakítja azokat. Ebben az esetben az észlelt paraméter infravörös sugarak.

Az érzékelők alapvető fontosságúak minden robot számára. Nos, ha az arduino a botunk agya, az érzékelők akár a szem szerepét is betölthetik. Íme néhány dolog az érzékelőkről:

Az érzékelőknek úgy kell orientálódniuk, hogy a vezet (ek) a talaj felé nézzen.

A bot elülső végén kell elhelyezni.

A köztük lévő minimális távolságnak nagyobbnak kell lennie, mint a fekete vonal szélessége.

MOTOR VEZETŐTANÁCS : A motorvezérlők olyan pufferáramkörök, amelyek alacsony feszültségű jeleket vesznek fel a nagyobb feszültséget igénylő motorok beindításához.

Esetünkben az Arduino elegendő feszültséget tud biztosítani a motorok meghajtásához, de nem képes elegendő áramot biztosítani. Az Arduino UNO 5v és GND érintkezőinek jelenlegi névleges értéke 200mA, míg bármely GPIO tű 40 mA-es. Ez sokkal alacsonyabb, mint a szükséges indító és leállási áramú motorok.

Két motorvezérlőt preferálok ennél a projektnél: L298N és L293D. Mindkettő egyformán alkalmas a projekt elkészítésére.

Bár, Az L293D viszonylag olcsóbb de alacsony a jelenlegi besorolása. Kapcsolataik közel azonosak. Mivel megadtam a kapcsolatokat mindkettőhöz, teljesen rajtad múlik, hogyan készíted a botodat.

TÁPEGYSÉG :

Használjon 12 V-os adaptert vagy akkumulátort (legfeljebb 12 V).

Az alkatrészek elhelyezése (elölről hátulra):

Érzékelők a bot élén.

Görgő középen.

Motorok és gumik egy sorban hátul.

Csatlakozások:

ÉRZÉKELŐK ARDUINO-hoz :

Csatlakoztassa az érzékelő csapját az arduino csaphoz az ábra szerint,

Érzékelő csapArduino tű
VCC (5v)5V
GND (G)GND
BAL SZENZOR KI (DO)6. tű
JOBB ÉRZÉKELŐ KI (DO)7. tű

Megjegyzés: Annak ellenőrzéséhez, hogy az érzékelők be vannak-e kapcsolva, irányítsa a mobiltelefon kameráját az infravörös jeladó ledjére. Látni fogja a képernyőn világító ledet, amelyet szabad szemmel nem láthatunk. Néhány modern mobiltelefon-kamera infravörös szűrővel rendelkezik. Tehát, kérem, vegye ezt figyelembe.

MOTOR - MOTOR VEZETŐ:

Minden motornak két kapcsa van, amelyeket össze kell kötni a motor meghajtójával. Soha ne próbálkozzon közvetlenül az arduino-val. Botjának hátuljáról nézve, a közelben lévő motorokkal és az érzékelőkkel az alábbiak szerint csatlakoztassa őket:

MOTORL298NL293D
BAL MOTOR1. ÉS 2. PIN7. és 8. PIN
JOBB MOTOR13. és 14. PIN-kód9. ÉS 10. PIN-kód

Motorvezető az ARDUINO UNO-hoz:

MOTORVEZETŐ (L298N)ARDUINO ONE
PIN 4BOR
5. PINGND
PIN 65V
8. PIN és 9. PIN3. PIN és 9. PIN
10. PIN és 11. PIN5. PIN-kód és 10. PIN-kód
7. PIN és 12. PIN5V
MOTORVEZETŐ (L293D)ARDUINO ONE
3. PINBOR
2. PINGND
PIN 15V
5. PIN ÉS 6. PIN3. PIN és 9. PIN
11. PIN ÉS 12. PIN5. PIN-kód és 10. PIN-kód
4. PIN ÉS 5. PIN5V

MEGJEGYZÉS: Az l298n 8. és 9. csapja az 1. és 2. csatlakozó motor vezérlésére szolgál. És a 10. és 11. vezérlő motor a 13. és 14. érintkezőkhöz csatlakoztatva. Hasonlóképpen, az l293d 5. és 6. csapjaival vezérlik a 7. és 8. És 12. és 11. vezérlőmotor a 9. és 10. csapokhoz csatlakozik.

Itt vagyunk srácok, a tervezési rész végéig. Még várnunk kell a kódolásra, de előtte át fogjuk nézni azokat az elveket, amelyek lehetővé teszik a sorkövetést.

Az infravörös érzékelő működése:

Az infravörös érzékelők (IR szenzorok) segítségével érzékelhető a színkontraszt és a tárgyak közelsége. Az infravörös érzékelő működése mögött rejlő elv meglehetősen alapvető.

Amint láthatjuk, két ledje van - IR kibocsátó led és egy fotodióda. Adó-vevő párként működnek. Amikor egy akadály érkezik a sugárzó sugarak elé, azokat visszatükrözi és a vevő elfogja.

Ez digitális jelet generál, amelyet a mikrovezérlőkhöz és működtetőkhöz lehet táplálni, hogy megtegyék a szükséges lépéseket az akadályok találkozásakor.

Az alapfizika azt mondja nekünk, hogy egy fekete test elnyeli az összes rajta bekövetkező elektromágneses sugárzást, míg egy fehér test visszaveri azt. Ezt az elvet használja a vonalkövető a fehér és a fekete felület megkülönböztetésére.

Hogyan működik a vonalkövető robot:

VONAL KÖVETKEZŐ ELrendezés

Normál állapotban a robot úgy mozog, hogy az érzékelők túl fehérek, a fekete vonal pedig mindkét érzékelő között legyen.

Úgy van beprogramozva, hogy mindkét motort úgy forgassa, hogy a bot előre haladjon.

Természetesen, ahogy telik az idő, a két érzékelő közül az egyik a fekete vonalon jön.

Ha a bal oldali érzékelő átmegy a vonalon, a bal motorokat pihentetjük, és ennek eredményeként a bot balra fordul, hacsak a bal oldali érzékelő nem jön vissza fehér felületre, és normál állapotot nem ér el.

Hasonlóképpen, amikor a jobb oldali érzékelő fekete vonalra kerül, a jobb motorok leállnak, következésképpen a bot most jobbra fordul, hacsak az érzékelő nem jön vissza fehér felületre. Ez az elfordulási mechanizmus differenciálmeghajtó mechanizmus néven ismert.

KÖRDIAGRAMM:

VEZETÉK RÉSZLETEK:

PROGRAMOZÁS ÉS FOGALMAK:

Miután elvégeztük az áramköri részt, most áttérünk a programozási részre. Ebben a részben megértjük a robotunkat irányító programot. Itt van a 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()
}
}

Az alkalmazott funkciók leírása:

read_sensors (): Mind az érzékelők leolvasása, mind a bal és jobb változókban eltárolódik.

move_forward (): Amikor az arduino végrehajtja ezt a funkciót, mindkét motor halad előre.

turn_left (): A bal motor leáll. Bot balra fordul.

turn_right (): A jobb motor leáll. Bot jobbra fordul.

halt (): Bot leáll.

print_readings (): Az érzékelők leolvasását jeleníti meg a soros monitoron. Ehhez törölnie kell a “Serial.begin (9600)” megjegyzését az érvénytelen beállításban.

SZenzorolvasások:

Érzékelő a vonal felettSZenzorolvasások
BALJOBB
BAL SZENZOR01
JOBB ÉRZÉKELŐ10
EGYIK SEM11
MINDKÉT00

SEBESSÉG ELLENŐRZÉS:

Néha a motorok fordulatszáma olyan magas, hogy mielőtt az arduino értelmezi az érzékelő jeleit, a robot elveszíti a vonalat. Röviden, a bot a nagy sebesség miatt nem követi a vonalat, és folyamatosan elveszíti a vonalat, annak ellenére, hogy az algoritmus helyes.

Az ilyen körülmények elkerülése érdekében PWM technikával csökkentjük a bot sebességét. A fenti kódban van egy változó nevű érték.

Csak csökkentse a függvény számértékét a sebesség csökkentéséhez. Az Arduino UNO-ban csak 0 és 255 között lehet pwm érték.

analogWrite (tű, érték)

0<= value <=255

Ezzel vége a sorkövető bejegyzésemnek. Remélem, hogy elég részletes ahhoz, hogy megválaszolja az összes égető kérdését, és ha a legritkább valóságban nem, akkor mindig rendelkezésünkre áll a megjegyzés rovat. Kommentelje kétségeit. Boldog bütykölést!




Előző: Mobiltelefon vezérelt robotautó a DTMF modul használatával Következő: Jelszóval vezérelt váltóáramú hálózati kapcsoló ON / OFF