Satura rādītājs:

RC automašīnas spidometra darbs: 4 soļi (ar attēliem)
RC automašīnas spidometra darbs: 4 soļi (ar attēliem)

Video: RC automašīnas spidometra darbs: 4 soļi (ar attēliem)

Video: RC automašīnas spidometra darbs: 4 soļi (ar attēliem)
Video: $29 RC Car Speedometer?!?! Just How Good Is It? #shorts 2024, Novembris
Anonim
Darbojas RC automašīnas spidometrs
Darbojas RC automašīnas spidometrs

Šis ir īss projekts, kuru es izveidoju kā daļu no lielākas vieglā Land Rover RC konstrukcijas. Es nolēmu, ka iedomājos, ka informācijas panelī ir darba spidometrs, taču zināju, ka servo to nesagriezīs. Bija tikai viena saprātīga iespēja: izvietot arduino!

Lai sāktu ar nelielu pieredzi … Es neesmu kodēšanas vai elektronikas cilvēks. Es joprojām domāju par elektrību ūdens plūsmas ziņā, un mani nedaudz mulsina rezistori. Tas nozīmē, ka, ja pat es spētu šo darbu paveikt, tad arī jums vajadzētu spēt!

DAĻU SARAKSTS:

Mikrokontrolleris: Es izmantoju ATTiny85 mikroshēmu, kas katra maksāja aptuveni 1 sterliņu mārciņu.

Mikrokontrollera programmētājs: Lai kodu iegūtu mikroshēmā, jums ir nepieciešams veids, kā to ieprogrammēt. Ar parasto arduino tas ir tikai USB kabelis, bet ATTiny mikroshēmai jums ir nepieciešams kaut kas papildus. Lai to izdarītu, varat izmantot citu arduino vai, tāpat kā es, varat izmantot Tiny AVR programmētāju no Sparkfun.

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

Es ieteiktu to, jo esmu mēģinājis tos programmēt ar dažādām metodēm, un šī ir vienkāršākā. Tāfele ir nedaudz dārga, bet labs ieguldījums, ja veicat daudz ATTiny projektu.

8 kontaktu mikroshēmas ligzda: ja jūs ievietojat mikroshēmu kontaktligzdā, nevis lodējat to tieši, jūs varat atļauties dažas kļūdas montāžā. Runāts no pieredzes - neviens nevēlas atkausēt mikroshēmas, lai tās pārprogrammētu.

Kondensators: tiek izmantots atdalīšanas kondensators 100nF (kods 104). Es īsti nesaprotu, kāpēc, bet es izlasīju, ka kondensatoru atvienošana ir svarīga internetā, tāpēc tai jābūt patiesai…

Rezistors: 10 kΩ rezistors tiek izmantots, lai nojauktu līniju arduino. Atkal vēl viens elektronikas noslēpums.

Perfboard/Stripboard: daži grīdlīstes, uz kurām salikt ķēdi.

Tinuma stieple: parastā apvalka stieple ir pārāk bieza, lai pielodētu pie motora. Izmantojot smalku emaljētu stiepli, jūs samazināsit motora spailēm radīto slodzi un padarīsit savu dzīvi daudz vieglāku.

Servo stieple: trīs vadu lente, kas beidzas ar 3 kontaktu JR kontaktdakšu. Es saņēmu savējo no izdeguša servo, kuru “modificēju”.

Stepper Motor: Es izmantoju 6 mm bipolāru Nidec pakāpju motoru. Jebkuram mazam steperim vajadzētu strādāt, lai gan tas būtu mazs, jo stepper tiek dzenāts tieši no Arduino.

Galvenes tapas: tas nav būtiski, bet, ja jūs savienojat stepperu ar 4 galvenes tapām un ievietojat kontaktligzdu savā ķēdē, jūs varat viegli atvienot paneļa kontaktdakšu, lai atvieglotu uzstādīšanu.

Dators: lai ieprogrammētu tāfeli, jums būs nepieciešams dators. Iespējams, ar Arduino IDE. Un varbūt USB kabelis. Ja tam ir arī strāvas kabelis, tad vēl labāk.

1. darbība: sistēma

Manas izveidotās sistēmas pamatkontrole bija metode, ar kuras palīdzību impulsa platuma modulācijas (PWM) signāls, kas nāk no RC uztvērēja, tiek pārveidots par pakāpju motora slaucīšanu, izmantojot ATTiny 85 mikrokontrolleru (uC).

Šeit ir resurss PWM signāliem un RC, taču, lai to atkārtotu, jums tas nav obligāti jāsaprot.

en.wikipedia.org/wiki/Servo_control

