31
Motor kontrol uygulamaları / 18. Potansiyometre ile dc motor uygulaması
« : 25 Nisan 2021, 02:27:14 »
Analog A0 pininden bir potansiyometre üzerindeki gerilim değerleri okunacak ve motor hız kontrolü yapılacaktır. Potansiyometre üzerinde okunan değer 0-5V arasında ölçeklendirilmelidir. 0V-2.5V arasında belirli bir yönde dönen motor, 2.5V-5V arasında gerilim değerlerinde tam tersi yönde dönmelidir. Motorunuzun hızı her 0.5V aralıkta biraz daha hızlanmalıdır. (0-0.5V arasında belli bir hızda, 0.5-1V arasında daha hızlı olacak şekilde 2.5V’a kadar hızlanmalıdır. 2.5V’un üzerinde ise diğer dönme yönünde yine aynı gerilim aralığı ile hızı giderek artmalıdır.)
Kod: [Seç]
int pot_pin = A0; //Potansiyometreyi A0 pinine tanımlıyoruz
int ileri_pin = 5;
int geri_pin = 3;
// DEGISKENLER
int pot_deger = 0;
int hiz = 0;
int voltaj = 0;
void setup()
{
pinMode(pot_pin, INPUT);
pinMode(ileri_pin, OUTPUT);
pinMode(geri_pin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
pot_konumunu_oku_degerlendir();
}
void pot_konumunu_oku_degerlendir()
{
pot_deger = analogRead(pot_pin);
voltaj = map(pot_deger, 0, 1023, 0, 5000);
Serial.print(" Voltaj: "); Serial.print(voltaj); Serial.print(" mV ");
if(pot_deger < 10) {hiz = 180; ileri_git(); Serial.print(" iLERi HIZ: "); Serial.println(hiz);}
if(pot_deger >= 10 && pot_deger < 102) {hiz = 195; ileri_git(); Serial.print(" iLERi HIZ: "); Serial.println(hiz);}
if(pot_deger >= 102 && pot_deger < 207) {hiz = 210; ileri_git(); Serial.print(" iLERi HIZ: "); Serial.println(hiz);}
if(pot_deger >= 207 && pot_deger < 307) {hiz = 225; ileri_git(); Serial.print(" iLERi HIZ: "); Serial.println(hiz);}
if(pot_deger >= 307 && pot_deger < 409) {hiz = 240; ileri_git(); Serial.print(" iLERi HIZ: "); Serial.println(hiz);}
if(pot_deger >= 409 && pot_deger < 500) {hiz = 255; ileri_git(); Serial.print(" iLERi HIZ: "); Serial.println(hiz);}
if(pot_deger >= 500 && pot_deger < 524) {hiz = 0; dur(); Serial.print(" HIZ: "); Serial.println(hiz);}
if(pot_deger >= 524 && pot_deger < 614) {hiz = 180; geri_git(); Serial.print(" GERi HIZ: "); Serial.println(hiz);}
if(pot_deger >= 614 && pot_deger < 716) {hiz = 195; geri_git(); Serial.print(" GERi HIZ: "); Serial.println(hiz);}
if(pot_deger >= 716 && pot_deger < 818) {hiz = 210; geri_git(); Serial.print(" GERi HIZ: "); Serial.println(hiz);}
if(pot_deger >= 818 && pot_deger < 920) {hiz = 225; geri_git(); Serial.print(" GERi HIZ: "); Serial.println(hiz);}
if(pot_deger >= 920 && pot_deger < 1013) {hiz = 240; geri_git(); Serial.print(" GERi HIZ: "); Serial.println(hiz);}
if(pot_deger >= 1013) {hiz = 255; geri_git(); Serial.print(" GERi HIZ: "); Serial.println(hiz);}
}
void ileri_git()
{
analogWrite(ileri_pin, hiz);
digitalWrite(geri_pin, LOW);
}
void geri_git()
{
digitalWrite(ileri_pin, LOW);
analogWrite(geri_pin, hiz);
}
void dur()
{
digitalWrite(ileri_pin, LOW);
digitalWrite(geri_pin, LOW);
}