Satura rādītājs:

RPM mērītājs ar STM32: 8 soļi
RPM mērītājs ar STM32: 8 soļi

Video: RPM mērītājs ar STM32: 8 soļi

Video: RPM mērītājs ar STM32: 8 soļi
Video: 7300 RPM High speed BLDC motor 2024, Novembris
Anonim
RPM mērītājs ar STM32
RPM mērītājs ar STM32

Lai gan pirkšana ir nedaudz apgrūtinoša (jo tā nav pieejama daudzos interneta veikalos), es uzskatu, ka ir nepieciešams apspriest STM32 L432KC. Šī mikroshēma ir pelnījusi īpašu pieķeršanos, jo tā ir ULTRA LOW POWER. Tomēr tiem, kam nepieder STM32, to šajā projektā var aizstāt ar Arduino Uno. Lai to izdarītu, vienkārši nomainiet ievades pārtraukšanas tapu.

Pēc tam izveidosim apgriezienu skaitītāju, izmantojot STM32 L432KC un infrasarkano sensoru. Šo pašu programmu var izmantot arī vēja ātruma mērīšanai. Šī mikrokontrollera mazjaudas funkcija ir lieliski piemērota IOT.

1. solis: moduļi

Moduļi
Moduļi
Moduļi
Moduļi

Mūsu šodienas projektam mēs izmantojam 8 ciparu MAX7219CWG, kā arī infrasarkano moduli.

2. darbība: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

3. solis: demonstrācija

Demonstrācija
Demonstrācija

Mūsu montāžā ir STM32, 8 ciparu displejs un impulsa ievade. Infrasarkanajai kartei ir fototransistors un gaismas diode, kas uztver gaismu, atlecot no baltas lentes. Šī lente ir piestiprināta pie riteņa un katrā pagriezienā ģenerēs impulsu, ko fiksēs STM32 pārtraukums.

Montāžā ir diode un kondensators, kas tika izmantoti, lai novērstu lentes nolasīšanas signāla trokšņa nokļūšanu līdz STM32, kas ļautu interpretēt ieslēgšanu un izslēgšanu.

Demonstrācija parāda mūsu projektu, kā arī Minipa skaitītāju (abi darbojas).

4. solis: montāža

Montāža
Montāža

5. solis: programma

Mēs veiksim programmu, kurā infrasarkanais modulis izraisīs pārtraukumu STM32 L432KC katrā "pagriezienā", un mēs veiksim aprēķinus, lai displejā parādītu RPM.

6. darbība: bibliotēkas

Bibliotēkas
Bibliotēkas

Pievienojiet šādu bibliotēku "DigitLedDisplay".

Vienkārši piekļūstiet sadaļai “Skice >> Iekļaut bibliotēkas >> Pārvaldīt bibliotēkas…”

7. darbība: avota kods

Bibliotēkas un mainīgie

Sāksim avota kodu, ieskaitot bibliotēku DigitLedDisplay. Mēs parādīsim displeja objektu. Es iestatīju pārtraukšanas tapu, kas būs 12. Tāpat es ievadu gaistošu operatoru gan RPM skaitītājam, gan laikam, lai izvairītos no jebkādām sadursmes problēmām.

/ * Iekļaut DigitLedDisplay bibliotēku */#include "DigitLedDisplay.h"/ * Arduino Pin to Display pin 7 to DIN, 6 to CS, 5 to CLK */// DigitLedDisplay ld = DigitLedDisplay (7, 6, 5); // arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); // STM32 L432KC int pin = 12; // pino de interrupção (metodulo IR) volatile unsigned int rpm; // contador de rpm volatile unsigned long timeold; // temps

Uzstādīt

Iestatījumos mēs konfigurējam displeja darbību, kā arī konfigurējam pārtraukumu kā pieaugošu.

void setup () {Serial.begin (115200); / * Iestatiet spilgtumu min: 1, max: 15 */ ld.setBright (10); / * Iestatiet ciparu skaitu */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); apgriezieni minūtē = 0; timeold = milis (); }

Cilpa

Visbeidzot, mēs nosakām intervālu 1 minūtē, lai atjauninātu displeju. Pēc ekrāna tīrīšanas mēs izdrukājam RPM. Mēs veicam funkciju, ko izsauks pārtraukums. Mēs aprēķinām RPM un atjaunināšanas laiku.

void loop () {kavēšanās (1000); ld.clear (); ld.printDigit (apgr./min); } void interruptPin () {rpm = 60*1000/(millis () - timeold); timeold = milis (); }

8. darbība: faili

Lejupielādējiet failus:

PDF

ES NĒ

Ieteicams: