Inhoudsopgave:

PCBWay Arduino Fietskilometerteller - Ajarnpa
PCBWay Arduino Fietskilometerteller - Ajarnpa

Video: PCBWay Arduino Fietskilometerteller - Ajarnpa

Video: PCBWay Arduino Fietskilometerteller - Ajarnpa
Video: How to add more PINs to Arduino with custom PCB from @PCBWay #arduino #hardware #electronics #diy 2024, November
Anonim
PCBWay Arduino Fietskilometerteller
PCBWay Arduino Fietskilometerteller

In veel voertuigen zijn er apparaten die de afgelegde afstand berekenen en die essentieel zijn voor het presenteren van informatie aan de bestuurder.

Door deze informatie is het dus mogelijk om de afgelegde afstand tussen twee punten te volgen, bijvoorbeeld via de kilometerteller van het voertuig.

Benodigdheden

01 x PCBWay aangepaste PCB

01 x Arduino UNO - UTSOURCE

01 x LCD 16x2 scherm - UTSOURCE

01 x Breadboard - UTSOURCE

01 x draadjumpers - UTSOURCE

01 x 10kR roterende potentiometer - UTSOURCE

01 x UTSOURCE Reed-schakelaar - UTSOURCE

Daarom leren we u in dit artikel hoe u uw afstandsberekeningsapparaat monteert met behulp van de reed-schakelaarsensor.

Stap 1: Het project

Het project
Het project

Het volgende project is gemaakt om de afgelegde afstand met de fiets van de sportschool te berekenen. Daarnaast leer je programmeren voor het project.

Dit project heeft drie functionaliteiten:

  • Bereken de afgelegde afstand met de fiets;
  • Configuratie van de opstartradius van het apparaat;
  • Aanpasbaar aan elke fiets.

Om toegang te krijgen tot deze functionaliteiten, gebruikt de gebruiker de drie knoppen van het systeem. Elke knop heeft uw functionaliteit. In het systeem hebben we de volgende knoppen:

Increment-knop: deze wordt gebruikt om de optie in te voeren om de straal van de wielen te configureren en de straalwaarde te verhogen;

Decrement-knop: deze wordt gebruikt om de optie om de straal van de wielen te configureren, te verlagen;

Enter-knop: deze wordt gebruikt om de waarde van de straal in het systeem in te voeren.

Daarnaast hebben we de Reed Switch Sensor. Het is verantwoordelijk om te detecteren wanneer de wielen een volledige draai maken. Om dit te detecteren, moet er een magneet op de wielen worden geïnstalleerd.

De reed-schakelaar wordt weergegeven in de bovenstaande afbeelding.

Stap 2:

Dus elke keer dat de magneet de sensor nadert, zal deze de Reed Switch-sensor activeren. Het proces werkt via de volgende vergelijking:

Afgelegde afstand = 2 *π * straal * TurnNumber

Door deze vergelijking weten we wat de afgelegde afstand is die de fiets heeft afgelegd.

In de vergelijking wordt de straal door de gebruiker ingevoegd en het draainummer wordt berekend door het aantal omwentelingen van het wiel.

En om de omwentelingen van het wiel te detecteren is het nodig om een magneet in het fietswiel te installeren en om de Reed Switch Sensor bij het wiel te installeren.

Om het proces te vergemakkelijken, maken we een printplaat om de Reed Switch Sensor en de drie knoppen aan te sluiten. De printplaat wordt hieronder weergegeven in de onderstaande afbeelding.

Stap 3:

Afbeelding
Afbeelding

Zoals te zien is op de print is het mogelijk om de Arduino Nano te zien. Het is verantwoordelijk voor de controle van alle systemen. Daarnaast hebben we 5 JST connectoren.

De C1 t/m C4 connectoren worden gebruikt om de drie knoppen en de Reed Switch Sensor aan te sluiten. Nu wordt de C5-connector gebruikt om de LCD 16x2 I2C aan te sluiten.

Daarom kunt u via dit systeem het project in uw fiets installeren en de afgelegde afstandswaarde verkrijgen.

Hiervoor kunt u onderstaande code gebruiken.

#include #include

/*

Pinos de conex?o dos bot?es e sensor reed-schakelaar 8 - Sensor reed-schakelaar 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;

bytecont = 0;

unsigned long int VoltaCompleta = 0;

unsigned long int tempo_atual = 0, ultimo_tempo = 0;

zweven DistKm = 0;

niet-ondertekende int raio = 0; vlotter Distancia = 0;

ongeldige setup()

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

lcd.begin (16, 2);

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

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

lcd.setCursor(3, 0);

lcd.print(“Afstand”); lcd.setCursor(6, 1); lcd.print (Distancia);

lcd.setCursor(14, 1);

lcd.print(“km”);

raio = EEPROM.lezen (PosRaio);

}

lege lus()

{

//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

if(sensor == 0 && estado_anterior == 1) { VoltaCompleta++;

Distancia = (zwevend) (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(sensor == 1 && estado_anterior == 0)

{ estado_anterior = 1; }

//Regiao de Codigo para Configurar of Raio

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

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

{ EstadoAnteriorIncremento = 0; lcd.wissen(); ConfiguratieRaio(); } }

void ConfiguraRaio()

{

byte RaioRoda = 0;

//Imprimir mensagem para digitar of raio em cm

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

doen

{

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

}terwijl(BotaoEnter == 0);

lcd.wissen();

EEPROM.schrijven (PosRaio, RaioRoda);

opbrengst; }

Uit deze code berekent hij mogelijk je afstand met je Arduino.

Stap 4: Conclusie

Daarom, als u uw eigen PCB wilt, kunt u deze verkrijgen via deze link op de PCBWay.com-website. Hiervoor kunt u toegang krijgen tot de website, uw account aanmaken en uw eigen PCB's verkrijgen.

Het Silícios Lab bedankt UTSOURCE voor het aanbieden van de elektronische componenten om dit project te creëren.

Aanbevolen: