Tartalomjegyzék:

Működő RC autósebességmérő: 4 lépés (képekkel)
Működő RC autósebességmérő: 4 lépés (képekkel)

Videó: Működő RC autósebességmérő: 4 lépés (képekkel)

Videó: Működő RC autósebességmérő: 4 lépés (képekkel)
Videó: KIKAPTUK A BIZIT📚 #shorts 2024, November
Anonim
Működő RC autósebességmérő
Működő RC autósebességmérő

Ez egy rövid projekt, amelyet egy könnyű Land Rover nagyobb RC konstrukciójának részeként hoztam létre. Úgy döntöttem, hogy elképzelhető, hogy a műszerfalon működő sebességmérő van, de tudtam, hogy egy szervó nem vágja le. Csak egy ésszerű lehetőség volt: telepítse az arduino -t!

Kezdetnek egy kis háttér … Nem vagyok kódoló vagy elektronikai ember. Még mindig a villamos energiára gondolok a vízáramlás szempontjából, és némileg zavarban vagyok az ellenállások miatt. Ez azt jelenti, hogy ha még én is képes voltam erre a munkára, akkor Önnek is képesnek kell lennie rá!

ALKATRÉSZ LISTA:

Mikrokontroller: ATTiny85 chipet használtam, amelyek ára körülbelül 1 font.

Mikrokontroller programozó: Ahhoz, hogy a kódot a chipre vigye, programoznia kell. A hagyományos arduino esetében ez csak egy USB -kábel, de az ATTiny chiphez valami extra kell. Ehhez használhat egy másik arduino -t, vagy hozzám hasonlóan a Sparkfun Tiny AVR programozóját.

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

Ezt javaslom, mivel megpróbáltam programozni őket különböző módszerekkel, és ez a legegyszerűbb. A tábla egy kicsit drága, de jó befektetés, ha sok ATTiny projektet végez.

8 tűs forgácsaljzat: Ha a chipet egy foglalatba helyezi, és nem közvetlenül forrasztja, akkor megengedheti magának néhány hibát az összeszerelés során. Tapasztalatból elmondva - senki sem akarja forrasztani a chipeket, hogy átprogramozza őket.

Kondenzátor: 100nF (104 kód) leválasztó kondenzátort használnak. Nem egészen értem, miért, de olvastam, hogy a kondenzátorok leválasztása fontos az interneten, tehát igaznak kell lennie…

Ellenállás: 10 kΩ -os ellenállást használnak a vonal lehúzására az arduino -ba. Ismét az elektronika újabb rejtélye.

Perfboard/Stripboard: Némi alaplap, amelyre össze lehet szerelni az áramkört.

Tekercselő huzal: A normál burkolatú huzal túl vastag ahhoz, hogy a motorra forraszthasson. Finom zománcozott huzal használata csökkenti a motor kapcsaira ható feszültséget, és sokkal könnyebbé teszi az életét.

Szervóhuzal: Három vezetékes szalag, amely egy 3 pólusú JR hüvelyes csatlakozóban végződik. Az enyémet egy kiégett szervóból kaptam, amelyet "módosítottam".

Léptetőmotor: 6 mm -es bipoláris Nidec léptetőmotort használtam. Bármilyen kis léptetőnek működnie kell, bár legyen kicsi, mivel a lépegetőt közvetlenül az Arduino hajtja.

Fejléccsapok: Nem nélkülözhetetlen, de ha a léptetőjét 4 fejléchez csatlakoztatja, és csatlakozóaljzatot helyez az áramkörre, akkor egyszerűen húzza ki a műszerfalat a konnektorból a könnyű telepítés érdekében.

Számítógép: A tábla programozásához számítógépre van szüksége. Esetleg az Arduino IDE -vel. És talán egy USB kábel. Ha van tápkábele is, akkor még jobb.

1. lépés: A rendszer

Az általam létrehozott rendszer alapvető vázlata egy olyan módszer volt, amellyel az RC vevőből érkező impulzusszélesség -modulációs (PWM) jel egy ATTiny 85 mikrovezérlőn (uC) keresztül léptetőmotoros söpréssé alakul.

Itt található egy forrás a PWM jelekről és az RC -ről, de ennek megismétléséhez nem feltétlenül kell megértenie.

en.wikipedia.org/wiki/Servo_control

Az ATTiny a kedvenc ízem az Arduino -ból, mert kicsi, és még mindig elegendő I/O csap van az alapvető dolgok elvégzéséhez, így tökéletesen illeszkedik a kis modellekhez és az RC projektekhez. Az ATTiny fő hátránya, hogy egy kicsit több beállítást igényel az egyik programozásához, de miután beállította, annyira olcsók, hogy rengeteg projektet vásárolhat.

A sebességmérő tárcsa mérete túl kicsi ahhoz, hogy visszacsatolt hajtóműves motor legyen, ezért az arányos válasz érdekében léptetőmotort kellett használni. A léptetőmotor olyan motor, amelyet diszkrét mennyiségben (vagy lépésben…!) Mozgatnak, így ideális az ilyen visszacsatolás nélküli rendszerhez. Az egyetlen figyelmeztetés az, hogy a „lépések” miatt a kapott mozgás rángatózó lesz, szemben a sima. Ha olyan léptetőgépet kap, amely elegendő lépést tartalmaz fordulatonként, ez nem észrevehető, de ha a projektben használt léptetőnek csak körülbelül 20 lépése van egy teljes forgásban, akkor a szögugrás elég rossz.

A rendszer bekapcsoláskor két fordulattal hátrafelé futtatja a léptetőgépet, így a tű nullázódik. A sebességmérőnek szüksége van egy pihentető csapra, ahol szeretné, hogy a nulla jel legyen, különben örökké forog. Ezután leképezi az előre és hátra irányított PWM jeleket a motor meghatározott számú lépésére. Könnyű, igaz…?

2. lépés: A szoftver

Jogi nyilatkozat: Nem vagyok programozó. Ebben a projektben én vagyok Dr. Frankenstein digitális megfelelője, és összeállítok valamit, amely különböző talált kódrészletekből dolgozik.

Tehát szívből köszönöm Duane B -nek, aki elkészítette az RC jelek értelmezésének kódját:

rcarduino.blogspot.com/

És Ardunautnak, aki analóg mérőeszközként elkészítette a léptető futtatásának kódját:

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

És mindkettőjüknek őszintén elnézést kérek azért, amit a kódjával tettem.

Most ez nem áll rendelkezésre, íme, mit kell feltölteni az ATTiny -be:

#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - használja a megszakítási számot mellékletbenInterrupt #define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - használja a PIN -kódot a digitalRead #define NEUTRAL_THROTTT időtartama alatt semleges fojtószelep elektromos RC autón #define UPPER_THROTTLE 2000 // ez az időtartam mikroszekundumokban a maximális fojtószelep elektromos elektromos autón #define LOWER_THROTTLE 1000 // DEADZONE 50 // ez a fojtószelep holtterülete. A teljes holtterület ennek a duplája. #include #define STEPS 21 // lépésenkénti lépések (315 ° -ig korlátozva) Változtassa meg ezt a sebességmérő maximális mozgásának beállításához. #define COIL1 3 // Tekercscsapok. Az ATTiny 0, 1, 3, 4 csapokat használ a léptetőhöz. A 2 -es tű az egyetlen tű, amely képes kezelni a megszakításokat, ezért a bemenetnek kell lennie. #define COIL2 4 // Ha a léptetőmotor nem működik megfelelően, próbálja meg ezeket megváltoztatni. #define COIL3 0 #define COIL4 1 // a léptető osztály példányának létrehozása: Stepper stepper (LÉPÉSEK, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Pozíció lépésben (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // a visszaállítás ideje alapjáraton fojtószelep int Resetval = 0; volatile int ThrottleIn = LOWER_THROTTLE; ingadozó előjel nélküli hosszú StartPeriod = 0; // beállítva a megszakításban // külön változó helyett használhatnánk az nThrottleIn = 0 ciklusban, de a bNewThrottleSignal használatával jelezhetjük, hogy új jelünk van // világosabb az első példában void setup () {// mondja meg az Arduino -nak azt akarjuk, hogy a calcInput függvény hívásra kerüljön, amikor az INT0 (2. digitális tű) HIGH -ról LOW -ra vagy LOW -ról HIGH -ra változik // ezeknek a változásoknak az észlelése lehetővé teszi, hogy kiszámítsuk, mennyi ideig tart a bemeneti impulzus AttaInterrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // állítsa be a motor fordulatszámát 30 RPM -re (kb. 360 PPS). léptető.lépés (LÉPÉSEK * 2); // Pozíció visszaállítása (X az óramutató járásával ellentétes irányba lép). } void loop () {Resetval = millis; for (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = map (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Resetval = 0; } // Fordított térképezés else if (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Visszaállítás = 0; } // Hatótávolságon kívül más if (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Visszaállítás = 0; } // A tartományon kívül alacsonyabb else if (ThrottleInAvg Resetcounter) {stepper.step (4); // Megpróbálom azt mondani a léptetőnek, hogy állítsa vissza magát, ha az RC jel hosszú ideig a holtzónában van. Nem biztos benne, hogy a kódnak ez a része valóban működik. }} int val = SEBESSÉG; // kapja meg a potenciométer értékét (0-1023 tartomány) val = map (val, 0, 255, 0, STEPS * 0.75); // térképtér tartományának feltérképezése a léptető tartományban. if (abs (val - pos)> 2) {// ha a különbség nagyobb, mint 2 lépés. if ((val - pos)> 0) {léptető.lépés (-1); // lépjen egy lépést balra. pos ++; } if ((val - pos) <0) {stepper.step (1); // lépjen egy lépést jobbra. pozíció--; }} // delay (10); } void calcInput () {// ha a tű magas, akkor a megszakítás kezdete, ha (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// mikroszkóp segítségével kapja meg az időt - amikor a kódunk nagyon elfoglalt lesz, pontatlan lesz, de a jelenlegi alkalmazáshoz // könnyen érthető és nagyon jól működik StartPeriod = micros (); } else {// ha a csap alacsony, akkor az impulzus leeső éle, így most kiszámíthatjuk az impulzus időtartamát úgy, hogy kivonjuk a // kezdési időt ulStartPeriod a micros () által visszaadott aktuális időből, ha (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); StartPeriod = 0; }}}

Az ATTiny85 programozásáról további információt itt talál:

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

3. lépés: A hardver

A hardver
A hardver
A hardver
A hardver
A hardver
A hardver

Az áramkör felépítéséhez lásd a kapcsolási rajzot. Az összeszerelés módja rajtad múlik, de azt javaslom, hogy használj egy kis szalaglemezt/perforált lemezt, amelyet az áramköri lap prototípusának elkészítéséhez használnak, és szerelje be a chipet egy foglalatba.

C1 = 100 nF

R1 = 10 kΩ

A kondenzátort a lehető legközelebb kell elhelyezni a chiphez, hogy a leghatékonyabb legyen.

Amikor a zománcozott huzalokat a motorhoz forrasztja, legyen nagyon óvatos, mivel a motorok kapcsai szeretik lepattanni és elvágni a tekercshuzalt a motorhoz. Ennek orvoslására jó megoldás az, ha a huzalokat felforrasztjuk, majd egy nagy folt 2 részes epoxi-ragasztót teszünk a kötésre, hagyjuk megszilárdulni, majd csavarjuk össze a huzalokat. Ez csökkenti a feszültséget az egyes végcsatlakozásokon, és meg kell akadályoznia azok lecsattanását. Ha ezt nem teszi meg, akkor a legkevésbé kényelmes időben, garantáltan lekapcsolnak.

Ha elkészíti a csatlakozócsap csatlakozóját, és a csapokat a következőképpen állítja be: [Ca1, Cb1, Ca2, Cb2], a Ca1 pedig az A tekercs, az 1 vezeték stb. körül.

A mérőeszköznek végállásra lesz szüksége a nulla pozíció kalibrálásához. Javaslom, hogy a tűt lehetőleg fémből készítsék. Ez megakadályozza a hajlítást, amikor a végállást érinti. A tű jó helyzetbe hozásának egyik módja az, ha ideiglenesen ragasztja a tűt a tengelyhez, bekapcsolja a modult, hagyja pihenni, majd eltávolítja és újra felragasztja a tűt a tengelyre, a tűt pedig a végállás. Ez igazítja a tűt a motor mágneses eltömődéséhez, és biztosítja, hogy a tű mindig a végütközőnek támaszkodjon.

4. lépés: Epilógus

Remélhetőleg tetszett ez a rövid tanulság, és hasznosnak találta. Ha ezek közül egyet építesz, tudasd velem!

Sok szerencsét!

Ajánlott: