Çizgi İzleyen Robotum 0 çiziyor

Selam çizgi izleyen robotumu videonuza bakarak hepsini eksiksiz yaptım fakat robotumu yere koyunca tek teker dönüyor . Kaldırdığımda ise diğer teker de çalışıyor. Proje ödevim az vakit kaldı araştırdım bulamadım lütfen yardımcı olur musunuz ?

Dönmeyen tekerlek çalışırken havaya kaldırdığında tutmaya çalış eğer hemen duruyorsa çarklarda bir sorun vardır. Eğer Güçlü bir şekilde dönüyorsa sensörleri bi gözden geçir ve çizginin çok kalın ve çok ince olmamasına dikkat et ve çizginin iyice siyah olduğuna da dikkat et.

Bağlantıları kontrol et ,sensörü ayrıca test edip serial monitorden değer al ona göre kodu şekillendir.

İyi akşamlar öncelikle yanıtınız için teşekkür ediyorum. İki tekerlek de aynı güçte dönüyor. Havada iken karttan yanıp söndüğünü görebiliyorum ama siyah beyaz bir yolda ise hep üçü de birden yanıyor.

1 Beğeni

İyi akşamlar öncelikle yanıtınız için teşekkür ediyorum. Sensörleri mavi trimpotlardan ayarladım elimi koyduğum zaman yanıp sönüyorlar. Fakat sensörlerin altına siyah beyaz bir yol koyduğumda serial monitörden hep 1,1,1 değerini alıyorum ama robotu yukarı kaldırdığımda elimi getirdiğimde değerler değişiyor.

1 Beğeni

Hangi sensörü kullanıyorsunuz acaba?

https://www.robotistan.com/4lu-cizgi-izleyen-sensor-seti-4-way-tracking-module?#ins_eureka=eyJjYW1wYWlnbklkIjowLCJrZXl3b3JkIjoiw6dpemdpIHNlbnPDtnIiLCJvcmRlciI6MSwicHJvZHVjdElkIjoiMTMxNTgiLCJzZWFyY2hJZCI6IjE2MDgzNjc2MjFJT09RWEVKb1RMIn0%3D bunu kullanıyorum.

Bağlantıları kontrol edermisiniz ve şu kodu tekrar yüklermisiniz:

    #define SensorSol 10  
    #define SensorOrta 11
    #define SensorSag 12

#define MotorR1 6
    #define MotorR2 7 // Sensör ve Motorların Arduino'ya bağladığımız pinlerini tanımlıyoruz.
    #define MotorRE 9

    #define MotorL1 5
    #define MotorL2 4
    #define MotorLE 3



    void setup() {
      
      pinMode(SensorSol, INPUT);
      pinMode(SensorOrta, INPUT);
      pinMode(SensorSag, INPUT);

      pinMode(MotorR1, OUTPUT); // Sensör ve Motorların Giriş-Çıkış bilgilerini belirtiyoruz.
      pinMode(MotorR2, OUTPUT);

      pinMode(MotorL1, OUTPUT);
      pinMode(MotorL2, OUTPUT);


    }

    void loop() {

      if(digitalRead(SensorSol) == 0 && digitalRead(SensorOrta) == 1 && digitalRead(SensorSag) == 0){  // Orta sensör çizgiyi gördüğünde robot ileri gitsin.
        ileri();
      }

      if(digitalRead(SensorSol) == 0 && digitalRead(SensorOrta) == 0 && digitalRead(SensorSag) == 1){  // Sağ sensör çizgiyi gördüğünde robot sağa dönsün.
        sag();
      }

      if(digitalRead(SensorSol) == 1 && digitalRead(SensorOrta) == 0 && digitalRead(SensorSag) == 0){  // Sol sensör çizgiyi gördüğünde robot sola dönsün.
        sol();
      }

     
      

    }


    void ileri(){  // Robotun ileri yönde hareketi için fonksiyon tanımlıyoruz.

      digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
      digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
      analogWrite(MotorRE, 150); // Sağ motorun hızı 150

      digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
      digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
      analogWrite(MotorLE, 150); // Sol motorun hızı 150
      
      
    }


    void sag(){ // Robotun sağa dönme hareketi için fonksiyon tanımlıyoruz.

      digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
      digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
      analogWrite(MotorRE, 0); // Sağ motorun hızı 0 (Motor duruyor)

      digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
      digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
      analogWrite(MotorLE, 150); // Sol motorun hızı 150
      
      
    }

    void sol(){ // Robotun sola dönme hareketi için fonksiyon tanımlıyoruz.

      digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
      digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
      analogWrite(MotorRE, 150); // Sağ motorun hızı 150

      digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
      digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
      analogWrite(MotorLE, 0); // Sol motorun hızı 0 (Motor duruyor)
      
    }

    void dur(){ // Robotun durma hareketi için fonksiyon tanımlıyoruz.

      digitalWrite(MotorR1, HIGH);
      digitalWrite(MotorR2, LOW);
      digitalWrite(MotorRE, LOW);

      digitalWrite(MotorL1, HIGH);
      digitalWrite(MotorL2, LOW);
      digitalWrite(MotorLE, LOW);
      
    }
1 Beğeni

Pille ilgili probleminiz olabilir mi? Yere koyduğunuzda motora yük bindiği için kullandığınız batarya yeteri kadar güç veremiyor olabilir. Sensördeki probleminizin bunla ilgisi olabilir veya olmayabilir. Kullandığınız güç kaynağı nedir?

2 Beğeni

Vize haftasındayım. Dener denemez geri dönüş yapacağım.

Robotistanın videosundaki gibi 6lı kalem pil kullanıyorum. Ordaki robot benimkinden daha ağır olmasına rağmen çalışıyordu.

pilleri Vin girişinden yoksa 5V girişinden mi bağlıyorsunuz? Videoda piller tam doludur, sizin pillerinizin tam dolu olduğundan emin misiniz? Bir ölçün isterseniz varsa ölçü aletiniz.

1 Beğeni

Selamlar. :raising_hand_man:t2:

Eğer videodaki talimatlara göre yaptıysanız büyük ihtimalle pillerde sorun yaşıyorsunuz. Bundan önce motorları konnektörlerden ayırıp el ile çevirmeyi deneyiniz. Eğer rahatça dönüyorsa motorlarda ve dişli kutularından bir problem yoktur. Eğer takılma veya zorlanma varsa motorlarınızda bir problem vardır.

Bu aşamayı geçtikten sonra yeni bir pil alıp denemenizi tavsiye edeceğim. Pil konusunda da lütfen ucuza kaçmayın. Dandik markalı alkalin piller, anlık zorlanmada bozulabilir ve mağdur kalabilirsiniz. Bunun yerine Li-Ion veya Li-Po pil kullanmanızı tavsiye edebilirim. Bu piller yüksek akımda yeterli performansı gösterdiği için tam olarak sizin projenizi hitap edecektir. Şarj aleti de almayı lütfen unutmayın!

Li-Po pil konusunda ise, 2-3S bir pil tercih edebilirsiniz. Kullanacağınız ekipmanlar alttaki fotoğraftaki gibidir;

İyi çalışmalar dilerim. :upside_down_face:

Sorunum çözülmedi , söküp baştan kurdum , pilleri yeniledim , fakat hala sorun devam ediyor, çizgi izleyen sensörlerinde bir sorun var sanırım. Boşluğa bakınca tüm ışıklar sönüyor , cisim yaklaştırınca sensörler teker teker yanmaya başlıyor. Ama masaya koyunca hepsi birden yanıyor. Belirli bir yüksekliğe kaldırdığımda sönüyor .

Çizgi izleme sensörü üzerinden potansiyometre ile gerekli kalibrasyonları yapmanız gerekiyor. Bu kararsızlığın sebebi buna bağlı olabilir. Eğer ışık yandığında dahi bir hareket olmuyorsa, yazılımsal veya donanımsal bir problem olabilir.

Yazılımsal problemi çözmek için buradan gerekli kodları paylaşmanızı rica edeceğim.

Donanımsal problemlerde ise mevcut parçaları, sağlam parçalar ile test edip kontrol etmenizi öneririm. Çalıştığından emin olduğunuz parçaları tekrardan birleştirip yazılıma odaklanmamız gerekmektedir.

Sizlerden bizzat haber bekliyor olacağım.

1 Beğeni

Çok teşekkür ederim öncelikle.
4 sensör kullandığım için Arduino Bey Youtubeden aldım kodlarımı.
int ENA = 3; // motor hız kontrolleri için
int IN1 = 1;
int IN2 = 2;

int ENB = 6;
int IN3 = 4;
int IN4 = 5;

#define ENASpeed 100 // motorların hızını 100 olarak ayarlıyoruz.
#define ENBSpeed 100

int Sensor1 = 0; //sensörlerin ilk değerleri 0 olarak giriliyor.
int Sensor2 = 0;
int Sensor3 = 0;
int Sensor4 = 0;

void setup() {

pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT); //motorlar çıkış pinidir. output olarak atanır.
pinMode(IN2, OUTPUT);

pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);

pinMode(Sensor1, INPUT); // sensörler in (giriş) pinidir.
pinMode(Sensor2, INPUT);
pinMode(Sensor3, INPUT);
pinMode(Sensor4, INPUT);

}

void loop(){

analogWrite(ENA, ENASpeed); // belirlediğimiz hızları aktif ediyoruz.
analogWrite(ENB, ENBSpeed);

Sensor1 = digitalRead(8); // sensörlerin bağlantı pinlerini giriyoruz.
Sensor2 = digitalRead(9);
Sensor3 = digitalRead(10);
Sensor4 = digitalRead(11);

if(Sensor4 == HIGH && Sensor3 == HIGH && Sensor2 == LOW && Sensor1 == LOW){

digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH); // sensör değerlerine göre motorların yönlerini belirliyoruz

digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);

}

else if (Sensor4 == LOW && Sensor3 == LOW && Sensor2 == HIGH && Sensor1 == HIGH){

digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW); // aynı durumu öteki sensörler için de yapıyoruz

digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);

}

else{

//if(Sensor4 == LOW && Sensor3 == HIGH && Sensor2 == HIGH && Sensor1 == LOW


digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);  

}
}

Motorlar sürücüsünden bir kabloyu arduinoya bağlayınca motorlarım pili takar takmaz çalışmaya başladı.

Büyük ihtimalle güç kaynağınızın eksi hattını ortak yapmayı unuttunuz. :upside_down_face:

Arduino’nun GND hattı ile güç kaynağının eksi hattını ortak yapmadığınız takdirde bu tarz bir sorunu yaşayabilirsiniz. :white_check_mark:

Evet :smiley: sensörlerimi de kalibre etmeyi başardım . Yardımınız için çok teşekkürler.

Sevgili forum kulanıcıları, eğer siz de benimle aynı malzemeleri kullanıp aynı sorunu yaşarsanız, motor sürücüden arduinoya olan bağlantıyı unutmuşsunuz demektir :slight_smile: . Ayrıca robotunuz çizgi izleyemiyor ise sensor kartında bulunan mavi tripotlardan küçük bir tornavida ile kalibrasyon yapmanız gerekiyor. Benim gibi acemi arkadaşlarım için anlatayım . Beyaz kağıt üstüne bir parça siyah bantımızı yapıştırıyoruz. Sensör siyahı görürken yanmayana kadar tripotumuzu çeviriyoruz. Küçük bir dönme açısında sensörler yanmayacaktır. Burada ise ince işçilik geliyor :D. Küçük küçük çevirip siyahta yanmayıp, beyazda yanana kadar ayarlamaya çalışıyoruz. Biraz ince iş o yüzden kolayca olmayabilir.
Sağlıklı günler dilerim herkese.

4 Beğeni