Tässä opetusohjelmassa kehitämme virtapiirin käyttäen Force-anturia, Arduino Unoa ja servomoottoria. Se on servo-ohjausjärjestelmä, jossa servoakselin sijainti määräytyy voima-anturissa olevan painon perusteella. Ennen kuin jatkat, puhumme servosta ja muista komponenteista.
Servomoottoreita käytetään siellä, missä tarvitaan tarkkaa akselin liikettä tai asentoa. Näitä ei ehdoteta suurten nopeuksien sovelluksiin. Näitä ehdotetaan matalalle nopeudelle, keskivääntömomentille ja tarkalleen asennolle. Näitä moottoreita käytetään robottivarren koneissa, lennonohjaimissa ja ohjausjärjestelmissä. Servomoottoreita käytetään myös joissakin tulostimissa ja fakseissa.
Servomoottoreita on saatavana eri muotoisina ja kokoisina. Servomoottorissa on pääasiassa johdot, toinen on positiivista jännitettä varten, toinen maadoitusta ja viimeinen asennon asettamista varten. PUNAINEN johto on kytketty virtaan, musta johto on kytketty maahan ja KELTAINEN johto on kytketty signaaliin.
Servomoottori on DC-moottorin, asennonohjausjärjestelmän, vaihteiden yhdistelmä. Servomoottorin ohjauselektroniikka säätää tasavirtamoottorin akselin sijainnin SIGNAL-nastan PWM-signaalin käyttösuhteen perusteella. Yksinkertaisesti sanottuna ohjauselektroniikka säätää akselin asentoa ohjaamalla DC-moottoria. Nämä tiedot akselin sijainnista lähetetään SIGNAL-tapin kautta. Sijaintitiedot ohjaukseen tulisi lähettää PWM-signaalina servomoottorin signaalitapin kautta.
PWM (Pulse Width Modulated) -signaalin taajuus voi vaihdella servomoottorin tyypin mukaan. Tärkeää tässä on PWM-signaalin TYÖSUHDE. Tämän TULOSUOSITUKSEN perusteella ohjauselektroniikka säätää akselia.
Kuten alla olevassa kuvassa on esitetty, jotta akseli voidaan siirtää 9o-kelloon, PÄÄLLE-SUHTEEN on oltava 1/18. 1milli sekunti 'ON time' ja 17milli sekunti 'OFF time' 18ms signaalissa.
Akselin siirtämiseksi 12o-kelloon signaalin ON-ajan on oltava 1,5 ms ja OFF-ajan 16,5 ms.
Servo-ohjausjärjestelmä dekoodaa tämän suhteen ja säätää sijaintia sen perusteella.
Tämä täällä oleva PWM luodaan käyttämällä ARDUINO UNO: ta.
Joten nyt tiedämme, että voimme ohjata SERVO MOTOR -akselia vaihtelemalla UNO: n tuottaman PWM-signaalin käyttöastetta.
Puhutaan nyt voima- tai painotunnistimesta.
Jotta voisimme yhdistää FORCE-anturin ARDUINO UNO: n kanssa, aiomme käyttää 8-bittistä ADC (Analog to Digital Conversion) -ominaisuutta arduno unossa.
FORCE-anturi on anturi, joka muuttaa resistanssiaan, kun pintaan kohdistetaan painetta. FORCE-anturia on saatavana erikokoisina ja -muotoisina.
Aiomme käyttää yhtä halvemmista versioista, koska emme tarvitse tässä paljon tarkkuutta. FSR400 on yksi markkinoiden halvimmista voima-antureista. Kuva FSR400: sta on esitetty alla olevassa kuvassa.
Nyt on tärkeää huomata, että FSR 400 on herkkä pituudeltaan, voima tai paino tulisi keskittää sensorin silmän keskellä olevaan sokkeloon, kuten kuvassa on esitetty.
Jos voima kohdistetaan väärin aikoina, laite voi vaurioitua pysyvästi.
Toinen tärkeä asia tietää, että anturi voi ajaa suuria kantoja. Joten pidä mielessä ajovirrat asennuksen aikana. Myös anturin voimaraja on 10 Newtonia. Joten voimme käyttää vain 1 kg painoa. Jos painot ylittävät 1 kg, anturi saattaa näyttää joitain poikkeamia. Jos se kasvaa yli 3 kg. anturi saattaa vahingoittua pysyvästi.
Kuten aiemmin kerrottiin, tätä anturia käytetään paineen muutosten havaitsemiseen. Joten kun paino kohdistetaan FORCE-anturin päälle, vastus muuttuu huomattavasti. FS400: n kestävyys painon suhteen on esitetty alla olevassa kaaviossa:
Kuten yllä olevassa kuvassa on esitetty, anturin kahden koskettimen välinen vastus pienenee painon mukaan tai anturin kahden koskettimen välinen johtavuus kasvaa.
Puhtaan johtimen vastus saadaan:
Missä, p- Johtimen resistanssi
l = johtimen pituus
A = johtimen alue.
Tarkastellaan nyt johtoa, jonka vastus on “R”, jos johtimen päälle kohdistetaan jonkin verran painetta, johtimen pinta pienenee ja johtimen pituus kasvaa paineen seurauksena. Joten kaavan mukaan johtimen vastuksen tulisi kasvaa, koska vastus R on kääntäen verrannollinen pinta-alaan ja myös suoraan verrannollinen pituuteen l.
Joten tällä johdolla paineen tai painon alla johtimen vastus kasvaa. Mutta tämä muutos on pieni verrattuna yleiseen vastukseen. Huomattavaa muutosta varten monet johtimet on pinottu yhteen.
Näin tapahtuu yllä olevassa kuvassa esitettyjen voima-antureiden sisällä. Tarkasteltaessa voi nähdä monia viivoja anturin sisällä. Jokainen näistä linjoista edustaa johtajaa. Anturin herkkyys on johtimen numeroissa.
Mutta tässä tapauksessa vastus pienenee paineen vuoksi, koska tässä käytetty materiaali ei ole puhdas johdin. Tässä FSR ovat kestäviä polymeeripaksukalvolaitteita (PTF). Joten nämä eivät ole puhtaita johdinmateriaalilaitteita. Ne koostuvat materiaalista, jonka resistanssi pienenee anturin pintaan kohdistuvan voiman kasvaessa.
Tällä materiaalilla on ominaisuudet, kuten FSR-kaaviossa on esitetty.
Tämä muutos vastustuksessa ei voi tehdä mitään hyvää, ellemme osaa lukea niitä. Käsillä oleva ohjain pystyy lukemaan vain jännitteen mahdollisuudet eikä vähempää, tähän aiomme käyttää jännitteenjakajapiiriä, jolloin voimme johtaa vastuksen muutoksen jännitteen muutoksena.
Jännitteenjakaja on resistiivinen piiri ja se näkyy kuvassa. Tässä resistiivisessä verkossa meillä on yksi vakio vastus ja muu vastus muuttuva. Kuten kuvassa on esitetty, R1 on tässä vakiovastus ja R2 on FORCE-anturi, joka toimii vastuksena.
Haaran keskipiste mitataan. R2-muutoksen myötä meillä on muutosta Voutissa. Joten tällä on jännite, joka muuttuu painon mukaan.
Nyt on tärkeää huomata, että ohjaimen ottama ADC-muunnos on vain 50µAmp. Tämä vastusperusteisen jännitteenjakajan kuormitusvaikutus on tärkeä, koska jännitteenjakajan Voutista otettu virta lisää virheprosentin kasvua, toistaiseksi meidän ei tarvitse huolehtia kuormitusvaikutuksesta.
Nyt kun voimaa kohdistetaan VOIMA-ANTURIIN, jännite jakajan päässä muuttaa tätä tapia yhdistettynä UNO: n ADC-kanavaan, saamme toisen digitaalisen arvon kuin UNO: n ADC, aina kun anturiin kohdistuva voima muuttuu.
Tämä ADC-digitaaliarvo sovitetaan PWM-signaalin kuormitussuhteeseen, joten meillä on SERVO-asennon hallinta anturiin kohdistuvan voiman suhteen.
Komponentit
Laitteisto: UNO, virtalähde (5v), 1000uF kondensaattori, 100nF kondensaattori (3 kpl), 100KΩ vastus, SERVO MOTOR (SG 90), 220Ω vastus, FSR400 voima-anturi.
Ohjelmisto: Atmel studio 6.2 tai aurdino iltaisin.
Piirikaavio ja selitys työstä
Piirikaavio servomoottori valvonnan voima-anturi on esitetty alla kuviossa.
Anturin jännite ei ole täysin lineaarinen; se on meluisa. Kohinan suodattamiseksi kondensaattorit sijoitetaan jakajapiirin kunkin vastuksen yli kuvan osoittamalla tavalla.
Tässä aiotaan ottaa jakajan antama jännite (jännite, joka edustaa painoa lineaarisesti) ja syöttää sen yhteen Arduino Unon ADC-kanavista. Muunnoksen jälkeen aiomme ottaa kyseisen digitaalisen arvon (edustaa painoa) ja liittää sen PWM-arvoon ja toimittaa tämän PWM-signaalin SERVO-moottorille.
Joten painolla meillä on PWM-arvo, joka muuttaa sen suhdetta digitaalisesta arvosta riippuen. Suurempi digitaalinen arvo on korkeampi PWM: n käyttöaste. Joten korkeammalla PWM-signaalilla, servoakselin tulisi ulottua oikealle tai vasemmalle, johdannossa esitetyn kuvan mukaisesti.
Jos paino on pienempi, meillä on pienempi PWM-tulosuhde ja kuten johdannossa esitetyssä kuvassa, servon tulisi ulottua äärioikeistoon.
Tämän avulla meillä on SERVO-paikannussäätö painon tai voiman avulla.
Tätä varten meidän on määritettävä muutama ohje ohjelmasta ja puhumme niistä yksityiskohtaisesti jäljempänä.
ARDUINOlla on kuusi ADC-kanavaa, kuten kuvassa näkyy. Niissä yhtä tai kaikkia niistä voidaan käyttää analogisen jännitteen tuloina. UNO ADC: n resoluutio on 10 bittiä (joten kokonaislukuarvot ((0- (2 ^ 10) 1023)). Tämä tarkoittaa, että se kartoittaa 0 - 5 voltin syöttöjännitteet kokonaislukuiksi välillä 0 - 1023. Joten jokaiselle (5/1024 = 4,9 mV) yksikköä kohti.
Täällä aiomme käyttää UNO: n A0: ta. Meidän on tiedettävä muutama asia.
|
Ensinnäkin Arduino Uno ADC -kanavien oletusarvo on 5 V. Tämä tarkoittaa, että voimme antaa enimmäisjännitteen 5 V ADC-muunnokselle missä tahansa tulokanavassa. Koska jotkut anturit tarjoavat jännitteitä 0-2,5 V, 5 V: n referenssillä saamme vähemmän tarkkuutta, joten meillä on ohje, jonka avulla voimme muuttaa tätä vertailuarvoa. Joten referenssiarvon muuttamiseksi meillä on ("analogReference ();") Tällä hetkellä jätämme sen arvoksi.
Oletuksena saamme levyn ADC-enimmäistarkkuuden, joka on 10 bittiä, tätä resoluutiota voidaan muuttaa käskyllä ("analogReadResolution (bits);"). Tämä resoluution muutos voi olla hyödyllinen joissakin tapauksissa. Toistaiseksi jätämme sen.
Jos edellä mainitut ehdot on asetettu oletusarvoiksi, voimme lukea arvon kanavan '0' ADC: stä kutsumalla suoraan toimintoon "analogRead (pin);", tässä "pin" edustaa nastaa, johon liitimme analogisen signaalin, tässä tapauksessa se olisi "A0". ADC: n arvo voidaan ottaa kokonaislukuksi muodossa "int SENSORVALUE = analogRead (A0); ”, Tällä ohjeella arvo ADC: n jälkeen tallennetaan kokonaislukuun“ SENSORVALUE ”.
UNO: n PWM voidaan saavuttaa millä tahansa nastalla, jota PCB-piirilevyllä on symboli "~". UNO: ssa on kuusi PWM-kanavaa. Aiomme käyttää PIN3: ta tarkoitukseen.
analogWrite (3, ARVO); |
Yllä olevasta ehdosta voimme saada PWM-signaalin suoraan vastaavaan tapiin. Suluissa ensimmäinen parametri on PWM-signaalin pin-numeron valitseminen. Toinen parametri on kirjoitussuhde.
Arduino Unon PWM-arvo voidaan muuttaa arvosta 0 arvoon 255. Kun “0” on pienin ja ”255” on korkein. Kun käyttösuhde on 255, saamme 5 V PIN3: lla. Jos käyttösuhde on 125, saamme 2,5 V PIN3: lla.
Puhutaan nyt servomoottorin ohjauksesta. Arduino Unolla on ominaisuus, jonka avulla voimme hallita servoasentoa vain antamalla aste-arvon. Sano jos haluamme servon olevan 30: ssä, voimme edustaa arvoa suoraan ohjelmassa. SERVO-otsikkotiedosto huolehtii kaikista käyttöasteiden laskelmista sisäisesti. Voit oppia lisää servomoottorin ohjauksesta arduinolla täältä.
Nyt sg90 voi liikkua 0-180 astetta, ADC-tulos on 0-1024.
Joten ADC on noin kuusi kertaa SERVO POSITION. Joten jakamalla ADC-tulos 6: lla saamme arvioidun SERVO-käden sijainnin. Siksi meillä on PWM-signaali, jonka suhde muuttuu lineaarisesti painon tai voiman kanssa. Kun tämä annetaan servomoottorille, voimme ohjata servomoottoria voiman anturilla.