Innehållsförteckning:
Video: Arbetande RC -bilhastighetsmätare: 4 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Detta är ett kort projekt som jag skapade som en del av en större RC -konstruktion av en lätt Land Rover. Jag bestämde mig för att jag ville ha en arbetshastighetsmätare i instrumentbrädan, men jag visste att en servo inte skulle klippa av den. Det fanns bara ett rimligt alternativ: distribuera arduino!
Lite bakgrund till att börja med … Jag är ingen kodande eller elektronisk person. Jag tänker fortfarande på elektricitet när det gäller vattenflöde och är lite mystifierad av motstånd. Som sagt, om även jag kunde få det här att fungera, så borde du också kunna det!
DELSLISTA:
Mikrokontroller: Jag använde ett ATTiny85 -chip, som kostade cirka £ 1 styck.
Mikrokontroller programmerare: För att få koden på chipet behöver du ett sätt att programmera den. Med vanlig arduino är detta bara en USB -kabel, men för ATTiny -chipet behöver du något extra. Du kan använda en annan arduino för att göra detta eller, som jag, kan du använda en liten AVR -programmerare från Sparkfun.
learn.sparkfun.com/tutorials/tiny-avr-prog…
Jag skulle rekommendera detta, eftersom jag har försökt programmera dem med olika metoder och den här är den enklaste. Styrelsen är lite dyr, men en bra investering om du gör många ATTiny -projekt.
8 Pin Chip Socket: Om du lägger chipet i ett uttag istället för att lödda det direkt, har du råd med dig själv några misstag vid montering. Talat av erfarenhet - ingen vill avlasta chips för att omprogrammera dem.
Kondensator: En avkopplingskondensator på 100nF (kod 104) används. Jag förstår inte riktigt varför, men jag läste att avkopplingskondensatorer är viktiga på internet, så det måste vara sant …
Motstånd: Ett 10kΩ motstånd används för att dra ner linjen i arduino. Återigen, ännu ett mysterium av elektronik.
Perfboard/Stripboard: Någon baseboard för att montera din krets.
Lindningstråd: Vanlig mantlad tråd är för tjock för att lödas på motorn. Att använda fin emaljerad tråd minskar belastningen på motorterminalerna och gör ditt liv mycket enklare.
Servotråd: Ett band med tre trådar som slutar i en 3-polig JR-honkontakt. Jag fick min från en utbränd servo som jag "modifierade".
Stegmotor: Jag använde en 6 mm bipolär Nidec -stegmotor. Varje liten steg ska fungera, även om den hålls liten, eftersom steget körs direkt från Arduino.
Sidhuvudstiften: Inte nödvändigt, men om du kopplar din stegmaskin till 4 huvudstiften och sätter ett uttag på din krets kan du enkelt koppla bort instrumentbrädan för enkel installation.
Dator: För att programmera ditt kort behöver du en dator. Möjligen med Arduino IDE. Och kanske en USB -kabel. Om den har en strömkabel också, då ännu bättre.
Steg 1: Systemet
Grundkonturen för systemet jag skapade var en metod där PWM -signalen (PWM) från RC -mottagaren omvandlas till en stegmotorsvep via en ATTiny 85 mikrokontroller (uC).
Här är en resurs om PWM -signaler och RC, men för att replikera detta behöver du inte riktigt förstå det.
en.wikipedia.org/wiki/Servo_control
ATTiny är min favorit smak av Arduino eftersom den är liten med tillräckligt många I/O -stift för att göra grundläggande saker, så passar perfekt in i små modeller och RC -projekt. Den främsta nackdelen med ATTiny är att den kräver lite mer installation för att programmera en, men när du har konfigurerat den är de så billiga att du kan köpa staplar av dem för alla slags projekt.
Storleken på hastighetsmätarvredet är för liten för att ha en växelmotor med återkoppling, så för att få ett proportionellt svar måste en stegmotor användas. En stegmotor är en motor som flyttas i diskreta mängder (eller steg …!), Vilket gör den idealisk för ett system utan återkoppling som detta. Den enda förbehållet är att "stegen" kommer att få den resulterande rörelsen att bli ryckig i motsats till jämn. Om du får en stegmaskin med tillräckligt många steg per rotation är det inte märkbart, men med steget som jag använde i detta projekt har bara 20 eller så steg i en full rotation, är vinkelhoppet ganska dåligt.
Systemet, vid uppstart, kommer att köra steget bakåt i två varv för att nollställa nålen. Hastighetsmätaren behöver en vilopinne där du vill att nollmärket ska vara, annars snurrar det bara för alltid. Sedan kartlägger den framåt och bakåt PWM -signalerna till ett bestämt antal steg i motorn. Lätt, eller hur?
Steg 2: Programvaran
Friskrivningsklausul: Jag är ingen programmerare. För detta projekt är jag den digitala ekvivalenten till Dr. Frankenstein, som samlar ihop något som fungerar utifrån olika hittade kodbitar.
Så jag vill tacka Duane B, som gjorde koden för att tolka RC -signaler:
rcarduino.blogspot.com/
Och till Ardunaut, som skapade koden för att köra en stepper som en analog mätare:
arduining.com/2012/04/22/arduino-driving-a…
Och till båda, mina mest uppriktiga ursäkt för vad jag gjorde med din kod.
Nu är det ur vägen, här är vad du ska ladda upp till ATTiny:
#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - använd interrupt -numret i attachInterrupt #definiera THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - använd PIN -numret i digitalRead #define NEUTRAL_THROTTLE 1500 // av neutral gas på en elektrisk RC -bil #define UPPER_THROTTLE 2000 // detta är varaktigheten i mikrosekunder för maximal gas på en elektrisk RC -bil #define LOWER_THROTTLE 1000 // detta är varaktigheten i mikrosekunder av nminimum gas på en elektrisk RC -bil #define DEADZONE 50 // detta är gasreglage. Den totala dödzonen är dubbelt så stor. #include #define STEG 21 // steg per varv (begränsat till 315 °) Ändra detta för att justera hastighetsmätarens maximala rörelse. #define COIL1 3 // Coil Pins. ATTiny använder stiften 0, 1, 3, 4 för steget. Pin 2 är den enda pin som kan hantera avbrott så det måste vara ingången. #define COIL2 4 // Försök ändra dessa om stegmotorn inte fungerar som den ska. #define COIL3 0 #define COIL4 1 // skapa en instans av stegklassen: Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Position i steg (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // tid att återställa när tomgångsreglaget intill Resetval = 0; volatile int ThrottleIn = LOWER_THROTTLE; flyktig osignerad lång StartPeriod = 0; // inställd i avbrottet // vi kan använda nThrottleIn = 0 i loop istället för en separat variabel, men med hjälp av bNewThrottleSignal för att indikera att vi har en ny signal // är tydligare för detta första exempel tomrumsinställning () {// berätta för Arduino vi vill att funktionen calcInput ska anropas när INT0 (digital pin 2) ändras från HIGH till LOW eller LOW till HIGH // fånga dessa ändringar gör att vi kan beräkna hur lång ingångspulsen är attachInterrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // ställ in motorvarvtalet till 30 varv/ min (360 PPS ungefär). steg. steg (STEG * 2); // Återställ position (X steg moturs). } void loop () {Återställning = millis; för (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = map (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Återställning = 0; } // Omvänd kartläggning annars om (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Återställning = 0; } // Out of range upper else if (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Återställning = 0; } // Utanför intervallet lägre annars om (ThrottleInAvg Resetcounter) {stepper.step (4); // Jag försöker be stegern att återställa sig själv om RC-signalen är i dödzonen länge. Vet inte om den här delen av koden verkligen fungerar. }} int val = SPEED; // få potentiometervärdet (intervall 0-1023) val = map (val, 0, 255, 0, STEG * 0,75); // karta grytintervall i stegintervallet. if (abs (val - pos)> 2) {// om skillnaden är större än 2 steg. om ((val - pos)> 0) {stepper.step (-1); // flytta ett steg till vänster. pos ++; } if ((val - pos) <0) {stepper.step (1); // flytta ett steg till höger. pos--; }} // fördröjning (10); } void calcInput () {// om stiftet är högt, det är början på ett avbrott om (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// få tid att använda mikron - när vår kod blir riktigt upptagen blir det felaktigt, men för den aktuella applikationen är den // lätt att förstå och fungerar mycket bra StartPeriod = micros (); } annat {// om stiftet är lågt, det är pulsens fallande kant så nu kan vi beräkna pulslängden genom att subtrahera // starttiden ulStartPeriod från den aktuella tiden som returneras av mikro () om (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); StartPeriod = 0; }}}
Se detta för mer information om programmering av en ATTiny85:
learn.sparkfun.com/tutorials/tiny-avr-prog…
Steg 3: Hårdvaran
Se kretsschemat för att bygga kretsen. Hur du monterar det är upp till dig, men jag föreslår att du använder lite bandplatta/perfboard som används för kretskortsprototyp och monterar chipet i ett uttag.
C1 = 100nF
R1 = 10kΩ
Kondensatorn bör monteras så nära chipet som möjligt för att vara mest effektiv.
Var mycket försiktig vid lödning av de emaljerade ledningarna till motorn, eftersom terminalerna på motorerna gillar att knäppa av och bryta spoltråden till motorn. För att åtgärda detta är en bra lösning att lödda trådarna och sedan lägga en stor kloss med 2-delad epoxi över fogen, låt den härda och vrid ihop trådarna. Detta minskar belastningen på enskilda terminalfogar och bör hindra dem från att lossna. Om du inte gör detta kommer de att snäppa av vid minst bekväm tidpunkt, garanterat.
Om du gör huvudkontakten och ställer in stiften så här: [Ca1, Cb1, Ca2, Cb2] med Ca1 står för spole A, tråd 1 etc. Detta gör att du kan ändra mätarens rotationsriktning genom att byta ut kontakten runt omkring.
Mätaren behöver ett ändstopp för att kalibrera nolläget mot. Jag skulle rekommendera att göra nålen av metall om möjligt. Detta stoppar böjningen när den träffar ändstoppet. Ett sätt att få nålen i ett bra läge är att tillfälligt limma nålen till axeln, sätta på modulen, låta den vila och sedan ta bort och limma om nålen på axeln, med nålen vilande mot ändstopp. Detta anpassar nålen till motorns magnetiska kuggning och säkerställer att din nål alltid ska vila mot ändstoppet.
Steg 4: Epilog
Förhoppningsvis har du gillat denna korta instruerbara och funnit den användbar. Om du bygger en av dessa, låt mig veta!
Lycka till!
Rekommenderad:
Ta fantastiska bilder med en iPhone: 9 steg (med bilder)
Ta fantastiska bilder med en iPhone: De flesta av oss har en smartphone med oss överallt nuförtiden, så det är viktigt att veta hur du använder din smartphone -kamera för att ta fantastiska bilder! Jag har bara haft en smartphone i ett par år, och jag har älskat att ha en bra kamera för att dokumentera saker jag
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: 7 steg (med bilder)
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: Jag planerar att använda denna Rapsberry PI i ett gäng roliga projekt tillbaka i min blogg. Kolla gärna in det. Jag ville börja använda mitt Raspberry PI men jag hade inte ett tangentbord eller en mus på min nya plats. Det var ett tag sedan jag installerade en hallon
EN YTTIGT ARBETANDE KLASSISK BANKLAMPA: 6 steg (med bilder)
EN HELT ARBETANDE KLASSISK BANKLAMPA: Att återskapa allt till ett litet föremål är alltid roligt och en utmaning beroende på vad du försöker återskapa. Jag försöker alltid göra något roligt och lägga till lite funktion till det också. Och av den anledningen gör jag en liten klassisk bankirlam
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår
Hur man tar isär en dator med enkla steg och bilder: 13 steg (med bilder)
Hur man tar isär en dator med enkla steg och bilder: Detta är en instruktion om hur man demonterar en dator. De flesta av de grundläggande komponenterna är modulära och lätt att ta bort. Det är dock viktigt att du är organiserad kring det. Detta hjälper dig att inte förlora delar, och även för att göra ommonteringen