Bu örnekte, bir Arduino ve iki anlık anahtarla doğrusal bir aktüatörün yönünü kontrol edeceğiz. Bu eğitici, eğiticide tartışılan ilkelere dayanmaktadır "Arduino ile Motor Sürücü Hız Kontrolü", Devam etmeden önce bu eğiticiyi incelemenizi tavsiye ederiz.
Bu eğitim iki bölüme ayrılmıştır: anlık modda hareket eden basmalı düğmeler (yani, düğme bırakıldığında aktüatörler hareket etmeyi durdurur) ve sürdürme modunda hareket eden basmalı düğmeler (yani, düğme bırakıldığında bile aktüatörler hareket etmeye devam eder).
Not: Bu eğitim, temel elektronik ilkeler, Arduino donanımı ve yazılımı ile ilgili ön bilgileri varsayar. Arduino'yu ilk kez kullanıyorsanız, Google ve YouTube aramalarında bulabileceğiniz birçok harika başlangıç eğitiminden birinden temel bilgileri öğrenmenizi öneririz. Lütfen, özel uygulamalar için teknik destek sağlayacak kaynaklara sahip olmadığımızı ve bu genel kullanıma açık eğitimlerin dışında kod veya kablolama şemalarında hata ayıklamayacağımızı, düzenlemeyeceğimizi, sağlamayacağımızı unutmayın.
Bileşenler
- 12V Doğrusal Aktüatör
- 12V güç kaynağı
- Arduino
- Motor sürücüsü
- İki anlık düğme (isteğe bağlı olarak mandallama kontrolü için üçüncü bir düğme)
- Bağlantı ve sıkma aleti veya havya yapmak için elektrik telleri
Kablolama
Anlık kontrol için donanıma ve yazılıma genel bakış
Anlık anahtarlar, aktüatörün yalnızca düğmeye basılıyken hareket etmesini istediğinizde kullanılır, düğme bırakıldığında aktüatör otomatik olarak hareket etmeyi durdurur. Aşağıdaki kodu yükleyin.
Anlık kontrol kodu
https://gist.github.com/Will-Firgelli/aeee209bda6b2246359eed70ec353eb8
/* Firgelli Automations
* Limited or no support: we do not have the resources for Arduino code support
*
* Program enables momentary direction control of actuator using push button
*/
int RPWM = 10; //connect Arduino pin 10 to IBT-2 pin RPWM
int LPWM = 11; //connect Arduino pin 11 to IBT-2 pin LPWM
int downPin = 12;
int upPin = 13;
int Speed = 255; //choose any speed in the range [0, 255]
void setup() {
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(downPin, INPUT_PULLUP);
pinMode(upPin, INPUT_PULLUP);
}
void loop() {
if(digitalRead(upPin)==LOW){ //check if extension button is pressed
analogWrite(RPWM, 0);
analogWrite(LPWM, Speed);
}
else if(digitalRead(downPin)==LOW){ //check if retraction button is pressed
analogWrite(RPWM, Speed);
analogWrite(LPWM, 0);
}
else{ //if no button is pushed, remain stationary
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
}
}
Kontrolü sürdürmek için donanım ve yazılıma genel bakış
Alternatif olarak, bazen bir kilitleme düğmesi kullanmak isteyebilirsiniz; bir düğmeye bastığınızda aktüatörün hareket etmesini sağlayın ve ardından düğmeyi bıraktığınızda hareket etmeye devam edin. Bunu başarmak için, pin 8 ve GND'ye bağlı bir anahtar daha eklemeniz ve ardından aşağıdaki programı yüklemeniz gerekecektir. Düğme bırakıldığında aktüatör durmayacağından, bu yeni anahtar bir "durdur" düğmesi olarak hareket edecektir.
Kontrolü sürdürmek için kod
https://gist.github.com/Will-Firgelli/2b96dce14c0cee7a0009e61e47cc5f67/* Firgelli Automations
* Limited or no support: we do not have the resources for Arduino code support
*
* Program enables latching direction control of actuator using push button
*/
int RPWM = 10; //connect Arduino pin 10 to IBT-2 pin RPWM
int LPWM = 11; //connect Arduino pin 11 to IBT-2 pin LPWM
int stopPin = 8;
int downPin = 12;
int upPin = 13;
int Speed = 255; //choose any speed in the range [0, 255]
void setup() {
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(stopPin, INPUT_PULLUP);
pinMode(downPin, INPUT_PULLUP);
pinMode(upPin, INPUT_PULLUP);
}
void loop() {
if(digitalRead(upPin)==LOW){ //check if extension button is pressed
analogWrite(RPWM, 0);
analogWrite(LPWM, Speed);
}
else if(digitalRead(downPin)==LOW){ //check if retraction button is pressed
analogWrite(RPWM, Speed);
analogWrite(LPWM, 0);
}
else if(digitalRead(stopPin)==LOW){ //check if retraction button is pressed
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
}
}