Cuprins:

Contorometru pentru biciclete PCBWay Arduino: 4 pași
Contorometru pentru biciclete PCBWay Arduino: 4 pași

Video: Contorometru pentru biciclete PCBWay Arduino: 4 pași

Video: Contorometru pentru biciclete PCBWay Arduino: 4 pași
Video: Scooter electric QUALITY REVOLUTION CITYCOCO 3000W SKYBOARD BR70 Test Drive Citikoko Harley 2024, Noiembrie
Anonim
Contor de biciclete PCBWay Arduino
Contor de biciclete PCBWay Arduino

În multe vehicule, există dispozitive care calculează distanța parcursă și sunt esențiale pentru prezentarea informațiilor șoferului.

Astfel, prin intermediul acestor informații, este posibil să se monitorizeze distanța parcursă între două puncte, de exemplu, prin kilometrajul vehiculului.

Provizii

01 x PCBWay PCB personalizat

01 x Arduino UNO - UTSOURCE

01 x LCD 16x2 Display - UTSOURCE

01 x Breadboard - UTSOURCE

01 x Wire Jumpers - UTSOURCE

Potențiometru rotativ 01 x 10kR - UTSOURCE

01 x UTSOURCE Reed Switch - UTSOURCE

Prin urmare, prin acest articol, vă vom învăța cum să vă asamblați dispozitivul de calculare a distanței utilizând senzorul de comutare reed.

Pasul 1: Proiectul

Proiectul
Proiectul

Următorul proiect a fost creat pentru a calcula distanța parcursă cu bicicleta sălii de sport. În plus, veți învăța cum să creați programare pentru proiect.

Acest proiect are trei funcționalități:

  • Calculați distanța parcursă cu bicicleta;
  • Configurarea razei de pornire a dispozitivului;
  • Adaptabil la orice bicicletă.

Pentru a accesa aceste funcționalități, utilizatorul va folosi cele trei butoane ale sistemului. Fiecare buton are funcționalitatea dvs. În sistem avem următoarele butoane:

Buton de incrementare: Acesta va fi folosit pentru a intra în opțiunea de configurare a razei roților și pentru a crește valoarea razei;

Buton Decrement: Acesta va fi folosit pentru a diminua opțiunea de configurare a razei roților;

Buton Enter: Acesta va fi folosit pentru a insera valoarea razei în sistem.

În plus, avem senzorul Reed Switch. Este responsabil să detecteze când roțile se întorc complet. Pentru a detecta acest lucru, trebuie să instalați un magnet pe roți.

Comutatorul Reed este prezentat în figura de mai sus.

Pasul 2:

Astfel, de fiecare dată când magnetul se apropie de senzor, acesta va acționa senzorul Reed Switch. Procesul funcționează prin următoarea ecuație:

Distanța parcursă = 2 * π * raza * TurnNumber

Prin această ecuație, vom ști care este distanța parcursă efectuată de bicicletă.

În ecuație, raza este inserată de utilizator, iar numărul de viraj este calculat prin numărul de spire ale roții.

Și pentru a detecta rotațiile roții este necesară instalarea unui magnet în roata bicicletei și instalarea senzorului de comutare Reed lângă roată.

Pentru a ușura procesul, creăm o placă cu circuite imprimate pentru a conecta senzorul de comutare Reed și cele trei butoane. Placa cu circuite imprimate este prezentată mai jos în figura de mai jos.

Pasul 3:

Imagine
Imagine

După cum se arată în PCB, este posibil să vedeți Arduino Nano. Este responsabil să controleze toate sistemele. În plus, avem 5 conectori JST.

Conectorii C1 până la C4 sunt utilizați pentru a conecta cele trei butoane și senzorul de comutare Reed. Acum, conectorul C5 este utilizat pentru a conecta ecranul LCD 16x2 I2C.

Prin urmare, prin acest sistem, puteți instala proiectul în bicicleta dvs. și puteți obține valoarea distanței parcurse.

Pentru aceasta, puteți utiliza codul prezentat mai jos.

#include #include

/*

Pinos de conexiune? Dos bot? E 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);

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

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

octet cont = 0;

unsigned long int VoltaCompleta = 0;

unsigned long int tempo_atual = 0, ultimo_tempo = 0;

plutitor DistKm = 0;

unsigned int raio = 0; plutitor Distancia = 0;

configurare nulă ()

{Serial.begin (9600); pinMode (8, INPUT); pinMode (9, INPUT); pinMode (10, INPUT); pinMode (12, INPUT);

lcd.inceput (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);

}

bucla nulă ()

{

// Regiao de codigo para realizar a leitura dos botoes e sensor do dispositivo

senzor = digitalRead (ReedSwitch); Decremento = digitalRead (BotaoDecremento); Incremento = digitalRead (BotaoIncremento);

// Regiao de codigo para acumular a distancia percorrida

if (senzor == 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;

}

if (senzor == 1 && estado_anterior == 0)

{estado_anterior = 1; }

// Regiao de Codigo para Configurar o Raio

if (Incremento == 1 && EstadoAnteriorIncremento == 0) {EstadoAnteriorIncremento = 1; }

if (Incremento == 0 && EstadoAnteriorIncremento == 1)

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

void ConfiguraRaio ()

{

octet RaioRoda = 0;

// Imprimir mensagem pentru digitar o raio em cm

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

do

{

lcd.setCursor (6, 1);

Incremento = digitalRead (BotaoIncremento);

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

if (Incremento == 1 && IncrementoAnterior == 0)

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

if (Incremento == 0 && IncrementoAnterior == 1)

{IncrementoAnterior = 0; }

if (Decremento == 1 && DecrementoAnterior == 0)

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

if (Decremento == 0 && DecrementoAnterior == 1)

{DecrementoAnterior = 0; }

lcd.setCursor (6, 1);

lcd.print (RaioRoda);

} while (BotaoEnter == 0);

lcd.clear ();

EEPROM.write (PosRaio, RaioRoda);

întoarcere; }

Din acest cod, probabil, vă va calcula distanța cu Arduino.

Pasul 4: Concluzie

Prin urmare, dacă doriți propriul PCB, îl puteți obține prin acest link de pe site-ul PCBWay.com. Pentru aceasta, puteți accesa site-ul web, vă puteți crea contul și puteți obține propriile PCB-uri.

Laboratorul Silícios mulțumește UTSOURCE pentru a oferi componentele electronice pentru a crea acest proiect.

Recomandat: