Loading...

ARDUİNO İLE DC VE SERVO MOTOR KONTROLÜ

DC MOTOR KONTROLÜ Arduinoyla DC motoru bilgisayar kontrollü, servoyu ise potansiyometre kontollü olarak düşündüm. 0-255 arası değerler...

DC MOTOR KONTROLÜ

Arduinoyla DC motoru bilgisayar kontrollü, servoyu ise potansiyometre kontollü olarak düşündüm. 0-255 arası değerlerde bilgisayardan verilen komutlarla DC motoru bir H-bridge yardımıyla sürebiliriz. Devre kısmı opsiyonel olarak birçok farklı şekilde oluşabilir. Bu yazımda daha çok yazılımıyla ilgilendim.

SERVO MOTOR KONTROLÜ

Servo ise 1K ohm'luk bir potansiyometre kullanarak 0-1023 değerlerini -45'ten +45 derecelik açıya kadar çevirebileceği şekilde oranladım. -45 ve +45 derecenin sebebi, kendi tezim kapsamında bir araba yapacak olmam ve bu arabanın ön tekerlerinde bir servo kullanacak olmamdır. Ama programda servonun oranlamasını yaparken 0-180 derece arası değerlerde yapabiliriz.

Aslında DC motorun bilgisayarla servonun pot. kullanarak aynı yazılımda birleşmesi mantıksız. Çünkü ikisininde tek kumandayla yapılması çok daha mantıklı. Ancak DC motoru da servo motoru da farklı farklı yerlerde kullanabiliriz. (İkisinin de aynı yerden kontrol edildiği programı yazdığımda onunla ilgili bir yazı da yazmayı düşünüyorum.)





#include <Servo.h>  // Servo kütüphanesini dahil ediyoruz.
const int pot=A0;   // Potumuzu bağlayacağımız analog giriş.
Servo myservo;      // Bu komutla servo kontrol nesnenizi oluşuyorsunuz.
int potdurum=0;     // pot için değişken atıyoruz.
int pos = 0;         // pot değerini servo açılarıyla oranlıyoruz.
int motorPin1 = 3;
int motorPin2 = 4;
int enablePin = 5;
int state;
int flag=0;      

void setup()
{
  // Pinleri output olarak set'liyoruz:
    pinMode(motorPin1, OUTPUT);
    pinMode(motorPin2, OUTPUT);
    pinMode(enablePin, OUTPUT);
    // motorun dönebilmesi için EnablePin'ini HIGH yapıyoruz.:
    digitalWrite(enablePin, HIGH);
    // seri haberleşme de saniyede 9600 kullanıyoruz:
    Serial.begin(9600);

myservo.attach(9);                      // Servonuz sinyal girişine bağlayacağımız Arduino pini(PWM)

}


void loop()
{

    if(Serial.available() > 0){  
      state = Serial.read();
      flag=0;
    }
    // eğer state 0'sa motor duruyor.
    if (state == '0') {
        digitalWrite(motorPin1, LOW);
        digitalWrite(motorPin2, LOW);
        if(flag == 0){
          Serial.println("Motor: off");
          flag=1;
        }
    }
    // eğer state 1'se motor sağa dönüyor
    else if (state == '1') {
        digitalWrite(motorPin1, LOW);
        digitalWrite(motorPin2, HIGH);
        if(flag == 0){
          Serial.println("Motor: right");
          flag=1;
        }
    }
    // eğer state 2'yse motor sola dönüyor
    else if (state == '2') {
        digitalWrite(motorPin1, HIGH);
        digitalWrite(motorPin2, LOW);
        if(flag == 0){
          Serial.println("Motor: left");
          flag=1;
        }
    }


  potdurum=analogRead(pot);
  pos= map(potdurum,0,1023,-45,45);              //Servolar 180 derece açı yapar, ancak biz servomuzu yaptığımız arabanın
                                                   //ön tekeri için olduğundan -45'den 45 dereceye orantılıyoruz                                              

  myservo.write(pos);                       //yukarıda ki oranladığımız değeri servoya yazdırıyoruz.
}




































Elektronik 1384433525371254827

Yorum Gönder

emo-but-icon

Ana Sayfa item

İLETİŞİM

Popular Posts

Random Posts