Vyrobte si tohoto robota pro sledování linek pro projekt Science Fair

Vyzkoušejte Náš Nástroj Pro Odstranění Problémů





V tomto příspěvku se učíme, jak vytvořit obvod robota sledovače linek pomocí Arduina, který poběží přes specificky nakreslené rozložení linky a bude jej věrně sledovat, pokud bude k dispozici a bude sledovatelný senzory.

Navneet sajwan



Co je robot sledující linku

Autonomní robot je stroj, který může provádět řadu akcí podle pokynů programátora, aniž by byl ručně ovládán člověkem v reálném čase.

Sledovače čáry (LFR) jsou také autonomní robotické vozy, které jsou vedeny jedním nebo více senzory a černou nebo bílou liniovou cestou. Tvoří základ moderních samojízdných automobilů.



Jako každý autonomní robot mají sledovač linky jednotku pro zpracování a rozhodování signálu, senzory a akční členy. Pokud jste v robotice začátečník a chcete to brát vážně, právě zde byste měli začít. Pojďme to začít dělat.

K realizaci tohoto projektu jsem použil dva infračervené senzory a pohon tří kol. Minimální počet senzorů, které lze použít, je jeden a maximálně osm je dostatečných pro sledování linek na základě PID.

Požadované komponenty:

Arduino uno

Podvozek

Dva bateriové (b.o.) Motory a kompatibilní pneumatiky

Kolečko

Dva infračervené senzory

Modul ovladače motoru

Zdroj napájení

Software Arduino IDE

Nyní se podívejme na naše komponenty:

ARDUINO ONE : Představte si to jako velín našeho robota. Nyní existuje spousta vývojových desek, které byly uvažovány pro tento projekt, ale Arduino UNO se jednoduše nesrovnalo s ostatními. Není to tak, že náš protagonista byl lepší, pokud jde o jeho vícerozměrné rysy.

Pokud by tomu tak bylo, Raspberry Pi a Intel Edison by to plácli mezi oči. Nejpřesvědčivější argumenty, které vedly k výběru Arduino UNO, byly vytvořeny kombinací vlastností, ceny, velikosti a požadavků na projekt.

Některé relevantní důvody byly:

VELIKOST : Je to docela malé ve srovnání s vývojovými deskami založenými na Atmega16 nebo Atmega8, zabírá trochu místa na šasi, takže získáte kompaktní a šikovný robot.

Na robotických soutěžích to opravdu záleží. Věřte mi, že byste nenáviděli toulání se s tím velkým ošklivým robotem, který celý den mění místa.

Menší velikost, rychlejší robot a efektivnější zatáčky.

NEJLEPŠÍ PROTOTYPOVACÍ RADA : Arduino UNO má bezpochyby tu nejlepší kombinaci funkcí pro prototypování . Jakmile jsou vaše obvody na místě a váš projekt funguje perfektně, můžete jej nahradit něčím menším a levnějším, jako jsou Arduino Nano a Attiny85 ic.

Pro ty, kteří sledují linii pro vysokoškolské projekty, navrhuji na konci nahradit UNO Nano.

PODVOZEK : Je to rám, který drží všechny komponenty na svém místě. Při koupi nového podvozku je třeba vzít v úvahu několik bodů,

Mělo by to být lehké a silné.

U projektů je lepší, když si koupíte nějaký z trhu. Pokud se však připravujete na soutěž, důrazně vám doporučuji přizpůsobit si vlastní, přičemž nezapomeňte na rozměry a požadavky soutěže.

Vyberte si plastový nebo dřevěný podvozek. Když kovové rámy přijdou do kontaktu s Arduinem, dojde ke zkratu řady pinů. To je velký faktor, na který je třeba se zaměřit při sledování podvozku.

Udržujte svůj podvozek co nejníže - to botovi dodává stabilitu.

MOTORY : Použijte lehkou baterii napájenou (B.O.) motory.

CASTOR BALL : Normální kola poskytují translační pohyb podél jedné osy, ale kolečko je navrženo pro pohyb v jakémkoli směru na povrchu. Dává nám pohon tří kol.

