Arduino-kierroslukumittarin piiri tarkkoja lukemia varten

Arduino-kierroslukumittarin piiri tarkkoja lukemia varten

Kierroslukumittari on laite, joka mittaa pyörivän rungon kierroslukua tai kulmanopeutta. Se eroaa nopeusmittarista ja matkamittarista, koska nämä laitteet käsittelevät rungon lineaarista tai tangentiaalista nopeutta, kun taas kierroslukumittari eli 'tach' käsittelee perustavanlaatuisempaa kierroslukua.

Kirjoittanut Ankit Negi



Kierroslukumittari koostuu laskurista ja ajastimesta, jotka molemmat yhdessä työskentelevät tuottavat kierrosluvun. Projektissamme aiomme tehdä samoin. Arduinon ja joidenkin antureiden avulla asetamme sekä laskurin että ajastimen ja kehitämme kätevän ja helpon nopeuden .



Edellytykset

Laskuri ei ole muuta kuin laite tai kokoonpano, joka voi laskea minkä tahansa säännöllisen tapahtuman, kuten pisteen siirtämisen levylle pyörimisen aikana. Aluksi laskurit rakennettiin käyttämällä mekaanista järjestelyä ja vivustoja, kuten hammaspyöriä, räikkää, jousia jne.

Mutta nyt käytämme laskuria, jossa on kehittyneemmät ja erittäin tarkat anturit ja elektroniikka. Ajastin on elektroninen elementti, joka pystyy mittaamaan tapahtumien välisen aikavälin tai mittaamaan ajan.



Arduino Unossa on ajastimia, jotka eivät vain seuraa aikaa, vaan myös ylläpitävät joitain tärkeitä Arduinon toimintoja. Unossa meillä on 3 ajastinta nimeltä Timer0, Timer1 ja Timer2. Näillä ajastimilla on seuraavat toiminnot: • Ajastin0 - Uno-toimintoihin, kuten delay (), millis (), mikros () tai delaymicros ().

• Ajastin1 - servokirjaston toimintaan.

• Ajastin2 - Toiminnot, kuten ääni (), ei ääni ().



Näiden toimintojen ohella nämä 3 ajastinta vastaavat myös PWM-lähdön luomisesta, kun analogWrite () -komentoa käytetään PMW: n osoittamaan tapiin.

Keskeytysten käsite

Arduino Unossa on piilotettu työkalu, joka voi antaa meille pääsyn moniin toimintoihin, joita kutsutaan ajastinkeskeytyksiksi. Keskeytys on joukko tapahtumia tai ohjeita, jotka suoritetaan, kun niitä kutsutaan laitteen nykyisen toiminnan keskeyttämiseksi, ts. koodit, joita Uno oli suorittanut aiemmin, mutta kun keskeytystä kutsutaan Arduinoksi, suorita keskeytyksessä mainittu ohje.

magneetti moottorin akselilla

Nyt keskeytystä voidaan kutsua tietyissä olosuhteissa, jotka käyttäjä määrittelee sisäänrakennetulla Arduino-syntaksilla.Käytämme tätä keskeytystä projektissamme, mikä tekee kierroslukumittaristamme tarkemman ja tarkemman kuin muut verkossa olevat kierroslukumittariprojektit.

Komponentit, joita tarvitaan tähän kierroslukumittariprojektiin, jossa käytetään Arduinoa

• Hall-efektianturi (kuva 1)

Hall Effect Sensor -moduuli

• Arduino Uno

Arduino UNO -taulu

• Pieni magneetti

pieni magneetti

• Hyppääjän johdot

• Pyörivä esine (moottorin akseli)

DC-moottori

Piirin asetukset

• Luontiasetukset ovat seuraavat:

• Akseliin, jonka pyörimisnopeus mitataan, on asennettu pieni magneetti liimapistoolilla tai sähköteipillä.

• Hall-efektitunnistimessa on ilmaisin edessä ja 3 nastaa liitäntää varten.

• Vcc- ja Gnd-nastat on kytketty Arduinon 5 V: n ja Gnd-nastaa vastaavasti. Anturin lähtötappi on kytketty Unon digitaaliseen napaan 2 tulosignaalin tuottamiseksi.

• Kaikki komponentit on kiinnitetty asennuslevyyn ja Hall-ilmaisin on osoitettu levystä.

Ohjelmointi

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
}

Lähetä koodi.

Tunne koodi

Kierroslukumittarimme käyttää Hall-tehosensoria. Hall-tehosensori perustuu Hall-ilmiöön, joka on nimetty sen löytäjän Edwin Hallin mukaan.

Hall-ilmiö on jännitteen muodostumisen ilmiö virtaa johtavan johdon läpi, kun magneettikenttä syötetään kohtisuoraan virran virtaukseen. Tämä ilmiön takia syntyvä jännite auttaa sisääntulosignaalin luomisessa. Kuten mainitaan, tässä projektissa käytetään keskeytystä, jotta häiriön kutsumiseksi on määritettävä jokin ehto. Arduino Unolla on 2 ehtoa keskeytysten soittamiseen -

RISING - Tätä käytettäessä keskeytyksiä kutsutaan aina, kun tulosignaali siirtyy LOW-tilasta HIGH-tilaan.

FALING - Tätä käytettäessä keskeytys kutsutaan, kun signaali siirtyy HIGH-tilasta LOW-tilaan.

Olemme käyttäneet RISINGiä, mitä tapahtuu, kun akseliin tai pyörivään esineeseen sijoitettu magneetti tulee lähelle Hall-ilmaisinta. Tulosignaali syntyy ja keskeytys kutsutaan sisään, Interrupt käynnistää keskeytyspalvelurutiinin (ISR) -toiminnon, joka sisältää kasvun laskee arvon ja siten laskenta tapahtuu.

Olemme käyttäneet Arduinon millis () -funktiota ja previoustime (muuttuja) vastaavasti ajastimen asetuksissa.

RPM lasketaan siten lopulta matemaattista

RPM = Laskelmat / kulunut aika Muunna millisekunnit minuutteiksi ja uudelleenjärjestelyiksi saamme kaavan = 60 * 1000 / (millis () - edeltävä aika) * lukemat.

Viive (1000) määrittää ajanjakson, jonka jälkeen RPM-arvo päivitetään näytöllä, voit säätää tätä viivettä tarpeidesi mukaan.

Tätä saatua RPM-arvoa voidaan edelleen käyttää pyörivän kohteen tangentiaalinopeuden laskemiseen käyttämällä suhdetta v = (3,14 * D * N) / 60 m / s.

Kierrosluvun arvoa voidaan käyttää myös pyörivän pyörän tai kiekon kulkeman matkan laskemiseen.

Sen sijaan, että tulostettaisiin arvoja sarjavalvontaan, tämä laite voidaan tehdä hyödyllisemmäksi liittämällä LCD-näyttö (16 * 2) ja akku käytön parantamiseksi.




Edellinen: Askelmoottorin ohjainpiiri IC 555: n avulla Seuraava: Digitaalinen kapasitanssimittaripiiri käyttämällä Arduinoa