Sisällysluettelo:

Toimiva RC -auton nopeusmittari: 4 vaihetta (kuvilla)
Toimiva RC -auton nopeusmittari: 4 vaihetta (kuvilla)

Video: Toimiva RC -auton nopeusmittari: 4 vaihetta (kuvilla)

Video: Toimiva RC -auton nopeusmittari: 4 vaihetta (kuvilla)
Video: НИКОГДА НЕ СКАЧИВАЙ МАЙНКРАФТ С ДАРКНЕТА! MINECRAFT В 3 ЧАСА НОЧИ! МАЙН / DEP 2024, Syyskuu
Anonim
Toimiva RC -auton nopeusmittari
Toimiva RC -auton nopeusmittari

Tämä on lyhyt projekti, jonka loin osana suurempaa kevyen Land Roverin RC -rakennetta. Päätin, että ajattelin, että kojelaudassa olisi toimiva nopeusmittari, mutta tiesin, että servo ei leikkaa sitä. Oli vain yksi järkevä vaihtoehto: ottaa käyttöön arduino!

Aluksi hieman taustaa … En ole koodaus- tai elektroniikka -ihminen. Ajattelen edelleen sähköä vedenvirtauksen kannalta ja olen hieman hämmentynyt vastuksista. Se sanoi, jos jopa minä pystyin tekemään tämän työn, sinun pitäisi pystyä myös!

OSALUETTELO:

Mikro -ohjain: Käytin ATTiny85 -sirua, joka maksoi noin 1 puntaa.

Mikro -ohjaimen ohjelmoija: Saadaksesi koodin sirulle sinun on tapa ohjelmoida se. Tavallisella arduinolla tämä on vain USB -kaapeli, mutta ATTiny -sirulle tarvitset jotain ylimääräistä. Voit käyttää toista arduinoa tähän tai, kuten minä, voit käyttää Sparkfunin pientä AVR -ohjelmoijaa.

learn.sparkfun.com/tutorials/tiny-avr-prog…

Suosittelen tätä, koska olen yrittänyt ohjelmoida niitä eri menetelmillä ja tämä on helpoin. Levy on vähän kallis, mutta hyvä investointi, jos teet paljon ATTiny -projekteja.

8 -nastainen siruliitin: Jos laitat sirun pistorasiaan sen sijaan, että juotat sen suoraan, voit varata itsellesi joitain virheitä kokoonpanossa. Kokemuksesta puhuttu - kukaan ei halua purkaa siruja juottaakseen niitä uudelleen.

Kondensaattori: Käytetään 100nF: n (koodi 104) irrotuskondensaattoria. En ymmärrä aivan miksi, mutta luin, että kondensaattoreiden irrotus on tärkeää Internetissä, joten sen on oltava totta …

Vastus: 10 kΩ: n vastusta käytetään vetämään linja alas arduinoon. Jälleen yksi elektroniikan mysteeri.

Perfboard/Stripboard: Jotkut jalkalistat, joihin voit koota piirisi.

Käämityslanka: Tavallinen vaipallinen lanka on liian paksu juotettavaksi moottoriin. Hieno emaloitu lanka vähentää moottorin liittimien rasitusta ja helpottaa elämääsi paljon.

Servolanka: Kolmen johtimen nauha, joka päättyy 3-napaiseen JR-naaraspistokkeeseen. Sain omani palanneesta servosta, jota 'muokkasin'.

Askelmoottori: Käytin 6 mm: n bipolaarista Nidec -askelmoottoria. Kaikkien pienien askelmien pitäisi toimia, vaikka ne olisivat pieniä, koska askelinta ajetaan suoraan Arduinosta.

Otsatapit: Ei ole välttämätöntä, mutta jos kytket askelmasi 4 -nastaiseen nastaan ja laitat pistorasian piiriin, voit irrottaa kojelaudan helposti asennuksen helpottamiseksi.

Tietokone: Taulun ohjelmointiin tarvitaan tietokone. Mahdollisesti Arduino IDE: n kanssa. Ja ehkä USB -kaapeli. Jos siinä on myös virtajohto, se on vielä parempi.

Vaihe 1: Järjestelmä

Luomani järjestelmän perusperiaate oli menetelmä, jossa RC -vastaanottimesta tuleva pulssinleveysmodulaatiosignaali (PWM) muutetaan askelmoottorin pyyhkäisyksi ATTiny 85 -kontrollerin (uC) kautta.

Tässä on resurssi PWM -signaaleista ja RC: stä, mutta tämän toistamiseksi sinun ei tarvitse ymmärtää sitä.

en.wikipedia.org/wiki/Servo_control

ATTiny on suosikkimaku Arduinosta, koska se on pieni ja siinä on vielä tarpeeksi I/O -nastoja perusasioiden tekemiseen, joten se sopii täydellisesti pieniin malleihin ja RC -projekteihin. ATTinyn tärkein haittapuoli on se, että se vaatii hieman enemmän asennusta, jotta se voidaan ohjelmoida, mutta kun olet määrittänyt sen, ne ovat niin halpoja, että voit ostaa pinoja niitä kaikenlaisiin projekteihin.

Nopeusmittarin valitsimen koko on liian pieni, jotta siinä olisi vaihdemoottori, jossa on takaisinkytkentä, joten suhteellisen vasteen saamiseksi oli käytettävä askelmoottoria. Askelmoottori on moottori, jota liikutetaan erillisinä määrinä (tai portaissa…!), Mikä tekee siitä ihanteellisen tällaiselle takaisinkytkentäjärjestelmälle. Ainoa varoitus on, että "askeleet" aiheuttavat tuloksena olevan liikkeen nykimisen verrattuna sileään. Jos saat askeleen, jossa on tarpeeksi askelia kierrosta kohden, se ei ole havaittavissa, mutta tässä projektissa käyttämässäni askelmassa, jossa on vain noin 20 askelta koko kierroksella, kulmahyppy on melko huono.

Järjestelmä käynnistää käynnistyksen yhteydessä askelinta taaksepäin kaksi kierrosta, jotta neula nollautuu. Nopeusmittari tarvitsee lepotapin, johon haluat nollamerkin, tai muuten se vain pyörii ikuisesti. Sitten se kartoittaa eteen- ja taaksepäin suunnatut PWM -signaalit tiettyyn moottorin askelmäärään. Helppoa, eikö…?

Vaihe 2: Ohjelmisto

Vastuuvapauslauseke: En ole ohjelmoija. Tässä projektissa olen tohtori Frankensteinin digitaalinen vastine ja koon jotain, joka toimii eri löydetyistä koodibiteistä.

Joten sydämelliset kiitokseni kuuluu Duane B: lle, joka teki koodin RC -signaalien tulkitsemiseen:

rcarduino.blogspot.com/

Ja Ardunautille, joka teki koodin stepperin käyttämiseksi analogisena mittarina:

arduining.com/2012/04/22/arduino-driving-a…

Ja molemmille vilpittömät pahoitteluni siitä, mitä tein koodillenne.

Nyt se on poissa tieltä, tässä on mitä ladata ATTiny: hen:

#define THROTTLE_SIGNAL_IN 0 // KESKEYTYS 0 = DIGITAALINEN PIN 2 - käytä keskeytysnumeroa liitteessä Keskeytys #määritä THROTTLE_SIGNAL_IN_PIN 2 // KESKEYTYS 0 = DIGITAALINEN PIN 2 - käytä PIN -numeroa digitalRead #define NEUTRAL_THROTTEL sähkökäyttöisen RC -auton neutraalikaasu #define UPPER_THROTTLE 2000 // tämä on sähkökäyttöisen RC -auton maksimikaasun kesto mikrosekunneissa #define LOWER_THROTTLE 1000 // tämä on sähköisen RC -auton minimikaasun kesto mikrosekunneissa #define DEADZONE 50 // tämä on kaasun kuolleisuusalue. Kuollut vyöhyke on kaksinkertainen tähän. #sisältää #define STEPS 21 // askeleet kierrosta kohden (rajoitettu 315 °: een) Muuta tätä säätääksesi nopeusmittarin maksimimatkan. #define COIL1 3 // Kelan nastat. ATTiny käyttää steppereitä 0, 1, 3, 4. Nasta 2 on ainoa tappi, joka voi käsitellä keskeytyksiä, joten sen on oltava tulo. #define COIL2 4 // Kokeile muuttaa näitä, jos askelmoottori ei toimi kunnolla. #define COIL3 0 #define COIL4 1 // stepper -luokan ilmentymän luominen: Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Sijoitus vaiheissa (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // nollausaika tyhjäkäynnillä int Resetval = 0; volatile int ThrottleIn = LOWER_THROTTLE; haihtuva allekirjoittamaton pitkä StartPeriod = 0; // asetetaan keskeytykseen // voisimme käyttää silmukassa nThrottleIn = 0 erillisen muuttujan sijaan, mutta käyttämällä bNewThrottleSignalia osoittamaan, että meillä on uusi signaali // on selkeämpi tässä ensimmäisessä esimerkissä void setup () {// kerro Arduinolle haluamme funktion calcInput kutsuvan aina, kun INT0 (digitaalinen nasta 2) muuttuu HIGH -arvosta LOW- tai LOW -arvoksi HIGH // näiden muutosten havaitseminen antaa meille mahdollisuuden laskea, kuinka kauan syöttöpulssi on attachInterrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // aseta moottorin nopeudeksi 30 RPM (noin 360 PPS). stepper.step (VAIHEET * 2); // Nollaa sijainti (X astuu vastapäivään). } void loop () {Resetval = millis; for (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = kartta (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Palautusarvo = 0; } // Käänteinen kartoitus else if (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Palautusarvo = 0; } // Alueen ulkopuolella ylempi muu if (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Palautusarvo = 0; } // Alueen ulkopuolella alempi else if (ThrottleInAvg Resetcounter) {stepper.step (4); // Yritän käskeä askelta nollaamaan itsensä uudelleen, jos RC-signaali on kuolleessa vyöhykkeessä pitkään. En ole varma, toimiiko tämä koodin osa todella. }} int val = NOPEUS; // saada potentiometrin arvo (alue 0-1023) val = map (val, 0, 255, 0, STEPS * 0.75); // kartta potin alue askelalueella. if (abs (val - pos)> 2) {// jos ero on suurempi kuin 2 askelta. jos ((val - pos)> 0) {stepper.step (-1); // siirry yksi askel vasemmalle. pos ++; } if ((val - pos) <0) {stepper.step (1); // siirry askel oikealle. pos--; }} // viive (10); } void calcInput () {// jos nasta on korkea, se on keskeytyksen alku, jos (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// saat ajan mikrossa - kun koodistamme tulee todella kiireinen, siitä tulee epätarkkaa, mutta nykyisessä sovelluksessa sen // helppo ymmärtää ja toimii erittäin hyvin StartPeriod = micros (); } else {// jos nasta on matala, sen pulssin putoava reuna, joten nyt voimme laskea pulssin keston vähentämällä // aloitusajan ulStartPeriod micros (): n palauttamasta nykyisestä ajasta, jos (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); Aloitusjakso = 0; }}}

Katso tästä lisätietoja ATTiny85: n ohjelmoinnista:

learn.sparkfun.com/tutorials/tiny-avr-prog…

Vaihe 3: Laitteisto

Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto

Katso piirikaavio piirin rakentamisesta. Se, miten kokoat sen, on sinun valintasi, mutta suosittelen käyttämään hieman stripboard-/perfboard -levyä, jota käytetään piirilevyn prototyyppien laatimiseen, ja kiinnitä siru pistorasiaan.

C1 = 100 nF

R1 = 10 kΩ

Kondensaattori on asennettava mahdollisimman lähelle sirua, jotta se olisi tehokkain.

Kun juotat emaloituja johtoja moottoriin, ole erityisen varovainen, koska moottorien liittimet haluavat napsahtaa irti ja katkaista kelajohdon moottoriin. Tämän ratkaisemiseksi hyvä ratkaisu on juottaa johdot kiinni ja laittaa sitten iso 2-osainen epoksi möykky liitoksen päälle, antaa sen kovettua ja kiertää sitten johdot yhteen. Tämä vähentää kuormitusta yksittäisille liittimille ja estää niiden katkeamisen. Jos et tee tätä, ne napsahtavat pois takuulla, sopivimpaan aikaan.

Jos teet otsikkotappiliittimen ja asennat nastat seuraavasti: [Ca1, Cb1, Ca2, Cb2] ja Ca1 tarkoittaa kelaa A, johtoa 1 jne. Tämän avulla voit muuttaa mittarin pyörimissuuntaa vaihtamalla pistoketta noin.

Mittari tarvitsee pysäytyksen nollapisteen kalibroimiseksi. Suosittelen tekemään neulan metallista, jos mahdollista. Tämä estää sen taipumisen, kun se osuu päätepisteeseen. Yksi tapa saada neula hyvään asentoon on liimata neula tilapäisesti akseliin, kytkeä virta moduuliin, antaa sen levätä ja irrottaa ja liimata neula uudelleen akselille siten, että neula on endstop. Tämä kohdistaa neulan moottorin magneettikammioon ja varmistaa, että neula tulee aina lepäämään päätettä vasten.

Vaihe 4: Epilogi

Toivottavasti pidit tästä lyhyestä ohjeesta ja pidit sitä hyödyllisenä. Jos rakennat yhden näistä, kerro minulle!

Onnea!

Suositeltava: