samedi 15 novembre 2014

Logiciels d'aide à la conception de circuits sur perfboard

Aujourd'hui, nous jetons un oeil sur deux logiciels qui aident à planifier la disposition de vos composants électroniques sur un perfboard avant de commencer la soudure.  Car comme vous l'avez peut-être déjà vous-même constaté, c'est toujours un peu frustrant, après avoir soudé une dizaine de composants sans plan précis, de se rendre compte qu'on aurait mieux fait de tout décaler de deux trous vers la gauche...

Comprenons-nous bien:  aucun de ces deux logiciels n'est doté d'une quelconque forme d'intelligence artificielle permettant d'optimiser automatiquement, à votre place, le design de votre circuit.  Ils remplacent simplement l'utilisation d'une feuille de papier quadrillé, d'un crayon et d'une gomme à effacer:  vous disposez des composants sur un perfboard virtuel, et vous les déplacez à votre guise jusqu'à ce que le résultat vous convienne.

J'ai donc exploré DIY Layout Creator 3.28 et Blackboard Circuit Designer 1.1 sous Linux Mint 17, mais ces deux logiciels gratuits peuvent également être utilisés sous Windows ou MacOS.

Dans les deux cas, je vais créer une perfboard de 24 trous X 18 trous et disposer sur celle-ci un échantillonnage de composants fréquemment utilisés (circuit intégré, résistances, condensateurs, LEDs, diodes, transistors, etc.).  Il s'agit d'un circuit bidon dont le seul but est de voir de quoi a l'air le résultat dans chacun des deux logiciels.


DIY Layout Creator

Commençons donc par le plus ancien des deux logiciels:  DIY Layout Creator.  À l'ouverture du logiciel, nous sommes accueillis par  un espace quadrillé et des onglets qui correspondent aux différentes catégories de composants.   Le logiciel a été créé par des passionnés de guitare électrique, ce qui explique la présence d'un onglet "Guitar".  Pour créer ma perfboard, je clique sur l'icône "Perf Board w/ Pads" sous l'onglet "Board" (d'autres options sont possibles, comme une VeroBoard, par exemple).



Une perfboard de 14 trous X 11 trous apparaît dans la zone quadrillée.  Pour la redimensionner, il s'agit de manipuler un des petits cercles verts au moyen de la souris.



Plaçons un circuit intégré sur notre perfboard:  nous cliquons sur le bouton qui représente un circuit intégré, sous l'onglet "Semiconductors".  Ensuite, nous déplaçons la souris sur la perfboard et cliquons là où nous désirons placer le circuit intégré.





vendredi 14 novembre 2014

Produire 35 volts avec 3 piles AA


J'ai fait quelques tests sur un convertisseur de tension continue DC-DC basé sur le circuit intégré XL6009 (DC-DC Adjustable Step-up Power Converter Module XL6009).  Comme toujours, les commerçants asiatiques nous proposent ces dispositifs pour un prix comparable à celui d'une tasse de café (le miens m'a coûté 1,50 USD).

Ce petit circuit se propose de convertir n'importe quelle tension d'entrée continue située entre 3 V et 32 V en une tension continue comprise entre 5 V et 35 V.

Comme vous pouvez le constater sur la photographie ci-dessus, la tension fournie par 3 piles AA NiMH fraîchement rechargées (4,30 V) peut facilement être transformée en 35.0 V.  En circuit ouvert, j'ai même atteint une tension de sortie de 48 V (un petit potentiomètre permet de régler la tension de sortie au moyen d'un tournevis).

Mais comme l'affirmait ce bon vieux Lavoisier, rien ne se perd et rien ne se créé:  puisqu'il est impossible que la puissance de sortie soit plus grande que la puissance d'entrée, le courant sera plus intense à l'entrée qu'à la sortie.

Par exemple, j'ai réglé le dispositif pour qu'il alimente une résistance de 176 Ω avec une tension continue de 9 V.  Sans surprise, cette résistance était traversée par un courant de 51 mA, donc une puissance de sortie de 0,46 W.  Pendant ce temps, à l'entrée, mes 3 piles AA débitaient 173 mA sous une tension de 3,67 V (donc une puissance d'entrée de 0,63 W).  Rendement:  73%.

Il y a toutefois une limite à l'intensité du courant que peut débiter une simple pile AA.  Pour cette raison, toujours avec ma résistance de charge de 176 Ω, la tension de sortie maximale n'était plus que de 19 V (comparativement aux 48 V atteints en circuit ouvert); pendant ce temps, mes pauvres piles étaient traversées par un courant de 0,812 A.  On est encore loin des 4 A que le convertisseur peut supporter, mais à ce rythme la charge de 1350 mA.h des piles sera vite épuisée.

Yves Pelletier (Twitter:  @ElectroAmateur)

dimanche 9 novembre 2014

Amplificateurs opérationnels (7): source de courant

Nous sommes tous familiers avec les sources de tension.  Une pile AA, par exemple, fournira une tension de 1,5 V peu importe le circuit auquel elle sera branchée.  Si vous branchez à la pile une résistance de 100 Ω, cette dernière sera soumise à une différence de potentiel de 1,5 V, et traversée par un courant de 15 mA.  Si vous branchez plutôt une résistance de 1000 Ω, la tension demeure 1,5 V mais l'intensité de courant ne sera plus que de 1,5 mA.

Aujourd'hui, nous allons voir comment utiliser un amplificateur opérationnel pour produire une source de courant:  peu importe la valeur de la résistance qui sera branchée à cette source, cette résistance sera parcouru par la même intensité de courant.

Matériel
  • Un amplificateur opérationnel (j'ai encore utilisé un UA741, mais comme je le répète depuis le début de cette série d'articles, un autre modèle fera très probablement l'affaire:  utilisez ce que vous avez).
  • Une source de tension continue pouvant fournir +12 V, +5 V et -12 V.  Comme d'habitude, j'ai utilisé une  alimentation ATX récupérée d'un vieil ordinateur.
  • Un multimètre qui nous servira à mesurer l'intensité de courant fournie par notre source de courant.
  • Une résistance de 1kΩ et un potentiomètre de 1kΩ.
À vos breadboards!

Voici le circuit:  rien d'exagérément compliqué ici.



Si vous tournez le bouton du potentiomètre, vous devriez constater que l'intensité de courant qui traverse le potentiomètre est de 5 mA, peu importe la résistance de ce dernier.  Il s'agit bel et bien d'une source de courant constante.

Quelques explications

 1) La tension à l'entrée non-inverseuse est nulle, puisque cette entrée est directement reliée à la masse.

2)  La tension à l'entrée inverseuse est également nulle.  Ça découle de l'équation
Vsortie = A ( V+ - V - ) .  Avec un gain "A" considéré comme infini, on trouve V+= V -.

3)  La résistance R1 est donc soumise à une différence de potentiel de 5 V (le potentiel est de 5V à sa gauche, et nul à sa droite).  Si on applique la loi d'Ohm, on en déduit qu'elle sera traversée par un courant de 5 mA (dans mon cas, la valeur exacte de la résistance R1 était de 965 Ω, j'ai donc mesuré un courant de 5,20 mA).

4)  Puisque l'impédance d'entrée de l'entrée inverseuse est vraiment très grande (idéalement infinie), tout le courant qui traverse la résistance R1 devra également traverser la résistance R2.   Le courant qui traverse R2 sera donc de 5 mA, peu importe ce que vaut R2!


Il y a quand même des contraintes à considérer lors de la conception de notre source de courant:

1)  Il y a un courant maximal que la sortie de l'amplificateur opérationnel ne peut pas dépasser (c'est environ 20 mA pour l'UA741).  Je ne pourrais pas, par exemple, mettre une résistance R1 de 100 Ω, car ça nécessiterait un courant de 50 mA, supérieur à la valeur maximale admissible.

2)  Il y a une tension maximale que la sortie de l'amplificateur opérationnel ne peut pas dépasser (idéalement 12 V, puisque c'est ce qui alimente l'amplificateur, mais significativement moins en pratique, à cause des pertes internes).  Par exemple, vous ne pourrez pas faire circuler un courant de 5 mA à travers une résistance R2 de 10 kΩ, car ça nécessiterait une tension de sortie de 50 V...

Article suivant:  Amplificateurs opérationnels (8):  oscillateur à pont de Wien 

Article précédent:  Amplificateurs opérationnels (6):  sommateur et le soustracteur

Yves Pelletier (Twitter:  @ElectroAmateur)

samedi 8 novembre 2014

Contrôle d'un ou deux moteurs CC avec STM32 Nucleo et L293D

Je continue de m'amuser avec ma carte STM32 Nucleo qui, rappelons-le, ne coûte pas très cher et est facile à programmer au moyen du compilateur en ligne mbed.

Cette fois, nous allons contrôler deux moteurs à courant continu, qui pourront tourner dans un sens ou dans l'autre à une vitesse que nous pourrons faire varier.   Ça nous sera certainement utile si l'envie nous prend de construire un robot dont le cerveau serait un STM32...


Le circuit

Il est hors de question de brancher nos moteurs directement sur les sorties de la carte Nucleo, ça risquerait de l'endommager sérieusement.  Le circuit intégré L293D (dont le nom officiel est "double pont en H") nous servira d'intermédiaire entre la carte Nucleo et les moteurs.  En gros, le Nucleo enverra des directives au L293D, et ce dernier utilisera ces directives pour faire tourner les moteurs dans la bonne direction et à la vitesse désirée.


Le circuit L293D sera alimenté par la carte Nucleo, mais nous avons besoin d'une alimentation dédiée aux moteurs (encore une fois dans le soucis de ne pas endommager notre carte avec des courants trop intenses).  Quelques piles placées en série feront l'affaire, assurez-vous simplement de ne pas dépasser la tension maximale supportée par vos moteurs.

Voici ce que je vous propose comme circuit.  Prenez soin de brancher ensemble toutes les masses (une pin GND du Nucleo, les 4 pins GND du L293D et la borne négative de l'alimentation des moteurs).   Bien entendu, si vous n'avez besoin que d'un seul moteur, il n'est pas nécessaire d'en brancher un deuxième...




  • Pin 1 du L293D :  Pin D9 du Nucleo
  • Pin 2 du L293D : Pin D3 du Nucleo
  • Pin 3 du L293D: Une des bornes du premier moteur
  • Pins 4, 5, 12, 13 du L293D:  GND du Nucleo et borne négative de l'alimentation des moteurs
  • Pin 6 du L293D:  L'autre borne du premier moteur
  • Pin 7 du L293D:  Pin D4 du Nucleo
  • Pin 8 du L293D:  Borne positive de l'alimentation des moteurs
  • Pin 9 du L293D:  Pin D10 du Nucleo
  • Pin 10 du L293D:  pin D5 du Nucleo
  • Pin 11 du L293D:  Une des bornes du deuxième moteur
  • Pin 14 du L293D: L'autre borne du deuxième moteur
  • Pin 15 du L293D: Pin D6 du Nucleo
  • Pin 16 du L293D:  Pin 5V du Nucleo
  •  
Le script

Voici un exemple de script que vous pourrez installer dans le Nucleo au moyen du compilateur mbed (voir mes articles précédents pour plus d'informations sur la façon d'utiliser mbed).

Pour chaque moteur, le sens de la rotation dépend des deux sorties numériques qui lui sont assignées.  La vitesse du moteur est réglée au moyen d'un signal PWM.

- -

Yves Pelletier (Twitter:  @ElectroAmateur)

mercredi 5 novembre 2014

Utiliser le moniteur série de l'IDE Arduino pour autre chose qu'une carte Arduino

Le moniteur série (ou "serial monitor") de l'environnement Arduino est drôlement utile lorsque vous avez besoin de déboguer un sketch, ou simplement d'afficher à l'écran d'un ordinateur des valeurs mesurées par des capteurs branchés à l'Arduino.

Lorsque vous programmez d'autres microcontrôleurs, toutefois, il peut arriver que vous soyez obligé d'utiliser un environnement de développement qui ne comporte pas un moniteur série intégré.  C'est le cas, par exemple, pour l'IDE Pinguino, et pour mbed (IDE en ligne utilisé pour programmer les cartes STM32 Nucleo).  Il demeure alors parfaitement possible d'afficher à l'écran de l'ordinateur des informations qui proviennent du microcontrôleur, à la condition d'utiliser un autre logiciel.

Cet autre logiciel peut être, par exemple,  TeraTerm ou PuTTY (si vous utilisez Windows) ou Moserial (si vous utilisez Linux).  Mais, si vous le désirez, vous pouvez tout simplement utiliser le moniteur série de l'IDE Arduino.


Exemple de sketch Pinguino, pour communication série par USB

Pour qu'un Pinguino envoie des informations à l'ordinateur par l'entremise du câble USB, on utilise la fonction "CDC.printf" (CDC pour Communications Device Class).  Cette fonction utilise la même syntaxe que la fonction "printf", bien connue des programmeurs expérimentés en langage C. Le sketch ci-dessous, par exemple, envoie 2 fois par seconde un nombre entier, l'augmentant d'une unité avant chaque transmission.  Vous pouvez installer ce sketch dans votre Pinguino, en utilisant, bien entendu, l'IDE Pinguino.

---
---

Exemple de sketch STM32 Nucleo / mbed, pour communication série par USB

Pour qu'une carte STM32 Nucleo envoie des informations à l'ordinateur par le câble USB, on utilise la fonction "pc.printf", qui utilise la syntaxe habituelle de "printf".  L'exemple ci-dessous, qui sera installé dans le Nucleo au moyen de l'IDE en ligne mbed fait la même chose que le sketch Pinguino présenté plus haut.

---
---

Exemple de sketch Arduino, pour communication série par USB

Si vous préférez envoyer sagement vos messages au moyen d'une carte Arduino (ou d'une carte msp430 Launchpad programmée au moyen d'Energia), le sketch accomplissant la même tâche aura plutôt cette allure:

---
---

Réglages de l'IDE Arduino pour recevoir et afficher les messages

Maintenant que votre carte (Pinguino, Nucleo, Launchpad ou Arduino) convenablement programmée est branchée au port USB de l'ordinateur, il ne reste plus qu'à démarrer votre environnement de programmation Arduino, et sélectionner le port série correspondant à votre carte.


Ensuite, vous affichez le moniteur série, en cliquant sur le bouton en haut à droite de la fenêtre.


Vous vous assurez que la vitesse de transmission des données est à 9600 baud.


Si tout va bien, le moniteur série affichera les messages qui proviennent de la carte, sans discrimination, qu'il s'agisse ou non d'une carte Arduino.


Il va sans dire que tous les exemples de sketches de cet article demeurent identiques si vous choisissez de recevoir les messages sur un autre logiciel de communication série.


Yves Pelletier (Twitter:  @ElectroAmateur)

samedi 1 novembre 2014

STM32 Nucleo et afficheur LCD

Il y a quelques mois, je vous avais parlé de la carte STM32 Nucleo et de sa programmation au moyen du compilateur en ligne mbed.   Aujourd'hui, je vous propose la suite:  ce petit tutoriel concernant le contrôle d'un afficheur à cristaux liquides (LCD).



Matériel

Vous aurez besoin:

  • d'une carte STM32 Nucleo (j'ai utilisé le modèle bas de gamme F030R8)
  • d'un afficheur LCD 2 X 16 (2 lignes de 16 caractères) muni d'un driver de type Hitachi HD44780.  Si vous avez un modèle conçu pour fonctionner sous une tension de 3,3 V, c'est parfait.  Si votre modèle fonctionne sous 5 V, il y a de bonnes chance que ça fonctionne (mais ce n'est pas sûr à 100% puisque le Nucleo communique avec 3,3 V).
  • d'un ordinateur branché à internet.  J'ai fait des tests concluants avec Windows 7 et Linux Mint.


Branchements

L'afficheur LCD comporte 16 connexions situées au-dessus de la zone d'affichage.  Nous pouvons les brancher de la façon suivante:

  • Pin 1 du LCD (VSS):  Pin GND du Nucleo
  • Pin 2 du LCD (VDD):  Pin 3V3 du Nucleo si votre LCD est conçu pour fonctionner sous cette tension, ou Pin 5V du Nucleo si votre LCD est le modèle (plus répandu) qui fonctionne sous 5 V.
  • Pin 3 du LCD (VO):  branchée à un potentiomètre qui permettra d'ajuster la tension à une valeur située entre 0 et 3,3 V (ou entre 0 et 5 V), de façon à ajuster le contraste de l'affichage.
  • Pin 4 du LCD (RS):  Pin D2 du Nucleo
  • Pin 5 du LCD (RW):  Pin GND du Nucleo
  • Pin 6 du LCD (E):  Pin D3 du Nucleo
  • Pins 7, 8, 9 et 10 du LCD (D0, D1, D2, D3):  Pas utilisées
  • Pin 11 du LCD (D4):  Pin D4 du Nucleo
  • Pin 12 du LCD (D5):  Pin D5 du Nucleo
  • Pin 13 du LCD (D6):  Pin D6 du Nucleo
  • Pin 14 du LCD (D7): Pin D7 du Nucleo
  • Pin 15 du LCD (A):  Pin 3V3 ou 5V du Nucleo, selon votre modèle de LCD (c'est pour le rétroéclairage).
  • Pin 16 du LCD (K):  Pin GND du Nucleo

Programmation dans mbed

Voyons maintenant comment construire votre programme dans mbed.  Vous vous rendez d'abourd sur le site http://developer.mbed.org, vous vous identifiez (ou vous vous inscrivez s'il s'agit de votre première visite), vous branchez votre carte STM32 Nucleo au port usb de votre ordinateur, et vous cliquez sur le bouton "compiler" en haut à droite de la fenêtre pour accéder au compilateur en ligne.


Pour créer un nouveau programme, vous cliquez le bouton "New..."/"New Program..."


...ce qui fait apparaître la fenêtre de dialogue illustrée ci-dessous.  Si votre carte est branchée au port USB, "Platform" devrait déjà montrer le bon numéro de modèle.  Vous pouvez créer votre nouveau programme au moyen d'un modèle (j'ai choisi un programme vide), et vous choisissez un nom pour votre nouveau programme (j'ai choisi "Afficheur LCD").


Ce "nouveau programme" est en fait un répertoire dans lequel nous devons maintenant ajouter un fichier.  Nous cliquons à nouveau sur le bouton "New...", mais cette fois nous sélectionnons "New File...".


Nous baptisons ce fichier "main.cpp".



Vous pouvez copier et coller le script ci-dessous à l'intérieur du fichier main.cpp:






Notre script utilise deux bibliothèques, que nous devrons importer dans notre répertoire au moyen du bouton "Import".  Vous cliquez ensuite sur l'onglet "Libraries", vous sélectionnez dans la liste les bibliothèques désirées ("mbed" et "text_LCD"), et vous cliquez sur le bouton "Import!" (Remarque:  le bouton "Import!" (avec un point d'exclamation) et le bouton "Import" (sans point d'exclamation) sont deux boutons différents...


Maintenant, votre répertoire "Afficheur_LCD" devrait contenir, en plus de votre fichier "main.cpp", la blibliothèque "mbed" et la bibliothèque "text_LCD".

Il ne vous reste plus qu'à compiler le programme (bouton "Compile") et à transférer le fichier ".bin" obtenu dans votre Nucleo.

Yves Pelletier (Twitter:  @ElectroAmateur)