Բովանդակություն:

RPM հաշվիչ STM32- ով `8 քայլ
RPM հաշվիչ STM32- ով `8 քայլ

Video: RPM հաշվիչ STM32- ով `8 քայլ

Video: RPM հաշվիչ STM32- ով `8 քայլ
Video: Monitoring the RPM of a 12Vdc Three Wire Cooler Fan with Arduino, with speed control potentiometer 2024, Նոյեմբեր
Anonim
RPM հաշվիչ STM32- ով
RPM հաշվիչ STM32- ով

Թեև որոշ չափով անհանգստություն է պատճառում գնելը (քանի որ այն հասանելի չէ բազմաթիվ ինտերնետ խանութներում), անհրաժեշտ եմ համարում քննարկել STM32 L432KC- ը: Այս չիպը հատուկ ջերմության է արժանի, քանի որ այն ULTRA LOW POWER է: Այնուամենայնիվ, նրանց համար, ովքեր չունեն STM32- ը, այն կարող է այս նախագծում փոխարինվել Arduino Uno- ով: Դա անելու համար պարզապես փոխեք ընդհատման մուտքի քորոցը:

Եկեք այնուհետև ստեղծենք RPM հաշվիչ ՝ օգտագործելով STM32 L432KC և ինֆրակարմիր տվիչ: Այս նույն ծրագիրը կարող է օգտագործվել նաև քամու արագությունը չափելու համար: Այս միկրոկառավարիչի ցածր էներգիայի հատկությունը կատարյալ է IOT- ի համար:

Քայլ 1: Մոդուլներ

Մոդուլներ
Մոդուլներ
Մոդուլներ
Մոդուլներ

Այսօրվա մեր նախագծի համար մենք օգտագործում ենք 8-նիշանոց MAX7219CWG, ինչպես նաև ինֆրակարմիր մոդուլը:

Քայլ 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

Քայլ 3: onstուցադրություն

Ցույց
Ցույց

Մեր հավաքում մենք ունենք STM32, 8-նիշանոց էկրան և զարկերակային մուտք: Ինֆրակարմիր քարտի վրա կա ֆոտոտրանսիստոր և LED, որը գրավում է լույսը ՝ սպիտակ ժապավենից դուրս ցատկելով: Այս ժապավենը ամրացված է անիվի վրա և յուրաքանչյուր պտույտի ժամանակ կստեղծի զարկերակ, որը կգրավի STM32 ընդհատումով:

Մենք ունենք դիոդ և կոնդենսատոր, որոնք օգտագործվել են ժապավենի ընթերցման ազդանշանի աղմուկը STM32- ին չհասնելու համար, ինչը կստիպի այն մեկնաբանել միացումն ու անջատումը:

Ուցադրումը ցույց է տալիս մեր նախագիծը, ինչպես նաև Minipa հաշվիչը (երկուսն էլ գործում են):

Քայլ 4: Հավաքում

Ժողով
Ժողով

Քայլ 5: րագիր

Մենք կանենք մի ծրագիր, որի ընթացքում ինֆրակարմիր մոդուլը STM32 L432KC- ում յուրաքանչյուր «պտույտ» ընդմիջում կհանգեցնի, և մենք կանենք հաշվարկները ՝ RPM- ը էկրանին ցուցադրելու համար:

Քայլ 6: Գրադարաններ

Գրադարաններ
Գրադարաններ

Ավելացրեք հետևյալ «DigitLedDisplay» գրադարանը:

Պարզապես մուտք գործեք «Էսքիզներ >> Ներառեք գրադարաններ >> Կառավարեք գրադարանները …"

Քայլ 7: Աղբյուրի կոդ

Գրադարաններ և փոփոխականներ

Եկեք սկսենք աղբյուրի կոդը, ներառյալ DigitLedDisplay գրադարանը: Մենք ցույց կտանք ցուցադրման օբյեկտը: Ես սահմանեցի ընդհատման քորոցը, որը կլինի 12. Բացի այդ, ես մուտքագրում եմ անկայուն օպերատոր ինչպես RPM հաշվիչի, այնպես էլ ժամանակի համար `բախման խնդիրներից խուսափելու համար:

/ * Ներառել DigitLedDisplay Library */# - ը ներառում է «DigitLedDisplay.h»/ * Arduino Pin- ը ՝ Pin 7 -ը DIN- ին, 6 -ը CS- ին, 5 -ը CLK */// DigitLedDisplay ld = DigitLedDisplay (7, 6, 5); // arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); // STM32 L432KC int քորոց = 12; // pino de interrupção (módulo IR) անկայուն անստորագիր int rpm; // contador de rpm անկայուն անստորագիր երկար ժամանակ; // տեմպ

Կարգավորում

Setup- ում մենք կարգավորում ենք ցուցադրման գործողությունը, ինչպես նաև կարգավորում ենք ընդհատումը որպես Rising:

void setup () {Serial.begin (115200); / * Սահմանեք պայծառության նվազագույնը `1, առավելագույնը` 15 */ ld.setBright (10); / * Սահմանեք թվանշանների քանակը */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; timeold = millis (); }

Օղակ

Ի վերջո, մենք որոշում ենք 1 -ի 1 րոպեի ընդմիջումը `էկրանը թարմացնելու համար: Էկրանը մաքրելուց հետո տպում ենք RPM- ը: Մենք կատարում ենք այն գործառույթը, որը կանչելու է ընդհատումը: Մենք հաշվարկում ենք RPM և թարմացման ժամանակը:

void loop () {հետաձգում (1000); ld. հստակ (); ld.printDigit (rpm); } void interruptPin () {rpm = 60*1000/(millis () - timeold); timeold = millis (); }

Քայլ 8: Ֆայլեր

Ներբեռնեք ֆայլերը.

PDF

ԻՆՈ

Խորհուրդ ենք տալիս: