Obsah:

Pracovní RC auto rychloměr: 4 kroky (s obrázky)
Pracovní RC auto rychloměr: 4 kroky (s obrázky)

Video: Pracovní RC auto rychloměr: 4 kroky (s obrázky)

Video: Pracovní RC auto rychloměr: 4 kroky (s obrázky)
Video: Zavřete oči a poslouchejte 😂😂😂 2024, Listopad
Anonim
Pracovní RC auto rychloměr
Pracovní RC auto rychloměr

Toto je krátký projekt, který jsem vytvořil jako součást větší RC sestavy lehkého Land Roveru. Rozhodl jsem se, že se mi líbí mít na palubní desce funkční rychloměr, ale věděl jsem, že to servo nesekne. Existovala pouze jedna rozumná možnost: nasadit arduino!

Na začátek trochu pozadí … Nejsem programátor ani elektronik. Stále myslím na elektřinu, pokud jde o tok vody, a jsem poněkud zmatený rezistory. To znamená, že pokud jsem to dokázal udělat i já, pak byste to měli zvládnout i vy!

SEZNAM DÍLŮ:

Mikrokontrolér: Použil jsem čip ATTiny85, který stál přibližně 1 £ každý.

Programátor mikrokontroléru: Abyste dostali kód na čip, potřebujete způsob, jak ho naprogramovat. U běžného arduina je to jen USB kabel, ale pro čip ATTiny potřebujete něco navíc. K tomu můžete použít jiné arduino nebo, stejně jako já, můžete použít programátor Tiny AVR od Sparkfun.

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

Doporučil bych to, protože jsem je zkoušel programovat různými metodami a tato je nejjednodušší. Deska je trochu drahá, ale je to dobrá investice, pokud děláte mnoho projektů ATTiny.

8pinová zásuvka na čip: Pokud vložíte čip do patice, místo abyste ho přímo pájili, můžete si dovolit chyby při montáži. Mluveno ze zkušenosti - nikdo nechce odpájet čipy, aby je přeprogramoval.

Kondenzátor: Je použit oddělovací kondenzátor 100nF (kód 104). Nerozumím úplně proč, ale četl jsem, že odpojovací kondenzátory jsou na internetu důležité, takže to musí být pravda …

Rezistor: Rezistor 10 kΩ se používá ke stažení vedení do arduina. Opět další tajemství elektroniky.

Perfboard/Stripboard: Nějaká základní deska, na které sestavíte svůj obvod.

Navíjecí vodič: Pravidelný opláštěný drát je příliš silný na to, aby se připájel na motor. Použití jemně smaltovaného drátu sníží napětí na svorkách motoru a výrazně vám usnadní život.

Servo Wire: Třížilový pásek zakončený 3kolíkovou zástrčkou JR. Moje jsem dostal z vyhořelého serva, které jsem 'upravoval'.

Krokový motor: Použil jsem 6mm bipolární krokový motor Nidec. Každý malý stepper by měl fungovat, i když je nechte malý, protože stepper je poháněn přímo z Arduina.

Piny záhlaví: Není to nutné, ale pokud zapojíte svůj stepper na 4 vývody záhlaví a zapojíte do svého obvodu zásuvku, můžete snadno odpojit palubní desku pro snadnou instalaci.

Počítač: K naprogramování desky budete potřebovat počítač. Možná s Arduino IDE. A možná kabel USB. Pokud má také napájecí kabel, pak ještě lépe.

Krok 1: Systém

Základní obrys systému, který jsem vytvořil, byla metoda, kdy signál PWM (Pulse Width Modulation) přicházející z RC přijímače je pomocí mikrokontroléru ATTiny 85 (uC) převeden na rozmítání krokového motoru.

Zde je zdroj signálů PWM a RC, ale abyste to mohli replikovat, nemusíte tomu striktně rozumět.

en.wikipedia.org/wiki/Servo_control

ATTiny je moje oblíbená příchuť Arduina, protože je malý a má stále dost I/O pinů pro základní věci, takže se perfektně hodí do malých modelů a RC projektů. Hlavní nevýhodou ATTiny je, že vyžaduje trochu více nastavení, aby bylo možné jej naprogramovat, ale jakmile to nastavíte, jsou tak levné, že si můžete koupit hromady pro všechny druhy projektů.

Velikost číselníku rychloměru je příliš malá na to, aby měla převodový motor se zpětnou vazbou, takže aby byla zajištěna proporcionální odezva, musel být použit krokový motor. Krokový motor je motor, který se pohybuje v diskrétních množstvích (nebo krocích…!), Což je ideální pro systém bez zpětné vazby, jako je tento. Jedinou výhradou je, že „kroky“způsobí, že výsledný pohyb bude trhaný, na rozdíl od hladkého. Pokud získáte stepper s dostatečným počtem kroků na rotaci, není to patrné, ale u stepperu, který jsem použil v tomto projektu, má jen 20 kroků v plné rotaci, je úhel skoku docela špatný.

Při zapnutí systém spustí stepper zpět o dvě otáčky, aby vynuloval jehlu. Rychloměr potřebuje klidový kolík tam, kde chcete mít nulovou značku, jinak se bude točit navždy. Poté mapuje signály PWM vpřed a vzad na nastavený počet kroků motoru. Snadné, že…?

Krok 2: Software

Prohlášení: Nejsem programátor. Pro tento projekt jsem digitální ekvivalent Dr. Frankensteina, který sestavuje něco, co vychází z různých nalezených bitů kódu.

Moje upřímné díky tedy patří Duane B, který vytvořil kód pro interpretaci RC signálů:

rcarduino.blogspot.com/

A Ardunautovi, který vytvořil kód pro spuštění stepperu jako analogové měřidlo:

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

A oběma se upřímně omlouvám za to, co jsem udělal vašemu kódu.

Nyní je to z cesty, zde je to, co nahrát do ATTiny:

#define THROTTLE_SIGNAL_IN 0 // PŘERUŠENÍ 0 = DIGITÁLNÍ PIN 2 - použijte číslo přerušení v attachInterrupt #definujte THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - použijte PIN v digitalRead #define NEUTRAL_THROTTLE za 1500 neutrálního plynu na elektrickém RC autě #definovat UPPER_THROTTLE 2000 // toto je doba trvání v mikrosekundách maximálního plynu na elektrickém RC autu #definovat LOWER_THROTTLE 1000 // toto je doba v mikrosekundách nminimálního plynu na elektrickém RC autu #define DEADZONE 50 // toto je mrtvá zóna plynu. Celková mrtvá zóna je dvojnásobná. #include #define KROKY 21 // kroky na otáčku (omezeno na 315 °) Změňte toto nastavení pro nastavení maximálního zdvihu rychloměru. #define COIL1 3 // Cívkové kolíky. ATTiny používá pro stepper piny 0, 1, 3, 4. Pin 2 je jediný pin, který zvládá přerušení, takže musí být vstupem. #define COIL2 4 // Pokud krokový motor nepracuje správně, zkuste je změnit. #define COIL3 0 #define COIL4 1 // vytvořte instanci třídy stepperů: stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Poloha v krocích (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // čas resetování při volnoběhu škrticí klapka int Resetval = 0; volatile int ThrottleIn = LOWER_THROTTLE; volatile unsigned long StartPeriod = 0; // nastaveno v přerušení // mohli bychom použít nThrottleIn = 0 ve smyčce místo samostatné proměnné, ale použití bNewThrottleSignal k označení, že máme nový signál // je jasnější pro tento první příklad neplatné nastavení () {// řekni Arduino chceme, aby byla funkce calcInput volána vždy, když se INT0 (digitální pin 2) změní z HIGH na LOW nebo LOW na HIGH // zachycení těchto změn nám umožní vypočítat, jak dlouho je vstupní impuls attachInterrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // nastavte otáčky motoru na 30 ot/ min (přibližně 360 PPS.) stepper.step (KROKY * 2); // Reset pozice (X kroků proti směru hodinových ručiček). } void loop () {Resetval = millis; pro (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = mapa (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Resetval = 0; } // Reverzní mapování else if (ThrottleInAvg LOWER_THROTTLE) {SPEED = mapa (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Resetval = 0; } // Mimo rozsah horní else if (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Resetval = 0; } // Mimo rozsah nižší else if (ThrottleInAvg Resetcounter) {stepper.step (4); // Snažím se říct stepperu, aby se sám resetoval, pokud je RC signál delší dobu v mrtvé zóně. Nejste si jisti, zda tato část kódu skutečně funguje. }} int val = RYCHLOST; // získání hodnoty potenciometru (rozsah 0-1023) val = mapa (val, 0, 255, 0, STEPS * 0,75); // rozsah mapového potu v rozsahu stepperů. if (abs (val - pos)> 2) {// pokud je rozdíl větší než 2 kroky. if ((val - pos)> 0) {stepper.step (-1); // přesun o krok doleva. pos ++; } if ((val - pos) <0) {stepper.step (1); // přesun o krok doprava. pos--; }} // zpoždění (10); } void calcInput () {// pokud je pin vysoký, je to začátek přerušení if (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// získejte čas pomocí mikroskopů - až bude náš kód opravdu zaneprázdněn, bude to nepřesné, ale pro aktuální aplikaci je // snadno pochopitelný a funguje velmi dobře StartPeriod = micros (); } else {// pokud je kolík nízký, je to jeho sestupná hrana impulsu, takže nyní můžeme vypočítat dobu trvání impulsu odečtením // počátečního času ulStartPeriod od aktuálního času vráceného micro () if (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); StartPeriod = 0; }}}

Další informace o programování ATTiny85 najdete v tomto článku:

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

Krok 3: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Při sestavování obvodu postupujte podle schématu zapojení. Jak to sestavíte, je na vás, ale doporučil bych použít trochu stripboardu/perfboardu použitého pro prototypování obvodové desky a montáž čipu do patice.

C1 = 100 nF

R1 = 10 kΩ

Aby byl kondenzátor nejefektivnější, měl by být namontován co nejblíže čipu.

Při pájení smaltovaných vodičů k motoru buďte velmi opatrní, protože svorky na motorech se rády odtrhnou a přeruší vodič cívky k motoru. Chcete-li to napravit, je dobrým řešením pájet dráty a poté na spoj nanést velkou kapku 2dílného epoxidu, nechat ji vytvrdnout a poté dráty stočit k sobě. Tím se sníží napětí na jednotlivých koncových spojích a mělo by se zabránit jejich odtržení. Pokud to neuděláte, prasknou v nejméně vhodnou dobu, zaručeně.

Pokud vytvoříte konektor konektoru záhlaví a nastavíte kolíky takto: [Ca1, Cb1, Ca2, Cb2] s Ca1 značící cívku A, vodič 1 atd. To vám umožní změnit směr otáčení měřidla výměnou zástrčky kolem.

Pro kalibraci nulové polohy bude měřidlo potřebovat koncový doraz. Doporučil bych vyrobit jehlu z kovu, pokud je to možné. To zastaví jeho ohýbání, když narazí na koncový doraz. Způsob, jak dostat jehlu do dobré polohy, je dočasně přilepit jehlu k nápravě, zapnout modul, nechat ji odpočinout a poté vyjmout a znovu přilepit jehlu na osu, přičemž jehla je opřená o koncový doraz. Tím se zarovná jehla s magnetickým ozubením motoru a zajistí, aby se vaše jehla vždy zastavila o koncový doraz.

Krok 4: Epilog

Naštěstí se vám tento stručný návod líbil a shledal jste ho užitečným. Pokud jeden z nich postavíte, dejte mi vědět!

Hodně štěstí!

Doporučuje: