INHOUDSOPGAWE:

Werkende RC -motorsnelheidsmeter: 4 stappe (met foto's)
Werkende RC -motorsnelheidsmeter: 4 stappe (met foto's)

Video: Werkende RC -motorsnelheidsmeter: 4 stappe (met foto's)

Video: Werkende RC -motorsnelheidsmeter: 4 stappe (met foto's)
Video: Hoe vapen er écht uitziet… 😅 2024, November
Anonim
Werkende RC -motorsnelheidsmeter
Werkende RC -motorsnelheidsmeter

Dit is 'n kort projek wat ek geskep het as deel van 'n groter RC -gebou van 'n Lightweight Land Rover. Ek het besluit dat ek daarvan hou om 'n werkende snelheidsmeter in die paneelbord te hê, maar ek het geweet dat 'n servo dit nie sou sny nie. Daar was net een redelike opsie: ontplooi die arduino!

'N bietjie agtergrond om mee te begin … Ek is nie 'n kodeerder of elektroniese persoon nie. Ek dink nog steeds aan elektrisiteit in terme van watervloei en is effens verbaas oor weerstande. Dit gesê, as ek dit selfs kon laat werk, dan sou u dit ook kon doen!

ONDERDELE LYS:

Mikrokontroleerder: ek het 'n ATTiny85 -chip gebruik, wat ongeveer £ 1 elk gekos het.

Mikrobeheerderprogrammeerder: Om die kode op die skyfie te kry, benodig u 'n manier om dit te programmeer. Met gewone arduino is dit net 'n USB -kabel, maar vir die ATTiny -chip het u iets ekstra nodig. U kan 'n ander arduino hiervoor gebruik, of, net soos ek, 'n Tiny AVR -programmeerder van Sparkfun.

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

Ek sal dit aanbeveel, aangesien ek dit met verskillende metodes probeer programmeer het, en hierdie is die maklikste. Die bord is 'n bietjie duur, maar 'n goeie belegging as u baie ATTiny -projekte doen.

8 Pin Chip Socket: As u die chip in 'n socket steek eerder as om dit direk te soldeer, kan u 'n paar foute in die samestelling bekostig. Uit ervaring gesê - niemand wil skyfies desolder om dit te herprogrammeer nie.

Kondensator: 'n Ontkoppelingskondensator van 100nF (kode 104) word gebruik. Ek verstaan nie heeltemal hoekom nie, maar ek lees dat ontkoppelingskondenseerders op die internet belangrik is, so dit moet waar wees …

Weerstand: 'n Weerstand van 10 kΩ word gebruik om die lyn in die arduino af te trek. Weereens, nog 'n raaisel van elektronika.

Perfboard/Stripboard: 'n paar plintjies waarop u u stroombaan kan monteer.

Wikkeldraad: Gereelde omhulde draad is te dik om aan die motor vas te soldeer. Deur fyn geëmailleerde draad te gebruik, sal die spanning op die motorterminale verminder en u lewe baie makliker word.

Servodraad: 'n Lint met drie drade wat eindig in 'n 3-pins JR-wyfiestekker. Ek het myne gekry van 'n uitgebrande servo wat ek 'verander' het.

Stappermotor: ek het 'n 6 mm bipolêre Nidec -stapmotor gebruik. Elke klein stepper moet werk, alhoewel hulle klein moet bly, aangesien die stepper direk van die Arduino afgedryf word.

Kopstukke: nie noodsaaklik nie, maar as u u stepper na 4 koppenne bedraad en 'n aansluiting op u stroombaan plaas, kan u die paneelbord maklik ontkoppel om die installasie te vergemaklik.

Rekenaar: 'n rekenaar is nodig om u bord te programmeer. Moontlik met die Arduino IDE. En miskien 'n USB -kabel. As dit ook 'n kragkabel het, is dit nog beter.

Stap 1: Die stelsel

Die basiese uiteensetting van die stelsel wat ek geskep het, was 'n metode waardeur die sein van die Pulse Width Modulation (PWM) wat van die RC -ontvanger afkomstig is, omskakel word in 'n stapmotorveeg via 'n ATTiny 85 mikrobeheerder (uC).

Hier is 'n bron oor PWM -seine en RC, maar om dit te herhaal, hoef u dit nie streng te verstaan nie.

en.wikipedia.org/wiki/Servo_control

Die ATTiny is my gunsteling smaak van Arduino, want dit is klein met genoeg I/O -penne om basiese dinge te doen, en pas dus perfek in klein modelle en RC -projekte. Die grootste nadeel van die ATTiny is dat dit 'n bietjie meer opstelling benodig om een te programmeer, maar sodra u dit opgestel het, is dit so goedkoop dat u stapels daarvan vir allerhande projekte kan koop.

Die grootte van die snelheidsmeter is te klein om 'n motor met terugvoer te hê, sodat 'n proporsionele reaksie nodig was om 'n proporsionele reaksie te hê. 'N Stepper-motor is 'n motor wat in diskrete hoeveelhede (of stappe …) beweeg word, wat dit ideaal maak vir 'n stelsel sonder terugvoer soos hierdie. Die enigste voorbehoud is dat die 'stappe' veroorsaak dat die gevolglike beweging rukkerig is in plaas van glad. As u 'n stepper kry met genoeg stappe per rotasie, is dit nie opvallend nie, maar met die stepper wat ek in hierdie projek gebruik het, het slegs 20 of meer trappe in 'n volledige rotasie, die hoeksprong is redelik sleg.

Die stelsel sal die stepper by aanskakeling twee omwentelinge agteruit laat loop om die naald te nul. Die snelheidsmeter benodig 'n ruspen waar u die nulpunt wil hê, anders draai dit net vir altyd. Dan karteer dit die PWM -seine vorentoe en agtertoe na 'n vasgestelde aantal stappe van die motor. Maklik, reg …?

Stap 2: Die sagteware

Disclaimer: Ek is nie 'n programmeerder nie. Vir hierdie projek is ek die digitale ekwivalent van dr Frankenstein, wat iets bymekaarmaak wat uit verskillende stukkies kode gevind word.

My hartlike dank gaan dus aan Duane B, wat die kode vir die interpretasie van RC -seine gemaak het:

rcarduino.blogspot.com/

En aan Ardunaut, wat die kode vir die uitvoer van 'n stepper as 'n analoog meter gemaak het:

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

En vir albei, my opregste verskoning vir wat ek aan u kode gedoen het.

Dit is nou uit die weg geruim; hier is wat u na die ATTiny moet oplaai:

#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - gebruik die onderbrekingsnommer in attachInterrupt #definieer THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - gebruik die PIN -nommer in digitalRead #define NEUTRAL_THROTTLE 1500 in hierdie tyd // van neutrale gashendel op 'n elektriese RC -motor #define UPPER_THROTTLE 2000 // dit is die duur in mikrosekondes van maksimum gas op 'n elektriese RC -motor #define LOWER_THROTTLE 1000 // dit is die duur in mikrosekondes van nminimum gashendel op 'n elektriese RC -motor #define DEADZONE 50 // dit is die gashendeldoodsone. Die totale dooie gebied is dubbel soveel. #sluit #definieer STAPPE 21 // stappe per omwenteling (beperk tot 315 °) Verander dit om die maksimum reis van die snelheidsmeter aan te pas. #define COIL1 3 // Spoelpenne. Die ATTiny gebruik pen 0, 1, 3, 4 vir die stepper. Speld 2 is die enigste pen wat onderbrekings kan hanteer, so dit moet die invoer wees. #define COIL2 4 // Probeer dit verander as die stapmotor nie behoorlik werk nie. #define COIL3 0 #define COIL4 1 // skep 'n voorbeeld van die stepper -klas: Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Posisie in stappe (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // tyd om terug te stel terwyl die gas weer in stand is Resetval = 0; vlugtige int ThrottleIn = LOWER_THROTTLE; vlugtige ongetekende lang StartPeriod = 0; // gestel in die onderbreking // ons kan nThrottleIn = 0 in lus gebruik in plaas van 'n aparte veranderlike, maar deur bNewThrottleSignal te gebruik om aan te dui dat ons 'n nuwe sein het // is duideliker vir hierdie eerste voorbeeld leemte -opstelling () {// vertel die Arduino ons wil hê dat die funksie calcInput genoem moet word wanneer INT0 (digitale pen 2) van HIGH na LOW of LOW na HIGH // verander, sodat ons kan bereken hoe lank die invoerpuls attachInterrupt is (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // stel die motorsnelheid op 30 RPM (360 PPS ongeveer). stepper.step (STAPPE * 2); // Stel posisie terug (X tree linksom). } leemte -lus () {Herstelwaarde = millis; for (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = map (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Herstel = 0; } // Omgekeerde kartering anders as (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Herstel = 0; } // Buiten bereik bo, anders as (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Herstel = 0; } // Buiten bereik laer anders as (ThrottleInAvg Resetcounter) {stepper.step (4); // Ek probeer die stapper sê om homself weer te herstel as die RC-sein lank in die dooie gebied is. Weet nie of hierdie deel van die kode werklik werk nie. }} int val = SPEED; // kry die potensiometerwaarde (reeks 0-1023) val = map (val, 0, 255, 0, STEPS * 0,75); // kaart pot reeks in die stepper reeks. if (abs (val - pos)> 2) {// as die verskil groter as 2 stappe is. as ((val - pos)> 0) {stepper.step (-1); // beweeg een tree na links. pos ++; } as ((val - pos) <0) {stepper.step (1); // beweeg 'n stap na regs. pos--; }} // vertraging (10); } leegte calcInput () {// as die speld hoog is, is die begin van 'n onderbreking as (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HOOG) {// kry tyd om mikro te gebruik - as ons kode regtig besig raak, word dit onakkuraat, maar vir die huidige toepassing is dit // maklik om te verstaan en werk dit baie goed StartPeriod = micros (); } anders {// as die pen laag is, is dit die dalende rand van die pols, sodat ons nou die polsduur kan bereken deur die // begintyd ulStartPeriod af te trek van die huidige tyd wat deur mikros teruggegee word () if (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); StartPeriod = 0; }}}

Raadpleeg hierdie inligting vir meer inligting oor die programmering van 'n ATTiny85:

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

Stap 3: Die hardeware

Die hardeware
Die hardeware
Die hardeware
Die hardeware
Die hardeware
Die hardeware

Raadpleeg die kringdiagram vir die bou van die stroombaan. Dit is aan jou, maar ek stel voor dat jy 'n bietjie bordplank/perfboard gebruik om prototipe te gebruik en die chip in 'n sok te monteer.

C1 = 100nF

R1 = 10kΩ

Die kapasitor moet so na as moontlik aan die chip gemonteer word om die doeltreffendste te wees.

Wees uiters versigtig wanneer u die geëmailleerde drade aan die motor soldeer, aangesien die terminale op die motors daarvan afsny en die spoeldraad na die motor afsny. Om dit reg te stel, is 'n goeie oplossing om die drade aan te soldeer en dan 'n groot stuk tweedelige epoxy oor die gewrig te plaas, laat dit genees en draai die drade dan saam. Dit verminder die spanning op individuele eindverbindings en moet verhoed dat hulle loskom. As u dit nie doen nie, sal hulle gewaarborg word op die minste gerieflike tyd.

As u die koppelpin -aansluiting maak en die penne so stel: [Ca1, Cb1, Ca2, Cb2] met Ca1 wat staan vir spoel A, draad 1 ens. Hiermee kan u die draairigting van die meter verander deur die prop te ruil rond.

Die meter benodig 'n eindstop om die nulposisie te kalibreer. Ek sou aanbeveel om die naald van metaal te maak indien moontlik. Dit keer dat dit buig as dit die eindstop tref. 'N Manier om die naald in 'n goeie posisie te kry, is deur die naald tydelik aan die as te plak, die module aan te skakel, te laat rus, en dan die naald op die as te verwyder en weer vas te plak, terwyl die naald teen die eindstop. Dit pas die naald in ooreenstemming met die magnetiese rat van die motor en verseker dat u naald altyd teen die eindstop tot stilstand kom.

Stap 4: Epiloog

Hopelik het u hierdie kort instruksies geniet en dit nuttig gevind. Laat weet my as u een hiervan bou!

Sterkte!

Aanbeveel: