Obsah:

Pracovný rýchlomer do auta RC: 4 kroky (s obrázkami)
Pracovný rýchlomer do auta RC: 4 kroky (s obrázkami)

Video: Pracovný rýchlomer do auta RC: 4 kroky (s obrázkami)

Video: Pracovný rýchlomer do auta RC: 4 kroky (s obrázkami)
Video: First Ever SDXL Training With Kohya LoRA - Stable Diffusion XL Training Will Replace Older Models 2024, November
Anonim
Pracovný rýchlomer do auta RC
Pracovný rýchlomer do auta RC

Toto je krátky projekt, ktorý som vytvoril ako súčasť väčšej RC stavby ľahkého Land Roveru. Rozhodol som sa, že sa mi bude páčiť funkčný rýchlomer na palubnej doske, ale vedel som, že servo to nezarazí. Rozumná bola iba jedna možnosť: nasadiť arduino!

Trochu pozadia na úvod … Nie som programátor ani elektronik. Stále myslím na elektrinu, pokiaľ ide o tok vody, a som trochu zmätený odpormi. To znamená, že ak som aj ja dokázal vytvoriť toto dielo, potom by ste to mali zvládnuť aj vy!

ZOZNAM POLOŽIEK:

Mikrokontrolér: Použil som čip ATTiny85, ktorý stál približne 1 GBP za kus.

Programátor mikrokontroléra: Aby ste dostali kód na čip, potrebujete spôsob, ako ho naprogramovať. Pri bežnom arduine je to iba kábel USB, ale pre čip ATTiny potrebujete niečo navyše. Na to môžete použiť iné arduino alebo, ako ja, môžete použiť programátor Tiny AVR od Sparkfun.

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

Toto by som odporučil, pretože som ich skúšal programovať rôznymi metódami a táto je najľahšia. Doska je trochu drahá, ale je to dobrá investícia, ak robíte veľa projektov ATTiny.

8pinová zásuvka na čip: Ak vložíte čip do zásuvky a nie ho priamo spájkujete, môžete si pri montáži dovoliť niekoľko chýb. Hovorené zo skúsenosti - nikto nechce čipy odpájať, aby ich preprogramoval.

Kondenzátor: Používa sa oddeľovací kondenzátor 100nF (kód 104). Nerozumiem celkom prečo, ale čítal som, že oddeľovacie kondenzátory sú na internete dôležité, takže to musí byť pravda …

Odpor: Rezistor 10 kΩ sa používa na stiahnutie vedenia do arduina. Opäť ďalšie tajomstvo elektroniky.

Perfboard/Stripboard: Nejaká základná doska, na ktorej zostavíte svoj obvod.

Navíjací drôt: Bežný opláštený drôt je príliš hrubý na to, aby sa mohol spájkovať s motorom. Použitie jemného smaltovaného drôtu zníži napätie na svorkách motora a výrazne vám uľahčí život.

Servo drôt: trojvodičová páska zakončená 3-kolíkovou zástrčkou JR. Svoje som dostal z vyhoreného serva, ktoré som 'upravoval'.

Krokový motor: Použil som 6 mm bipolárny krokový motor Nidec. Každý malý stepper by mal fungovať, aj keď ho nechajte malý, pretože stepper je poháňaný priamo z Arduina.

Kolíkové hlavičky: Nie je to nevyhnutné, ale ak zapojíte stepper na 4 kolíkové hlavičky a zapojíte do obvodu zásuvku, prístrojovú dosku môžete pre jednoduchú inštaláciu ľahko odpojiť.

Počítač: Na naprogramovanie dosky budete potrebovať počítač. Možno s Arduino IDE. A možno aj kábel USB. Ak má aj napájací kábel, potom ešte lepšie.

Krok 1: Systém

Základný náčrt systému, ktorý som vytvoril, bola metóda, pomocou ktorej sa signál PWM (Pulse Width Modulation) prichádzajúci z RC prijímača prevádza na rozmach krokového motora pomocou mikrokontroléra ATTiny 85 (uC).

Tu je zdroj o signáloch PWM a RC, ale na to, aby ste to mohli replikovať, to výlučne nemusíte chápať.

en.wikipedia.org/wiki/Servo_control

