Κύκλωμα ταχυμέτρου Arduino για ακριβείς μετρήσεις

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Ένα ταχύμετρο είναι μια συσκευή που μετρά το RPM ή τη γωνιακή ταχύτητα ενός περιστρεφόμενου σώματος. Διαφέρει από το ταχύμετρο και το χιλιομετρητή καθώς αυτές οι συσκευές ασχολούνται με γραμμική ή εφαπτομενική ταχύτητα του σώματος, ενώ το στροφόμετρο «tach» ασχολείται με πιο θεμελιώδη το RPM.

Από τον Ankit Negi



Το ταχύμετρο αποτελείται από έναν μετρητή και ένα χρονόμετρο και τα δύο αυτά μαζί παρέχουν το RPM. Στο έργο μας πρόκειται να κάνουμε το ίδιο, χρησιμοποιώντας το Arduino και μερικούς αισθητήρες θα εγκαταστήσουμε έναν μετρητή και ένα χρονόμετρο και θα αναπτύξουμε το εύχρηστο και εύκολο tach μας .

Προαπαιτούμενα

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



Αλλά τώρα χρησιμοποιούμε μετρητή με πιο εξελιγμένους και πολύ ακριβείς αισθητήρες και ηλεκτρονικά. Το Timer είναι ένα ηλεκτρονικό στοιχείο που μπορεί να μετρήσει το χρονικό διάστημα μεταξύ των γεγονότων ή να μετρήσει τον χρόνο.

Στο Arduino Uno μας υπάρχουν χρονοδιακόπτες που όχι μόνο παρακολουθούν το χρόνο αλλά και διατηρούν μερικές από τις σημαντικές λειτουργίες του Arduino. Στο Uno έχουμε 3 χρονοδιακόπτες που ονομάζονται Timer0, Timer1 και Timer2. Αυτοί οι χρονοδιακόπτες έχουν τις ακόλουθες λειτουργίες- • Χρονοδιακόπτης0- Για λειτουργίες Uno όπως καθυστέρηση (), χιλιοστά (), μικρο () ή καθυστέρηση μικρομέτρων ().

• Χρονοδιακόπτης1- Για τη λειτουργία της σερβο βιβλιοθήκης.

• Timer2- Για λειτουργίες όπως τον τόνο (), notone ().

Μαζί με αυτές τις λειτουργίες, αυτά τα 3 χρονόμετρα είναι επίσης υπεύθυνα για τη δημιουργία της εξόδου PWM όταν χρησιμοποιείται η εντολή analogWrite () στον καθορισμένο πείρο PMW.

Έννοια των διακοπών

Στο Arduino Uno υπάρχει ένα κρυφό εργαλείο που μπορεί να μας δώσει πρόσβαση σε πολλές λειτουργίες που είναι γνωστές ως Timer Interrupts. Το Interrupt είναι ένα σύνολο συμβάντων ή οδηγιών που εκτελούνται όταν ονομάζεται διακοπή της τρέχουσας λειτουργίας της συσκευής, δηλαδή ανεξάρτητα από το τι κωδικοποιεί το Uno που εκτελούσε στο παρελθόν, αλλά όταν μια διακοπή ονομάζεται Arduino, εκτελέστε τις οδηγίες που αναφέρονται στο Interrupt.

μαγνήτης στον άξονα του κινητήρα

Τώρα το Interrupt μπορεί να κληθεί σε συγκεκριμένη κατάσταση που ορίζεται από τον χρήστη χρησιμοποιώντας ένα ενσωματωμένο Arduino Syntax. Θα χρησιμοποιήσουμε αυτό το Interrupt στο έργο μας που κάνει το ταχύμετρο μας πιο αποφασιστικό και πιο ακριβές από το άλλο έργο Ταχομέτρου που υπάρχει στον Ιστό.

Απαιτούνται στοιχεία για αυτό το έργο Ταχομέτρου χρησιμοποιώντας το Arduino

• Αισθητήρας Hall Effect (Εικ. 1)

μονάδα αισθητήρα εφέ αίθουσας

• Arduino Uno

Πίνακας Arduino UNO

• Μικρός μαγνήτης

μικρός μαγνήτης

• Καλώδια αλτών

• Περιστρεφόμενο αντικείμενο (άξονας κινητήρα)

Κινητήρας DC

Ρύθμιση κυκλώματος

• Η ρύθμιση για τη δημιουργία έχει ως εξής-

• Στον άξονα του οποίου η ταχύτητα περιστροφής πρέπει να μετρηθεί είναι εφοδιασμένος με έναν μικρό μαγνήτη χρησιμοποιώντας κόλλα ή ηλεκτρική ταινία.

• Ο αισθητήρας Hall Effect διαθέτει ανιχνευτή μπροστά και 3 ακίδες για συνδέσεις.

• Οι ακροδέκτες Vcc και Gnd συνδέονται με τον πείρο 5V και Gnd του Arduino αντίστοιχα. Ο ακροδέκτης εξόδου του αισθητήρα συνδέεται με τον ψηφιακό ακροδέκτη 2 του Uno για να παρέχει το σήμα εισόδου.

• Όλα τα εξαρτήματα στερεώνονται σε πλακέτα στήριξης και ο ανιχνευτής Hall επισημαίνεται από την πλακέτα.

Προγραμματισμός

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
}

Ανεβάστε τον κωδικό.

Γνωρίστε τον κωδικό

Το ταχύμετρο μας χρησιμοποιεί τον αισθητήρα Hall Effect Sensor Hall Effect βασίζεται στο εφέ Hall που πήρε το όνομά του από τον ανακάλυψη του Edwin Hall.

Το Hall Effect είναι ένα φαινόμενο δημιουργίας τάσης σε έναν αγωγό μεταφοράς ρεύματος όταν ένα μαγνητικό πεδίο εισάγεται κάθετα προς τη ροή του ρεύματος. Αυτή η τάση που δημιουργείται λόγω αυτού του φαινομένου βοηθά στη δημιουργία σήματος εισόδου. Όπως αναφέρθηκε, το Interrupt θα χρησιμοποιηθεί σε αυτό το έργο, για να καλέσουμε το Interrupt πρέπει να ρυθμίσουμε κάποια κατάσταση. Το Arduino Uno έχει 2 προϋποθέσεις για να ζητήσει Διακοπές-

RISING- Όταν χρησιμοποιείται αυτό, το Interrupt καλείται κάθε φορά που το σήμα εισόδου μεταβαίνει από LOW σε HIGH.

FALING-Όταν χρησιμοποιείται αυτό, το Interrupt καλείται όταν το σήμα πηγαίνει από HIGH σε LOW.

Έχουμε χρησιμοποιήσει το RISING, αυτό που συμβαίνει είναι ότι όταν ο μαγνήτης που τοποθετείται στον άξονα ή το περιστρεφόμενο αντικείμενο πλησιάζει τον ανιχνευτή Hall δημιουργείται σήμα εισόδου και καλείται Interrupt, η Interrupt ξεκινά τη λειτουργία Interrupt Service Routine (ISR), η οποία περιλαμβάνει αύξηση στο η τιμή μετράει και έτσι λαμβάνει χώρα.

Χρησιμοποιήσαμε τη συνάρτηση millis () του Arduino και previoustime (μεταβλητή) σε αντιστοιχία για τη ρύθμιση του χρονοδιακόπτη.

Έτσι το RPM υπολογίζεται τελικά χρησιμοποιώντας τη μαθηματική σχέση-

RPM = Μετρήσεις / Χρόνος που απαιτείται Μετατρέποντας τα χιλιοστά του δευτερολέπτου σε λεπτά και αναδιάταξη φτάνουμε στον τύπο = 60 * 1000 / (millis () - previoustime) * μετράει.

Η καθυστέρηση (1000) καθορίζει το χρονικό διάστημα μετά το οποίο η τιμή του RPM θα ενημερωθεί στην οθόνη, μπορείτε να προσαρμόσετε αυτήν την καθυστέρηση ανάλογα με τις ανάγκες σας.

Αυτή η τιμή του λαμβανόμενου RPM μπορεί να χρησιμοποιηθεί περαιτέρω για τον υπολογισμό της εφαπτομενικής ταχύτητας του περιστρεφόμενου αντικειμένου χρησιμοποιώντας τη σχέση- = (3,14 * D * N) / 60 m / s.

Η τιμή του RPM μπορεί επίσης να χρησιμοποιηθεί για τον υπολογισμό της απόστασης που διανύει ένας περιστρεφόμενος τροχός ή δίσκος.

Αντί για εκτύπωση τιμών σε σειριακή οθόνη, αυτή η συσκευή μπορεί να γίνει πιο χρήσιμη συνδέοντας μια οθόνη LCD (16 * 2) και μπαταρία για καλύτερη χρήση.




Προηγούμενο: Stepper Motor Driver Circuit using IC 555 Επόμενο: Κύκλωμα μετρητή ψηφιακής χωρητικότητας με χρήση του Arduino