ATTiny ir mans iecienītākais Arduino aromāts, jo tas ir mazs, un tajā joprojām ir pietiekami daudz I/O tapas, lai veiktu pamata lietas, tāpēc lieliski iederas mazos modeļos un RC projektos. ATTiny galvenais mīnuss ir tas, ka, lai to ieprogrammētu, ir nepieciešams nedaudz vairāk iestatījumu, taču, tiklīdz tas ir izveidots, tie ir tik lēti, ka varat tos iegādāties visu veidu projektiem.

Spidometra ciparnīcas izmērs ir pārāk mazs, lai būtu motors ar reduktoru ar atgriezenisko saiti, tāpēc, lai iegūtu proporcionālu reakciju, bija jāizmanto pakāpju motors. Pakāpju motors ir motors, kas tiek pārvietots atsevišķos daudzumos (vai soļos…!), Tāpēc tas ir ideāli piemērots šādai bezatgriezeniskai sistēmai. Vienīgais brīdinājums ir tas, ka “soļi” izraisīs kustību raustīšanos, nevis gludu. Ja jūs iegūstat soli ar pietiekamu soļu skaitu vienā rotācijā, tas nav pamanāms, bet, ja šajā projektā izmantotajam solim ir tikai 20 soļi pilnā rotācijā, leņķa lēciens ir diezgan slikts.

Sistēma, ieslēdzot to, pagriezīs soli atpakaļ divus apgriezienus tā, lai adata būtu nulle. Spidometram ir nepieciešama atpūtas tapa, kur vēlaties, lai būtu nulles atzīme, pretējā gadījumā tas vienkārši griezīsies uz visiem laikiem. Tad tas kartē uz priekšu un atpakaļgaitas PWM signālus noteiktam motora soļu skaitam. Viegli, vai ne …?

2. darbība: programmatūra

Atruna: Es neesmu programmētājs. Šim projektam es esmu doktora Frankenšteina digitālais ekvivalents, saliekot kaut ko, kas strādā no dažādiem atrastiem koda bitiem.

Tāpēc es no sirds pateicos Duane B, kurš izveidoja kodu RC signālu interpretēšanai:

rcarduino.blogspot.com/

Un Ardunautam, kurš izveidoja kodu stepera vadīšanai kā analogo mērierīci:

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

Un abiem es sirsnīgi atvainojos par to, ko es izdarīju ar jūsu kodu.

Tagad tas nav iespējams, lūk, ko augšupielādēt ATTiny:

