[Programmation] Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]



  1. #1
    TheSCP106

    Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]


    ------

    Salut tout le monde ! Je viens vers vous pour vous demander conseils, j'ai récemment u l'idée de recyclé un ancien multimètre/pHmètre/Thermomètre (1987 !) car il a de super affichages numériques 7 segment. Je me suis donc donné l'objectif de le transformé en Horloge.

    N'ayant que des bases en Electronique je me suis aidé d'une PCB faite par quelqu'un, et donc j'ai commencé a faire ma version en utilisant le maximum de ce que je pouvais m'inspirer mais en le changeant pour l'adapter a mon matériel car ces vieux affichages 7 segment que j'ai fonctionne sous du 12V mais son système sous du 5V. Donc les plus gros problème que j'ai est que je dois transformer les signaux 5v envoyé par l'ATMEGA328P-PU en 12v et changer la polarité car lui étant en anode commune et moi en cathode commune... Aidé par le fabuleux Chat GPT (qui commence a fatigué aussi ),'ai commencé par changer le commun, Voici le schéma de base :Pièce jointe 506377 Vous pouvez voir que un transistor permet est contrôler par DIGIT_1 (qui est une sortie du microcontrôleur) et qu'il laisse passer ou non le 5V aux anodes communes de ses affichages. Moi j'ai du changer ça car j'ai des cathode communes, ça a été plutôt simple pour cette partie, Capture d’écran 2025-03-11 160801.jpg J'ai juste remplacer les transistor par des Mosfet N-Channel qui laissent passer le GND quand ils reçoivent les 5V du microcontrôleurs. Premier problème résolut !

    Maintenant le plus complexe, Je vais vous expliquer ce qu'il se passe dans son cas : Capture d’écran 2025-03-11 161352.jpg Toutes les balises sont branchées au microcontrôleur, il envoie tout le temps du 5V quand les segments (A,B...,DP) doivent être éteint et dès qu'il veut alimenter un segment il envoie du GND pour que cela ferme le circuit (vu qu'il envoie du 5V sur ses anodes communes). Moi dans mon cas (c'est plus complexe...) : Capture d’écran 2025-03-11 160907.jpg Je dois rajouter deux étapes supplémentaires et aussi inversé le code pour qu'il envoi 5V si je veux allumer un segment, dans l'ordre nous avons : le microcontrolleur veut allumer un segment -> il envoie 5V -> Un Mosfet N-Channel reçoit ce 5V a sa Gate et envoie GND-> Un Mosfet P-Channel cette fois reçoit le GND a sa Gate et envoie finalement du 12V au affichages. Pour ceux qui se demande, je suis obligé de mettre un N-channel avant le P-Channel car si je n'en met pas et que je n'inverse pas le code on retrouve : GND si on veut allumer ->OK les affichages s'allume mais par contre si on les veux éteint le microcontrôleur envoie du 5V donc aux portes du P-Channel on aura 12V-5V=7V donc il ne sera pas fermé. Alors que si je rajoute un N-Channel il enverra soit GND pour allumer ou il restera flottant.

    Voila donc pour cela j'aimerais que les pros me disent si jamais j'ai fait des erreurs ou que dois-je rajouter. Et ensuite je vous donne le code que m'a modifié Chat GPT (nous n'avons que modifié la fin "!bit" au lieu de "bit" sois disant pour l'inversé mais je n'y connais rien) donc c'est le seul flou qui fait que je ne sais pas si ça marchera, car après avoir fais des simulation ça ne marchais pas mais apparemment ça serait a cause de Tinkercad qui gérerais mal les multiplexage très rapide, donc c'est surtout pour ça que j'ai peur, je veux être sur que ça marcherais avec les changements que j'ai effectué avant de me lancé)

    Code:
    #include <Wire.h>
    #include "RTClib.h"
    
    #define A 2
    #define B 3
    #define C 4
    #define D 5
    #define E 6
    #define F 7
    #define G 8
    #define DP 9
    
    #define CA1 10
    #define CA2 11
    #define CA3 12
    #define CA4 13
    
    int d = 2, first_h=0, second_h=0, first_m=0, second_m=0, sec_old=0, h, m, s;
    RTC_DS1307 rtc;
    
    const int segs[7] = { A, B, C, D, E, F, G};
    
    const byte numbers[11] = {0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010,
    0b0000010, 0b1111000, 0b0000000, 0b0010000};
    
    void setup()
    {
      Serial.begin(57600);
    #ifdef AVR
      Wire.begin();
    #else
      Wire1.begin();
    #endif
      rtc.begin();
    for(int i=2;i<=13;i++)
    {
      pinMode(i, OUTPUT);
    }
    for(int i=2;i<=13;i++)
    {
      digitalWrite(i, LOW);
    }  
    }
    
    void loop()
    {
      DateTime now = rtc.now();
    
      h = now.hour();
      m = now.minute();
      s = now.second();
    
      first_h = h / 10;
      second_h = h % 10;
      first_m = m / 10;
      second_m = m % 10;
      
      lightDigit1(numbers[first_h]);
      delay(d);
      lightDigit2(numbers[second_h]);
      delay(d);
      lightDigit3(numbers[first_m]);
      delay(d);
      lightDigit4(numbers[second_m]);
      delay(d);
    } 
    
    void lightDigit1(byte number) {
      digitalWrite(DP, HIGH);
      digitalWrite(CA1, HIGH);
      digitalWrite(CA2, LOW);
      digitalWrite(CA3, LOW);
      digitalWrite(CA4, LOW);
      lightSegments(number);
    }
    
    void lightDigit2(byte number) {
      digitalWrite(CA1, LOW);
      digitalWrite(CA2, HIGH);
      digitalWrite(CA3, LOW);
      digitalWrite(CA4, LOW);
      if(s % 2 == 0)
      digitalWrite(DP, LOW);
      else
      digitalWrite(DP, HIGH);
      lightSegments(number);
    }
    
    void lightDigit3(byte number) {
      digitalWrite(DP, HIGH);
      digitalWrite(CA1, LOW);
      digitalWrite(CA2, LOW);
      digitalWrite(CA3, HIGH);
      digitalWrite(CA4, LOW);
      lightSegments(number);
    }
    
    void lightDigit4(byte number) {
      digitalWrite(DP, HIGH);
      digitalWrite(CA1, LOW);
      digitalWrite(CA2, LOW);
      digitalWrite(CA3, LOW);
      digitalWrite(CA4, HIGH);
      lightSegments(number);
    }
    
    void lightSegments(byte number) {
      for (int i = 0; i < 7; i++) {
        int bit = bitRead(number, i);
        digitalWrite(segs[i], !bit); //c'est ici qu'il a inversé
      }
    }
    Merci a tout ceux qui se pencheront sur le sujet, n'hésitez surtout pas a me poser des questions si a des moments vous trouvez quelque chose bizarre car moi ça m'aiderait énormément !

    -----

  2. #2
    Pascal071

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    Bonsoir

    Perso, je m'y perd dans les libellés schéma - logiciel
    SEG_A, A, A/7, SEG1, CA1...
    essaies de renommer tout ça d'une manière compréhensible par d'autres que toi.
    Vu du schéma https://forums.futura-sciences.com/a...-11-160907.jpg
    Par exemple SEG_A commande apparemment un 12v sur A/7, tu as dit que les anodes sont communes et commandées par les P-mos, et on voit commander segment A/7 ??

    Les résistances R18-R25 ne sont pas à leur place, elles doivent bloquer les P-Mos au repos, donc entre G et S de Q9-Q16, pas en série avec le P-mos.
    Dernière modification par Pascal071 ; 11/03/2025 à 19h46.

  3. #3
    Pascal071

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    par exemple CA1 comme sortie dans le code, alors CA1 sur le schéma.

  4. #4
    TheSCP106

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    Alors je ne pense pas refaire les labels, mais je peux mettre du texte pour bien expliquer le schéma il y a pas de soucis. Et en fait, je l'ai peut-être mal expliqué, mais moi mes affichages 7 segments sont en CATHODE commune (c'est la personne dont j'avais emprunté le design qui est en anode), donc le schéma Nom : Capture d’écran 2025-03-11 160907.jpg
Affichages : 93
Taille : 210,8 Ko est la partie qui commande le VCC allant a chaque segment (A,B,C,D,E,F,G,DP) c'est pour cette raison les labels "A/7" etc (le 7 étant juste le pin des afficheurs pour ma compréhension)

    Et pour les R18-R25 je n'ai pas tous a fait compris, mais il faudrait que je les mettent (prenons comme exemple le SEG_A) entre le Nmos Q5 et le Pmos Q16 (entre le drain du Nmos et la Gate du Pmos) c'est bien ça ?

  5. A voir en vidéo sur Futura
  6. #5
    TheSCP106

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    Voici le PNG du schéma entier, j'y ai rajouté des étiquettes pour vous repérer un peu mieux (en italique et pointillés ), la partie un peu bordélique en haut a gauche et simplement l'alimentation, donc pas besoin de s'y attardé car je n'y ai rien changé (a part que j'ai piqué une ligne "VCC_12V" qui n'existait pas avant) et j'ai enlevé les chiffres derrière les lettres (ex: A/7 -> A ) pour plus de simplicité !

    Nom : Schematic_Clock-7-Segment-Display_2025-03-12.png