Důvodem upřednostňování pohonu tří kol před 4 koly je jeho poměrně rychlejší zatáčení. Možná jste si všimli, že cyklistické rikše prorazily provoz jako plazi. Totéž je i v případě našeho robota.

SENZORY : Je to zařízení, které detekuje nebo měří jakýkoli fyzický parametr našeho prostředí a převádí jej na elektrické signály. V tomto případě jsou detekovaným parametrem infračervené paprsky.

Senzory jsou pro každého robota velmi zásadní. Pokud je arduino mozkem našeho robota, senzory mohou také hrát roli očí. Zde je několik věcí o senzorech:

Senzory musí být orientovány tak, aby vedly čelem k zemi.

Mělo by být umístěno na přední straně vašeho robota.

Minimální rozestup mezi nimi musí být větší než šířka černé čáry.

ŘÍDÍCÍ DESKA MOTORU : Budiče motorů jsou vyrovnávací obvody, které přijímají signály nízkého napětí k napájení motorů, které vyžadují vyšší napětí.

V našem případě může Arduino poskytnout dostatečné napětí pro pohon motorů, ale nemůže poskytnout dostatečný proud. Piny Arduino UNO 5v a GND mají proudovou zatížitelnost 200mA, zatímco jakýkoli pin GPIO má zatížitelnost 40mA. To je mnohem méně, než potřebujeme spouštěcí a zastavovací proudy.

Pro tento projekt preferuji dva ovladače motorů: L298N a L293D. Oba jsou pro realizaci tohoto projektu stejně vhodné.

Ačkoli, L293D je poměrně levnější ale má nízký proudový výkon. Jejich spojení je téměř stejné. Vzhledem k tomu, že jsem uvedl spojení pro oba, je zcela na vás, jak si vyrobíte svého robota.

ZDROJ NAPÁJENÍ :

Použijte 12 V adaptér nebo baterii (ne více než 12 V).

Umístění komponentů (zepředu dozadu):

Senzory v čele vašeho robota.

Upevňovací kolečko uprostřed.

Motory a pneumatiky vzadu v jedné linii.

Připojení:

SENZORY do ARDUINO :

Připojte kolík snímače k ​​kolíku arduino, jak je znázorněno,

Pin snímačePin Arduino
VCC (5v)5V
GND (G)GND
LEVÝ SENZOR VÝSTUPU (DO)kolík 6
PRAVÝ SENZOR VÝSTUP (DO)kolík 7

Poznámka: Chcete-li zkontrolovat, zda jsou vaše senzory zapnuté, namiřte kameru svého mobilního telefonu na led IR vysílač. Na obrazovce uvidíte svítit led, který není viditelný našimi pouhýma očima. Některé moderní fotoaparáty mobilních telefonů mají infračervený filtr. Berte to prosím v úvahu.

MOTOROVÝ ŘIDIČ:

Každý motor má dvě svorky, které je třeba připojit k ovladači motoru. Nikdy se je nepokoušejte připojit přímo k arduinu. Při pohledu ze zadní části robota, s motory poblíž vás a senzory pryč, je připojte následujícím způsobem:

MOTORL298NL293D
LEVÝ MOTORPIN 1 A 2PIN 7 A 8
SPRÁVNÝ MOTORPIN 13 A 14PIN 9 A 10

MOTOROVÝ ŘIDIČ do ARDUINO UNO:

MOTOROVÝ ŘIDIČ (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
MOTOROVÝ ŘIDIČ (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: Piny 8 a 9 z l298n se používají k ovládání motoru připojeného k 1 a 2. A, 10 a 11 ovládací motor připojený k pinu 13 a 14. Podobně se piny 5 a 6 z l293d používají k ovládání motoru připojeného k 7 a 8. A, 12 a 11 řídicí motor připojený k pinům 9 a 10.

Tady jsme kluci, až na konec designové části. Stále máme co dělat s programováním, ale předtím projdeme principy, které umožňují sledování řádků.

Jak funguje infračervený senzor:

Infračervené senzory (infračervené senzory) lze použít ke snímání barevného kontrastu a blízkosti předmětů k němu. Princip, který stojí za fungováním IR senzoru, je docela základní.

Jak vidíme, má dvě led diody - IR emitující LED a fotodiodu. Působí jako pár vysílač-přijímač. Když před paprsky vysílače přijde překážka, odrazí se zpět a zachytí ji přijímač.

Tím se generuje digitální signál, který lze přivést do mikrokontrolérů a akčních členů, aby bylo možné přijmout nezbytná opatření při narušení překážky.

Základní fyzika nám říká, že černé těleso pohlcuje veškeré elektromagnetické záření dopadající na něj, zatímco bílé tělo jej odráží. Tento princip využívá sledovač čar k rozlišení mezi bílým a černým povrchem.

Jak funguje robot sledující linku:

ROZDĚLENÍ ŘÁDU SLEDUJÍCÍ

Za normálních podmínek se robot pohybuje takovým způsobem, že oba senzory jsou přes bílou a černá čára je uprostřed obou senzorů.

Je naprogramováno na otáčení obou motorů tak, aby se robot pohyboval dopředu.

Zcela přirozeně, jak čas uplyne, jeden ze dvou senzorů překročí černou čáru.

Pokud levý snímač přijde přes čáru, levé motory se uvedou do klidu a v důsledku toho se bot začne otáčet směrem doleva, pokud se levý snímač nevrátí zpět na bílý povrch a nebude dosaženo normálního stavu.

Podobně, když pravý senzor přijde přes černou čáru, pravé motory se zastaví a následně se bot nyní otočí doprava, pokud se senzor nevrátí přes bílý povrch. Tento mechanismus otáčení je znám jako mechanismus diferenciálního pohonu.

KRUHOVÝ DIAGRAM:

PODROBNOSTI O ZAPOJENÍ

PROGRAMOVÁNÍ A KONCEPCE:

Po dokončení obvodové části nyní přejdeme k programovací části. V této části pochopíme program, který řídí našeho robota. Zde 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 funkcí:

read_sensors (): Vezme odečty obou senzorů a uloží je do proměnných vlevo a vpravo.

move_forward (): Když arduino provede tuto funkci, oba motory se pohybují směrem dopředu.

turn_left (): Levý motor se zastaví. Bot zahne doleva.

turn_right (): Pravý motor se zastaví. Bot zahne doprava.

halt (): Bot se zastaví.

print_readings (): Zobrazuje odečty senzorů na sériovém monitoru. Z tohoto důvodu musíte v nastavení neplatnosti odkomentovat „Serial.begin (9600)“.

ČTENÍ SENZORŮ:

SENZOR NAD ŘADOUČTENÍ SENZORŮ
VLEVO, ODJETŽE JO
LEVÝ SNÍMAČ01
SPRÁVNÝ SENZOR10
ŽÁDNÝ11
OBA00

KONTROLA RYCHLOSTI:

Někdy jsou otáčky motorů tak vysoké, že než arduino interpretuje signály senzorů, robot ztratí linku. Stručně řečeno, bot nenásleduje linii kvůli vysoké rychlosti a stále ztrácí linku, i když je algoritmus správný.

Abychom se těmto okolnostem vyhnuli, snížíme rychlost robotu pomocí techniky PWM. V kódu výše je proměnná s názvem value.

Stačí snížit číselnou hodnotu ve funkci a snížit rychlost. V Arduino UNO můžete mít hodnoty pwm pouze mezi 0 a 255.

analogWrite (pin, hodnota)

0<= value <=255

Toto je konec mého příspěvku online. Doufám, že je dostatečně podrobný, aby odpověděl na všechny vaše vypalovací dotazy, a pokud v nejvzácnější realitě není, pak pro vás máme vždy k dispozici sekci komentářů. Vyjádřete své pochybnosti. Přeji šťastné šťourání!




Předchozí: Robotické auto řízené mobilním telefonem pomocí modulu DTMF Další: Spínač ZAP / VYP ovládaný střídavým proudem