Tabla de contenido:

Odómetro de bicicleta PCBWay Arduino: 4 pasos
Odómetro de bicicleta PCBWay Arduino: 4 pasos

Video: Odómetro de bicicleta PCBWay Arduino: 4 pasos

Video: Odómetro de bicicleta PCBWay Arduino: 4 pasos
Video: Velocímetro para una bici de spinning, mediante Arduino y sensor ultrasónico 2024, Noviembre
Anonim
Odómetro de bicicleta PCBWay Arduino
Odómetro de bicicleta PCBWay Arduino

En muchos vehículos, existen dispositivos que calculan la distancia recorrida y son fundamentales para presentar información al conductor.

Así, a través de esta información, es posible monitorizar la distancia recorrida entre dos puntos, por ejemplo, a través del cuentakilómetros del vehículo.

Suministros

01 x PCBWay PCB personalizado

01 x Arduino UNO - UTSOURCE

01 x Pantalla LCD 16x2 - UTSOURCE

01 x Placa de pruebas - UTSOURCE

01 x puentes de alambre - UTSOURCE

Potenciómetro rotativo 01 x 10kR - UTSOURCE

01 x Interruptor de lengüeta UTSOURCE - UTSOURCE

Por lo tanto, a través de este artículo, le enseñaremos cómo ensamblar su dispositivo de cálculo de distancia utilizando el sensor de interruptor de láminas.

Paso 1: el proyecto

El proyecto
El proyecto

El siguiente proyecto fue creado para calcular la distancia recorrida por la bicicleta del gimnasio. Además, aprenderá a crear programación para el proyecto.

Este proyecto tiene tres funcionalidades:

  • Calcule la distancia recorrida en bicicleta;
  • Configuración del radio de inicio del dispositivo;
  • Adaptable a cualquier bicicleta.

Para acceder a estas funcionalidades, el usuario utilizará los tres botones del sistema. Cada botón tiene su funcionalidad. En el sistema tenemos los siguientes botones:

Botón Incrementar: Se utilizará para ingresar en la opción de configurar el radio de las ruedas e incrementar el valor del radio;

Botón Disminuir: Se utilizará para disminuir la opción de configurar el radio de las ruedas;

Botón Enter: Se utilizará para insertar el valor del radio en el sistema.

Además, tenemos el Sensor Reed Switch. Se encarga de detectar cuando las ruedas hacen un giro completo. Para detectar esto, es necesario instalar un imán en las ruedas.

El interruptor de lengüeta se presenta en la Figura anterior.

Paso 2:

Por lo tanto, cada vez que el imán se acerca al sensor, activará el sensor del interruptor de lengüeta. El proceso funciona mediante la siguiente ecuación:

Distancia recorrida = 2 * π * radio * TurnNumber

A través de esta ecuación sabremos cuál es la distancia recorrida realizada por la bicicleta.

En la ecuación, el usuario inserta el radio y el número de giro se calcula mediante el número de vueltas de la rueda.

Y para detectar los giros de la rueda es necesario instalar un imán en la rueda de la bicicleta e instalar el Sensor Reed Switch cerca de la Rueda.

Para facilitar el proceso, creamos una placa de circuito impreso para conectar el sensor Reed Switch y los tres botones. La placa de circuito impreso se presenta a continuación en la figura siguiente.

Paso 3:

Imagen
Imagen

Como se muestra en la PCB es posible ver el Arduino Nano. Es responsable de controlar todos los sistemas. Además, contamos con 5 conectores JST.

Los conectores C1 a C4 se utilizan para conectar los tres botones y el sensor de interruptor de lengüeta. Ahora, el conector C5 se utiliza para conectar el LCD 16x2 I2C.

Por tanto, a través de este sistema, puede instalar el proyecto en su bicicleta y obtener el valor de la distancia recorrida.

Para ello, puede utilizar el código que se presenta a continuación.

#include #incluya

/*

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;

unsigned long int VoltaCompleta = 0;

unsigned long int tempo_atual = 0, ultimo_tempo = 0;

flotador DistKm = 0;

unsigned int raio = 0; flotar Distancia = 0;

configuración vacía ()

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

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

}

bucle vacío ()

{

// Regiao de codigo para realizar una 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 = (flotar) (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;

}

si (sensor == 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 (); }}

ConfiguraRaio vacío ()

{

byte RaioRoda = 0;

// Imprimir mensagem para digitar o raio em cm

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

hacer

{

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

impresión lcd (RaioRoda);

} while (BotaoEnter == 0);

lcd.clear ();

EEPROM.write (PosRaio, RaioRoda);

regreso; }

A partir de este código, posiblemente calculará su distancia con su Arduino.

Paso 4: Conclusión

Por lo tanto, en caso de que desee su propia PCB, puede obtenerla a través de este enlace en el sitio web PCBWay.com. Para ello, puede acceder al sitio web, crear su cuenta y obtener sus propias PCB.

Silícios Lab agradece a UTSOURCE por ofrecer los componentes electrónicos para crear este proyecto.

Recomendado: