Sections > Discussion Générale d'Électronique

7 segments cathode commune sur 4 pins

(1/3) > >>

Tarharnak:
Bonjour,

Je réalise un projet ou je vais avoir besoin de 3x7segments pilotés en multiplex par 74HC390 et CD4511BE.

J'ai en stock des SC08-11 qui feront parfaitement l'affaire





Seulement je constate que la cathode commune sort sur 4 pin.

Ma question : Dois-je les relier entre eux ou en prendre un au hasard ?

Yffig:
Bonsoir Tarharnak,

Il te suffit de voir avec un Ω-mètre si les pins 3-5-11-16 sont reliées entre elles ou isolées les unes des autres... Tu auras alors la réponse à  ta question.
Bonne soirée

Yffig

Tarharnak:
Oui en effet reliées (0.6 Ω).

Merci de l'information, c'est vrais qu'avec réflexion la méthode de l'Ωhme-mètre semble évidente, cela dit, bien loin d’être acquise pour ma pars, en voici la preuve...

Sinon à  titre de curiosité, quelle est la raison de proposer plusieurs pins non isolés ?

Yffig:
Bonjour Tarharnak,

Oui, j'ai failli te répondre que c'était évident qu'elles étaient reliées entre elles, sinon il y en aurait eu 8 (comme les 8 LEDs de l'afficheur) mais comme c'est un afficheur à  cathodes communes => une seule sortie aurait bien sûr suffi.
Et je me suis alors posé la même question que toi: "pourquoi 4 ?" et j'ai pensé que ce fait pouvait provoquer une certaine confusion, d'où ta question d'hier, j'ai pensé te donner la réponse directement hier soir, et je me suis dit..."voyons s'il va se demander pourquoi 4 alors?"...
Tu pourras remarquer que ces 4 sorties sont chacune dans un "quadrant" de l'afficheur, cela va tout simplement te permettre sur ton PCB de choisir la pin "cathode commune" qui convient le mieux au tracé de tes pistes. Et alors "pourquoi ne pas avoir utilisé aussi les pins 7-8-15 comme cathode ? Là , je pense que c'est une question de connexions internes des 8 segments vers les pins de sortie qui ne peuvent se croiser (car un seul plan de connexion en interne).

PS: à  ma connaissance le mot "pin" lorsqu'il est utilisé en français, est féminin (comme la pinoche).

Bonne journée

Yffig

Tarharnak:
Très bien effectivement je ne savais pas si pin étais au masculin ou féminin c'est bon à  savoir, merci aussi pour les informations pour les cathodes.

En revanche j'ai une autre question. Mon projet en parler un petit peu, plus consiste à  créer un système d’affichage d'informations que je placerai sur le volant de mon karting, qui va me donner grâce à  divers capteurs la vitesse, la température moteur, le rapport de vitesse engagé et plein d'autres informations.

Les afficheur 7 segments  au nombre de 3 serviront afficher la vitesse en km/h.

L'utilisation de ce dispositif se faisant en plein jour, j'ai besoin d'avoir une luminosité importante pour garantir une visibilité claire.

Les afficheur 7 segments sont multiplexés, je constate que j'ai une perte en luminosité relativement importante (visuellement 30 à  40 % d’après moi) par rapport à  un caractère qui serait afficher seul (sans multiplexage).

D'après moi, cela vient de la latence entre les périodes d'affichage. Après plusieurs essais, je constate que 5 ms entre chaque afficheurs est le mieux. A partir de 6 ms je commence à  voir un scintillement et en dessous de 4 ms je perd en luminosité.

Comment remédier à  cela ? Dois-je faire passer plus de courant dans les segment ? A oscilloscope je mesure de 2,4 à  2,8 V sur les différents segments (soit, si je ne me trompe, 12 à  14 mA). Sur la datasheet c'est 20 mA d'après ce que je comprend.





Mes fonction au cas où cela serait nécéssaire :

--- Code: ---
void segment(int seg) // envoyer un état bas pour mettre la pin du digit concerné en "mode cathode"
{
        digitalWrite(D1, 1);
        digitalWrite(D2, 1);
        digitalWrite(D3, 1);
       
        switch(seg)
        {
                case 1: digitalWrite(D1, 0); break;
                case 2: digitalWrite(D2, 0); break;
                case 3: digitalWrite(D3, 0); break;
        }
}

//*****************************************************
   
void chiffre(char num)  // envoi au 74HC390 du chiffre à  envoyer au CD4511BE
{
        digitalWrite(D_reset, HIGH);   // reset
        digitalWrite(D_reset, LOW);

               
        for(int i = 0 ; i < num; i++)
        {
                digitalWrite(D_impulsion, HIGH);  // puis impulsion correspondant au chiffre
                digitalWrite(D_impulsion, LOW); 
        }
}

//*****************************************************
void affichage(int data)
{
     
        unsigned char Ce = int ((data/100)%10); //définition du chiffre des centaines
        unsigned char Di = int ((data/10)%10); //définition du chiffre des dizaines
        unsigned char Un = int (data%10); //définition du chiffre des unités
   
         
        if (Ce != 0)
        {
                chiffre(Ce, Un);
                segment(1);
                delay(5);
        }
   
        if (data >=10)
        {
                chiffre(Di, Ce);
                segment(2);
                delay(5);
        }
   
        chiffre(Un, Di);
        segment(3);
        delay(5);
}
--- Fin du code ---

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique