„Arduino“ tachometro grandinė tiksliems rodmenims

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Tachometras yra įtaisas, matuojantis sukimosi kūno RPM arba kampinį greitį. Jis skiriasi nuo spidometro ir odometro, nes šie įtaisai susiduria su linijiniu arba tangentiniu kūno greičiu, o tachometras ir „tachometras“ - svarbesnį RPM.

Autorius Ankit Negi



Tachometrą sudaro skaitiklis ir laikmatis, abu šie kartu dirbdami teikia RPM. Savo projekte tai darysime taip pat, naudodami „Arduino“ ir kai kuriuos jutiklius sukonfigūruosime skaitiklį ir laikmatį bei sukursime patogų ir lengvą greitį .

Būtinos sąlygos

Skaitiklis yra ne kas kita, o įrenginys ar sąranka, galinti suskaičiuoti bet kokį tam tikrą reguliarų įvykį, pvz., Taško perdavimą diske, kai jis sukasi. Iš pradžių skaitikliai buvo pastatyti naudojant mechaninį išdėstymą ir jungtis, tokias kaip krumpliaračiai, reketai, spyruoklės ir kt.



Bet dabar mes naudojame skaitiklį, kuriame yra sudėtingesni ir labai tikslūs jutikliai ir elektronika. Laikmatis yra elektroninis elementas, galintis išmatuoti laiko intervalą tarp įvykių arba išmatuoti laiką.

Mūsų „Arduino Uno“ yra laikmačiai, kurie ne tik seka laiką, bet ir palaiko kai kurias svarbias „Arduino“ funkcijas. „Uno“ turime 3 laikmačius, pavadintus „Timer0“, „Timer1“ ir „Timer2“. Šie laikmačiai turi šias funkcijas: • „Timer0“ - „Uno“ funkcijoms, pvz., „Delay“ (), milis (), mikroschemoms () arba delaymicros ().

• „Timer1“ - servo bibliotekos darbui.

• „Timer2“ - tokioms funkcijoms kaip tonas (), „notone“ ().

Kartu su šiomis funkcijomis šie 3 laikmačiai taip pat yra atsakingi už PWM išvesties generavimą, kai „analogWrite“ () komanda naudojama PMW paskirtame kontakte.

Pertraukimų samprata

„Arduino Uno“ yra paslėptas įrankis, kuris mums gali suteikti prieigą prie daugybės funkcijų, vadinamų laikmačio pertraukimais. Pertraukimas yra įvykių ar instrukcijų rinkinys, kuris vykdomas iškviečiamas nutraukiant dabartinį įrenginio veikimą, t. kodai, kuriuos jūsų „Uno“ vykdė anksčiau, bet, kai „Interdu“ vadinama „Arduino“, vykdykite nurodymą, paminėtą „Nutraukti“.

magnetas ant variklio veleno

Dabar pertraukimą galima iškviesti tam tikromis sąlygomis, kurias nustato vartotojas naudodamasis įmontuota „Arduino“ sintaksė. Mes naudosime šį pertraukimą savo projekte, dėl kurio mūsų tachometras bus tikslesnis ir tikslesnis nei kitas tachometro projektas, esantis visame internete.

Komponentai, reikalingi šiam Tachometro projektui naudojant „Arduino“

• Salės efekto jutiklis (1 pav.)

salės efekto jutiklio modulis

• „Arduino Uno“

„Arduino UNO“ lenta

• Mažas magnetas

mažas magnetas

• Perjungimo laidai

• Besisukantis objektas (variklio velenas)

Nuolatinės srovės variklis

Grandinės sąranka

• Kūrimo sąranka yra tokia:

• Ašyje, kurios sukimosi greitis turi būti matuojamas, pritvirtinamas mažas magnetas, naudojant klijų pistoletą arba elektrinę juostelę.

• „Hall Effect“ jutiklyje priekyje yra detektorius ir 3 kontaktai sujungimams.

• „Vcc“ ir „Gnd“ kaiščiai yra atitinkamai prijungti prie „Arduino“ 5V ir Gnd kaiščių. Jutiklio išvesties kaištis yra prijungtas prie „Uno“ skaitmeninio 2 kaiščio, kad būtų įvestas įvesties signalas.

• Visi komponentai pritvirtinti prie tvirtinimo plokštės, o Hall detektorius nukreiptas iš lentos.

Programavimas

int sensor = 2 // Hall sensor at pin 2
volatile byte counts
unsigned int rpm //unsigned gives only positive values
unsigned long previoustime
void count_function()
{ /*The ISR function
Called on Interrupt
Update counts*/
counts++
}
void setup() {
Serial.begin(9600)
//Intiates Serial communications
attachInterrupt(0, count_function, RISING) //Interrupts are called on Rise of Input
pinMode(sensor, INPUT) //Sets sensor as input
counts= 0
rpm = 0
previoustime = 0 //Initialise the values
}
void loop()
{
delay(1000)//Update RPM every second
detachInterrupt(0) //Interrupts are disabled
rpm = 60*1000/(millis() - previoustime)*counts
previoustime = millis() //Resets the clock
counts= 0 //Resets the counter
Serial.print('RPM=')
Serial.println(rpm) //Calculated values are displayed
attachInterrupt(0, count_function, RISING) //Counter restarted
}

Įkelkite kodą.

Žinokite kodą

Mūsų tachometre naudojamas „Hall“ efekto jutiklis. „Hall“ efekto jutiklis yra pagrįstas „Hall“ efektu, pavadintu atradėjo Edwino Hallo vardu.

Holo efektas yra įtampos generavimo srovės laidininke reiškinys, kai magnetinis laukas įvedamas statmenai srovės srautui. Ši dėl šio reiškinio sukurta įtampa padeda generuoti įvesties signalą. Kaip minėta, šiame projekte bus naudojamas pertraukimas, kad iškviestume pertraukimą, turime nustatyti tam tikrą sąlygą. „Arduino Uno“ turi 2 sąlygas iškviesti pertraukimus -

RISING- Kai tai naudojama, pertraukimas iškviečiamas kiekvieną kartą, kai įvesties signalas pereina iš LOW į HIGH.

FALING - Kai tai naudojama, iškviečiami pertraukimai, kai signalas pereina iš HIGH į LOW.

Mes panaudojome RISING, kas atsitinka taip, kad kai ašyje arba besisukančiame objekte įdėtas magnetas priartėja prie Hall detektoriaus, generuojamas įvesties signalas ir iškviečiamas Interrupt, Interrupt inicijuoja funkciją Interrupt Service Routine (ISR), kuri apima padidėjimą. skaičiuojama vertė ir tokiu būdu skaičiavimas vyksta.

Norėdami nustatyti laikmatį, korespondencijoje naudojome „Arduino“ ir „previoustime“ (kintamasis) milis () funkciją.

Taigi RPM galiausiai apskaičiuojamas naudojant matematinį ryšį

RPM = Suskaičiavimai / Laikas, perskaičiavus milisekundes į minutes ir pertvarkymą, gauname formulę = 60 * 1000 / (milis () - ankstesnis laikas) *.

Vėlavimas (1000) nustato laiko intervalą, po kurio ekrane bus atnaujinta RPM reikšmė, galite nustatyti šį uždelsimą pagal savo poreikius.

Šią RPM vertę galima toliau naudoti apskaičiuojant besisukančio objekto tangentinį greitį, naudojant santykį v = (3,14 * D * N) / 60 m / s.

RPM reikšmė taip pat gali būti naudojama besisukančio rato ar disko nuvažiuotam atstumui apskaičiuoti.

Užuot spausdinęs reikšmes serijiniame monitoriuje, šį prietaisą galima padaryti naudingesniu, jei norite geriau naudoti LCD ekraną (16 * 2) ir akumuliatorių.




Pora: „Stepper“ variklio vairuotojo grandinė naudojant IC 555 Kitas: Skaitmeninė talpos matuoklio grandinė naudojant „Arduino“