In diesem Beispiel steuern wir die Richtung eines Linearantriebs mit einem Arduino und zwei Momentschaltern. Dieses Tutorial baut auf Prinzipien auf, die im Tutorial „Motortreiber Geschwindigkeitsregelung mit einem ArduinoWir empfehlen, dieses Tutorial zu lesen, bevor Sie fortfahren.
Dieses Tutorial ist in zwei Abschnitte unterteilt: Drucktasten, die im Momentanmodus arbeiten (d. H. Aktuatoren bewegen sich nicht mehr, wenn die Taste losgelassen wird) und Drucktasten, die im Haltemodus wirken (d. H. Aktuatoren bewegen sich weiter, selbst wenn die Taste losgelassen wird).
Hinweis: In diesem Lernprogramm werden Vorkenntnisse in elektronischen Grundprinzipien, Arduino-Hardware und -Software vorausgesetzt. Wenn Sie Arduino zum ersten Mal verwenden, empfehlen wir Ihnen, die Grundlagen aus einem der vielen großartigen Anfänger-Tutorials zu lernen, die über die Google- und YouTube-Suche verfügbar sind. Bitte beachten Sie, dass wir nicht über die Ressourcen verfügen, um technischen Support für benutzerdefinierte Anwendungen bereitzustellen, und keine Debugging-, Bearbeitungs-, Code- oder Schaltpläne außerhalb dieser öffentlich verfügbaren Tutorials erstellen, bearbeiten.
Komponenten
- 12V Linearantrieb
- 12V Stromversorgung
- Arduino
- Kraftfahrer
- Zwei Momenttasten (optional eine dritte Taste zur Verriegelung)
- Elektrische Drähte zum Herstellen von Verbindungen und zum Crimpen von Werkzeugen oder Lötkolben
Verdrahtung
Hardware- und Softwareübersicht zur momentanen Steuerung
Momentschalter werden verwendet, wenn sich der Aktuator nur bewegen soll, während die Taste gedrückt wird. Der Aktuator stoppt automatisch die Bewegung, wenn die Taste losgelassen wird. Laden Sie den folgenden Code hoch.
Code für die momentane Steuerung
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);
}
}
Hardware- und Softwareübersicht zur Aufrechterhaltung der Kontrolle
Alternativ können Sie manchmal einen Verriegelungsknopf verwenden. Lassen Sie den Antrieb bewegen, wenn Sie einen Knopf drücken, und bewegen Sie sich dann weiter, wenn Sie den Knopf loslassen. Um dies zu erreichen, müssen Sie einen weiteren Schalter hinzufügen, der an Pin 8 und GND angeschlossen ist, und dann das folgende Programm hochladen. Da der Aktuator beim Loslassen der Taste nicht aufhört, sich zu bewegen, wirkt dieser neue Schalter als "Stopp" -Taste.
Code zur Aufrechterhaltung der Kontrolle
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);
}
}