» Ηλεκτρονικά » Arduino »Ο μετρητής απόστασης τροχού (καμπύλη μέτρησης) στο Arduino το κάνετε μόνοι σας

Κάνετε μετρητή απόσταση τροχού (στροβιλομέτρου) στο Arduino

Γεια σε όλους! Τώρα θα προσπαθήσω να μιλήσω λεπτομερώς για το πώς να φτιάξω το πιο απλό και οικονομικό καμπύλη μέτρησης.

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

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

Τώρα πρέπει να προσδιορίσετε το υλικό και το μέγεθος της δομής. Χρησιμοποίησα ένα δέντρο.

Στις μπάρες έκανα μια σήμανση και έκανα τα απαραίτητα κομμάτια και τρύπες.

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

Για να μετρήσετε κάθε επανάσταση στην απλούστερη περίπτωση, μπορείτε να χρησιμοποιήσετε την "ολισθαίνουσα επαφή". Ωστόσο, δεν προτείνω τη χρήση ενός τέτοιου μηχανισμού αναφοράς. Είναι πολύ καλύτερο να χρησιμοποιήσετε ένα διακόπτη καλαμιού ή έναν αισθητήρα Hall.

Ήρθε η ώρα να δοκιμάσετε έναν τροχό. Θα το στερεώσω με ένα μακρύ μπουλόνι. Βρήκαμε μια θέση στο πλαίσιο όπου το χείλος τροχού είναι όσο το δυνατόν πιο κοντά του και σημειώστε με εγκεφαλικά επεισόδια. Γύρω από αυτή την περιοχή, πρέπει να εγκαταστήσουμε τον διακόπτη καλαμιού.

Στον τροχό πρέπει να εγκαταστήσετε ένα μικρό μαγνήτη.Βεβαιωθείτε ότι η αντοχή του θα είναι αρκετή για να κλείσετε τις επαφές του διακόπτη καλαμιού.
Τώρα θα ασχοληθούμε με "εγκεφάλους" του συστήματος. Στην περίπτωσή μου, αυτό είναι ένα τέλος Arduino UNO. Θα διαβάσει την κατάσταση του διακόπτη καλαμιού και θα μεταφέρει δεδομένα στο τηλέφωνό σας μέσω σύνδεσης Bluetooth, χρησιμοποιώντας τη μονάδα HC-05. Παρεμπιπτόντως, ο διακόπτης καλαμιού είναι συνδεδεμένος με τον πίνακα σαν ένα κανονικό κουμπί. Νομίζω ότι δεν πρέπει να υπάρχουν προβλήματα με τη σύνδεση της μονάδας Bluetooth.

Όσο για τον ίδιο τον κώδικα, είναι πολύ απλό. Και προσπάθησα να το σχολιάσω έτσι ώστε τα πάντα να ήταν όσο το δυνατόν πιο ξεκάθαρα.

int gercon = 12; // συνδέσατε τον διακόπτη καλαμιού σε 12 ακίδες
διπλή απόσταση = 0; // δημιούργησε μια διπλή μεταβλητή για να αποθηκεύσει την απόσταση
άκυρη ρύθμιση () {
   Serial.begin (9600); // συνδεδεμένη σειριακή σύνδεση
 }}
  void loop () {
/ * Επόμενος είναι ο βρόχος if. Εάν ο διακόπτης καλαμιού είναι κλειστός, τότε πραγματοποιείται ο υπολογισμός της επόμενης απόστασης. Η τιμή 0.46472 είναι ήδη το υπολογιζόμενο μήκος μιας περιστροφής του τροχού. Για να αποφύγετε "επιπλέον" δεδομένα, προσθέστε μια καθυστέρηση 200 χιλιοστών του δευτερολέπτου και εμφανίστε τις αναγνώσεις
* /
   αν (digitalRead (gercon) == HIGH)
   {
 απόσταση = απόσταση + 0,46472;
 καθυστέρηση (200).
 Serial.println (απόσταση);
}}
  }} 


Εδώ είναι η καμπύλη μας και είναι έτοιμη!

Ας κάνουμε μερικούς αγώνες δοκιμών. Όλα λειτουργούν τέλεια!


Μπορείτε να παρακολουθήσετε ένα βίντεο στη συναρμολόγηση αυτής της συσκευής, ίσως θα βρείτε κάτι ενδιαφέρον.
[media = https: //youtu.be/kx_7ztPsLws]

Έχετε μια καλή επανάληψη του έργου!
5
5
7

Προσθέστε ένα σχόλιο

    • χαμόγελοχαμογελάειxaxaΕντάξειdontknowyahoonea
      αφεντικόξυστάανόητοςναιναι-ναιεπιθετικήμυστικό
      Συγγνώμηχορόςdance2dance3συγχώρησηβοήθειαποτά
      σταματήστεφίλουςκαλόgoodgoodσφυρίχτρασυρρέουνγλώσσα
      καπνόςπαλαμάκιαcrayδηλώστεαπογοητευτικήdon-t_mentionκατεβάστε
      θερμότηταςirefulγέλιο1mdaσυνάντησηmoskingαρνητική
      not_iποπ κορντιμωρίαδιαβάστετρομάξτεφοβίζειαναζήτηση
      χλευάζωthank_youαυτόto_clueumnikοξείασυμφωνώ
      κακόbeeeblack_eyeblum3ρουζκαυχηθείτεπλήξη
      λογοκρισίαευχαρίστησηsecret2απειλήσουννίκηyusun_bespectacled
      shokrespektlolπροβλέπουνκαλωσορίστεkrutoyya_za
      ya_dobryiβοηθόςne_huliganne_othodifludαπαγόρευσηκοντά
1 σχόλιο
Επισκέπτης Σεργκέι
Γιατί UNO όταν attiny13 είναι αρκετό για τα μάτια ...
Όσο για τον κώδικα, τουλάχιστον θα πρέπει να προσθέσετε έναν έλεγχο ότι ο μαγνήτης έφυγε από τον διακόπτη καλαμιού, διότι σε αυτή την εφαρμογή, σε μια ορισμένη ταχύτητα, και ακόμα περισσότερο αν ο τροχός σταματήσει, μπορεί να υποβληθεί σε επεξεργασία περισσότερο από μία φορά ή να μην υποστεί επεξεργασία καθόλου. Για να γίνει αυτό, προσθέστε μια παγκόσμια μεταβλητή και ελέγξτε την κατάστασή της πριν υπολογίσετε το μήκος, όπως:
int gercon = 12; // συνδέσατε τον διακόπτη καλαμιού σε 12 ακίδες
int i = true;
διπλή απόσταση = 0; // δημιούργησε μια διπλή μεταβλητή για να αποθηκεύσει την απόσταση
άκυρη ρύθμιση () {
Serial.begin (9600); // συνδεδεμένη σειριακή σύνδεση
}
void loop () {
/ * Επόμενος είναι ο βρόχος if. Εάν ο διακόπτης καλαμιού είναι κλειστός, τότε πραγματοποιείται ο υπολογισμός της επόμενης απόστασης. Η τιμή 0.46472 είναι ήδη το υπολογιζόμενο μήκος μιας περιστροφής του τροχού. Για να αποφύγετε "επιπλέον" δεδομένα, προσθέστε μια καθυστέρηση 200 χιλιοστών του δευτερολέπτου και εμφανίστε τις αναγνώσεις
*/
αν (digitalRead (gercon) == HIGH)
{
εάν (i <1)
{
απόσταση = απόσταση + 0,46472;
i = 1;
// καθυστέρηση (200);
Serial.println (απόσταση);
}
}
αν (i> 0)
{
i ++;
καθυστέρηση (1);
}
αν (digitalRead (gercon) == ΧΑΜΗΛΗ)
{
εάν (i> 30) // αποφεύγουμε τα ψευδώς θετικά λόγω της αναπήδησης των επαφών
{
i = 0;
}
}
}

Καλύτερα όμως, βάλτε δύο διακόπτες καλαμιού, αυτό θα σας επιτρέψει να καθορίσετε την κατεύθυνση της περιστροφής (δεν πήγα εκεί για να μετρήσω - επέστρεψα, και δεν ξεκίνησα από την αρχή ή τον κούνησα στη θέση μου μπροστά και πίσω μιλώντας με έναν γείτονα κλπ.). Μπορείτε επίσης να προσθέσετε μαγνήτες για να αλλάξετε την ανάλυση.
ZY Δεν έλεγξα τις αλλαγές στον κώδικα, μπορεί να υπάρχουν σφάλματα.

Σας συμβουλεύουμε να διαβάσετε:

Κάντε το για το smartphone ...