Πίνακας περιεχομένων:

Μετρητής στροφών με STM32: 8 βήματα
Μετρητής στροφών με STM32: 8 βήματα

Βίντεο: Μετρητής στροφών με STM32: 8 βήματα

Βίντεο: Μετρητής στροφών με STM32: 8 βήματα
Βίντεο: Jak to działa? Indukcyjny licznik energii elektrycznej 230V - warunki przyłączenia do sieci 2024, Σεπτέμβριος
Anonim
Μετρητής RPM με STM32
Μετρητής RPM με STM32

Αν και είναι κάπως ενοχλητικό να αγοράζετε (επειδή δεν είναι διαθέσιμο σε πολλά καταστήματα στο Διαδίκτυο), θεωρώ απαραίτητο να συζητήσω το STM32 L432KC. Αυτό το τσιπ αξίζει ιδιαίτερη αγάπη, καθώς είναι ULTRA LOW POWER. Ωστόσο, για όσους δεν κατέχουν το STM32, μπορεί να αντικατασταθεί σε αυτό το έργο από το Arduino Uno. Για να το κάνετε αυτό, απλώς αλλάξτε τον πείρο της εισόδου διακοπής.

Ας δημιουργήσουμε στη συνέχεια έναν μετρητή στροφών ανά λεπτό χρησιμοποιώντας το STM32 L432KC και έναν υπέρυθρο αισθητήρα. Αυτό το ίδιο πρόγραμμα μπορεί επίσης να χρησιμοποιηθεί για τη μέτρηση της ταχύτητας του ανέμου. Η λειτουργία χαμηλής ισχύος αυτού του μικροελεγκτή είναι ιδανική για IOT.

Βήμα 1: Ενότητες

Ενότητες
Ενότητες
Ενότητες
Ενότητες

Για το έργο μας σήμερα, χρησιμοποιούμε το 8ψήφιο MAX7219CWG, καθώς και τη μονάδα υπερύθρων.

Βήμα 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

Βήμα 3: Επίδειξη

Επίδειξη
Επίδειξη

Στη συναρμολόγησή μας, έχουμε το STM32, την οκταψήφια οθόνη και την είσοδο παλμού. Η υπέρυθρη κάρτα διαθέτει φωτοτρανζίστορ και LED που πιάνει το φως αναπηδώντας από μια λευκή κορδέλα. Αυτή η ταινία είναι προσαρτημένη σε έναν τροχό και, σε κάθε στροφή, θα παράγει έναν παλμό, ο οποίος θα συλληφθεί από τη διακοπή STM32.

Έχουμε μια δίοδο και έναν πυκνωτή στη διάταξη που χρησιμοποιήθηκαν για να αποτρέψουν το θόρυβο του σήματος ανάγνωσης ταινίας να φτάσει στο STM32, κάτι που θα το έκανε να ερμηνεύσει το on και off.

Η επίδειξη δείχνει το έργο μας, καθώς και τον μετρητή Minipa (και οι δύο σε λειτουργία).

Βήμα 4: Συναρμολόγηση

Συνέλευση
Συνέλευση

Βήμα 5: Πρόγραμμα

Θα κάνουμε ένα πρόγραμμα στο οποίο η μονάδα υπερύθρων θα ενεργοποιεί μια διακοπή στο STM32 L432KC κάθε "στροφή" και θα κάνουμε τους υπολογισμούς για να εμφανίσουμε το RPM στην οθόνη.

Βήμα 6: Βιβλιοθήκες

Βιβλιοθήκες
Βιβλιοθήκες

Προσθέστε την ακόλουθη βιβλιοθήκη "DigitLedDisplay".

Απλώς αποκτήστε πρόσβαση στο "Sketch >> Include Libraries >> Manage Libraries …"

Βήμα 7: Πηγαίος κώδικας

Βιβλιοθήκες και μεταβλητές

Ας ξεκινήσουμε τον πηγαίο κώδικα, συμπεριλαμβανομένης της βιβλιοθήκης DigitLedDisplay. Θα δείξουμε το αντικείμενο εμφάνισης. Ρυθμίζω τον πείρο διακοπής, ο οποίος θα είναι 12. Επίσης, εισάγω έναν πτητικό τελεστή τόσο για τον μετρητή RPM όσο και για τον χρόνο, προκειμένου να αποφευχθούν τυχόν προβλήματα σύγκρουσης.

/ * Συμπεριλάβετε τη βιβλιοθήκη DigitLedDisplay */#περιλαμβάνουν "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 (módulo IR) πτητικό ανυπόγραφο int rpm; // contador de rpm πτητικό ανυπόγραφο για μεγάλο χρονικό διάστημα. //ρυθμός

Ρύθμιση

Στο πρόγραμμα Εγκατάστασης (Setup), ρυθμίζουμε τη λειτουργία εμφάνισης, καθώς και τη διακοπή ως Αύξηση.

void setup () {Serial.begin (115200); / * Ρυθμίστε τη φωτεινότητα min: 1, max: 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 () {delay (1000); ld.clear (); ld.printDigit (σ.α.λ.) } void interruptPin () {rpm = 60*1000/(millis () - timeold); timeold = millis (); }

Βήμα 8: Αρχεία

Κατεβάστε τα αρχεία:

PDF

ΕΓΩ ΔΕΝ

Συνιστάται: