Dc motor kontrolü

Arduino ya bağlı bir düğme ile ağır dönen bir dc motoru tek yönde döndürüp düğmeyi bıraktığım anda motor tam tersi 1 saniye kadar dönmesini istiyorum kod hakkında yardım edermisiniz. Ben bir şeyler karaladım ama sanırım doğru olmadı. tinkercad sitesinde yaptığımı buraya resim olarak atıyorum.

int pot = A0;
int pwm = 3;
int geri = 5;
int dugme = A5;
int pot_deger = 0;
int pwm_deger = 0;
int gerideger = 0;
int dugmedeger = 0;

void setup() {
  pinMode(pot, INPUT);
  pinMode(pwm, OUTPUT);
  pinMode(geri,OUTPUT);
  pinMode(dugme,INPUT);
}

void loop() {
  pot_deger = analogRead(pot);
  pwm_deger = map(pot_deger, 0, 1023, 0, 255);
  analogWrite(pwm, pwm_deger);
  dugmedeger = analogRead(pwm);
  if(dugmedeger==0) {
    digitalWrite(gerideger,HIGH);
    delay(1000);
  } 
}
1 Beğeni

Öncelikle iyi akşamlar, butonu arduino UNO nun dijital pinini bağladığın bacağına 10Kohm luk bir direnç ile GND ye bağla. Bu sayede parazitlenmeyi engelleriz. Kodda ve devrede birkaç hata var, bunları düzeltip geri dönüş sağlayacağım.

İlginiz için teşekkür ederim. Bekliyorum saygılar.

1 Beğeni

Potansiyometre niçin acaba, hızı ayarlamak için mi?

1 Beğeni

Evet aynı anda hız ayarlama için lazım olacak (bu 50 karakter işide yazacak bir şey bulamadım. :slight_smile:

1 Beğeni

Tamamdır hazır.

Şema:

Kod:

#define pot A0

int motor1 = 5;
int motor2 = 6;

int buton = 3;

void setup()
{
  pinMode(motor1, OUTPUT);
  pinMode(motor2, OUTPUT);
  pinMode(buton, INPUT);
}

void loop()
{
  int butondurum = digitalRead(buton);
  int potdurum = analogRead(pot);
  int motoryazdir = map(potdurum, 0, 1023, 0, 255);
  if (butondurum == 0)
  {
    analogWrite(motor1, motoryazdir);
    analogWrite(motor2, LOW);
  }
  else
  {
    analogWrite(motor2, motoryazdir);
    analogWrite(motor1, LOW);
    delay(1000);
  }
}

Anlamdığınız bir yer olursa sormaktan çekinmeyiniz :smiling_face_with_three_hearts: İyi geceler dilerim…

3 Beğeni

Allah razı olsun çok teşekkür ediyorum. …

1 Beğeni

Rica ederim ne demek, projenizde başarılar dilerim…

Merhaba,
Bende tamda atıyordum Emir benden hızlı davrandı :sweat_smile:. Bende hazır çizmişken aşağıdaki linkten test edebilirsin. :slightly_smiling_face:

1 Beğeni

@ElectroHands Çok teşekkür ederim lakin motoru çalıştırmak için düğmeye basmam lazım burda bazmadanda çalışıyor gibi. düğme basılı değilse motorda hareket olmayacak. Bastığımda motor sağa veya sola dönecek düğmeyi bıraktığımda motor tam tersine 1 saniye kadar dönüp duracak.
Emir beyin çizimini uygulayıp deneyecektim.

1 Beğeni

@Emir Emir bey sanırım düşündüğüm olmamış. Yanlış anlatmış olabilirim. Sisteme enerji verdiğimizde motorun dönmemesi lazım. Sadece düğmeye bastığımda dönecek düğmeyi bıraktığım anda motor tam tersibe 1 saniye dönüp duracak. Sizide uğraştırıyorum ama hakkınızı helal edin

1 Beğeni

Estağfurullah. Mesajı yeni gördüm. Kodu düzenleyip atıyorum.

Yeni kodumuz:

#define pot A0

int motor1 = 5;
int motor2 = 6;

int buton = 3;

void setup()
{
  pinMode(motor1, OUTPUT);
  pinMode(motor2, OUTPUT);
  pinMode(buton, INPUT);
}

void loop()
{
  int butondurum = digitalRead(buton);
  int potdurum = analogRead(pot);
  int motoryazdir = map(potdurum, 0, 1023, 0, 255);
  analogWrite(motor1, LOW);
  analogWrite(motor2, LOW);
  if (butondurum == 1)
  {
    while (true)
    {
      analogWrite(motor1, motoryazdir);
      analogWrite(motor2, LOW);
      butondurum = digitalRead(buton);
      if (butondurum == 0)
      {
        break;
      }
    }
    analogWrite(motor1, LOW);
    analogWrite(motor2, motoryazdir);
    delay(1000);
    analogWrite(motor1, LOW);
    analogWrite(motor2, LOW);

  }
  else
  {
    analogWrite(motor1, LOW);
    analogWrite(motor2, LOW);
  }
}

@Emir Çok teşekkür ederim oldu gibi şimdi sistemi kurup canlı olarak deneyeceğim.

1 Beğeni

Rica ederim ne demek :slight_smile: Proje olduysa ne mutlu bize…

1 Beğeni