Merhabalar, Arkadaşlar arduino uno klon kullanıyorum. Projemde arduino belli bir süre düzgün çalıştıktan sonra hata moduna geçiyor ve ne yaparsam yapayım bir türlü düzelmiyor ancak bilgisayara bağlayıp kodu içerisine tekrar attıktan sonra düzeliyor. Arduino da kodu size açıklayayım, Bir adet dc motor var bu motor bir tırpan işlevinde çalışıyor ve yani ince dalları buduyorum. İlk önce butona basılıp basılmadığını arduinodan okuyup daha sonra akım değerini okuyorum(acs712) eğer 19 amperden düşük ise motoru çalıştır, akım yüksek ise durdur(kalın dallarda motor tıkanıp motor yanmaması için). Temelde bu amaç üzerine kuruldu. Sahaya teste çıktığımda 5 - 10 dakika normal çalışıyor daha sonra motor sürücüsüne anlık pulse yollar gibi bir tepki veriyor makina ve sürekli bu modda kalıyor. Diğer fonksiyonlar çalışmıyor. Arduino yu resetliyorum yada arduinonun pilini çıkartıp takıyorum bazen düzeliyor bir süre sonra yine aynı hata ve daha sonra hiç düzelmiyor. Acaba sorun nerede olabilir ? Devre bağlantım Ardunio daki kod: #include "ACS712.h" #define butonoku A1 // A1 pininden butona basılıp basılmadığı okunacak int butondegeri = 0; int motor = 13; //aşağıda fonksiyonda A0 pini akım okuma için atandı ACS712 ACS(A0, 5.0, 1023, 66); // acs712 fonksiyonu için hazır yazılmış.Burada "66" değeri 30 amperlik versiyon içindir void setup() { Serial.begin(9600); pinMode(motor, OUTPUT); ACS.autoMidPoint(); // ACS712 fonksiyonunu çağır } void loop() { int mA = ACS.mA_DC(); // fonksiyon değerini mili amper cinsinden hesapladı butondegeri = analogRead(butonoku); //butona basılıp basılmadığını kontrol et if (butondegeri==0) // Butona basılmadıysa motoru durdur { Serial.println("butona basilmadi"); Serial.println(butondegeri); digitalWrite(motor,LOW); delay(200); } else // Butona basıldığında motoru enerjilendir. Akım değerini oku { Serial.println("******butona basildi******* "); Serial.println("akim ma:"); Serial.println(mA); digitalWrite(motor,HIGH); if (mA>19001) { digitalWrite(motor,LOW); Serial.println("akim çok yüksek motor koruması"); delay(5000); } else if (mA<=19000) { digitalWrite(motor,HIGH); Serial.println("motor calisiyor ve akim normal"); } delay(200); } } |
Bildirim