Documentation Afficheur 7 Segments à Servomoteurs

Sommaire

  1. Contexte du projet
  2. Objectifs du projet
  3. Partie 1 : Réalisation physique
  4. Partie 2 : Innovation théorique
  5. Comparaison et avantages
  6. Problèmes rencontrés
  7. Références techniques
  8. Conclusion

1. Contexte du projet

Dans un monde dominé par les écrans numériques et les LEDs, Tekbot Robotic Challenge 2025 lance un défi audacieux : réinventer l’afficheur 7 segments en lui donnant une âme mécanique.

Concept initial

Origine du projet :

    TEKBOT ROBOTIC CHALLENGE 2025

2. Objectifs du projet

Objectifs principaux

  • Concevoir un afficheur 7 segments entièrement mécanique
  • Contrôler précisément 7 servomoteurs avec un microcontrôleur
  • Implémenter un comptage cyclique 0→9→0

Objectifs secondaires

  • Réduire le nombre de broches utilisées via des circuits intégrés
  • Documenter le processus de développement
  • Valider la solution par simulation

3. Partie 1 : Réalisation physique

3.1 Composants utilisés

ComposantRéférenceQuantitéRôle
MicrocontrôleurATmega328P1Cerveau du système
ServomoteursSG907Contrôle des segments
RégulateurLM78051Régulation 5V
BatterieLi-ion 7.4V1Alimentation
Condensateurs100nF, 1000μF, 10µF4Filtrage
Quartz16MHz1Horloge

3.2 Schéma électronique

Schéma électronique complet

Description :

  • Protections contre les surtensions
  • Connexion directe des servos aux broches PWM
  • Circuit de reset avec bouton poussoir
Schéma physique Schéma physique

Alimentation

Le système d'alimentation comprend :

  • Batterie Li-ion 7.4V 2S : Source d'énergie principale
  • Régulateur LM7805 : Stabilisation à 5V pour les composants
  • Condensateurs de filtrage : 100nF et 10μF pour lisser l'alimentation

3.3 Réalisation des PCB

PCB réalisé PCB réalisé

Caractéristiques :

  • Conception sous KiCad
  • Double face
  • Pistes de 0.6 mm
  • Espacement optimisé pour les connecteurs
Télécharger les fichiers PCB

3.4 Code Arduino

Extrait du code principal utilisant millis() pour la temporisation non-bloquante :


          // Initialisation progressive des servos
            if (!initTerminee) {
            if (millis() - debutInit >= 100) { // Délai entre servos
            debutInit = millis();
            servoEnCours++;
      
            if (servoEnCours < 7) {
            segments[servoEnCours].attach(brochesServos[servoEnCours]);
            segments[servoEnCours].write(90);
           } else {
            initTerminee = true;
            afficher(chiffreActuel); // Affiche le 0 initial
           }
        }
       } 
        
Télécharger le code complet

3.5 Vidéo de démonstration

4. Partie 2 : Innovation théorique

4.1 Architecture prévue

Schéma théorique

Composants clés :

  • 74HC138 : Décodeur 3→8 lignes
  • 74HC574 : Registre à verrouillage
  • Transistors NPN (ex : 2N2222)
  • Résistances de base (10kΩ)

Fonctionnement du système

Ce système met en œuvre un afficheur 7 segments mécanique à base de servomoteurs, contrôlé avec un minimum de broches du microcontrôleur grâce à l'utilisation combinée de deux circuits intégrés : le décodeur 74HC138 et le registre à verrouillage 74HC574.

L'ATmega328P utilise une seule sortie PWM (la broche D6) pour générer les impulsions de contrôle destinées aux servos. Chaque segment de l'afficheur est associé à un servomoteur, soit un total de 7 servos pour les 7 segments (A à G).

Le 74HC138 est un décodeur 3 vers 8 : à partir de 3 lignes d'adresse (A0, A1, A2), il active une seule sortie parmi Y0 à Y7. Dans ce projet, seules les sorties Y0 à Y6 sont utilisées, chacune correspondant à un segment (donc un servo). Ces sorties du 74HC138 ne peuvent pas directement commuter le signal PWM , elles sont donc reliées à des transistors NPN via des résistances de base.

void selectionnerServoInverse(uint8_t index) {
  uint8_t inverse = 7 - index; // Inversion des bits
  digitalWrite(SELECTION_A, inverse & 0x01);
  digitalWrite(SELECTION_B, (inverse >> 1) & 0x01);
  digitalWrite(SELECTION_C, (inverse >> 2) & 0x01);
}

Le 74HC574 est un registre à verrouillage qui capture l'état des entrées D0 à D6 au moment où une impulsion est appliquée sur sa broche d'horloge (latch). Lorsqu'un segment est sélectionné par le 138, le microcontrôleur envoie une impulsion PWM. Cette impulsion est transférée via le transistor vers l'entrée Dx du 74HC574, et une impulsion d'horloge permet de verrouiller cette valeur à la sortie Qx du registre, laquelle est reliée au servomoteur correspondant.

// Génère une impulsion PWM et verrouille
void envoyerImpulsionEtVerrouiller(uint16_t dureeImpulsion) {
  digitalWrite(PWM_SORTIE, HIGH);
  delayMicroseconds(dureeImpulsion);
  verrouiller(); // Capture pendant l'état HIGH
  digitalWrite(PWM_SORTIE, LOW);
}

// Verrouillage du registre
void verrouiller() {
  digitalWrite(HORLOGE_VERROU, LOW);
  delayMicroseconds(5);
  digitalWrite(HORLOGE_VERROU, HIGH);
  delayMicroseconds(5);
  digitalWrite(HORLOGE_VERROU, LOW);
}

L'ATmega328P répète cette séquence pour chaque segment :

  • Sélection avec le 138
  • Envoi du PWM
  • Verrouillage via le 574
  • Les servos étant rafraîchis périodiquement (toutes les 20 ms), l'affichage reste stable. Ce montage permet de piloter 7 servos avec une seule broche PWM, tout en minimisant l'utilisation des ressources de l'ATmega328P.

    4.2 Simulation Proteus

    La simulation valide :

    • La logique de sélection des segments
    • Le timing des signaux PWM
    • L'interface avec le microcontrôleur

    Télécharger le dossier comportant le code arduino et le fichier du schéma sous proteus

    Télécharger le document complet

    5. Comparaison et avantages

    AspectVersion physiqueVersion optimisée
    Broches utilisées7 broches PWM3 broches + 1 PWM
    Consommation800mA~700mA (estimé)
    ComplexitéFaibleModérée

    Avantages de la solution optimisée

    • Économie de broches précieuses sur le microcontrôleur
    • Architecture scalable pour plusieurs afficheurs
    • Meilleure isolation des signaux de contrôle
    • Possibilité de multiplexage temporel

    6. Problèmes rencontrés

  • Synchronisation des servomoteurs : Délais variables dans la réponse des servos nécessitant un recalibrage
  • Alimentation instable : Chutes de tension lors du mouvement simultané de plusieurs servos
  • 7. Références techniques

    8. Conclusion

    Ce projet a démontré la faisabilité d'un afficheur numérique mécanique contrôlé par servomoteurs. Les principaux enseignements sont :