Sisukord:

Arduino baasil kerge robotite järgimine ja vältimine: 5 sammu
Arduino baasil kerge robotite järgimine ja vältimine: 5 sammu

Video: Arduino baasil kerge robotite järgimine ja vältimine: 5 sammu

Video: Arduino baasil kerge robotite järgimine ja vältimine: 5 sammu
Video: Värvidest arusaav robot 2024, November
Anonim
Arduino baasil kerge robotite järgimine ja vältimine
Arduino baasil kerge robotite järgimine ja vältimine

See on lihtne projekt, mis järgneb või väldib valgust.

Tegin selle simulatsiooni rakenduses Proteus 8.6 pro. Vajalikud komponendid: -1) Arduino uno.

2) 3 LDR.

3) 2-tollised käigumootorid. 4) üks servo. 5) kolm 1k takistit. 6) üks H-sild l290D7) üks sisse- ja väljalülitus [programmi seisundi muutmiseks]

8) 9v ja 5v Battry

Samm: Ardunio kood

Arduino koodi muudetakse veidi biti kuupäeval 23. veebruar 2016]

Seda koodi on väga kommenteeritud, ma ei taha selgitada, kuid kui vajate abi, võis minuga ühendust võtta ([email protected])

Märkus: -Ma kasutan selles programmis kahte tingimust 1. valguse jälgimiseks. 2. valgust vältimiseks.