#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - pievienojiet pārtraukuma numuru pielikumāInterrupt #define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - izmantojiet PIN kodu digitālajā lasījumā #define NEUTRAL_THROTTT no neitrālās droseļvārsta uz elektriskās RC automašīnas #define UPPER_THROTTLE 2000 // tas ir maksimālās droseles ilgums mikrosekundēs uz elektriskās RC automašīnas #define LOWER_THROTTLE 1000 // tas ir ilgums mikrosekundēs no minimālās droseļvārsta uz elektriskās RC automašīnas #define DEADZONE 50 // šī ir droseļvārsta izslēgšanas zona. Kopējā mirušā zona ir divreiz lielāka. #iekļaut #define STEPS 21 // soļi vienā apgriezienā (ierobežots līdz 315 °) Mainiet to, lai pielāgotu spidometra maksimālo gājienu. #define COIL1 3 // spoles tapas. Steperim ATTiny izmanto 0, 1, 3, 4 tapas. 2. tapa ir vienīgā tapa, kas var apstrādāt pārtraukumus, tāpēc tai jābūt ievadei. #define COIL2 4 // Ja soļu motors nedarbojas pareizi, mēģiniet tos mainīt. #define COIL3 0 #define COIL4 1 // izveidot soļu klases eksemplāru: Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; // Pozīcija soļos (0-630) = (0 ° -315 °) int SPEED = 0; float ThrottleInAvg = 0; int MeasurementsToAverage = 60; pludiņš Resetcounter = 10; // laiks atiestatīt, kad ir tukšgaita droselē int Resetval = 0; gaistošs int ThrottleIn = LOWER_THROTTLE; gaistošs neparakstīts garš StartPeriod = 0; // iestatīt pārtraukumā // mēs varētu izmantot cilnē nThrottleIn = 0 atsevišķa mainīgā vietā, bet, izmantojot bNewThrottleSignal, lai norādītu, ka mums ir jauns signāls // ir skaidrāks par šo pirmo piemēru void setup () {// pateikt Arduino mēs vēlamies, lai funkcija calcInput tiktu izsaukta ikreiz, kad INT0 (2. ciparu tapa) mainās no HIGH uz LOW vai LOW uz HIGH // šo izmaiņu uztveršana ļaus mums aprēķināt, cik ilgi ievades impulss ir pievienotsInterrupt (THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed (50); // iestatiet motora ātrumu uz 30 apgr./min (aptuveni 360 PPS). stepper.step (STEPS * 2); // Atiestatīt pozīciju (X soļi pretēji pulksteņrādītāja virzienam). } void loop () {Resetval = milis; (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = karte (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); Atiestatīšana = 0; } // Apgrieztā kartēšana else if (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); Atiestatīšana = 0; } // Ārpus diapazona augšējais cits, ja (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255; Atiestatīšana = 0; } // Ārpus diapazona zemāks cits if (ThrottleInAvg Resetcounter) {stepper.step (4); // Es cenšos pateikt solim, lai tas atiestatās, ja RC signāls ilgstoši atrodas strupceļā. Nav pārliecināts, vai šī koda daļa patiešām darbojas. }} int val = ĀTRUMS; // iegūt potenciometra vērtību (diapazons 0-1023) val = map (val, 0, 255, 0, STEPS * 0.75); // karte pot diapazons stepper diapazonā. ja (abs (val - pos)> 2) {// ja atšķirība ir lielāka par 2 soļiem. ja ((val - pos)> 0) {stepper.step (-1); // pāriet vienu soli pa kreisi. pos ++; } ja ((val - pos) <0) {stepper.step (1); // pāriet vienu soli pa labi. pos--; }} // kavēšanās (10); } void calcInput () {// ja piespraude ir augsta, tās sākums ir pārtraukums, ja (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// iegūstiet laiku, izmantojot mikroskopus - kad mūsu kods būs ļoti aizņemts, tas kļūs neprecīzi, bet pašreizējai lietojumprogrammai tā // viegli saprotama un darbojas ļoti labi StartPeriod = micros (); } cits {// ja tapa ir zema, tā ir impulsa krītošā mala, tāpēc tagad mēs varam aprēķināt impulsa ilgumu, atņemot // sākuma laiku ulStartPeriod no pašreizējā laika, ko atgriež micros () if (StartPeriod) {ThrottleIn = (int) (micros () - StartPeriod); Sākuma periods = 0; }}}

Plašāku informāciju par ATTiny85 programmēšanu skatiet šeit:

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

3. darbība: aparatūra

Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra

Lai izveidotu ķēdi, skatiet shēmas shēmu. Tas, kā jūs to saliksit, ir atkarīgs no jums, bet es ieteiktu izmantot nedaudz sloksnes/perforācijas plātnes, ko izmanto shēmas plates prototipēšanai, un mikroshēmu uzstādīt kontaktligzdā.

C1 = 100 nF

R1 = 10 kΩ

Kondensators jāuzstāda pēc iespējas tuvāk mikroshēmai, lai tas būtu visefektīvākais.

Lodējot emaljētos vadus pie motora, esiet īpaši piesardzīgs, jo motoru spailēm patīk atrauties un pārraut spoles vadu pie motora. Lai to novērstu, labs risinājums ir pielodēt vadus un pēc tam uzlikt lielu daļu no 2 daļu epoksīda, ļaut tam sacietēt, pēc tam savīt vadus kopā. Tas samazina slodzi uz atsevišķiem spaiļu savienojumiem, un tam vajadzētu pārtraukt to atrašanos. Ja jūs to nedarīsit, viņi atkāpsies sev ērtākajā laikā, garantēti.

Ja izveidojat galvenes tapas savienotāju un izveidojat tapas šādi: [Ca1, Cb1, Ca2, Cb2] ar Ca1, kas apzīmē spoli A, vadu 1 utt. Tas ļauj mainīt mērinstrumenta griešanās virzienu, nomainot kontaktdakšu apkārt.

Manometram būs nepieciešama pietura, lai kalibrētu nulles pozīciju. Es ieteiktu, ja iespējams, izgatavot adatu no metāla. Tas neļauj tai saliekties, kad tā sasniedz gala pieturu. Veids, kā adatu novietot labā stāvoklī, ir uz laiku pielīmēt adatu pie ass, ieslēgt moduli, ļaut tam atpūsties un pēc tam noņemt un atkal pielīmēt adatu uz ass, adatai atbalstoties pret endstop. Tas izlīdzina adatu ar motora magnētisko aizsērējumu un nodrošina, ka adata vienmēr ir jāatrodas pret galotni.

4. solis: epilogs

Cerams, ka jums patika šis īsais pamācības un atradāt to noderīgu. Ja jūs izveidojat kādu no šiem, dariet man zināmu!

Veiksmi!

Ieteicams: