• برچسب ها: آردوینو | سنسور
  • 1.0/5 rating 1 vote
  • یکشنبه, 18 مرداد 1394

با استفاده از آردوینو می توانید به راحتی برای اسکیت برد خود یک سرعت سنج بسازید. این آموزش به صورت گام به گام شما را در ساخت این سرعت سنج راهنمایی می کند.

 

قطعات مورد نیاز:

آردوینو Uno × 1  
LCD کاراکتری 1602 × 1  
مقاومت های 10 کیلو اهم و 47 اهم × 1  
سیم × 1  
پتانسیومتر 10K × 1  
باتری 9 ولتی و آداپتور برای اتصال این باتری به آردوینو × 1  
رله مغناطیسی × 1  
آهنربای کوچک × 1  
جعبه پلاستیکی برای حفاظت از آردوینو × 1  
اسکیت برد × 1  
چسب × 1  
هویه × 1  
سیم لحیم × 1  

 طرز ساخت:


 

ابتدا آهنربا را به یکی از چرخ های عقب اسکیت خود بچسبانید. می توانید یک سوراخ نه چندان عمیق به اندازه ی آهنربای خود در چرخ ایجاد کرده و آهنربا را درون آن سوراخ بچسبانید به طوری که تقریبا نصف ارتفاع آهنربا در داخل سوراخ قرار گیرد. این آهنربا قرار است باعث سوویچ کردن رله ی مغناطیسی شده و به این ترتیب تعداد دور زدن های چرخ محاسبه گردد.

سیم بندی و اتصالات :


مرحله ی بعدی سیم بندی سیستم و چگونگی اتصالات الکترونیکی آن است. دیاگرام مداری سیستم را می توانید در بالا مشاهده کنید. اتصالاتی که با رنگ قرمز نشان داده شده اند به پین +5V آردوینو و اتصالات به رنگ سبز به پین GND آردوینو متصل هستند. قبل از اینکه اتصالات مربوط به LCD را کامل کنید ابتدا باید این نمایشگر را در جایی بر روی اسکیت خود قرار داده و ثابت کنید. می توانید LCD را در قسمت جلوی اسکیت خود قرار داده و در زیر آن یک سوراخ برای عبور دادن سیم های متصل به LCD ایجاد نمایید. همچنین رله ی مغناطیسی باید مقابل چرخ عقب اسکیت که آهنربا روی آن قرار دارد متصل شود. پس از برقراری اتصالات و سیم بندی ها برد آردوینو و باتری را در جعبه ی محافظ پلاستیکی قرار داده و آن را در قسمت پشت اسکیت خود، زیر نمایشگر LCD ثابت کنید.


برنامه نویسی:

پس از اینکه سیم بندی و اتصالات را مطابق شکل انجام داده و از صحت آن اطمینان حاصل کردید حال نوبت به کد نویسی آردوینو می رسد. کد مربوط به سرعت سنج را می توانید در زیر مشاهده نمایید و آن را در یک اسکچ جدید کپی کرده و پس از کامپایل کردن بر روی آردوینوی خود آپلود نمایید.


Int val;
Long last=0;
Int stat=LOW;
Int stat2;
Int contar=0;
Int displayrpm;
Int sens=75;         //this value indicates the limit reading between dark and light,
// it has to be tested as it may change on the
//distance the leds are placed.
Int nPalas=1;      //the number of blades of the propeller 
Int milisegundos=500;   //the time it takes each reading
#include  
LiquidCrystal lcd(12, 11, 5, 4 , 3,2 );
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
lcd.begin(16,2);
}
Void loop()
{
val=analogRead(0);
if(val<sens)
stat=LOW;
else
stat=HIGH;
digitalWrite(13,stat);     //as IR light is invisible for us, the led on pin 13
//indicate the state of the circuit.
if(stat2!=stat){      //counts when the state change, that’s from dark to light or
// from light to dark. Remember that IR light is invisible for us.
contar++;
stat2=stat;
}
if(millis()-last>=milisegundos){
double rps=((double)contar/nPalas)/2.0*1000.0/milisegundos;
double rpm=((double)contar/nPalas)/2.0*60000.0/(milisegundos);
displayrpm=rpm;
Serial.print((contar/2.0));Serial.print("RPS");Serial.print(rps);
Serial.print("RPM");Serial.print(rpm);Serial.print("VAL");Serial.println(val);
contar=0;
last=millis();
Serial.print("MPH");
Serial.print(rpm*0.0080622311);
LCDPrint();
}
}
void
LCDPrint()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("MPH");
lcd.setCursor(0,1);
lcd.print(displayrpm*0.0080622311);
lcd.setCursor(8,0);
lcd.print("RPM");
lcd.setCursor(8,1);
lcd.print(displayrpm);
return;
}

افزودن نظر
  • هیچ نظری یافت نشد