Projets:Lab:2016:Ardui P0wa

From Electrolab
Revision as of 10:53, 2 April 2016 by Marc (Talk | contribs)

Jump to: navigation, search

C’est quoi, le P0wArduino ?

De manière lapidaire, c’est un « shield » de puissance, une carte qui évite d’avoir à jouer avec des bouts de fil et une « planche à clou » pour réaliser toutes les expériences et réalisations les plus courantes :

  • Allumer puis éteindre une Led par logiciel
  • Allumer puis éteindre 6, puis 12 Led façon K2000,
  • Allumer et éteindre lesdites Led en fonction d’un signal électrique externe (interrupteur, capteur)
  • Piloter une guirlande de Led multicolores
  • Faire tourner un moteur électrique à toute vitesse…
  • …puis deux, puis quatre moteurs simultanément
  • Varier la vitesse de rotation de ces moteurs (en gros, réaliser un « ventirad » cher aux Gamers ou la propulsion d’une petite voiture télécommandée)
  • Détecter un changement d’état logique-fermeture d’une porte, présence ou absence d’une tension,
  • Mesurer une variation d’état analogique – température, valeur d’un potentiomètre, d’un niveau de liquide, d’une pression…
  • Afficher un message ou une mesure (voir ci-dessus) sur un afficheur LCD (ou TfT)
  • Communiquer avec un autre arduino

… bref, un shield destiné à tous les débutants qui souhaitent apprendre, jouer, utiliser, intégrer un arduino sans avoir à câbler chaque expérience, démonter une précédente bidouille pour entamer le chapitre 4 de « Mon Arduino, mon poisson rouge et Moi ». Pour les utilisateurs expérimentés, c’est une sorte de microcontrôleur « fait-tout » prêt à l’emploi, avec des connecteurs standards en entrées et sorties, des sorties protégées pouvant piloter des charges importantes, et un bus I2C multifonction.

Pourquoi le P0wArduino ?

  • Parce que l’Arduino n’est pas utilisable «tel que ». Si l’on branche un moteur ou une lampe directement sur les broches d’un Arduino, il trépassera d’une surintensité dans la milliseconde qui suivra. Il faut toujours ajouter une résistance, un transistor, un connecteur, un bout de fil pour réaliser des montages de base universels, P0wArduino élimine cette corvée.
  • Parce que les « shield » du commerce, qui évitent précisément d’avoir à ajouter ces fils, ces résistances, ces transistors, sont généralement limités à une ou deux fonctions seulement. Un shield « capteur » n’intègre pas d’afficheur, un shield afficheur n’est pas capable de couper un courant/tension élevé, un shield « relais » ne peut fonctionner en PWN.
  • Parce qu’un projet sur planche à clous ne peut être sérieusement intégré de manière permanente au risque de se débrancher toutes les 5 minutes et tomber en panne à chaque vibration… P0wArduino encaisse les chocs, les tiraillements de câbles, et ne fleure pas la « méchante bidouille » une fois installé à l’intérieur d’un boitier
  • Parce que Powarduino a un look d’enfer et des instructions de montage dignes de figurer dans les recueils de citations glorifiées par l’Académie Française (ou à la rigueur, l’Almanach Vermot)
  • Parce que près de 40% des bidouilles à base d’arduino reposent sur des fonctions simples : acquisition d’une information, traitement, pilotage d’un actuateur qui nécessite une électronique de pilotage sinon de puissance, du moins « bufferisée »… ergo, 40 % des bidouilles Arduisimples, niveau « sandbox », peuvent être réalisées avec P0wArduino
  • Parce que l’auteur de cette petite carte sans prétention en avait assez de refaire cent fois le même montage à quelques détails près et rêvait d’une solution économique, universelle et réutilisable.

Caractéristiques techniques

6 connecteurs d’entrée branchés sur les ports CAN A0 A1 A2 A3 A6 et A7

1 port bus I2C

6 ports de sortie sur les ports PWM D3 D5 D9 D10 et D11 capables de piloter des charges nécessitant jusqu’à 50 V et pouvant appeler 3 ampères

2x3 ports de sortie 0/5V tamponnés par des Mosfet N (100mA permanent, 400 à 500 mA en pulsé par sortie, limité à 600 mA pour l’ensemble des ports)

Toutes les entrées et sorties se font sur des connecteurs standard Molex série « kk » avec détrompeur (inversion de polarité impossible une fois les fils sertis)

Comment le P0wArduino ?

Il y a deux moyens d’utiliser P0wArduino

