Partage
  • Partager sur Facebook
  • Partager sur Twitter

BCD 7447 l'afficheur 7 segments ne s'allume pas

26 juillet 2015 à 4:15:43

Bonjour je me suis bloqué dans cette page de ce tuto: https://zestedesavoir.com/tutoriels/537/arduino-premiers-pas-en-informatique-embarquee/743/gestion-des-entrees-sorties/3424/afficheurs-7-segments/

je n'arrive pas à comprendre les numéros 7 et 8 de l'encodeurs, j'ai bien compris les 4 valeurs(A,B,C,D) et les sorties de l'autre coté.

dans le logiciel Proteus, le decodeur MC14543 n'est pas dispo, j'ai donc le remplacé par 7447 puis que j'ai un afficheur anode

voici le shema que j'ai fait:

http://www.hostingpics.net/viewer.php?id=534189Sanstitre1.jpg

voici coté programmation:

 

int a = 3;
int b = 2;
int c = 1;
int d = 0;
int allimentation_4 = 4;
void setup() {
  // put your setup code here, to run once:
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(allimentation_4, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(allimentation_4, LOW);
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
}

c'est juste le nombre 5

qu'est ce qu'il me manque pour que ça s'allume et affiche le numéro 5 ?

Merci 

-
Edité par SaraSara11 26 juillet 2015 à 4:17:47

  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2015 à 7:34:38

Bonjour,

Comme cela est indiqué dans le tuto,

  • La broche 7 du MC14453 = Blank Input permet d'éteindre tous les segments de l'afficheur quand cette entrée est connectée à 0V. A laisser en l'air ou à connecter à +5V pour pouvoir afficher.
  • La broche 8 du MC14453 est la broche d'alimentation de référence de tension à mettre à 0V
  • La broche 16 du MC14453 est la broche d'alimentation positive à mettre à +5V

Coté schéma il y a une erreur sur le transistor, il est mentionné un 2N2222 qui est un NPN. Or son émetteur est raccordé au +, il ne faut pas s'attendre à avoir du + sur l'anode commune de l'afficheur, l'afficheur restera éteint. Si l'on veut alimenter l'afficheur il est nécessaire de

  • soit de changer de type de transistor pour un PNP (BC327 par exemple)
  • soit d'inverser émetteur/collecteur sur le schéma ainsi que d'inverser la commande de la sortie 4 dans le programme.
  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2015 à 10:06:23

As tu un afficheur à anode commune ou cathode commune ?


Si c'est un afficheur a anode commune (comme dans le tuto que tu nous montres), alors tu as quelques problèmes :

  • Tu as inverser le E et le C du transistor (la pin avec le petit triangle en forme de flèche doit être connecté à l'afficheur)
  • Tu as inversé la tension de référence du transistor (la pin qui part ni vers l'arduino, ni vers l'afficheur doit être connecté au +5V alors que tu l'as connecté au 0V (ou du moins, c'est ce que laisse penser le petit triangle sans indication de tension))
  • Tu as inversé la tension de contrôle du transistor (il faut écrire HIGH et non LOW)

Si c'est un afficheur a cathode commune :

  • Tu as inversé la tension de contrôle du transistor (il faut écrire HIGH et non LOW)
  • Tu as inversé le contrôle du décodeur (les HIGH devraient être LOW et vice versa)

-
Edité par lorrio 26 juillet 2015 à 15:13:02

  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2015 à 14:36:46

Rebonjour;
Oui j'ai un afficheur à anode commune :( je ne le savais pas, j'ai partie pour acheter les composants proposé dans la partie 1 de tuto sans connaissance dans le domaine, le vendeur m'a donné ça

sinon j'ai inversé le B et le C de transistor puis  j'ai mis le B sur la tension 5 Volt oO

ça marche mnt sauf que je ne pige pas l'utilité de transistor, il n'est pas bronché à ma carte arduino donc je ne le controle pas oO ???


je pense et meme si ça marche, je pense que j'ai fait une erreur au niveau de branchement non ? 
  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2015 à 14:41:39

clgbzh a écrit:

  • soit d'inverser émetteur/collecteur sur le schéma ainsi que d'inverser la commande de la sortie 4 dans le programme.

Pour quelle raison ne pas utiliser la sortie 4 comme initialement, et d'inverser la commande dans le programme. Sinon aucun intérêt de mettre le transistor si ce n'est pas pour commander l'extinction de l'afficheur.
  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2015 à 15:14:47

Il te suffit de remettre le B sur l'arduino en laissant la résistance de 220ohm, voir plutôt 1k, ce serait plus approprié.

Lorsque tu écriras un HIGH, ton afficheur sera allumé.

Lorsque tu écriras un LOW, ton afficheur sera étteind.

  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2015 à 15:50:59

lorrio a écrit:

Il te suffit de remettre le B sur l'arduino en laissant la résistance de 220ohm, voir plutôt 1k, ce serait plus approprié.


Le transistor étant en collecteur commun il vaut mieux ne pas augmenter la résistance pour éviter la baisse de tension sur l'afficheur. Si l'on met 1k on peut approcher 0,8V aux bornes de la 1k, ajouté au 0,65V de Vbe on perdrait environ 1,5V en Vce ça commence à compter. 220 Ohms est un bon compromis qui évite les problèmes en cas d'erreur de branchement.

-
Edité par clgbzh 26 juillet 2015 à 15:52:51

  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2015 à 15:58:16

Ah oui, vu comme ça, c'est pas idiot.

Mais un transistor PNP aurait quand même été plus approprié non ?

  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2015 à 20:27:16

Bon j'ai pigé

le role de transistor apres la lecture et la re-lecture x) ça m'a prit une demi journée de lire la meme paragraphe plusieurs fois.

