Go Down

Topic: conception d'un grand afficheur pour une horloge sous arduino (Read 1 time) previous topic - next topic

esloch

Salut

j'ai réaliser une horloge sous arduino, pour afficher l'heure (et d'autres informations) je veux utiliser un afficheur multiplexé "home made" : chaque segments est composé de plusieurs led (2 et 3), impossible d'alimenter directement, solution utiliser : une 2eme alimentation de 12 V pour alimenter les segments de l'afficheur.

j'aimerais controler la luminosité de mon afficheur via une photoresistance, donc au final je veux controler cette alimentation de 12 V (disons deux états), via arduino

c'est possible ?

_pepe_

#1
Jul 03, 2017, 08:49 pm Last Edit: Jul 03, 2017, 08:49 pm by _pepe_
Bonsoir

Oui, c'est possible. Mais il devrait être beaucoup plus simple de contrôler directement la luminosité de l'afficheur avec les moyens existants.

esloch

Bonsoir

Oui, c'est possible. Mais il devrait être beaucoup plus simple de contrôler directement la luminosité de l'afficheur avec les moyens existants.
comment c'est possible ? vous pouvez svp me donner un fils à suivre ..

et comment "contrôler directement la luminosité de l'afficheur avec les moyens existants" plus facilement ?

_pepe_

#3
Jul 03, 2017, 11:09 pm Last Edit: Jul 04, 2017, 03:08 am by _pepe_
Prenons l'exemple d'un afficheur à 4 digits de type « 88:88 », multiplexé dans un rapport 1/4 (un digit allumé à la fois) avec une fréquence de rafraîchissement de 50 Hz (i.e. période de 20 ms).

En temps normal, on allume successivement chaque digit durant 5 ms en commandant chaque fois les segments nécessaires. On a :

5 ms + 5 ms + 5 ms + 5 ms = 20 ms

La luminosité apparente des segments est maximale et égale à (5 ms/20 ms) = 25% de la luminosité maximale instantanée des leds.


Pour réduire la luminosité apparente, il suffit de diminuer le temps d'allumage de chaque digit sans modifier la fréquence de rafraîchissement.

Par exemple, on peut allumer successivement chaque digit durant 3 ms, puis atteindre 8 ms sans rien allumer. On a alors :

3 ms  + 3 ms  + 3 ms  + 3 ms  + 8 ms = 20 ms

La luminosité apparente des segments est égale à (3 ms/20 ms) = 15% de la luminosité maximale instantanée des leds, soit (15%/25%) = 60 % de la luminosité apparente maximale.


On peut aussi allumer chaque digit durant 3 ms, mais en les éteignant durant 2 ms entre les allumages. On a alors :

3 ms  + 2 ms  + 3 ms  + 2 ms  + 3 ms  + 2 ms  + 3 ms  + 2 ms = 20 ms

On obtient alors le même résultat (60% de la luminosité apparente). Toutefois, cette façon de procéder permet d'utiliser les interruptions d'un timer matériel pour cadencer l'allumage et l'extinction des digits. Par exemple :
- l'interruption Timer Overflow allume successivement chaque digit en commandant les segments requis,
- l'interruption Compare Match les éteint,
- la valeur du comparateur du timer règle directement la luminosité de l'afficheur.

esloch

oui oui ... c'est exactement ce que je suis entreins de faire avec mon afficheur multiplexé classique ...

maintenant je veux utilisé un afficheur multiplxé home made géant (enfin ...) avec plus d'une led par segments ... impossible d'alimenter ce directement via ma carte arduino ... mon idée c'est d'utiliser une alimentation externe pour l'affichage de ces segments ... 12 V ... pour contrôler la luminosité de ces segments je dois contrôler cette alimentation 12 V ... disons deux état (haut et bas)

j'espère que j'ai bien expliqué mon problème ...

_pepe_

#5
Jul 04, 2017, 02:02 am Last Edit: Jul 04, 2017, 03:46 am by _pepe_
Cette question a déjà été traité dans de nombreuses discussions sur le forum.

La solution dépend du type d'afficheur (à cathodes communes ou à anodes communes), de la luminosité souhaitée (visibilité en plein soleil ?) et de la disponibilité des composants si l'on opte pour un circuit intégré spécialisé.


Par exemple, pour une luminosité importante et un afficheur à anodes communes, on peut choisir un circuit à base d'ULN2003 (ou ULN2803), avec quatre transistors PNP pour la sélection des digits.

On peut également opter pour un circuit plus spécialisé comme le MAX6971. Le montage pour un afficheur à 4 digits de type « 88:88 » ressemble à ceci :



(La tension d'alimentation des afficheurs n'a pas besoin d'être précise. Le circuit assure le contrôle du courant dans les leds et supporte une tension jusqu'à 36V.)


Pour une luminosité limitée (usage en intérieur) et un afficheur à cathodes communes, on peut envisager un circuit à base de circuit standard 4511* avec un interfaçage 5V-->12V des signaux de commande, avec quatre transistors NPN pour la sélection des digits. Voici le schéma de principe d'une interface rudimentaire dans le cas d'une alimentation 12V régulée :



(Cette interface est à reproduire plusieurs fois, d'une part pour les entrées A, B, C et D du CD4511, à gauche, et d'autre part pour les transistors de commande de chaque digit, à droite.)

* : référence CD4511B ou HEF4511B, pouvant être alimenté jusqu'à 18V. Attention, les 74HC4511 et autres 74x4511 ne conviennent pas.

esloch

Merci beaucoup pour toutes ces infos .. et désoler si j'ai pas bien fouiner dans toutes les rubriques du forum ...

personnellement je pensais utiliser une solution de ce type :

a base de photocoupleur (6N137) ... simple et a priori efficace ... qui ne fait pas intervenir l'arduino (déjà bien occuper pour faire fonctionner l'horloge) ... j'aimerais juste que cette alimentation de 12 V diminue de moitié avec l'obscurité (via photorésistance) ...


_pepe_

#7
Jul 04, 2017, 10:25 am Last Edit: Jul 04, 2017, 10:27 am by _pepe_
Concernant ce schéma, il serait préférable de relier la résistance de 10kΩ à la masse plutôt qu'au +5V, afin d'éteindre le segment et de ne pas faire chauffer le transistor lorsque l'alimentation 5V n'est pas opérationnelle.


Sur le principe, ce montage présente l'inconvénient de devoir être reproduit autant de fois qu'il y a de segments.

Un affichage de type 88:88 nécessiterait de le réaliser 30 fois, ce qui représenterait 120 composants hors leds. On ne profite absolument pas du fait que l'afficheur soit multiplexé, ce qui devrait normalement permettre de réduire énormément le nombre de composants.

L'emploi des optocoupleurs ne se justifie que s'il s'agit de venir se brancher sur un circuit existant sans le modifier, ce qui rend l'opération plus complexe et coûteuse que de réaliser un nouveau circuit correctement conçu. Dans le cas contraire, cela représenterait à mon sens une solution parmi les pires possibles.


Néanmoins, dans ce cas de figure il est possible de faire varier la luminosité en modulant la commande de tous les transistors simultanément, en hachant la tension 5V qui alimente les optocoupleurs (PWM).

Il faut seulement synchroniser la fréquence de hachage avec la fréquence de multiplexage si elles sont du même ordre de grandeur, afin d'éviter un effet de papillotement.



Peut-être serait-il plus judicieux d'en dire plus sur le contexte de cette réalisation, afin de pousser un peu plus loin la réflexion et d'éviter de construire une usine à gaz si une solution plus simple peut être envisagée.

Notamment, quel est le montage actuel de l'afficheur de l'horloge ? Comment le programme de l'Arduino intervient-il actuellement dans l'affichage, et quels obstacles s'opposeraient à sa modification ?

esloch

...
On peut également opter pour un circuit plus spécialisé comme le MAX6971. Le montage pour un afficheur à 4 digits de type « 88:88 » ressemble à ceci :



(La tension d'alimentation des afficheurs n'a pas besoin d'être précise. Le circuit assure le contrôle du courant dans les leds et supporte une tension jusqu'à 36V.)

...
bon ce type de circuit m'intersse ... mais c'est compliquer ... comment adapter les sortie que j'ai pour controler mon afficheur multipléxe de type 88:88 ... sortie obtenu via deux circuits 74HC595 ... a ce MAX6971... j'essai de voir ce que je peut faire ...


esloch

...
Notamment, quel est le montage actuel de l'afficheur de l'horloge ? Comment le programme de l'Arduino intervient-il actuellement dans l'affichage, et quels obstacles s'opposeraient à sa modification ?
c'est un code que j'ai trouver sur le net et que j'ai modifier ... au final il marche impec avec un afficheur classique :



mais l'idée c'est de l'utilisé avec des grands afficheurs ...


_pepe_

#10
Jul 04, 2017, 12:09 pm Last Edit: Jul 04, 2017, 12:23 pm by _pepe_
Je ne vois aucune résistance de limitation du courant sur la photo. Cela pourrait finir par une panne à plus ou moins long terme.


Sinon, compte tenu de l'utilisation des registres à décalage 74HC595, ton montage du post #6 sur chaque segment ne se justifie absolument pas. Il vaut mieux intervenir directement au niveau du multiplexage, ce qui limite le montage à huit commandes de cathodes et quatre commandes d'anodes. Par exemple :



En bas, la commande des cathodes/des segments. En haut, la commande des anodes/des digits.

En plus des deux 74HC595, ce montage réclame un ULN2803, 4 transistors NPN, 4 transistors MOSFET canal P et  16 résistances. N'importe quel petit transistor NPN (BC548, 2N3904, etc.) peut convenir. Le MOSFET canal P est un modèle classique, qui doit juste pouvoir supporter le courant consommé par tous les segments d'un digit. Le courant dans chaque segment est réglé par la valeur des huit résistances RLED.

_pepe_

#11
Jul 04, 2017, 12:12 pm Last Edit: Jul 04, 2017, 12:13 pm by _pepe_
À la polarité des signaux de commande et à la correspondance des pins près, tous ces circuits à base de registres à décalage (MAX6971 ou 74HC595) se commandent suivant le même principe. Leur mise en œuvre ne devrait donc pas sensiblement changer ton programme actuel.

esloch

Je ne vois aucune résistance de limitation du courant sur la photo. Cela pourrait finir par une panne à plus ou moins long terme.
je confirme ... mais bon pour les test sur plaque d'essai ... je controle ... montage finale ... obligatoirement les résistances de limitation ...

Sinon, compte tenu de l'utilisation des registres à décalage 74HC595, ton montage du post #6 sur chaque segment ne se justifie absolument pas. Il vaut mieux intervenir directement au niveau du multiplexage, ce qui limite le montage à huit commandes de cathodes et quatre commandes d'anodes. Par exemple :



En bas, la commande des cathodes/des segments. En haut, la commande des anodes/des digits.

En plus des deux 74HC595, ce montage réclame un ULN2803, 4 transistors NPN, 4 transistors MOSFET canal P et  16 résistances. N'importe quel petit transistor NPN (BC548, 2N3904, etc.) peut convenir. Le MOSFET canal P est un modèle classique, qui doit juste pouvoir supporter le courant consommé par tous les segments d'un digit. Le courant dans chaque segment est réglé par la valeur des huit résistances RLED.

magnifique ... j'essai de digérer tous ca ... et j'espère réussir cette modification ... je débute sous arduino et niveau électronique c'est pas top non plus ... enfin ...

Merci :)

esloch

#13
Jul 04, 2017, 01:05 pm Last Edit: Jul 04, 2017, 01:11 pm by esloch
...Le MOSFET canal P est un modèle classique, qui doit juste pouvoir supporter le courant consommé par tous les segments d'un digit...
un conseil pour ce modéle de MOSFET ?? le courant consommé par tous les segments d'un digit = 3 (led / segment) x (7 segments * 150 mA consommation d'une led) = 3150 mA ... hein ! ...

IRFZ44N c'est un bon choix ?

_pepe_

#14
Jul 04, 2017, 02:16 pm Last Edit: Jul 05, 2017, 02:03 am by _pepe_
Il s'agit de la consommation des segments d'un seul digit.

Pour 8 segments (si tu utilises les points) cela fait seulement 8 × 150 mA = 1,2 A.

Un IRFZ44N permet de commuter un courant de 49 A (soit 40 fois la valeur nécessaire) en présentant une résistance de 0,0175 Ω sous 10V. Donc il peut très largement convenir, à défaut de disposer d'un modèle plus petit.

[EDIT : Il s'agit d'un MOSFET à canal N, qui ne convient donc pas au montage.]

Go Up