arduino + l298 + oyuncak motoru beni delirtecek

Başlatan Emre MERMİ, 23 Şubat 2017, 22:43:33

Emre MERMİ

Merhaba Hocalarım,

Arduino + android + bluetooth ile telefonla sesli kontrol devresi yapıyorum. Kafayı yiyeceğim ama projeyi yaparken.

En temelinden anlatayım belki buraya sorunu yazarken görürüm.

İlk olarak her şeyi hazır kullanıyorum. Yani l298 i de modül olarak aldım. Oyuncak arabayı söküp motorlarını bi döndüreyim projeye devam ederim dedim. Sorunun en büyüğü şu;

L298 e motorları bağladım. Sırayla ön motoru sağ sol arka motoru ileri geri yaptırayım dedim. Arka motorda sorun yok. Ön motor sağa dönüyor soladönmüyor.

void setup() {
 
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);

  delay(1000);
  digitalWrite(13, LOW);
  digitalWrite(12, LOW);
 
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH); 
  digitalWrite(12, LOW);    
  delay(1000);            
  
  
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  
  delay(1000); 
  
  
  digitalWrite(12, HIGH);
  digitalWrite(13, LOW);
  
  delay(1000); 
  
}


örneğin şu kod arka motorda sapa sağlam çalışıyor.  Motor bir ileri bir geri giriyor. Bağlantılarda sorun yok. ÖN motoru bağlıyorum.  Motor sağa dönüyor sonra duruyor daha sonra sola dönmesi gerekirken dönüyor.
Arduino üzerinde bağlı 12-13 kabloların yerini değiştiriyorum. Motor bekliyor, bekliyor , sağa dönüyor. Dalga geçer gibi :D
Acaba l298 de mi sorun var diye arka motoru bağlıyorum sorun yok çalışıyor düzgün. Diğer çıkışı deniyorum yine çalışmıyor.
Motorda mı sorun var diyorum motoru direk güç kaynağından elektrik vererek döndürüyorum sağa da sola da dönüyor.
Bir ara bişeyler yaptım. Ondan sonra sola dönmeye başladı bu sefer sağa dönmüyor


//L293D
//Motor A
const int motorPin1  = 9;  // Pin 14 of L293
const int motorPin2  = 10;  // Pin 10 of L293
//Motor B
const int motorPin3  = 6; // Pin  7 of L293
const int motorPin4  = 5;  // Pin  2 of L293

//This will run only one time.
void setup(){
 
    //Set pins as outputs
    pinMode(motorPin1, OUTPUT);
    pinMode(motorPin2, OUTPUT);
    pinMode(motorPin3, OUTPUT);
    pinMode(motorPin4, OUTPUT);
    
    //Motor Control - Motor A: motorPin1,motorpin2 & Motor B: motorpin3,motorpin4

    //This code  will turn Motor A clockwise for 2 sec.
    analogWrite(motorPin1, 180);
    analogWrite(motorPin2, 0);
    analogWrite(motorPin3, 180);
    analogWrite(motorPin4, 0);
    delay(5000); 
    //This code will turn Motor A counter-clockwise for 2 sec.
    analogWrite(motorPin1, 0);
    analogWrite(motorPin2, 180);
    analogWrite(motorPin3, 0);
    analogWrite(motorPin4, 180);
    delay(5000);
    
    //This code will turn Motor B clockwise for 2 sec.
    analogWrite(motorPin1, 0);
    analogWrite(motorPin2, 180);
    analogWrite(motorPin3, 180);
    analogWrite(motorPin4, 0);
    delay(1000); 
    //This code will turn Motor B counter-clockwise for 2 sec.
    analogWrite(motorPin1, 180);
    analogWrite(motorPin2, 0);
    analogWrite(motorPin3, 0);
    analogWrite(motorPin4, 180);
    delay(1000);    
    
    //And this code will stop motors
    analogWrite(motorPin1, 0);
    analogWrite(motorPin2, 0);
    analogWrite(motorPin3, 0);
    analogWrite(motorPin4, 0);
  
}


void loop(){
  

}


Şu şekilde pwm vereyim dedim. Yine aynı harekeyi yapıyor. Arka motor ileri geri ön motor sadece sağ yapıyor.
Bu arada motor dediğim de oyuncak arabanın üzerindeki motor. 9 v veriyorum. L298 de ısınıyor haliyle ama ona da nasıl çözüm bulacağımı bilemiyorum. Devre pille çalışacak. Acaba direnç mi atsam l298 çıkışına  ?

Yardımcı olursanız çok sevinirim.


mehmet


 


void setup() 
{
  Serial.end();
  
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
}

void loop() 
{
  digitalWrite(2, HIGH);
  digitalWrite(3, LOW);
  analogWrite(9, 100);
  delay(2000);
  
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  analogWrite(9, 0);
  delay(2000);
  
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  analogWrite(9, 100);
  delay(2000);
  
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  analogWrite(9, 0);
  delay(2000);


  digitalWrite(4, HIGH);
  digitalWrite(5, LOW);
  analogWrite(10, 100);
  delay(2000);
  
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  analogWrite(10, 0);
  delay(2000);
  
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
  analogWrite(10, 100);
  delay(2000);
  
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  analogWrite(10, 0);
  delay(2000); 
}
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Emre MERMİ

Hhocam yanıtınız için çok teşekkür ederim deneyeceğim yaptığınızı. Ama motorun bir tarafa dönüp diğer tarafa dönmemesi hakkında ne düşününüyorsunuz ?

serdararikan


Emre MERMİ

Motor normal adaptörden direk enerji verdiğimde çalışıyor ama ?

mehmet

delay() ile verilen zamanı biraz daha artırın.
Ancak gerilim kaynaklı da olabilir. 12V a
çıkarıp deneseniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Emre MERMİ

Hocam 12 v denedim delay ı arttırıp da deneyeceğim.