Dernière mise à jour le 18/02/2018

Présentation


Comment afficher une valeur analogique en une valeur numérique et que celle-ci peut être lue sur un afficheur 7 segments multiplexé ? En voilà une de bonne question !
Le microcontrôleur qui sera utilisé pour lire une valeur analogique sera un PIC 16F88, car ce contrôleur à la particularité de posséder 7 canaux analogique / numérique, déjà un bon point.
 




 
L’entrée analogique se fait sur 10 bits ce qui donne 1023 possibilités. Pour une tension maxi de 5V à ses broches, la tension analogique et convertie en une valeur numérique qui correspond pour 5V 1023, pour 0V nous avons 0, il suffit de faire le produit en croix (ou règle de trois) pour trouver la valeur numérique. Mais vous avez de la chance car cette régle est déja intégré dans le programme du PIC donc nul besoin de prendre de calculette.

Schéma


test-afficheur-002
(Clique pour agrandir)

Fonctionnement

Le schéma électronique propose un fonctionnement en multiplexage, et vous devez surement vous posez la question en vous demandant comment peut-on allumer 2 afficheurs 7 segments en utilisant les même sorties du PIC ??!! Oui !! Et bien vous savez quoi c’est ce que nous allons voir maintenant.
Afin d’aborder le multiplexage, nous allons utiliser 2 manières pour programmer le PIC18F88.
 
La 1er manière est celle d’un débutant tout comme moi qui veux arriver à faire allumer deux affichages à l’aide de deux transistors (Q1 et Q2). Le principe est le suivant, c’est de pouvoir piloter les deux transistors Q1 et Q2 à tour de rôle, c’est-à-dire que lorsque le transistor Q1 est 100% passant, le transistor Q2 lui est bloqué, puis vice versa, Q1 bloqué et Q2 passant.
 
Dans ces 2 cas de figures, il suffira donc de scruter au bon moment un petit bout du programme qui permettra de lire soit les dizaines, soit les unités. Ainsi, vous allez vous retrouver avec un afficheur 7 segments allumée pour les dizaines, et éteint pour l’unité, et vice versa tout en modifiant la lecture du programme.
 
En ce qui concerne la 2ème manière, celle-ci est plutôt d’un niveau confirmé. En effet, plutôt que de mettre une temporisation qui celle-ci ne fait que de stopper la lecture du programme, nous allons interrompre le programme principal d’une manière plus élégante en utilisant les interruptions du PIC 16F88. Ainsi comme précédemment toutes les secondes les valeurs seront affichées sur l’affichage 7 segments – tantôt l’un tantôt l’autre.

Multiplexer c’est quoi ?

On parle de signaux multiplexés lorsque sur un seul fil nous envoyons plusieurs données les unes à la suite des autres. L’avantage de multiplexer des informations, nous utilisons moins de fils de liaison électrique, et d’un point de vu général nous faisons des économies de fils.

Fonctionnement sans interruptions – delay_ms(1000)


Vous trouverez en programmation les logiciels:
MikroPascal-Sans_Interuptions
MikroC-Sans_Interruptions
 
Afin de pouvoir intervertir entre le transistor Q1 et le transistor Q2 Il suffira de mettre des temporisations de type delay_ms(1000) ce qui pendant toutes les secondes, pendant que Q1 et passant Q2 est bloqué, puis ensuite une seconde après c’est Q1 qui est bloqué et Q2 passant.
 
Cette méthode est plutôt facile puisque nous utilisons seulement des tempos. Par contre au niveau du programme celui-ci s’arrête de fonctionner toutes les secondes ce qui n’est vraiment une des meilleures solutions, mais bon !!! Peu importe du moment que cela fonctionne !!
J’ai mis un delay de 1sec rien ne vous empêche de mettre moins, d’ailleurs je vous conseille 20ms à cette vitesse la persistance rétinienne ne verra pas les clignotements des deux afficheurs

ADC_Read(x)

La lecture de la tension est faite sur la broche RA0 du PIC. En faisant varier le potentiomètre RV1 celui-ci fera varier la tension qui est comprise entre 0 et 5V.
 
La broche RA0 étant configurée comme une entrée analogique, cette tension analogique (0 ..5V) sera convertie en une valeur numérique (0..1023), c’est ce qu’on appel une conversion Analogique/Numérique (A/N).
Cette lecture est réalisée par la routine ADC_Read(x) (x qui correspond à l’entrée qui sera lue dans notre exemple il s’agit de la broche 0)

Affichage des valeurs converties

Comme son non l’indique l’afficheur permettra de donner les informations des tensions lues sur la broche RA0 du PIC16F88. La particularité c’est de pouvoir indiquer avec 1 chiffre après la virgule.

Fonctionnement avec interruptions


Dans ce mode de fonctionnement, nous allons utiliser les interrutpions du PIC, je vous laisse voir les programmes:
MikroPascal-Avec_Interuptions
MikroC-Avec_Interruptions
– Et pour finir Fichier(.hex) qui pourra être injecté directement dans le PIC16F88

Réglages “EDIT PROJECT”


Merci de respecter ces captures ci-dessous pour le bon fonctionnement du programme que vous pouvez télécharger ci-dessous


Pour tout le reste il suffit de désactiver.

Logiciel du PIC


Oui plein voir ci-dessus (x4)

Prototype


 
proto-18 tets-2

test-15 test-16

Circuit imprimé


Non disponible sur le site

Historiques


– 18/02/18
Ajout réglages “EDIT PROJECT”.
– 17/02/18
Ajout programmes MikroPascal et MikroC + fichier(.HEX) pour tests.
– 17/01/14
Première mise à disposition.