Kui need tingimused on täidetud, järgib robot valgust või väldib seda. [See on minu valitud LDR -i minimaalne väärtus. Tavalises valguses on selle vahemik 80 kuni 95, kuid kuna selle intensiivsus suureneb, tekitab see üha rohkem pingeid, kuna see töötab pingejaguri põhimõtte kallal int a = 400; // Tolerantsiväärtus]

2. samm: Proteus -failid

Arduino raamatukogu jaoks laadige alla sellelt lingilt

3. samm: kuidas teie H-sild töötab

Kuidas teie H-sild töötab?
Kuidas teie H-sild töötab?
Kuidas teie H-sild töötab?
Kuidas teie H-sild töötab?

L293NE/SN754410 on väga lihtne H-sild. Sellel on kaks silda, üks kiibi vasakul ja teine paremal, ning saab juhtida 2 mootorit. See võib juhtida kuni 1 amprit voolu ja töötada vahemikus 4,5 V kuni 36 V. Selles laboris kasutatav väike alalisvoolumootor võib ohutult töötada madalpingest, nii et see H-sild töötab suurepäraselt. H-sillal on järgmised tihvtid ja funktsioonid: Pin 1 (1, 2EN) lubab ja keelab meie mootori olenemata sellest, kas see on HIGH või LOW 3 (1Y) on ühe mootoriklemmi jaoks Pin 4-5 on maanduse jaoks Pin 6 (2Y) on teise mootoriklemmi jaoks Pin 7 (2A) on meie mootori loogikatihvt (sisend on kas HIGH või LOW) Pin 8 (VCC2) on meie mootori toiteallikas, seda tuleks arvestada teie mootori nimipingega Pin 9-11 on lahti ühendatud, kuna kasutate selles laboris ainult ühte mootorit Pin 12-13 on maanduseks Pin 14-15 on ühendamata Pin 16 (VCC1) on ühendatud 5V-ga. Ülal on H-silla diagramm ja millised tihvtid meie näites mida teevad. Diagrammiga on kaasas tõetabel, mis näitab, kuidas mootor töötab vastavalt loogiliste tihvtide olekule (mille määrab meie Arduino).

Selles projektis ühendub lubatav tihvt teie Arduino digitaalse tihvtiga, nii et saate selle saata kas HIGH või LOW ja lülitada mootor sisse või välja. Mootoriloogilised tihvtid on ühendatud ka teie Arduino määratud digitaalsete tihvtidega, nii et saate saata selle HIGH ja LOW, et mootor pööraks ühes suunas, või LOW ja HIGH, et see pööraks teises suunas. Mootori toitepinge ühendatakse mootori pingeallikaga, mis on tavaliselt väline toiteallikas. Kui teie mootor töötab 5 V ja vähem kui 500 mA, saate kasutada Arduino 5 V väljundit. Enamik mootoreid vajab suuremat pinget ja suuremat voolutugevust kui see, seega vajate välist toiteallikat.

Ühendage mootor H-sillaga Ühendage mootor H-sillaga, nagu on näidatud teisel pildil.

Või kui kasutate Arduino jaoks välist toiteallikat, võite kasutada Vini tihvti.

Samm: kuidas LDR töötab

Esimene asi, mis võib vajada täiendavat selgitust, on valgusest sõltuvate takistite kasutamine. Valgusõltuvad takistid (või LDR -id) on takistid, mille väärtus muutub sõltuvalt ümbritseva valguse hulgast, kuid kuidas saame Arduino abil vastupanu tuvastada? Noh, sa ei saa seda tegelikult teha, kuid pingetaset saate tuvastada analoogpistikute abil, mis võivad mõõta (põhikasutuses) vahemikus 0–5 V. Nüüd võite küsida: "Kuidas teisendada takistuse väärtused pinge muutusteks?", See on lihtne, teeme pingejaguri. Pingejagur võtab pinge ja väljastab seejärel murdosa sellest pingest, mis on võrdeline sisendpingega ja kahe kasutatud takisti väärtuse suhtega. Võrrand, mille jaoks on:

Väljundpinge = sisendpinge * (R2 / (R1 + R2)) kus R1 on esimese takisti väärtus ja R2 on teise väärtus.

Nüüd tekitab see endiselt küsimuse "Aga millised takistuste väärtused on LDR -il?", Hea küsimus. Mida väiksem on ümbritseva valguse hulk, seda suurem on takistus, seda rohkem ümbritsevat valgust tähendab väiksemat takistust. Nüüd kasutasin konkreetse LDR -i puhul nende takistuste vahemikku 200–10 kilo oomi, kuid see muutub erinevate puhul, nii et otsige kindlasti üles, kust need ostsite, ja proovige leida andmeleht või midagi sellist. Nüüd selles juhtum R1 on tegelikult meie LDR, nii et toome selle võrrandi tagasi ja teeme matemaatilise e-maagia (matemaatiline elektrimaagia). Nüüd peame kõigepealt need kilo-oomi väärtused teisendama oomideks: 200 kilo-oomi = 200 000 oomi 10 kilo-oomi = 10 000 ohmi Arduinost. Ülaltoodud annab 0,24 V (ümardatud). Nüüd leiame, milline on väljundpinge tippheleduses, kasutades järgmisi numbreid: 5 * (10000 / (10000 + 10000)) Ja see annab meile täpselt 2,5 V. Nii et need on pinge väärtused, mille me Arduino analoogpistikutesse jõuame, kuid need ei ole väärtused, mida näeme programmis: "Aga miks?" võite küsida. Arduino kasutab analoog -digitaalset kiipi, mis teisendab analoogpinge kasutatavaks digitaalseks andmeteks. Erinevalt Arduino digitaalsetest tihvtidest, mis suudavad lugeda ainult HIGH või LOW olekuid 0 ja 5V, saavad analoogpoldid lugeda 0–5 V ja teisendada selle vahemikuks 0–1023. Nüüd mõne matemaatika-e-maagiaga. saame tegelikult arvutada, milliseid väärtusi Arduino tegelikult loeb.

Kuna see on lineaarne funktsioon, saame kasutada järgmist valemit: Y = mX + C Kus; Y = digitaalne väärtus kus; m = kalle, (tõus / jooks), (digitaalne väärtus / analoogväärtus) Kus; C = Y lõikamine tippheleduse korral on see: 204,6 * 2,5, mis annab ligikaudu 511. Nüüd, kui kaks neist on seatud kahele analoogtahvlile, saame luua kaks täisarvulist muutujat, et salvestada nende kaks väärtust ja teha võrdlusoperaatoreid, et näha, milline neist on madalaima väärtusega, pöörates robotit selles suunas.

Soovitan: