Contrôle des flippers avec l’Arduino

Hello tout le monde ! Je m’attaque aujourd’hui à mon premier test de l’Arduino. Je l’ai déjà manipulé pour des projets persos, mais j’avais alors très peu d’électronique “brute”. Donc mon challenge là tout de suite, c’est de bien comprendre ce que je vais faire et de ne rien cramer ! Je sais, c’est ambitieux. Et au delà de ça, c’est de voir aussi si mon circuit est suffisamment réactif : l’appui sur le bouton d’un flipper doit déclencher immédiatement l’alimentation du solénoïde et la levée du flipper. Allez, je me lance.

Modélisation du circuit

Pour monter ma configuration, je suis basé sur un tuto du site Arduino Transistor Motor Control, quelques vidéos que vous verrez plus bas ainsi que le simulateur de circuit TinkerCad.

Vous remarquerez que sur la maquette, faute de trouver mieux, l’alimentation PC de 12V est remplacée par une pile 9 V et le solénoïde par un moteur. Voici le résultat :

Schéma d’alimentation d’un moteur

Une alimentation externe indispensable

Mais d’ailleurs, pourquoi une pile 9V en plus de l’alimentation de l’Arduino ? Et bien parce que les plus gros solénoïdes vont consommer 12 V / 8 A en pointe et qu’un Arduino est totalement incapable de fournir une telle puissance. J’aurais donc deux circuits avec des tensions différentes.

Un transistor pour faire le “pont”

Je vais utiliser un transistor TIP 120 qui va me permettre de manipuler le courant de l’alimentation PC (il supporte 5 A en continue et 8 A en pointe). Ici, l’Arduino envoie un courant sur sa pin 9 lorsque l’on presse le bouton, ce qui permet de laisser passer le courant vers le solénoïde.

De gauche à droite: la base, le collecteur et l’émetteur.

La planche à pain

Je vais faire mes tests sur une breadboard (une planche de maquettage) sur laquelle :

  • les trous des lignes + sont connectés ensemble, idem pour les -,
  • les trous des colonnes sont connectés ensemble.

Et oui, je pars de loin. ^^

Simuler un bouton de flipper

Je vais connecter un bouton à l’Arduino. Je tire donc deux fils de l’alimentation 5 V de l’Arduino pour alimenter mon “breadboard”, puis j’alimente le bouton. Je relie aussi la pin “digital” 2 de l’Arduino à ce circuit qui regardera si un courant passe. Lorsque ce sera le cas, l’Arduino alimentera le moteur.

Deux choses importantes à noter sur ce bouton :

1. la présence d’une résistance qui est là pour éviter un court-circuit. Un circuit fermé sans aucune résistance va tout simplement brûler.

2. l’emplacement de la connexion de la pin 2 de l’Arduino sur la board n’est pas anodine. Je vous invite à regarder cette vidéo explicative :

Programmer l’Arduino

J’ai “téléversé” le code ci-dessous sur l’Arduino. En gros il dit : si le bouton est appuyé, le moteur est alimenté via le transistor et tourne.

int pinButton = 2;
int pinMotor = 9;
int valueButton = LOW;

void setup()
{
  // Init Serial
  Serial.begin(256000);
  while(!Serial); // Waiting for serial...
  Serial.println("Starting...");  
  
  // Set pin mode
  pinMode(pinButton, INPUT);
  pinMode(pinMotor, OUTPUT);
}

void loop()
{
  // Read pin 2
  valueButton = digitalRead(pinButton);

  // Write on pin 9
  if (valueButton == HIGH) {
    digitalWrite(pinMotor, HIGH);
  }
  else {
    digitalWrite(pinMotor, LOW);
  }
  
  Serial.println(valueButton); 

  delay(10);
}

Pour plus de détail, voici une vidéo expliquant comment connecter un moteur :

Le circuit en vrai

Mon circuit théorique fonctionne, on va voir maintenant ce que ça donne en vrai.

Compilation et mise à jour de l’Arduino

J’ai mis à jour l’Arduino, il n’y a plus qu’à faire les branchements :

Bon, et bien, il ne reste plus qu’à allumer l’alim de 12V et voir ce que ça donne :

Victoire partielle… Le principe fonctionne et le solénoïde me semble assez réactif. Seulement, ça ne marche pas avec le gros solénoïde de 8 A qui reste immobile, sauf si je le connecte directement à l’alimentation. Je vais creuser ça.

Un circuit final entièrement fonctionnel

Et bien voilà, j’ai vaincu la bête. J’ai finalement utilisé une planche de 4 MOSFETs que j’ai commandée chez Ali Express. Elle repose sur le même principe, mais elle a plusieurs avantages :

  1. Elle évite un bordel de fil et des soudures + joint 4 canaux.
  2. Les fils sont mieux fixés.
  3. Elle contient non pas des transistors TIP 120 qui fonctionnent avec un maximum de 8A mais des IRF 540 qui peuvent atteindre les 23 A.

Voici le nouveau montage :

Vous pouvez déjà remarquer que la breadboard ne contient plus que l’électronique nécessaire au bouton (qui ne change pas).

Sur la planche des transistors, notez à droite la connexion de :

  • la base (fil blanc)
  • l’entrée des 5 V de l’Arduino (en rouge)
  • la masse (en noir)

Et à gauche, vous avez l’interface avec le “circuit de puissance”, avec :

  • la connexion de l’alimentation 12 V en jaune et noir,
  • la sortie vers le solénoïde sur le bornier vert (les deux fils noirs).

Pour bien comprendre le schéma de câblage et comme j’ai galéré à le trouver, le voici :

Et le résultat en vidéo :

Ca c’est fait ! Youhou !
(par contre j’ai perdu mon pari en cramant un TIP120… 😉 )

Tu ne chaufferas pas !

Je pense également avoir résolu le problème de surchauffe du solénoïde. Je vais tout bêtement utiliser le PWM, la simulation de sortie analogique de l’Ardnuino. Par exemple, le code suivant fait que le flipper se lève avec force (100%) pendant 500ms, puis est à peine maintenu pendant encore 500ms (60%).

analogWrite(9, 255);
delay(500);
analogWrite(9, 150);
delay(500); 

A moins que le PWM soit connu pour endommager les solénoïdes, je vais partir là dessus.

A bientôt ! 🙂

Laisser un commentaire