normalement l'éléctricité passe par le collecteur et là il ne peut pas passer sauf si la base l'autorise.


si la base autorise la circulation d'electricité donc y'aura de l'éléctricité dans le l'Emetteur.


pour tester ça j'ai fait un petit teste dans une simple LED et ça marche (shéma):
 

mais dans la pratique j'ai remarque un truc que je n'ai pas pigé, si je fait ce branchement, l'afficheur 2 ne va pas s'allumé pourquoi oO

normalement l'afficher N°2 doit s'allumer aussi, car le 1er transistor diffuse de l'étéctricité donc la base de transistor 2 va autorisé la circulation d'electricité et donc l'allumage de l'afficheur 2 oO

----------------------------------------------------

autre chose partie programmation:

oubliant la gestion du temps tuto(https://zestedesavoir.com/tutoriels/537/arduino-premiers-pas-en-informatique-embarquee/743/gestion-des-entrees-sorties/3424/afficheurs-7-segments/) en bas de la page.

 ce code là:

    if(nombre > 9) // si le nombre reçu dépasse 9
    {
        dizaine = nombre / 10; // on récupère les dizaines
    }

si le nombre est par exemple est : 11

donc int nombre = 11;

dizaine = nombre / 10;

afficher(dizaine);

ce qui lui donner 1.1 oO

je pige pas, des explications SVP


-
Edité par SaraSara11 26 juillet 2015 à 20:28:57

  • Partager sur Facebook
  • Partager sur Twitter
26 juillet 2015 à 22:08:01

C'est plus compliqué que ça ;)

Pour qu'un transistor se ferme, il a besoin d'une tension Vbe de 0.6 donc si tu mets du 5V sur le B, alors il y aurait 5-0.6V = 4.4V sur le E.

Ton LCD de gauche est donc alimenté en 4.4V.

Quand au LCD de droite, la tension au point B de son transistor est de 4.4V donc il va être alimenté en 4.4-0.6 = 3.8V

Normalement, 3.8V devrait largement suffire pour allumer le LCD mais tu as placé les 2 afficheurs en parallèle sans que chacun ai leur propre résistance...

Du coup, lors que tu mets un niveau 0V sur une des pins de sortie du 4774, alors la tension après la résistance sera de 4.4-1.8 = 2.6V (sachant que ce 4.4 correspond à la tension d'alimentation et ce 1.8 à la tension nominale d'une LED rouge).

Vu que tu as 2.6V après la résistance, le LCD de droite n'a une tension que de 3.8-2.6=1.2V, ce qui est trop faible pour l'alimenter.

Maintenant, je te propose de faire un teste : relie le LCD de droite aux sortie du 4774 avec ses propres résistances et tu verras qu'il s’allumera aussi, en étant légèrement moins lumineux que l'autre.


 Pour ce qui est de ta deuxième question, c'est parce que tu oublies que le type int ne peut contenir qu'un nombre entier.

Le résultat de toutes les division sont donc arrondie à l'entier inférieur.

Tu peux faire ce test :

int a = 10500;
int b = 10499;
int c = b / a;
Serial.print(c);

Tu verras que ça t'affichera 0 car 10499/10500 = 0.9999 et donc arrondie à 0 pour un type int.

-
Edité par lorrio 26 juillet 2015 à 22:13:23

  • Partager sur Facebook
  • Partager sur Twitter
27 juillet 2015 à 11:03:08

lorrio a écrit:

Ah oui, vu comme ça, c'est pas idiot.

Mais un transistor PNP aurait quand même été plus approprié non ?


absolument, c'était l'une de mes propositions.

-
Edité par clgbzh 27 juillet 2015 à 11:03:29

  • Partager sur Facebook
  • Partager sur Twitter
8 juin 2022 à 19:18:54

J'ai un circuit correct pour afficher le chiffre 5 sur mon afficheur 7 segments. Après avoir mis le code et téléversé vers la carte (je précise : Arduino Uno), l'afficheur n'affiche rien du tout. Je ne sais pas si l'afficheur n'est pas alimenté ou ne fonctionne pas. Merci de me répondre.
  • Partager sur Facebook
  • Partager sur Twitter
9 juin 2022 à 8:08:30

Bonjour Youssef,

Plutôt que de déterrer un vieux sujet datant de 7 ans, tu ferras mieux d'ouvrir ton propre suje à l'aide du bouton "Créer un sujet".

Il faudrait que tu nous en dises un peu plus sur ton problème car avec si peu d'information, cela va être impossible de t'aider.

Quel afficheur utilises tu ?

Comment l'as tu relier à ton arduino ?

Quel code utilises tu ?

Bref, pleins de choses à préciser dans le sujet que tu créera.

Sur ceux, je ferme pour ne pas qu'il y ai de nouveau déterrage.

  • Partager sur Facebook
  • Partager sur Twitter