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

Οδόμετρο ποδηλάτου PCBWay Arduino: 4 βήματα
Οδόμετρο ποδηλάτου PCBWay Arduino: 4 βήματα

Βίντεο: Οδόμετρο ποδηλάτου PCBWay Arduino: 4 βήματα

Βίντεο: Οδόμετρο ποδηλάτου PCBWay Arduino: 4 βήματα
Βίντεο: Bike Light Arduino 2024, Ιούλιος
Anonim
Οδόμετρο ποδηλάτου PCBWay Arduino
Οδόμετρο ποδηλάτου PCBWay Arduino

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

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

Προμήθειες

01 x PCBWay Custom PCB

01 x Arduino UNO - UTSOURCE

01 x Οθόνη LCD 16x2 - UTSOURCE

01 x Breadboard - UTSOURCE

01 x Wire Jumpers - UTSOURCE

01 x 10kR Περιστροφικό ποτενσιόμετρο - UTSOURCE

01 x UTSOURCE Διακόπτης καλαμιού - UTSOURCE

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

Βήμα 1: Το έργο

Η εργασία
Η εργασία

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

Το έργο αυτό έχει τρεις λειτουργίες:

  • Υπολογίστε την απόσταση που διανύσατε με το ποδήλατο.
  • Διαμόρφωση ακτίνας εκκίνησης συσκευής.
  • Προσαρμόζεται σε οποιοδήποτε ποδήλατο.

Για πρόσβαση σε αυτές τις λειτουργίες, ο χρήστης θα χρησιμοποιήσει τα τρία κουμπιά του συστήματος. Κάθε κουμπί έχει τη λειτουργικότητά σας. Στο σύστημα έχουμε τα ακόλουθα κουμπιά:

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

Κουμπί μείωσης: Θα χρησιμοποιηθεί για να μειώσει την επιλογή διαμόρφωσης της ακτίνας των τροχών.

Κουμπί Enter: Θα χρησιμοποιηθεί για την εισαγωγή της τιμής της ακτίνας στο σύστημα.

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

Ο διακόπτης Reed παρουσιάζεται στο παραπάνω σχήμα.

Βήμα 2:

Έτσι, κάθε φορά που ο μαγνήτης πλησιάζει τον αισθητήρα, θα ενεργοποιεί τον αισθητήρα διακόπτη Reed. Η διαδικασία λειτουργεί μέσω της ακόλουθης εξίσωσης:

Ταξιδευμένη Απόσταση = 2 * π * ακτίνα * TurnNumber

Μέσω αυτής της εξίσωσης, θα γνωρίζουμε ποια είναι η διανυθείσα απόσταση που εκτελεί το ποδήλατο.

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

Και για τον εντοπισμό των στροφών του τροχού απαιτείται η εγκατάσταση ενός μαγνήτη στον τροχό του ποδηλάτου και η εγκατάσταση του αισθητήρα διακόπτη Reed κοντά στον τροχό.

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

Βήμα 3:

Εικόνα
Εικόνα

Όπως φαίνεται στο PCB μπορείτε να δείτε το Arduino Nano. Είναι υπεύθυνος για τον έλεγχο όλων των συστημάτων. Επιπλέον, έχουμε 5 συνδετήρες JST.

Οι σύνδεσμοι C1 έως C4 χρησιμοποιούνται για τη σύνδεση των τριών κουμπιών και του αισθητήρα διακόπτη Reed. Τώρα, ο σύνδεσμος C5 χρησιμοποιείται για τη σύνδεση της οθόνης LCD 16x2 I2C.

Επομένως, μέσω αυτού του συστήματος, μπορείτε να εγκαταστήσετε το έργο στο ποδήλατό σας και να λάβετε την τιμή της διανυόμενης απόστασης.

Για αυτό, μπορείτε να χρησιμοποιήσετε τον κωδικό που παρουσιάζεται παρακάτω.

#συμπεριλάβω #συμπεριλάβω

/*

Pinos de conex? O dos bot? Es e sensor reed switch 8 - Sensor Reed Switch 9 - Decremento 12 - Incremento 11 - Enter */

#define MEMORIA 120

#define PosRaio 125

#define ReedSwitch 8

#define BotaoEnterOk 11 #define BotaoIncremento 12 #define BotaoDecremento 9

const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;

LiquidCrystal LCD (rs, en, d4, d5, d6, d7);

bool sensor = 0, estado_anterior = 0, Incremento = 0, Decremento = 0;

bool IncrementoAnterior = 0, DecrementoAnterior = 0, BotaoEnter = 0, EstadoAnteriorIncremento = 0;

byte cont = 0;

ανυπόγραφο long int VoltaCompleta = 0;

ανυπόγραφο long int tempo_atual = 0, ultimo_tempo = 0;

float DistKm = 0;

ανυπόγραφο int raio = 0; float Distancia = 0;

void setup ()

{Serial.begin (9600); pinMode (8, ΕΙΣΟΔΟΣ); pinMode (9, ΕΙΣΟΔΟΣ); pinMode (10, ΕΙΣΟΔΟΣ); pinMode (12, ΕΙΣΟΔΟΣ);

lcd. αρχή (16, 2);

// Regiao de codigo para configurar o raio da roda do veiculo

if (EEPROM.read (MEMORIA)! = 73) {ConfiguraRaio (); EEPROM.write (MEMORIA, 73); }

lcd.setCursor (3, 0);

lcd.print ("Distancia"); lcd.setCursor (6, 1); lcd.print (Distancia);

lcd.setCursor (14, 1);

lcd.print ("km");

raio = EEPROM.read (PosRaio);

}

κενός βρόχος ()

{

// Regiao de codigo para realizar a leitura dos botoes και sensor do dispositivo

αισθητήρας = digitalRead (ReedSwitch); Decremento = digitalRead (BotaoDecremento); Incremento = digitalRead (BotaoIncremento);

// Regiao de codigo para acumular a distancia percorrida

εάν (αισθητήρας == 0 && estado_anterior == 1) {VoltaCompleta ++;

Distancia = (float) (2*3.14*raio*VoltaCompleta) /100000.0;

lcd.setCursor (0, 1);

lcd.print (""); lcd.setCursor (6, 1); lcd.print (Distancia);

lcd.setCursor (14, 1);

lcd.print ("km");

estado_anterior = 0;

}

εάν (αισθητήρας == 1 && estado_anterior == 0)

{estado_anterior = 1; }

// Regiao de Codigo para Configurar o Raio

εάν (Εισαγωγή == 1 && EstadoAnteriorIncremento == 0) {EstadoAnteriorIncremento = 1; }

αν (Εισαγωγή == 0 && EstadoAnteriorIncremento == 1)

{EstadoAnteriorIncremento = 0; lcd.clear (); ConfiguraRaio (); }}

void ConfiguraRaio ()

{

byte RaioRoda = 0;

// Imprimir mensagem para digitar o raio em cm

lcd.setCursor (0, 0); lcd.print ("Inserir Raio (cm)");

κάνω

{

lcd.setCursor (6, 1);

Incremento = digitalRead (BotaoIncremento);

Decremento = digitalRead (BotaoDecremento); BotaoEnter = digitalRead (BotaoEnterOk);

αν (Εισαγωγή == 1 && Αύξηση Προηγούμενο == 0)

{RaioRoda = RaioRoda + 1; IncrementoAnterior = 1; }

αν (Εισαγωγή == 0 && Αύξηση Προηγούμενο == 1)

{IncrementoAnterior = 0; }

αν (Decremento == 1 && DecrementoAnterior == 0)

{RaioRoda = RaioRoda - 1; DecrementoAnterior = 1; }

αν (Decremento == 0 && DecrementoAnterior == 1)

{DecrementoAnterior = 0; }

lcd.setCursor (6, 1);

lcd.print (RaioRoda);

} while (BotaoEnter == 0);

lcd.clear ();

EEPROM.write (PosRaio, RaioRoda);

ΕΠΙΣΤΡΟΦΗ; }

Από αυτόν τον κωδικό θα υπολογίσει πιθανώς την απόσταση σας με το Arduino σας.

Βήμα 4: Συμπέρασμα

Επομένως, εάν θέλετε το δικό σας PCB, μπορείτε να το αποκτήσετε μέσω αυτού του συνδέσμου στον ιστότοπο του PCBWay.com. Για αυτό, μπορείτε να αποκτήσετε πρόσβαση στον ιστότοπο, να δημιουργήσετε το λογαριασμό σας και να αποκτήσετε τα δικά σας PCB.

Το εργαστήριο Silícios ευχαριστεί την UTSOURCE για να προσφέρει τα ηλεκτρονικά εξαρτήματα για τη δημιουργία αυτού του έργου.

Συνιστάται: