Dans cet exemple, nous contrôlerons la direction d’un actionneur linéaire avec un Arduino et deux interrupteurs momentanés. Ce tutoriel s’appuie sur les principes discutés dans le tutoriel »Contrôle de la vitesse du conducteur avec un Arduino« , nous vous conseillons d’examiner ce tutoriel avant de continuer.
Ce tutoriel est divisé en deux sections : boutons poussoirs agissant en mode momentané (c.-à-d. les actionneurs cessent de bouger lorsque le bouton est relâché) et boutons poussoirs agissant en mode de soutien (c.-à-d. les actionneurs continuent de bouger même lorsque le bouton est relâché).
Note: Ce tutoriel suppose des connaissances préalables avec les principes électroniques de base, le matériel Arduino et les logiciels. Si c’est la première fois que vous utilisez Arduino, nous vous suggérons d’apprendre les bases de l’un des nombreux tutoriels débutants disponibles via google et youTube recherches. S’il vous plaît être conscient que nous n’avons pas les ressources pour fournir un soutien technique pour les applications personnalisées et ne sera pas débogage, modifier, fournir du code ou des diagrammes de câblage en dehors de ces tutoriels accessibles au public.
Composants
- Actionneur linéaire 12V
- Alimentation 12V
- Arduino
- Conducteur de moteur
- Deux boutons momentanés (en option un troisième bouton pour le contrôle de verrouillage)
- Fils électriques pour faire des connexions et outil de sertissage ou fer à soudage
Câblage
Vue d’ensemble du matériel et des logiciels pour un contrôle momentané
Les commutateurs momentanés sont utilisés lorsque vous voulez seulement que l’actionneur se déplace pendant que le bouton est appuyé, l’actionneur cesse automatiquement de bouger lorsque le bouton est libéré. Téléchargez le code ci-dessous.
Code pour le contrôle momentané
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);
}
}
Aperçu du matériel et des logiciels pour maintenir le contrôle
Alternativement, parfois vous pouvez utiliser un bouton de verrouillage; faites bouger l’actionneur lorsque vous appuyez sur un bouton, puis continuez à bouger lorsque vous relâchez le bouton. Pour ce faire, vous devrez ajouter un commutateur de plus, connecté à la broche 8 et GND, puis télécharger le programme ci-dessous. Comme l’actionneur n’arrête pas de bouger lorsque le bouton est libéré, ce nouveau commutateur agit un bouton « stop ».
Code pour le maintien du contrôle
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);
}
}