Affichages : 88
Taille : 699,1 Ko

  7. #6
    antek

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    Quand SEG_DP est à 1 tu veux envoyer Vcc_12V sur DP ?

    Si oui il faut revoir la commande du PMOS, c'est la tension Vgs qui est à prendre en compte pour la commutation :

    - remplacer R25 par un fil
    - alimenter drain NMOS avec le 12V à travers une résistance (la liaison drainN-gateP reste en place)
    L'électronique c'est comme le violon. Soit on joue juste, soit on joue tzigane . . .

  8. #7
    TheSCP106

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    Oui c'est bien ça le microcontrôleur envoie un signal 1 (HIGH, 5V) si il veut allumer un segment (du coup si vous avez compris ça j'en conclue que cette partie du code est bonne du coup ? Parce que c'est la partie ou j'ai le plus de flou a comprendre)

    Ca me parait bizarre comme ça, je crois que j'ai pas compris...

    Nom : Capture d’écran 2025-03-12 114548.jpg
Affichages : 88
Taille : 178,3 Ko

  9. #8
    Pascal071

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    bonjour

    j'ai enfin compris!
    tu veux remplacer 4 afficheurs Anode commune par 4 afficheurs Cathode commune..
    tu as été plus rapide, , le même schéma pour la commande P-mos. la Gate ne doit pas être en l'air, alors 10k G-S
    Nom : Clock-7.png
Affichages : 86
Taille : 32,1 Ko
    Dernière modification par Pascal071 ; 12/03/2025 à 11h05.

  10. #9
    antek

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    Ka revient au même
    L'électronique c'est comme le violon. Soit on joue juste, soit on joue tzigane . . .

  11. #10
    Pascal071

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    c'est sûr! j'étais en cours de modif. schéma lorsqu’il a posté ..

  12. #11
    TheSCP106

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    Okay ! Mais du coup quand le Nmos va envoyer son GND cela va poser problème non ? Car le Pmos calcul la différence (V_GS) et donc vu que nous faisons passer du 12v (qui sera a 6V en passant par la résistance) cela va poser problème ?

    P.S. Pardon si je pose des questions concon mais j'essaie vraiment d'apprendre, et si j'attend notre lycée pour nous apprendre ça, ça va être long (et pourtant je suis en BAC PRO Informatique et Electronique...)

  13. #12
    Pascal071

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    Quand Q9 conduit, la G de Q20 passe à 0v et il conduit aussi.
    R25 sert à rappeler G-S (jamais de Gate "en l'air")

    à propos d'un schéma compréhensible par le lecteur:
    Nom : SEG_DP.png
Affichages : 70
Taille : 16,7 Ko

    cdlt
    Dernière modification par Pascal071 ; 12/03/2025 à 13h25.

  14. #13
    TheSCP106

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    Ha d'accord !!! Pour moi je pensais qu'il fallait justement la laisser "flottante". Je reposterais ici quand j'aurai "fini" le schéma, car je rajoute juste un circuit un peu séparé des autres pour y ajouter un port de charge USB-A (pour mon téléphone). Merci encore a vous deux !

  15. #14
    TheSCP106

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    C'est bon ! Je pense que j'ai fini avec ce schéma, si ça ne vous dérange pas d'y rejeter un petit coup d'œil pour me dire si je peux passer au design du PCB, c'est surtout en haut a gauche ("CIRCUIT USB A") et vers la masse du port d'alimentation (ARRIVE ELECTRIQUE 12V) que je voudrai savoir si ça va bien, vu que vous que le reste vous avez déjà vus. J'ai repris le design de quelqu'un (encore) pour le modifier pour moi, voici le design de base (attention sur son design il en a deux).

    Je vous donne le schéma et le BOM en PNG.
    Horloge V1.1 Schéma.png
    BOM_temp_Screen.jpg

    Je vais juste vous dire ou j'ai de fort doute, premièrement j'ai voulu séparé la Masse des deux circuit (pour essayer de vraiment avoir deux circuit complétement individuel) et Chat GPT m'a dit de placer des Résistance 1Mohm. Et le deuxième c'est que sur le circuit d'arrivé 12V j'ai placé une Diode schottky et Chat ma des trucs bizarre donc je ne sais pas trop si elle est a la bonne place ou si elle est même nécessaire. Et puis après j'ai juste suivi les schéma des fabricant et du mec au dessus donc je n'en suis pas su mais sans plus.

    P.S. J'ai travaillé sur la lisibilité extérieur rien que pour vous !
    CDT

  16. #15
    Pascal071

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    Schéma:
    Q13 - Q16 sont représentés à l'envers D-S
    concernant les parties alim., autant relier toutes les GND ensemble, au 0v du jack 12v.
    Je ne vois pas l'intérêt de R26,R27,L2.
    ni la diode U10, à part protéger en cas d'inversion 12v,
    si c'est le but, autant la mettre directement après le jack 12v et protéger l'ensemble.

  17. #16
    Pascal071

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    R2,3,12,13 sont inutiles,
    pour tous ces N-mos il faut des composants avec un Vgs niveau logique (3 à 4v) pour commuter correctement.
    Dernière modification par Pascal071 ; 12/03/2025 à 16h53.

  18. #17
    TheSCP106

    Re : Fabrication d'une Horloge 4*7 Segment [Recyclage d'un vieux Multimètre]

    Okay parfait j'ai fait toutes les modifs que tu m'as donné ! Merci encore a vous deux et bonne continuation !

    Nom : Horloge V1.2 Schéma.png
Affichages : 51
Taille : 509,6 Ko

Discussions similaires

  1. [Blanc] Ponter l'horloge mécanique d'un vieux four Gaggeneau ?
    Par invite39f10a88 dans le forum Dépannage
    Réponses: 2
    Dernier message: 12/12/2016, 15h52
  2. [Numérique] Afficher la date sur une horloge avec afficheur 7 segment
    Par invitefda58457 dans le forum Électronique
    Réponses: 18
    Dernier message: 17/06/2016, 19h44
  3. fabrication horloge pic
    Par invite91822b8c dans le forum Électronique
    Réponses: 6
    Dernier message: 06/05/2014, 18h40
  4. fabriquer horloge digital avec afficheur a segment
    Par invite1f39ae77 dans le forum Électronique
    Réponses: 18
    Dernier message: 28/08/2010, 15h43
  5. horloge + temperature I2C afficheur 7 segment
    Par invited02d59f3 dans le forum Électronique
    Réponses: 20
    Dernier message: 23/06/2009, 10h44
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...