Yarın soru üzerinde biraz daha çalışacağım. Biraz kodlayabildim şimdilik..yarın burada paylaşırım.Yapıp da sonuçlandıramadığınız çalışma varsa çalışmayı paylaşın kalan tarafına yardımcı olayım.
Röle ile motora yön verilebilir ama pwm çıkış akımı motor sürmeye yetmeyeceği için sürücü gerekmez mi? sürücü kullanılınca da yön zaten yapılabiliyor üstünden diye biliyorum.Ödeve göre yapılması daha doğru. Bu soruda
püf noktası "map()" komutu. Adc girişi
0-1023 arası değer alır. Bunu map ile çözümleyin.
0-500 arası ve 525-1023 arasını değerlerndirin.
Sağ-sol için röle kullanın.
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);
}
Röle ve tek mosfet yeterli pwm için.Röle ile motora yön verilebilir ama pwm çıkış akımı motor sürmeye yetmeyeceği için sürücü gerekmez mi? sürücü kullanılınca da yön zaten yapılabiliyor üstünden diye biliyorum.
Ben sadece röle sanmıştım, yanıtınız için teşekkür ederim bu şekilde kullanmayı bilmiyordum.Röle ve tek mosfet yeterli pwm için.
Ayrıca köprü sistemlerde akım artınca
problemler çoğalır.
High side transistörlerin baz gerilimlerini
hesapedebilirsiniz.
Daha kolayı high side PNP kullanmak. Ama
yine de 5V üzerine çıkmak gerekli.
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);
}
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?