- Le mode Débutant, qui consiste à monter la totalité des composants sur la carte, insérer un Arduino Nano sur le support du shield , de brancher en entrée et en sortie les capteurs et actuateurs que l’on souhaite (en utilisant des connecteurs « housing » Molex kk) et se lancer dans l’apprentissage de la programmation.


- Le mode Expert est paradoxalement plus simple, puisqu’il se limite à n’installer sur la carte P0wArduino que le strict nécessaire à un usage précis. J’ai besoin de piloter un relais latch coaxial sur une commutation émission-réception ? deux étages de sortie, une entrée équipée de ses connecteurs. J’envisage de sortir 8 ou 12 sorties «petits signaux » ? je soude les passifs et tous les 2N7000 sur toutes les sorties D0 à D11 (la liaison gate-drain des IRFR 9014 est strapée, diode et condensateur de sortie ne sont pas nécessaires). J’envisage de construire une interface 12 sorties de puissance PWM/12 entrées analogiques ? je cascade deux cartes reliées via le bus I2C etc.

Schéma et description technique

Les entrées

Une rangée de 6 connecteurs à trois broches sont branchées sur les entrées A0 A1 A2 A3 A6 et A7. Ces entrées sont toutes associées à un convertisseur analogique/numérique 10 bits interne à l’Arduino. Elles peuvent donc être adressées soit en mode numérique simple (DigiralRead), soit en mode analogique (AnalogRead). Les variations du signal analogique ne doivent pas excéder la fourchette 0/5Volts.

En mode analogique

Chaque connecteur d’entrée est câblé de la manière suivante : broche 1 = GND (masse), broche 2 = signal analogique entrant, broche 3 = Vcc (5V). La présence du 5V et de la masse sur le connecteur permettent d’alimenter le capteur avec la bonne tension de référence (capteur de température genre LM35, potentiomètre etc).

En mode logique

Le signal logique 0/5V (ou 0/3,3V) est appliqué directement sur la broche 2 du connecteur, la broche 1 servant de masse de référence (bus 2 fils). La broche 3 n’est pas utilisée. La piste de signal étant située entre les pistes de masse et du 5V, il est possible, selon les exigences du circuit, d’ajouter une résistance 0805 ou 1206 de 5 ou 10 kOhm soit « pull up » (entre signal et Vcc), soit en « pull down » (entre signal et masse) directement soudée sur les pastilles du connecteur au pas de 2,54 mm.

Bus I2C

Un connecteur 4 broches donne accès au bus I2C (1=GND, 2=SDA, 3=SCL, 4=Vcc), qui peut servir soit à connecteur des capteurs ou actuateurs I2C, soit des périphériques tels qu’un afficheur 2 lignes 16 caractères. Deux résistances de pull-up, optionnelles (R1, R31) sont à installer en cas d’instabilité de lecture. La valeur de ces deux résistances peut varier, généralement entre 10 et 20 kOhm. Ne pas perdre de vue que le régulateur intégré 5V de la carte P0wArduino ne peut débiter plus de 600 ou 700 mA. Si l’on raccorde sur le bus I2C un afficheur dont le rétroéclairage absorbe 60 mA, soit près de 10 % de la puissance totale disponible, et sachant que l’Arduino nano lui-même consomme 154 mA -doit déjà un total de 210 mA, il ne faudra pas compter utiliser des capteurs ou autres périphériques I2C consommant plus de 400 mA

Les sorties

Les sorties « analogiques »

Les ports D3 D5 D9 D10 et D11 peuvent fonctionner soit en mode PWM (AnalogWrite), soit en mode logique (DigitalWrite). Sur chaque port, un premier transistor Mosfet N tamponne la sortie (et inverse le signal) et attaque un second transistor, Mosfet P de puissance. Ce premier Mosfet, un 2N7000 sur les préséries et les prototypes, peut être remplacé par n’importe quel transistor Mosfet N « petits signaux » compatible « niveaux TTL » et conditionné en boitier SOT23.

Le Mosfet de puissance Ce second transistor, un IRFR9014 sur les premières séries et les prototypes, peut être également remplacé par n’importe quel autre équivalent, pourvu qu’il soit de type P et en boitier d-Pack 2. L’IRFR9014 peut tenir 6V sous 5 ampères en théorie. En pratique, il est vivement conseillé de ne pas dépasser 2 à 3 ampères par composant, car la seule surface de dissipation de chaleur disponible est celle du cuivre du circuit imprimé.

En sortie de ce transistor de puissance se trouve une diode dite « de roue libre » ou « anti-retour ». Elle sert à écouler les tensions négatives « inverses » qui sont en général créées par les charges inductives -bobinages de moteurs ou de relais.

