Jeśli jesteś właścicielem tej strony, możesz wyłączyć reklamę poniżej zmieniając pakiet na PRO lub VIP w panelu naszego hostingu już od 4zł!

Prędkościomierz do roweru


Pokarzę wam jak zbudować licznik rowerowy pokazujący prędkość za pomocą wskazówki
jak w samochodzie. Oprócz tego będzie pokazywał całkowity dystans, prędkość, średnią prękość,
czas podróży i temperaturę.

Potrzebne materiały:

-arduino
-rower i czujnik obrotów z licznika
-wyświetlacz LCD
-serwo
-płytka stykowa
-kabelki połączeniowe
-bateria 9V
-rezystory 1.2k Ω
-rezystor 4.7kΩ
-potencjometr 10k Ω
-termometr ds18b20
-przycisk
-przełącznik
potrzebne części

Krok 1:

Na początek należy wszystko połączyć według zdjęcia które wklejam poniżej. Zamieszczam również
słowny opis gdyby wystąpiły jakieś problemy. Na obrazku wszystkie czerwone połączenia idą do 5V
a niebieskie do masy.

połączenie prędkościomierza
połączenie

Wyświetlacz lcd:
VSS --> GND Arduino
VDP --> 5V Arduino
VO --> wyjście na potencjometrze(pozostałe nóżki potencjometru do 5V i masy w Arduino)
RS --> pin 12 Arduino
RW --> GND Arduino
E --> pin 11 Arduino
D4 --> pin 5 Arduino
D5 --> pin 4 Arduino
D6 --> pin 3 Arduino
D7 --> pin 2 Arduino
A --> 5V Arduino
K --> GND Arduino

Serwo:
zasilanie --> 5V Arduino
masa --> GND Arduino
dane--> pin 13 Arduino

Termometr:
napięcie --> 5V Arduino
masa--> GND Arduino
dane --> pin 1 Arduino
dane i napięcie należy połączyć za pomocą rezystora 4.7k Ω

Czujnik przy kole:
jeden koniec --> 5V Arduino
drugi koniec --> A0 Arduino i rezystor 1,2kΩ
druga nóżka rezystora do masy w Arduino

przycisk
jeden koniec --> 5V Arduino drugi --> A1 Arduino

Krok 2:

Czas na wgranie kodu i sprawdzenie czy wszystko działa. Potrzebne biblioteki:
One Wire
Dallas Temperature
Poniżej dodaję kod wyjaśnienie znajduje się w komentarzach.
/*
##################################################

Copyright by Nikodem Bartnik june 2014

##################################################
*/


//librarys
#include <Servo.h> 
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 1
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

//LCD display pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//servo name
Servo myservo;
//definition of variables
 long previous, triptime, time, impulses;
 float speedometer, dist, aspeed;
 int servo;
 int screen=1;
 //If you have other circuit of wheel you need change it
 float circuit=2.0;
 double temperature;
 
 
 void setup() {

 lcd.begin(16, 2);

  

  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  
  //servo definition and setting the tachometer to 0
  myservo.attach(6); 
  myservo.write(180);
  lcd.print("Bike tachometer");
  delay(1000);
  lcd.setCursor(5, 1);
  lcd.print("V 1.0");
  delay(4000);
  lcd.clear();
  delay(500);
  lcd.setCursor(0, 0);
  lcd.print("Dist:");
 } 



 void loop() {
   //if wheel turns
   if(analogRead(A0)>=300){
      //number of turns++
      impulses++;
      //count turn time
    time=(millis()-previous);
    //count speed
    speedometer=(circuit / time)*3600.0;
  previous=millis();
  Tachometer();
   
  Lcd();
  delay(100);
 }
   
 }  
   
   
   //display speed on tachometer
   void Tachometer(){
     //map speed 0-180 to servo
  speedometer=int(speedometer);
  servo = map(speedometer, 0, 72, 180, 0);
  
  myservo.write(servo);
   
   }
  
  
  
    void Lcd(){
       //when button is clicked
      if(analogRead(A1)>=1010){
        lcd.clear();
      screen++;
      if(screen==5){
          screen=1;
        }
      }
   
        if(screen==1){
        //displays speed
        lcd.setCursor(0, 1);
        lcd.print("Speed:");
        lcd.setCursor(7, 1);
        lcd.print(speedometer);
        lcd.print("km/h");
        }
        
        if(screen==2){
          
        //displays themperature
        temperature=sensors.getTempCByIndex(0);
        sensors.requestTemperatures(); 
        lcd.setCursor(0, 1);
        lcd.print("Temp:");
        lcd.setCursor(7, 1);
        lcd.print(temperature);
        lcd.print(" C");
        }
        
        if(screen==3){
          //displays averagr speed
        aspeed=dist/(millis()/1000.0)*3600.0;
        lcd.setCursor(0, 1);
        lcd.print("A.speed:");
        lcd.setCursor(8, 1);
        lcd.print(aspeed);
        lcd.print("km/h");
        }
        
        if(screen== 4){
          //diplays trip time
        triptime=millis()/60000;
        
        lcd.setCursor(0, 1);
        lcd.print("Time:");
        lcd.setCursor(7, 1);
        lcd.print(triptime);
    
        
        }
        
       
        lcd.setCursor(0, 0);
        lcd.print("Dist:");
        //calculation of the distance
       dist=impulses*circuit/1000.00;
       //dislays distance
       lcd.setCursor(6,0);
       lcd.print(dist);
       lcd.print("km");
      }                                                     

Krok 3:


prędkościomierz rowerowy opakowanie
prędkościomierz rowerowy opakowanie
Teraz trzeba to wszystko jakoś ładnie upakować ja wykorzystałem do tego pudełko,
które możecie kupić w jakim kolwiek sklepie. Dziury na serwo wyświetlacz i wszystko inne
zrobiłem za pomocą nożyka do tapet lub wiertarki. Tarczę zegara zrobiłem na komputerze
i wydrukowałem. Całość przyczepiłem do roweru za pomocą pasków a kabelki do czujnika
na kole przylutowałem. Teraz możemy wypróbować naszą konstrukcję wszystko powinno działać
jak na filmiku poniżej jeśli masz jakieś pytania napisz na nikodem.bartnik@gmail.com