Arduıno da kesme fonksıyonu

aenginar

Üye
Katılım
23 Ocak 2019
Mesajlar
27
Puanları
1
Yaş
30
Arkadaşlar merhaba

Arkadaşlar arduino ile step motor kontrol denemeleri yapıyorum, sağa ve sola bir tur dönmesini istiyorum. Bunun için aşağıdaki programı kullanıyorum. 2 adet giriş tanımladım ve her bastığımda bir tur belirlenen yönde dönmesini istiyorum. Bunu kesme tanımlayarak yapmayı denedim. Yön konusunda sıkıntı yok ama tur anlamında kararlılık yok. Bazen bir tur dönüyor bazen iki tur, sebebini anlayamadım bu konuda yardımcı olabilir misiniz? Sebebi ne olabilir?
Arduino yazılımı aşağıdadır.
şimdiden teşekkürler
 

Ekli dosyalar

  • step motor bir tur.txt
    1.4 KB · Görüntüleme: 18
Hocam stepın açısal değerini kodda göremedim. Bir de sürmek istediğiniz step motor tam olarak ne? Nema mı yoksa başka mı? ona göre kodu teyit etmek gerekir.
 
Hocam step motor kodu 28BYJ-48
açısal değerini de ileri geri fonksiyonlarında adım sayısı olarak yazdım
yazdığım iki giriş var birine bastığımda ileri yönde belirtilen adım kadar gidecek
diğer tusa basıldığında belirtilen adım kadar geri yönde gitmesini istiyorum
512 de bir tur yapıyor ama bazen bir tur bazen iki tur dönüyor
 
Pinlerin aralarına bekleme koy son daki bekleme den kaynaklı olabilir
 
Pinlerin arasına bekleme koy derken hocam? anlamadım...
Her adım sonunda zaten bekleme var.
Ekdeki gibi mi olmasından bahsediyorsunuz?
 

Ekli dosyalar

  • Yeni Metin Belgesi.txt
    733 bayt · Görüntüleme: 5
Önce '1' olanı '0' yapın.
Elektrikteki gibi, "kontak önceliğine"
dikkat edin.
Tablolar güzel görünsün diye bu şekilde
yapılıyor. Ancak program bu tabloya
bakılarak yazılınca; bir önceki '1' olan
pin ve yeni '1' olan pin çakışma yapıyor.
 
dosyanın içeriği .
Yeni Metin Belgesi.txt
Kod:
void adim1() {

  digitalWrite(motorPin1, HIGH);

  delay(100);

  digitalWrite(motorPin2, LOW);

  delay(100);

  digitalWrite(motorPin3, LOW);

  delay(100);

  digitalWrite(motorPin4, LOW);

  delay(bekleme);

}



void adim2() {

  digitalWrite(motorPin1, LOW);

  digitalWrite(motorPin2, HIGH);

  digitalWrite(motorPin3, LOW);

  digitalWrite(motorPin4, LOW);

  delay(bekleme);

}



void adim3() {

  digitalWrite(motorPin1, LOW);

  digitalWrite(motorPin2, LOW);

  digitalWrite(motorPin3, HIGH);

  digitalWrite(motorPin4, LOW);

  delay(bekleme);

}



void adim4() {

  digitalWrite(motorPin1, LOW);

  digitalWrite(motorPin2, LOW);

  digitalWrite(motorPin3, LOW);

  digitalWrite(motorPin4, HIGH);

  delay(bekleme);

}
 
Moderatör tarafında düzenlendi:
Arkadaşlar öncelikle hepinize teşekkür ederim.
Önce "1" olan pini "0" yaptım denedim ve her adım arasına bekleme koyarak da denedim fakat sorun devam ediyor.
sanırım bir yanlış anlaşılma oldu step motorun çalışmasında herhangi bir sorun yok butona bastığımda belirlenen yönde dönme yapıyor. Fakat normalde bir basmada bir tur dönmesi gerekirken bazen bir tur bazen iki tur dönüyor. Ben butona bir kez bastığımda bir tur dönüp durmasını istiyorum. Ama neden böyle oluyor anlamadım
 
Arkadaşlar problem çözüldü
Bu işlem için kesme fonksiyonu pek uygun değil sanırım
programı ekteki gibi düzenledim ve şimdilik sorun çözüldü
en azından istediğim gibi çalıştırabiliyorum
buton1 e bastığımda bir tur sağa
buton2 ye bastığımda bir tur sola dönüyor
herkese çok teşekkür ederim
 

Ekli dosyalar

  • step_motor_bir_tur_dönme.txt
    1.4 KB · Görüntüleme: 11
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…