Egalement en sortie de ce transistor, un condensateur CMS électrochimique format 6.3x7.7 (100 uF sur le prototype et les préséries). Ce composant est chargé de « lisser » et réguler le signal PWM de pilotage d’un moteur, et amortir les surtensions d’une charge inductive. Si l’on doit impérativement utiliser un signal PWM « pur », ce condensateur ne doit pas être installé.

Si la charge à piloter ne nécessite pas une forte puissance, le Mosfet P peut être éliminé et remplacé par un fil de liaison entre Drain et Gate. La résistance de charge (10k) située dans le circuit de drain du 2N7000 peut également être éliminée (mais il est conseillé de la conserver si l’on travaille en « pur PWM »). Attention cependant : sous 12 V, il n’est pas prudent de piloter une charge de moins de 20 Ohm au risque de griller le transistor (70mA de courant drain-source au mieux pour un Mosfet petit signaux de ce type, 50 mA max recommandé)

Si l’on fait travailler l’étage de sortie en mode logique (0/+ VCC) et non en PWM, la diode de roue libre et le condensateur chimique doivent être éliminés.

Les sorties numériques

Toutes les sorties de l’Arduino sont « naturellement » numériques. Ce qualificatif est plutôt destiné à désigner les sorties qui ne peuvent fonctionner en mode PWM, ou « pseudo analogique ».

Elles utilisent les ports D0, D1, D2, D4, D7 et D8. Ces sorties sont tamponnées par un 2N7000. Ne pas tenter de dépasser 50 mA par port. En cas de surcharge, seul le transistor est à changer, l’Arduino est protégé contre toute mauvaise utilisation des sorties, numériques ou PWM.

Alimentation

Une tension de 7 à 12V doit être appliquée sur le connecteur P1 pour que le P0wArduino fonctionne. Une diode série (boîtier SMA ou SMB/DO214, Schottky de puissance ou bipolaire genre 1N4007 ou S1M) est inséré en série sur la piste positive et protège ainsi contre toute inversion de polarité.

Un régulateur 5V 78M05 en boitier d-Pack2, plus résistant que celui intégré au module Arduino Nano, alimente à partir du rail 12V le microcontrôleur lui-même, son circuit d’interface USB, les ports d’entrée et les ports de sorties dits « numériques ». Comme précisé plus haut, la totalité des composants ainsi alimentés par le rail 5V ne doit pas excéder 700 mA (500 mA recommandé), Arduino y compris.

Côté sorties PWM, les broches de source des Mosfet de puissance sont alimentées par une piste de « nourrice » raccordée soit au connecteur d’alimentation général 12V (tension d’alimentation pour la majorité des montages, moteurs, ventilateurs, rampes de diodes etc) soit à une autre source d’alimentation offrant une tension différente (jusqu’à 50V environ, 24V par exemple pour des relais de puissance au standard industriel).

- En mode 12V, il suffit de placer un cavalier sur P10 et ne pas câbler P9

- En mode « autre tension » -24V par exemple-, c’est l’inverse : câble P9, ne pas installer quoi que ce soit sur P10, ni cavalier, ni connecteur.

Les programmes de base

Trois firmwares (TBD) ont été développés,

  • L’un destiné à piloter en mode PWM une série de 6 ventilateurs asservis en fonction des températures relevées par 6 capteurs (LM35). Cette configuration est destinée aux constructeurs du projet d’émetteur-récepteur SDR décamétriquePicastar .
  • Le second microcode gère la commutation d’entrée de l’analyseur de spectre/scalaire/vectoriel MSA. Ce programme pilote les fonctions direct/réfléchi, inversion de DUT, mode AS ou VNA, commutation de bande 0-1 GHz, 1-2 GHz, 2-3 GHz, atténuateur 0/70 dB, affichage des modes susnommés. Ce commutateur peut commander soit des relais silicium 0/5V ou 0/12V, soit des relais bistables 12V, soit des relais latch 24V, soit des états logiques 0/5V. Il accepte les signaux logiques de commande émis par la « command board » (version ancienne ou génération BeagleBoard), ainsi que des actuateurs « autres » -par exemple un potentiomètre ou une roue codeuses pour commander l’atténuateur pas à pas).
  • Le troisième microcode est une « preuve de faisabilité » pour un séquenceur émission-réception, avec 6 sorties « puissances » dont chacune peut être temporisée à façon.

Toute personne souhaitant contribuer à l’enrichissement de la bibliothèque logicielle adaptée au P0wArduino est la bienvenue.