ARDUİNO DC MOTOR HIZ ÖLÇER YAPIMI
ARDUİNO DC MOTOR HIZ ÖLÇER YAPIMI
DC motorların hız ölçümü projelerde yaşanan en büyük sorunlardan birisidir , bu projemizde hız ölçer yapımını göstereceğiz.Motorların bazıları patinaj yaptığından dolayı arabalarda düz gitmeme sorunu yaşanmaktadır.Bu sorunu dc motorun hızını ölçerek ve motorların birbirine eşitleme algoritmasını kullanarak çözebiliriz.
Kullanılacak sensör kızılötesi IR sensördür.Bu sensörün temelde çalışma mantığı çok basittir.DC motor üzerine yerleştirilen delikli disk sensörün görebileceği şekilde konumlandırılır.Temel mantık delik saymadır.Örneğin diskinizde 20 delik olsun sensör 20 kez delik gördüğünde motor 1 tur atmış demektir.1 turu kaç sanayinede attığını hesaplar ve motorun hızını bulur.
Projemizde Kullanılan Malzemeler
- Arduino UNO
- 16×2 LCD Ekran
- DC Motor
- LM393 Hız Sensörü
- L298N Motor Sürücü
- Mini Breadboard
- Potansiyometre
- Jumper Kablo
Sensörün çalışma mantığı:
Sensör kızılötesi iletişim metodunu kullanarak, verici ile alıcı arasına engel girdiğinde çıkış low, engel olmadığında ise high verir. Yani bir buton gibi devreyi açıp kapatır diyebilir. Bu high low durumları bir yorumlayıcı ile işlenerek saydırma işlemi yapılır ve motorun hızı, devri ölçülür.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
| #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3f, 16, 2); int in1 = 9; int in2 = 5; int ena = 6; const int dataIN = 2; unsigned long prevmillis; unsigned long duration; unsigned long lcdrefresh; int rpm; boolean currentstate; boolean prevstate; void setup() { Serial.begin(9600); lcd.begin(); lcd.backlight(); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(ena, OUTPUT); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); pinMode(dataIN,INPUT); prevmillis = 0; prevstate = LOW; } void loop() { currentstate = digitalRead(dataIN); if ( prevstate != currentstate) { if ( currentstate == HIGH ) { duration = ( micros() - prevmillis ); rpm = (6000000/duration); prevmillis = micros(); } } prevstate = currentstate; if ( ( millis()-lcdrefresh ) >= 100 ) { lcd.clear(); lcd.setCursor(0,0); lcd.print( "Motor Hizi" ); lcd.setCursor(0,1); lcd.print( "RPM = " ); lcd.print(rpm); lcdrefresh = millis(); } int pot_deger = analogRead(1); int motor_hizi = map(pot_deger, 0, 1023, 255, 0); analogWrite(ena, motor_hizi); } |
merhabalar lcd ekranın baglantı pinlerinin hangileri hangisi oldugu yazmıyor elimdeki lcd de sizinki gibi yandan giriş yok
YanıtlaSill2s modulu kullanılmış copy paste olduğundan bakmamış bile olaya..
SilBu yorum yazar tarafından silindi.
YanıtlaSil