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ł! Do you want to support owner of this site? Click here and donate to his account some amount, he will be able to use it to pay for any of our services, including removing this ad.

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

Reklama



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