Valon seuranta ja välttäminen Arduinon perusteella: 5 vaihetta
Valon seuranta ja välttäminen Arduinon perusteella: 5 vaihetta
Anonim
Arduinoon perustuva kevyt robotin seuranta ja välttäminen
Arduinoon perustuva kevyt robotin seuranta ja välttäminen

Tämä on yksinkertainen projekti, joka seuraa tai välttää valoa.

Tein tämän simulaation Proteus 8.6 pro: ssa. Vaadittavat komponentit: -1) Arduino uno.

2) 3 LDR.

3) 2-tasavaihteiset moottorit.4) Yksi servo.

8) 9v ja 5v Battry

Vaihe 1: Ardunio -koodi

Arduino -koodia muutetaan hieman bittiseksi päivämääräksi 23. helmikuuta 2016]

Tämä koodi on erittäin kommentoitu, en halua selittää, mutta jos tarvitset apua, voit ottaa minuun yhteyttä osoitteessa ([email protected])

Huomautus: -Käytän tässä ohjelmassa kahta ehtoa 1. valon seurantaan. 2. valon välttämiseen.

Näiden ehtojen täyttyessä robotti seuraa tai välttää valoa. [Tämä on valitsemani LDR: n vähimmäisarvo. Normaalivalossa sen kantama on 80-95, mutta sen voimakkuuden kasvaessa yhä useammat jännitteet aiheuttavat sen, kun se työskentelee jännitteenjakajan periaatteen mukaisesti int a = 400; // Toleranssiarvo]

Vaihe 2: Proteus -tiedostot

Lataa Arduino -kirjasto tästä linkistä

Vaihe 3: Kuinka H-silta toimii

Kuinka H-silta toimii
Kuinka H-silta toimii
Kuinka H-silta toimii
Kuinka H-silta toimii

L293NE/SN754410 on hyvin yksinkertainen H-silta. Siinä on kaksi siltaa, yksi sirun vasemmalla puolella ja toinen oikealla, ja se voi ohjata 2 moottoria. Se voi ajaa jopa 1 ampeeria virtaa ja toimia välillä 4,5 V ja 36 V. Tässä laboratoriossa käyttämäsi pieni tasavirtamoottori voi toimia turvallisesti matalasta jännitteestä, joten tämä H-silta toimii hienosti. H-sillassa on seuraavat nastat ja ominaisuudet: Nasta 1 (1, 2EN) ottaa käyttöön ja poistaa käytöstä moottorimme riippumatta siitä, onko se HIGH vai LOW. 3 (1Y) on yksi moottorin liittimistä Pin 4-5 (maadoitettu) Pin 6 (2Y) on toiselle moottorin liittimelle Pin 7 (2A) on moottorimme logiikkatappi (tulo on joko HIGH tai LOW) Nasta 8 (VCC2) on moottorimme virtalähde, tämä on annettava moottorin nimellisjännitteellä Pin 9-11 ei ole kytketty, koska käytät vain yhtä moottoria tässä laboratoriossa Pin 12-13 ovat maadoitusta varten Pin 14-15 ei ole kytketty Pin 16 (VCC1) on Yllä on kaavio H-sillasta ja mitkä nastat tekevät mitä esimerkissämme. Kaavion mukana on totuustaulukko, joka osoittaa, kuinka moottori toimii logiikkatappien tilan mukaan (jotka Arduino on asettanut).

Tässä projektissa käyttöönottotappi muodostaa yhteyden Arduinon digitaaliseen nastaan, joten voit lähettää sen joko HIGH tai LOW ja kytkeä moottorin päälle tai pois päältä. Moottorin logiikka -nastat on myös liitetty Arduinon nimettyihin digitaalisiin nastoihin, joten voit lähettää korkeat ja matalat moottorin kääntyä yhteen suuntaan tai matalat ja korkeat, jotta se kääntyy toiseen suuntaan. Moottorin syöttöjännite kytkeytyy moottorin jännitelähteeseen, joka on yleensä ulkoinen virtalähde. Jos moottorisi voi toimia 5 V: n ja alle 500 mA: n jännitteellä, voit käyttää Arduinon 5 V: n lähtöä. Useimmat moottorit vaativat suurempaa jännitettä ja suurempaa virrankulutusta kuin tämä, joten tarvitset ulkoisen virtalähteen.

Liitä moottori H-siltaan Kytke moottori H-siltaan, kuten on esitetty toisessa kuvassa.

Tai jos käytät Arduinolle ulkoista virtalähdettä, voit käyttää Vin -tappia.

Vaihe 4: Kuinka LDR toimii

Ensimmäinen asia, joka saattaa tarvita lisäselityksiä, on valosta riippuvien vastusten käyttö. Valosta riippuvat vastukset (tai LDR: t) ovat vastuksia, joiden arvo muuttuu ympäristön valon määrästä riippuen, mutta miten voimme havaita vastus Arduinolla? No et todellakaan voi, mutta voit tunnistaa jännitetasot käyttämällä analogisia nastoja, jotka voivat mitata (peruskäytössä) välillä 0-5V. Nyt saatat kysyä: "Kuinka muutamme vastusarvot jännitteen muutoksiksi?", Se on yksinkertaista, teemme jännitteenjakajan. Jännitteenjakaja ottaa jännitteen ja antaa sitten murto -osan tästä jännitteestä, joka on verrannollinen tulojännitteeseen ja käytettyjen vastusten kahden arvon suhteeseen. Yhtälö, jolle on:

Lähtöjännite = tulojännite * (R2 / (R1 + R2)) Missä R1 on ensimmäisen vastuksen arvo ja R2 on toisen vastuksen arvo.

Nyt tämä herättää edelleen kysymyksen "Mutta mitä vastusarvoja LDR: llä on?", Hyvä kysymys. Mitä vähemmän ympäristön valoa, sitä suurempi vastus, sitä enemmän ympäröivää valoa tarkoittaa pienempää vastusta. Nyt tietyissä LDR -laitteissa käytin niiden vastusaluetta 200 - 10 kiloohmia, mutta tämä muuttuu erilaisille, joten muista etsiä mistä ostit ne ja yritä löytää tietolomake tai jotain vastaavaa. tapaus R1 on itse asiassa LDR, joten palautetaan tämä yhtälö ja tehdään matematiikka-magiaa (matemaattinen sähkömagia). Nyt ensin meidän on muunnettava nämä kilo-ohmin arvot ohmeiksi: 200 kilo-ohmia = 200 000 ohmia 10 kilo-ohmia = 10 000 ohmia Joten löytääksesi lähtöjännitteen, kun olemme pimeässä, liitämme seuraavat numerot: 5 * (10000 / (200000 + 10000)) Tulo on 5 V, koska saamme sen Arduinosta. Yllä oleva antaa 0,24 V (pyöristettynä). Nyt löydämme, mikä lähtöjännite on kirkkaimmillaan käyttämällä seuraavia numeroita: 5 * (10000 / (10000 + 10000)) Ja tämä antaa meille 2,5 V täsmälleen. Joten nämä ovat jännitearvoja, jotka aiomme saada Arduinon analogisiin nastoihin, mutta nämä eivät ole arvoja, jotka näkyvät ohjelmassa "Mutta miksi?" saatat kysyä. Arduino käyttää analogista digitaalista sirua, joka muuntaa analogisen jännitteen käyttökelpoiseksi digitaaliseksi dataksi. Toisin kuin Arduinon digitaaliset nastat, jotka voivat lukea vain HIGH tai LOW -tilaa 0 ja 5 V, analogiset nastat voivat lukea 0-5 V ja muuntaa tämän lukualueeksi 0-1023.. voimme itse laskea, mitkä arvot Arduino todella lukee.

Koska tämä on lineaarinen funktio, voimme käyttää seuraavaa kaavaa: Y = mX + C Missä; Y = Digital ValueWhere; m = kaltevuus, (nousu / ajo), (digitaalinen arvo / analoginen arvo) Missä; C = Y -leikkaus Y -leikkaus on 0, joten saadaan: Y = mXm = 1023 /5 = 204,6 Siksi: Digitaalinen arvo = 204,6 * Analoginen arvo Joten pimeässä musta arvo on: 204,6 * 0,24, joka antaa noin 49. Ja huippukirkkaudessa se on: 204,6 * 2,5, joka antaa noin 511. Nyt kun kaksi näistä on asetettu kahteen analogiseen nastaan, voimme luoda kaksi kokonaislukumuuttujaa niiden arvojen tallentamiseksi kaksi ja tehdä vertailuoperaattoreita nähdäksesi, kumpi on pienin arvo, kääntämällä robottia siihen suuntaan.