mardi 30 septembre 2014

Pinguino et afficheur LCD

Voici quelques petites recommandations pour l'utilisation d'un afficheur LCD de type Hitachi HD44780 (2 lignes de 16 caractères chacune) avec un Pinguino.


Connexions de l'afficheur au Pinguino


J'ai utilisé le mode 4 bits, question d'économiser quelques pins sur le Pinguino, ça peut toujours être utile pour brancher autre chose.


Tel qu'illustré ci-dessus, les branchements sont:
LCD GND - Pinguino GND
LCD Vcc - Pinguino 5 V
LCD V0 - Curseur d'un potentiomètre allant de 0 à 5 V (ajustement du contraste)
LCD Rs - Pinguino pin 0
LCD R/W - Pinguino GND
LCD E - Pinguino pin 1
LCD D0 - pas branché
LCD D1 - pas branché
LCD D2 - pas branché
LCD D3 - pas branché
LCD D4 - Pinguino pin 2
LCD D5 - Pinguino pin 3
LCD D6 - Pinguino pin 4
LCD D7 - Pinguino pin 5

Pour connaître la numérotation des entrées/sorties de votre modèle de Pinguino, référez-vous au site pinguino.cc (pour cette expérience, j'ai utilisé un Pinguino 4550).

Côté logiciel, un sketch destiné à l'Arduino ne nécessitera que quelques rares modifications pour fonctionner correctement avec le Pinguino.  La principale différence, à mon avis, c'est qu'avec Pinguino la fonction lcd.print ne fonctionne que pour afficher des strings, alors qu'avec Arduino on peut tout aussi bien lui passer un nombre en argument.  Il existe pour Pinguino la fonction lcd.printNumber, mais d'après ce que j'ai constaté elle ne fonctionne que pour des nombres entiers.

Pour afficher une valeur décimale non-entière, on doit donc utiliser la fonction lcd.printf.  Les programmeurs expérimentés en langage C sont familiers avec printf, dont la syntaxe est loin d'être conviviale, à mon avis.  Ainsi, pour afficher "Tension:  2,01 V" , où 2,01 est le contenu d'une variable de type float intitulée "nombre", j'ai dû écrire:

lcd.printf("Tension: %04f V", nombre); 

Le symbole "%" indique l'endroit où le contenu de la variable sera inséré à l'intérieur du string, "04" permet de régler le nombre de décimales qui seront affichées, et "f" indique que la variable est de type float.

Ça fonctionne, mais sur cet aspect je préfère de loin la convivialité de la syntaxe Arduino!

Voici donc l'adaptation pour le Pinguino d'un sketch que j'avais utilisé pour l'Arduino il y a quelques années:  l'afficheur LCD indique en volts la tension à l'entrée analogique 1 du Pinguino.  Sur la deuxième ligne, une jauge de type "bar graph" ajoute une information visuelle supplémentaire.

La tension à l'entrée analogique 1 du Pinguino peut provenir, par exemple, d'un potentiomètre.



Yves Pelletier (Twitter:  @ElectroAmateur)

samedi 27 septembre 2014

Amplificateurs opérationnels (3): Le multivibrateur astable


Lors des deux premiers articles ce cette série portant sur les applications de l'amplificateur opérationnel, nous avons construit un comparateur et un suiveur de tension.

Pour ce troisième article, nous allons construire un un multivibrateur astable qui produira un signal en créneau: le signal alternera rapidement entre une tension constante positive et une tension constante négative.

Encore une fois, j'ai utilisé un UA741, mais il y a fort à parier que la plupart des modèles d'amplificateur opérationnel d'usage général feront l'affaire.  C'est une alimentation ATX d'ordinateur qui m'a permis d'alimenter l'amplificateur avec une tension bipolaire de ±12 V.

Voici le schéma du circuit:



Lorsque la tension de sortie de l'amplificateur est positive, le condensateur se charge et la tension à l'entrée inverseuse augmente.  Lorsque cette dernière devient supérieure à la tension à l'entrée non-inverseuse, la tension de sortie devient négative, ce qui oblige le condensateur à se décharger, puis à se charger avec la polarité inverse jusqu'à ce que la tension de sortie change de polarité à nouveau.

Il en résulte un signal en créneau d'environ 450 Hz, oscillant entre -12 V et +12 V environ.   Si vous modifiez R1, R2, R3 ou C1, la fréquence sera différente.




Pour obtenir un vibrateur dont la fréquence est ajustable, vous pouvez remplacer la résistance R1 par un potentiomètre.  De plus, l'ajout d'un deuxième potentiomètre à la sortie vous permet de modifier l'amplitude du signal, si désiré.


Article suivant:  Amplificateurs opérationnels (4):  intégrateur et le différentiateur
Article précédent:  Amplificateurs opérationnels (1):  comparateur



Yves Pelletier (Twitter:  @ElectroAmateur)

mercredi 24 septembre 2014

Amplificateurs opérationnels (2): Le suiveur de tension

Nous avons vu dans le premier article de cette série qu'en mode comparateur, seuls deux états sont possibles à la sortie de l'amplificateur opérationnel: une tension positive ou une tension négative.

Toutefois, l'amplificateur opérationnel est bel et bien un composant analogique:  sa tension de sortie peut varier de façon continue de façon à prendre une infinité de valeurs différentes possibles.  Mais pour ce faire, il faut une contre-réaction:  une des entrées doit être reliée à la sortie.

La contre-réaction la plus simple, c'est un fil conducteur reliant la sortie à l'entrée inverseuse:  ce montage s'appelle "suiveur de tension".

Faisons une petite analyse de ce circuit.  Deux points reliés par un conducteur se trouvent au même potentiel électrique. Donc, pour ce circuit,  Vsortie =  V -.

D'autre part, nous avons présenté cette équation dans le billet précédent:

                     Vsortie = A ( V+ - V - )

... on peut aussi l'écrire de cette façon:     V + - V = Vsortie / A

... et puisque A est à toute fin pratique infini, il en découle que V + = V -  (les deux tensions d'entrée sont égales entre elles).

Puisque Vsortie =  V et V + = V ,  il en découle que Vsortie =  V + : la tension de sortie sera identique à la tension appliquée sur l'entrée non-inverseuse.


Ici, j'en entend qui s'exclament:  à quoi peut bien servir un amplificateur dont la tension de sortie est identique à la tension d'entrée!?!?  Ce truc ne sert à rien!?!

Voici un exemple où ça peut être très utile:

Supposons qu'à l'intérieur d'un circuit alimenté par une source de 5 V, vous avez besoin d'une tension de 2,5 V; une solution simple consiste à utiliser un diviseur de tension constitué de deux résistances identiques montées en série (supposons deux résistances de 10 K).

Tout va bien:  vous mesurez maintenant 2,5 V à l'endroit où les deux résistances sont branchées ensemble.

Mais qu'arrive-t-il si vous alimentez une résistance de 1K à partir de ce diviseur de tension?



Ça ne va plus du tout!  La présence de la résistance de charge est venue perturber les caractéristiques de votre diviseur de tension, et on lit maintenant une tension de 0,4 V là où on espérait obtenir 2,5 V!

Voici un remède efficace:  vous insérez un suiveur de tension entre le diviseur de tension et sa résistance charge.


Cette fois, la tension de 2,5 V est intégralement transmise à la résistance de charge.

Pourquoi ça fonctionne?  À cause de l'énorme impédance d'entrée  de l'amplificateur opérationnel, tout le courant qui traverse la résistance R1 doit aussi traverser R2:  le diviseur de tension est donc complètement isolé de la résistance de charge.

Yves Pelletier (Twitter:  @ElectroAmateur)