Mundarija:

PCBWay Arduino velosiped odometri: 4 qadam
PCBWay Arduino velosiped odometri: 4 qadam

Video: PCBWay Arduino velosiped odometri: 4 qadam

Video: PCBWay Arduino velosiped odometri: 4 qadam
Video: PENGAMANAN SEPEDA MOTOR MENGGUNAKAN RFID DENGAN SISTEM PERINGATAN DAN TRACKER || MENYALAKAN KONTAK 2024, Noyabr
Anonim
PCBWay Arduino velosiped odometri
PCBWay Arduino velosiped odometri

Ko'pgina transport vositalarida haydovchiga ma'lumot taqdim etish uchun zarur bo'lgan masofani hisoblaydigan qurilmalar mavjud.

Shunday qilib, bu ma'lumot orqali ikki nuqta orasidagi masofani, masalan, avtomobil odometri orqali kuzatish mumkin.

Ta'minotlar

01 x PCBWay maxsus PCB

01 x Arduino UNO - UTSOURCE

01 x LCD 16x2 displey - UTSOURCE

01 x Non paneli - UTSOURCE

01 x simli o'tish moslamalari - UTSOURCE

01 x 10kR aylanadigan potentsiometr - UTSOURCE

01 x UTSOURCE Reed Switch - UTSOURCE

Shuning uchun, ushbu maqola orqali biz sizga qamish kaliti sensori yordamida masofani hisoblash moslamasini yig'ishni o'rgatamiz.

1 -qadam: Loyiha

Loyiha
Loyiha

Quyidagi loyiha sport zali velosipedining bosib o'tgan masofasini hisoblash uchun yaratilgan. Bundan tashqari, siz loyiha uchun qanday dastur tuzishni o'rganasiz.

Ushbu loyiha uchta funktsiyaga ega:

  • Velosipedda o'tgan masofani hisoblang;
  • Qurilmani ishga tushirish radiusi konfiguratsiyasi;
  • Har qanday velosipedga moslashadi.

Ushbu funktsiyalarga kirish uchun foydalanuvchi tizimning uchta tugmachasidan foydalanadi. Har bir tugma sizning funksiyangizga ega. Tizimda bizda quyidagi tugmalar mavjud:

Kattalashtirish tugmasi: g'ildiraklar radiusini sozlash va radius qiymatini oshirish variantini kiritish uchun ishlatiladi;

Kamaytirish tugmasi: g'ildiraklar radiusini sozlash variantini kamaytirish uchun ishlatiladi;

Kirish tugmasi: Bu tizimga radius qiymatini kiritish uchun ishlatiladi.

Bundan tashqari, bizda qamish almashtirish sensori mavjud. G'ildiraklar to'liq burilishni aniqlaydi. Buni aniqlash uchun g'ildiraklarga magnit o'rnatish kerak.

Reed Switch yuqoridagi rasmda keltirilgan.

2 -qadam:

Shunday qilib, magnit har safar sensorga yaqinlashganda, Reed Switch sensorini ishga tushiradi. Jarayon quyidagi tenglama orqali ishlaydi:

Sayohat qilingan masofa = 2 * π * radiusi * TurnNumber

Bu tenglama orqali biz velosipedda qancha masofani bosib o'tganini bilib olamiz.

Tenglamada radius foydalanuvchi tomonidan kiritiladi va burilish raqami g'ildirakning burilishlari soni bo'yicha hisoblanadi.

G'ildirakning burilishini aniqlash uchun velosiped g'ildiragiga magnit o'rnatish va g'ildirak yonidagi qamish sensori o'rnatilishi kerak.

Jarayonni osonlashtirish uchun biz Reed Switch Sensor va uchta tugmani ulash uchun bosilgan elektron platani yaratamiz. Chop etilgan elektron karta quyidagi rasmda keltirilgan.

3 -qadam:

Rasm
Rasm

PCBda ko'rsatilgandek, Arduino Nano -ni ko'rish mumkin. U barcha tizimlarni boshqarish uchun javobgardir. Bundan tashqari, bizda 5 ta JST ulagichi bor.

C1 to C4 konnektorlari uchta tugmachani va qamish tugmachasini ulash uchun ishlatiladi. Endi C5 ulagichi 16x2 I2C LCD -ni ulash uchun ishlatiladi.

Shunday qilib, ushbu tizim orqali siz loyihani velosipedingizga o'rnatib, bosib o'tgan masofa qiymatini olishingiz mumkin.

Buning uchun siz quyida keltirilgan koddan foydalanishingiz mumkin.

#qo'shing #qo'shing

/*

Sensorli qamish tugmasi 8 - Sensorli qamish tugmasi 9 - Dekremento 12 - Incremento 11 - Kirish */

#MEMORIA 120 ni aniqlang

#PosRaio 125 ni aniqlang

#ReedSwitch 8 ni aniqlang

#BotaoEnterOk 11ni belgilang #BotaoIncremento 12 ni belgilang #BotaoDecremento 9ni aniqlang.

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

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

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

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

bayt davomi = 0;

imzosiz uzoq int VoltaCompleta = 0;

imzosiz uzoq int tempo_atual = 0, ultimo_tempo = 0;

float DistKm = 0;

imzosiz int raio = 0; suzuvchi masofa = 0;

bo'sh o'rnatish ()

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

lcd.begin (16, 2);

// Konfiguratsiyani sozlash yoki sozlash

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

}

bo'sh halqa ()

{

// Datchiklar va sensorli displeylar bilan ishlash

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

// Regiao de codigo para acumular a distancia percorrida

agar (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;

}

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

{estado_anterior = 1; }

// Regioo Codigo uchun konfiguratsiya yoki Raio

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

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

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

bo'sh ConfiguraRaio ()

{

bayt RaioRoda = 0;

// Raqamli raqamlar sonini o'lchash

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

qilmoq

{

lcd.setCursor (6, 1);

Incremento = digitalRead (BotaoIncremento);

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

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

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

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

{IncrementoAnterior = 0; }

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

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

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

{DecrementoAnterior = 0; }

lcd.setCursor (6, 1);

lcd.print (RaioRoda);

} while (BotaoEnter == 0);

lcd.clear ();

EEPROM.write (PosRaio, RaioRoda);

qaytish; }

Bu koddan kelib chiqib, u sizning Arduino bilan masofangizni hisoblab chiqadi.

4 -qadam: Xulosa

Shuning uchun, agar siz o'zingizning shaxsiy PCB -ni xohlasangiz, PCBWay.com veb -saytidagi ushbu havola orqali olishingiz mumkin. Buning uchun siz veb -saytga kirishingiz, hisob qaydnomangizni yaratishingiz va o'zingizning shaxsiy kartangizni olishingiz mumkin.

Silícios laboratoriyasi UTSOURCEga ushbu loyihani yaratish uchun elektron komponentlarni taklif qilgani uchun minnatdorchilik bildiradi.

Tavsiya: