Talaan ng mga Nilalaman:

PCBWay Arduino Bisikleta Odometer: 4 na Hakbang
PCBWay Arduino Bisikleta Odometer: 4 na Hakbang

Video: PCBWay Arduino Bisikleta Odometer: 4 na Hakbang

Video: PCBWay Arduino Bisikleta Odometer: 4 na Hakbang
Video: Arduino Speedometer 2024, Nobyembre
Anonim
PCBWay Arduino Bicycle Odometer
PCBWay Arduino Bicycle Odometer

Sa maraming mga sasakyan, may mga aparato na kinakalkula ang distansya na nalakbay at mahalaga para sa pagpapakita ng impormasyon sa driver.

Sa gayon, sa pamamagitan ng impormasyong ito, posible na subaybayan ang distansya na naglakbay sa pagitan ng dalawang puntos, halimbawa, sa pamamagitan ng odometer ng sasakyan.

Mga gamit

01 x PCBWay Pasadyang PCB

01 x Arduino UNO - UTSOURCE

01 x LCD 16x2 Display - UTSOURCE

01 x Breadboard - UTSOURCE

01 x Mga Jumper sa Wire - UTSOURCE

01 x 10kR Rotary Potentiometer - UTSOURCE

01 x UTSOURCE Reed Switch - UTSOURCE

Samakatuwid, sa pamamagitan ng artikulong ito, tuturuan ka namin kung paano tipunin ang iyong aparato sa pagkalkula ng distansya gamit ang sensor ng reed switch.

Hakbang 1: Ang Proyekto

Ang proyekto
Ang proyekto

Ang sumusunod na proyekto ay nilikha upang makalkula ang distansya ng paglalakbay ng bisikleta ng gym. Bilang karagdagan, malalaman mo kung paano lumikha ng programa para sa proyekto.

Ang proyektong ito ay may tatlong pag-andar:

  • Kalkulahin ang distansya na nilakbay ng bisikleta;
  • Pag-configure ng Radius ng Startup ng Device;
  • Adaptable sa anumang bisikleta.

Upang ma-access ang mga pagpapaandar na ito, gagamitin ng gumagamit ang tatlong mga pindutan ng system. Ang bawat pindutan ay mayroong iyong pagpapaandar. Sa system mayroon kaming mga sumusunod na pindutan:

Pindutan ng Pagtaas: Magagamit ito upang ipasok ang pagpipilian upang mai-configure ang radius ng mga gulong at madagdagan ang halaga ng radius;

Button ng Pagbawas: Gagamitin ito upang mabawasan ang pagpipilian upang mai-configure ang radius ng mga gulong;

Ipasok ang Button: Gagamitin ito upang ipasok ang halaga ng radius sa system.

Bilang karagdagan, mayroon kaming Reed Switch Sensor. Ito ay responsable upang tuklasin kung ang mga gulong ay gumawa ng isang kumpletong pagliko. Para sa pagtuklas nito, kailangang mag-install ng magnet sa mga gulong.

Ang Reed Switch ay ipinakita sa Larawan sa itaas.

Hakbang 2:

Kaya, sa tuwing lalapit ang magnet sa sensor, magpapalipat-lipat ito ng sensor ng Reed Switch. Gumagana ang proseso sa pamamagitan ng sumusunod na equation:

Naglakbay sa Distansya = 2 * π * radius * TurnNumber

Sa pamamagitan ng equation na ito, malalaman natin kung ano ang distansya ng paglalakbay na isinagawa ng bisikleta.

Sa equation, ang radius ay ipinasok ng gumagamit, at ang Turn Number ay kinakalkula sa bilang ng mga liko ng gulong.

At upang makita ang pagliko ng gulong kinakailangan upang mai-install ang isang pang-akit sa gulong ng bisikleta at mai-install ang Reed Switch Sensor malapit sa Gulong.

Upang mas madali ang proseso, gumawa kami ng isang naka-print na circuit board upang ikonekta ang Reed Switch Sensor at ang tatlong mga pindutan. Ang Printed Circuit Board ay ipinakita sa ibaba sa Larawan sa ibaba.

Hakbang 3:

Larawan
Larawan

Tulad ng ipinakita sa PCB posible na makita ang Arduino Nano. Ito ay responsable upang makontrol ang lahat ng mga system. Bilang karagdagan, mayroon kaming 5 konektor sa JST.

Ang C1 hanggang C4 connectors ay ginagamit upang ikonekta ang tatlong mga pindutan at ang Reed Switch Sensor. Ngayon, ang C5 Connector ay ginagamit upang ikonekta ang LCD 16x2 I2C.

Samakatuwid, sa pamamagitan ng sistemang ito, maaari mong mai-install ang proyekto sa iyong bisikleta at makuha ang halaga ng nilakbay na distansya.

Para sa mga ito, maaari mong gamitin ang code na ipinakita sa ibaba.

# isama ang # isama

/*

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

# tukuyin ang MEMORIA 120

# tukuyin ang PosRaio 125

# tukuyin ang ReedSwitch 8

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

Const int rs = 2, tl = 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;

unsigned long int VoltaCompleta = 0;

unsigned long int tempo_atual = 0, ultimo_tempo = 0;

float DistKm = 0;

unsigned int raio = 0; float Distancia = 0;

walang bisa ang pag-setup ()

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

lcd.begin (16, 2);

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

kung (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);

}

walang bisa loop ()

{

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

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

// Regiao de codigo para acumular a distancia percorrida

kung (sensor == 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;

}

kung (sensor == 1 && estado_anterior == 0)

{estado_anterior = 1; }

// Regiao de Codigo para Configurar o Raio

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

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

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

walang bisa ConfiguraRaio ()

{

byte RaioRoda = 0;

// Imprimir mensagem para digitar o raio em cm

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

gawin

{

lcd.setCursor (6, 1);

Incremento = digitalRead (BotaoIncremento);

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

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

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

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

{IncrementoAnterior = 0; }

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

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

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

{DecrementoAnterior = 0; }

lcd.setCursor (6, 1);

lcd.print (RaioRoda);

} habang (BotaoEnter == 0);

lcd.clear ();

EEPROM.write (PosRaio, RaioRoda);

bumalik; }

Mula sa code na ito posible na kalkulahin ang iyong distansya sa iyong Arduino.

Hakbang 4: Konklusyon

Samakatuwid, kung nais mo ang iyong sariling PCB, maaari kang makakuha sa pamamagitan ng link na ito sa website ng PCBWay.com. Para dito, maaari mong ma-access ang website, lumikha ng iyong account, at makakuha ng iyong sariling PCB.

Pinasalamatan ng Silícios Lab ang UTSOURCE na mag-alok ng mga elektronikong sangkap upang likhain ang proyektong ito.

Inirerekumendang: