Projets:Lab:2016:Ardui P0wa

From Electrolab
Revision as of 07:58, 23 September 2018 by Marc (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Page référencée dans Passion :
Apprentissage montages pour débutants en électronique
RadioRadios logicielles, transmissions numériques, expérimentations HF


Un module p0warduino en situation réelle d'exploitation (afficheur d'état du projet MSA). Cette version définitive du pcb a été adaptée pour faciliter son assemblage par des monteurs n'ayant encore jamais touché à des composants CMS. (cliquez sur la photo pour agrandir)
Second prototype du P0wArduino (cliquez sur la photo pour agrandir)


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 à clous » 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 Leds façon K2000,
  • Allumer et éteindre lesdites Leds en fonction d’un signal électrique externe (interrupteur, capteur)
  • Piloter une guirlande de Leds 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-dessous) 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.

Le tout premier prototype de p0warduino. Il fut originellement conçu pour piloter des charges inductives (relais), des composants nécessitant de forts appels de courants en PWM (ici, un moteur de ventilateur de serveur) de recevoir des informations de contrôle numériques et analogiques -les entrées sont ici occupées par un potentiomètre et un capteur de température- , le tout sans qu'il soit nécessaire d'ajouter le moindre composant extérieur. P0warduino est un "plug and forget" (cliquez sur la photo pour agrandir)

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 suit. 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 « shields » 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 PWM.
  • 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 P0wArduino 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

Alimentation 7 à 12 Vcc pour la logique, 3 à 50Vcc pour la section "puissance"

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 chacune

2x3 ports de sortie 0/5V tamponnés par des Mosfet N (100mA permanent, 400 à 500 mA en pulsé par sortie, limité à 700mA max., 500 mA recommandé 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 et une alimentation 28V. 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

P0wArduino sch.PNG


Ce schéma est également disponible au format PDF. L'ensemble des fichiers EDA est également disponible en fichier ZIP au format Kicad


Les entrées

6 connecteurs à trois broches sont branchés 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 (DigitalRead), soit en mode analogique (AnalogRead). Les variations du signal analogique ne doivent pas excéder la fourchette 0/5V.

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 de puissance »

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 (BSN20 par exemple)

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 60V 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. Cette diode n'est absolument pas nécessaire si l'on n'a pas de moteur ou de relais à commander.

Également en sortie de ce transistor, un condensateur CMS chimique 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é.Idem si l'on fait travailler le transistor en commutation de courant continu (donc en mode logique "on off", sans pwm)

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é)

Insistons lourdement sur la configuration de l'étage de sortie : si l’on fait travailler l’étage de sortie en mode logique (0/+ VCC) sur charge non inductive, la diode de roue libre et le condensateur chimique doivent être éliminés. La diode ne sert à rien, le condensateur aura tendance à amortir les temps de retombée du signal de sortie.

Les sorties numériques petit niveau

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 seulement.

Ne pas tenter de dépasser 50 mA par port. En cas de surcharge, seul le transistor est à changer. Ainsi, 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 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. L'ensemble de la carte est alors alimenté par P1 (12V). C'est cette tension que l'on retrouvera sur les sorties P11 à P16.

- En mode « autre tension » -24V par exemple- : câbler P9, ne pas installer P10 (ni cavalier, ni connecteur). Deux alimentations sont alors nécessaires

  • une première entre 8 et 12 V sur P1 pour alimenter l'arduino et ses sorties,
  • une seconde de 1 à 50 V selon les nécessités, et qui se retrouvera sur les sorties P11 à P16.
  Il faut noter que les sorties petits signaux "numériques" (connecteurs P17 et P18) fournissent un signal TTL 0/5V.
  Il n'a pas été prévu d'autre tension de commande. Si la demande est importante, 
  une option "sortie numérique 3.3V"  peut être ajoutée

Le circuit imprimé

L'ensemble de l'électronique du P0wArduino tient sur un rectangle de FR4 de 5cm x 10cm. Le circuit est réalisé en technique double face, trous métallisés. On remarque que les connecteurs occupent une place importante.


P0warduino.jpg

Les composants "encombrants" -condensateurs électrolytiques, l'Arduino lui-même, les connecteurs Molex kk- sont répartis sur la face supérieure. C'est le côté le plus simple à assembler, et en toute logique, à souder en premier.


Powarpile.jpg

Les composants de puissance et autres actifs d'isolation de port sont sur la face inférieure. A monter dans un second temps

A l'exception des connecteurs et de l'Arduino, tous les composants sont de type à montage de surface. Les transistors de puissance et le régulateur en boitier d-Pack2, les transistors de commutation "petits signaux" sont en boîtier SOT23, les condensateurs céramique sont au format 1206, les résistances au format 0804 et 0603. Le choix de ces formats a été dicté à la fois par les nécessité de l'implantation et par la volonté d'utiliser cette carte dans le cadre d'un programme d'initiation à l'usage des composants CMS.

Dans ce cadre, les composants du dessus sont à monter en premier, car étant les plus simples à souder. Puis les composants de la face inférieure, en commençant par les MosFET de puissance, puis les 2N7000 (dont on ne soudera que le drain dans un premier temps), puis les condensateurs 100 nF en 1206, puis les résistances en 0805, enfin les résistances en 0603 dont certaines seront soudées en même temps que la Gate et la Source des 2N7000.

Histoire de rassurer les plus angoissés, les empreintes des composants de petite taille sont toutes notablement agrandies (format "handsoldering") afin de faciliter la brasure au fer à souder. Une panne "aiguille" est toutefois recommandée. L'usage de la loupe ou d'une binoculaire n'est absolument pas nécessaire.

La platine une fois achevée peut être soit vissée sur un support à l'aide de deux entretoises filetées au pas de 3mm ISO, soit sera insérée dans un blindage de tôle étamée, maintenue par des points de soudure sur toute sa périphérie. Une réserve du vernis-épargne, pratiquée sur les deux faces, facilite cette opération.


P0wArduino proto dessous.jpg


A titre de comparaison, le premier prototype était plus large, simple face, mono-tension, et ne comportait pas d'option "sorties numériques petits signaux".

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étrique Picastar .
  • 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 sus-nommé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 codeuse 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.