Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Module économique de réglage de servomoteur

Les commandes numériques du réseau (appelées à tort "digitales") sont l'avenir du train miniature. Mais comment choisir, comment sauter le pas, avec ou sans ordinateur ? Autant de questions dont les réponses se trouvent dans l'expérience des uns et des autres…

Modérateur: MOD

Module économique de réglage de servomoteur

Publié: Mar 25 Sep 2018, 10:39 
Pour mes expérimentations autour de la centrale D17 et des décodeurs d'accessoires D18, j'ai acheté divers modules avant de retenir ceux qui me serviront de briques de base. Je me retrouve donc avec des modules inutilisés. En voici deux recyclés, un Arduino Uno et un bouclier de prototype, pour faire un régleur de servomoteur.
Image
Pour le monter faire quelques soudures sur la plaque à prototype :

- souder un fil sur S1, le raccorder à D6
- souder un fil sur LED1, le raccorder à D7
- souder 3 broches au pas de 2,54mm, à cheval sur GND, 5V et une petite bande de 3 pastilles
- souder un fil sur une des 2 pastilles dans l'alignement, le raccorder à D5
- empiler la plaque proto sur l'Uno
- téléverser le croquis suivant après avoir installé les bibliothèques Servo et Bounce2 :

Code: Tout sélectionner
#include <Servo.h>
#include <Bounce2.h>

#define SERVO_PIN   5
#define BUTTON_PIN  6
#define LED_PIN     7
#define BLINK_LED   13

Servo servo1;
Bounce debouncer = Bounce();
byte button_state;
unsigned int time0;
byte blink_led = LOW;

void setup()
{
  servo1.attach(SERVO_PIN);
  servo1.write(180);
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  debouncer.attach(BUTTON_PIN);
  debouncer.interval(5); // interval in ms
  button_state = HIGH;
  pinMode(LED_PIN, OUTPUT);
  pinMode(BLINK_LED, OUTPUT);
  time0 = millis();
}

void loop()
{
  debouncer.update();
 
  if (debouncer.read() == LOW) {
    if (button_state == LOW)
      return;

    digitalWrite(LED_PIN, HIGH);
    servo1.write(90);
    button_state = LOW;
  } else if (button_state == LOW) {
    digitalWrite(LED_PIN, LOW);
    button_state = HIGH;
  }

  if (millis() - time0 > 1000) {
    time0 = millis();
    digitalWrite(BLINK_LED, blink_led);
    blink_led = blink_led == LOW ? HIGH : LOW;   
  }
}

Pour s'en servir :

- raccorder le montage à un port ou une alimentation USB à prise mâle B ou un bloc secteur 5V
- connecter le servomoteur à régler sur les 3 broches, fil noir sur GND
- appuyer sur le bouton S1

La position angulaire de l'axe du servomoteur est désormais à 90°.

Appuyer sur le bouton RESET amène le servo à la position 180°.

Prix de revient inférieur à 5 €.
Bug Killer
Papotier
 
Messages: 146
Inscrit le: Ven 08 Sep 2017, 11:46
Localisation: Loir et Cher
Âge: 63
Echelle pratiquée: H0
Prénom: Jean-Michel

Re: Module économique de réglage de servomoteur

Publié: Jeu 27 Sep 2018, 18:18 
qu'est-ce que tu entends par régler le servo
mettre le bras au bon angle sur l'axe ?
Trimarco232
Causant
 
Messages: 233
Inscrit le: Ven 23 Fév 2018, 14:02
Echelle pratiquée: HO
Prénom: marco

Re: Module économique de réglage de servomoteur

Publié: Jeu 27 Sep 2018, 19:47 
Oui, mettre l'axe au centre de sa plage de rotation avant de monter le palonnier.
Bug Killer
Papotier
 
Messages: 146
Inscrit le: Ven 08 Sep 2017, 11:46
Localisation: Loir et Cher
Âge: 63
Echelle pratiquée: H0
Prénom: Jean-Michel


Retour vers Numérique & Digital

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Lightman69fr, Nans05 et 12 invité(s)