ATTiny je moja obľúbená príchuť Arduina, pretože je malý a má stále dostatok I/O pinov na základné veci, takže sa perfektne hodí do malých modelov a RC projektov. Hlavnou nevýhodou ATTiny je, že vyžaduje trochu viac nastavenia, aby ste ho mohli naprogramovať, ale keď to máte nakonfigurované, sú také lacné, že si ich môžete kúpiť pre všetky druhy projektov.

Veľkosť číselníka rýchlomera je príliš malá na to, aby mal prevodový motor so spätnou väzbou, takže aby bola proporcionálna odozva, musel byť použitý krokový motor. Krokový motor je motor, ktorý sa pohybuje v diskrétnych množstvách (alebo krokoch …!), Čo ho robí ideálnym pre systém bez spätnej väzby, ako je tento. Jedinou výhradou je, že „kroky“spôsobia, že výsledný pohyb bude trhaný, na rozdiel od hladkého. Ak získate stepper s dostatočným počtom krokov na otáčku, nie je to viditeľné, ale keď stepper, ktorý som použil v tomto projekte, má iba 20 krokov pri úplnom otočení, skok z uhla je dosť zlý.

Po zapnutí systém spustí stepper dozadu o dve otáčky, aby sa vynulovala ihla. Tachometer potrebuje odpočinkový kolík tam, kde chcete, aby bola nulová značka, inak sa bude točiť navždy. Potom mapuje signály PWM dopredu a dozadu na nastavený počet krokov motora. Ľahké, však …?

Krok 2: Softvér

Zrieknutie sa zodpovednosti: Nie som programátor. Pre tento projekt som digitálnym ekvivalentom doktora Frankensteina, ktorý zostavuje niečo, čo pracuje z rôznych nájdených kúskov kódu.

Moje srdečné poďakovanie patrí Duane B, ktorá vytvorila kód na interpretáciu RC signálov:

rcarduino.blogspot.com/

A Ardunautovi, ktorý vytvoril kód na spustenie steppera ako analógového meradla:

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

A obom sa úprimne ospravedlňujem za to, čo som urobil s vašim kódom.

Teraz je to z cesty, tu je to, čo nahrať do ATTiny:

#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - use the interrupt number in attachInterrupt #define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - use the PIN number in digitalRead #define NEUTRAL_THROTTLE 1500 za // neutrálneho plynu na elektrickom RC aute #definovať HORNE_ŠROUB 2 000 // toto je trvanie maximálneho plynu na elektrickom RC aute v mikrosekundách #definovať LOWER_THROTTLE 1 000 // toto je trvanie n minimálneho plynu na mikro RC na elektrickom RC aute #definovať DEADZONE 50 // toto je mŕtva zóna plynu. Celková mŕtva zóna je dvojnásobná. #include #define KROKY 21 // kroky na otáčku (obmedzené na 315 °) Zmeňte to, aby ste nastavili maximálny zdvih rýchlomera. #define COIL1 3 // Cievkové kolíky. ATTiny používa pre stepper piny 0, 1, 3, 4. Pin 2 je jediný pin, ktorý zvláda prerušenia, takže musí byť vstupný. #define COIL2 4 // Ak krokový motor nepracuje správne, skúste ich zmeniť. #define COIL3 0 #define COIL4 1 // vytvorte inštanciu triedy stepperov: stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Poloha v krokoch (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // čas na resetovanie pri voľnobehu škrtiacej klapky int Resetval = 0; volatile int ThrottleIn = LOWER_THROTTLE; volatile unsigned long StartPeriod = 0; // nastavené v prerušení // mohli by sme použiť nThrottleIn = 0 v slučke namiesto samostatnej premennej, ale pomocou bNewThrottleSignal na označenie, že máme nový signál // je jasnejšie pre tento prvý príklad neplatné nastavenie () {// povedz Arduinu chceme, aby sa funkcia calcInput volala vždy, keď sa INT0 (digitálny pin 2) zmení z HIGH na LOW alebo LOW na HIGH // zachytenie týchto zmien nám umožní vypočítať, ako dlho je vstupný impulz attachInterrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // nastavte otáčky motora na 30 ot/ min (približne 360 PPS). stepper.step (KROKY * 2); // Reset polohy (X krokov proti smeru hodinových ručičiek). } prázdna slučka () {Resetval = milis; pre (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = mapa (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Resetval = 0; } // Reverzné mapovanie else if (ThrottleInAvg LOWER_THROTTLE) {SPEED = mapa (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Resetval = 0; } // Mimo rozsah, horná hodnota else if (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Resetval = 0; } // Mimo dosahu nižší else if (ThrottleInAvg Resetcounter) {stepper.step (4); // Snažím sa povedať stepperu, aby sa sám resetoval, ak je signál RC dlhší čas v mŕtvej zóne. Nie ste si istí, či táto časť kódu skutočne funguje. }} int val = RÝCHLOSŤ; // zisk hodnoty potenciometra (rozsah 0-1023) val = mapa (val, 0, 255, 0, STEPS * 0,75); // rozsah mapového hrnca v rozsahu stepperov. if (abs (val - pos)> 2) {// ak je rozdiel väčší ako 2 kroky. if ((val - poz)> 0) {stepper.step (-1); // posun o krok doľava. pos ++; } if ((val - poz) <0) {stepper.step (1); // posun o krok doprava. pos--; }} // oneskorenie (10); } void calcInput () {// ak je pin vysoký, je to začiatok prerušenia, ak (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// získate čas pomocou mikro - keď bude náš kód skutočne zaneprázdnený, bude to nepresné, ale pre súčasnú aplikáciu je // ľahko zrozumiteľný a funguje veľmi dobre StartPeriod = micros (); } else {// ak je kolík nízky, je to jeho zostupná hrana impulzu, takže teraz môžeme vypočítať trvanie impulzu odčítaním // času začiatku ulStartPeriod od aktuálneho času vráteného mikro () if (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); Počiatočné obdobie = 0; }}}

Ďalšie informácie o programovaní ATTiny85 nájdete v tomto článku:

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

Krok 3: Hardvér

Hardvér
Hardvér
Hardvér
Hardvér
Hardvér
Hardvér

Informácie o budovaní obvodu nájdete v schéme zapojenia. Je na vás, ako to zostavíte, ale navrhoval by som použiť trochu stripboard/perfboard, ktorý sa používa na prototypovanie obvodových dosiek, a namontovať čip do zásuvky.

C1 = 100nF

R1 = 10 kΩ

Kondenzátor by mal byť namontovaný čo najbližšie k čipu, aby bol čo najefektívnejší.

Pri spájkovaní smaltovaných vodičov k motoru buďte mimoriadne opatrní, pretože svorky na motoroch radi odtrhnú a prerušia vodič cievky k motoru. Na vyriešenie tohto problému je dobrým riešením spájkovanie vodičov a potom na spoj naneste veľkú kvapku dvojdielneho epoxidu, nechajte ho vytvrdnúť a potom drôty otočte dohromady. To znižuje namáhanie jednotlivých koncových spojov a malo by zabrániť ich odtrhnutiu. Ak to neurobíte, odlomia sa v najmenej vhodnom čase, zaručene.

Ak vyrobíte kolíkový konektor záhlavia a nastavíte kolíky takto: [Ca1, Cb1, Ca2, Cb2] s Ca1 označujúcim cievku A, drôt 1 atď. To vám umožní zmeniť smer otáčania meradla výmenou zástrčky okolo.

Na kalibráciu nulovej polohy proti bude meradlo potrebovať koncový doraz. Odporúčam, ak je to možné, vyrobiť ihlu z kovu. Keď narazí na koncový doraz, zastaví sa. Spôsob, ako dostať ihlu do dobrej polohy, je dočasne prilepiť ihlu k osi, zapnúť modul, nechať ho odpočinúť a potom odstrániť a znova prilepiť ihlu na osi tak, aby bola ihla položená na koncový doraz. Toto zarovná ihlu s magnetickým ozubením motora a zaistí, aby sa vaša ihla vždy zastavila o koncový doraz.

Krok 4: epilóg

Našťastie ste si tento krátky návod užili a považovali ste ho za užitočný. Ak jeden z nich postavíte, dajte mi vedieť!

Veľa štastia!

Odporúča: