46
Motor kontrol uygulamaları / Ynt: 18. Potansiyometre ile dc motor uygulaması
« : 25 Nisan 2021, 18:07:26 »Kod: [Seç]
int pot_pin = A0; //Potansiyometreyi A0 pinine tanımlıyoruz
int ileri_pin = 5;
int geri_pin = 3;
int pwm_pin = 9;
// 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);
pinMode(pwm_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()
{
digitalWrite(ileri_pin, HIGH);
digitalWrite(geri_pin, LOW);
analogWrite(pwm_pin, hiz);
}
void geri_git()
{
digitalWrite(ileri_pin, LOW);
digitalWrite(geri_pin, HIGH);
analogWrite(pwm_pin, hiz);
}
void dur()
{
digitalWrite(ileri_pin, LOW);
digitalWrite(geri_pin, LOW);
digitalWrite(pwm_pin, LOW);
}
Bu da röleli ve mosfetli tasarım. Röleler ileri ya da geri yön için motora yol verir. Mosfet ise arduinodan gelen pwm sinyaline göre ile motor hızını ayarlar. Daha önce verdiğim devreden daha sağlıklı çalışır. Diğerinde 5 Volt motor kullanmak gerek. Bunda farklı voltajlarda çalışan motorları kullanılabilir.