SE3Groupe2025-18

De projets-se.plil.fr
Aller à la navigation Aller à la recherche

Programmation des systèmes embarqués

Carte électronique

Carte réalisée en utilisant le logiciel KiCAD : Fichier:2025-pse-b18-prog.zip.

Schéma électronique de la carte :

Fichier:2025 pse-b18-prog-schema.png
Mon schéma électronique

Résultat du routage :

Mon routage

[[Fichier:Capture d'écran

Photo de la carte soudée :

Ma carte

Vidéo très courte et en basse résolution de la carte en fonctionnement :

Média:2025-PSE-B18-PROG-video.mp4

Programmation

Fichier:DualVirtualSerial.zip : extrait du dossier PolytehcLille dans la bibliothèque LUFA :

Bilan

J'indique où j'en suis arrivé à la fin des séances.

Séance Date Activités réalisées Observations / Problèmes
S1 02/03 Routage du PCB Conception terminée.
S2 03/03 Brasage du µC Détection de courts-circuits sur les broches du µC.
S3 05/03 Soudage des composants Erreur d'inversion des boutons corrigée ; quartz testé.
S4 10/03 Tests électriques et debug Alimentations 5V et 3.3V (UCAP) OK. Reset OK. µC non détecté.


Eventuellement la vidéo brève du fonctionnement complet du programmateur : Média:2025-PSE-B18-PROG-final.mp4.

Premier système embarqué

Archive GIT

Mon archive GIT pour le projet KiCAD et pour les programmes : [1].

Archive privée. Binôme comme administrateur. Boé et Redon comme administrateur.

Ajouter un .gitignore pour KiCAD et langage C.

Structure avec matériel (y compris production - gerber, bill of materials) / logiciel / documentation (e.g. documentation technique).

Description du système embarqué

Notre système est un véhicule automatisé. Il est équipé d'un réservoir et d'une pompe permettant de projeter de l'eau pour l'extinction d'incendies. Le véhicule utilise un capteur de température pour détecter les départs de feu, s'y diriger de manière autonome et les éteindre.

Cahier des charges

Pour que le véhicule nous auront besoin :

Carte électronique

Carte réalisée en utilisant le logiciel KiCAD : Fichier:2025-PSE-B18-systeme.zip.

Schéma électronique de la carte :

Mon schéma électronique

Résultat du routage :

Mon routage

Photo de la carte soudée :

Ma carte

Vidéo très courte et en basse résolution de la carte en fonctionnement :

Média:2025-PSE-B18-systeme-video.mp4

Travail effectué

Séance Date Activités réalisées Observations / Problèmes
S1 03/03 Description du projet, initialisation des archives
S2 10/03 Correction PCB apres premiers retours et ajout capteurs de flamme Mauvaise ref du pont en H
S3 17/03
S4 24/03
S5 31/03 Correction routage, mauvaise réf Routage terminé
S6 07/04
S7 05/05 Soudage µC Echec de communication du µC par isp. Pb d'alimentaion UCAP. Quartz en CC. Test par rex sur un nouveau pcb
S8 12/05 Soudage des composants sur une nouvelle carte Alim 5V et 3.3 (UCAP) OK. Reset et Hwd OK. µC détecté.
S9 18/05 Test Programme detection flamme avec LUFA
Test capteur flamme.jpg
Test OK
S10 19/05 Soudage des derniers composants (capa chimique, régulateur de tension) Mauvaises empreintes diode de chargement et capa
S11 26/05 Programmation de la carte PF5-6-7 sont vérrouillés par JTAG.

Bilan

18/05 : Utilisation de la blibiotheque lufa pour afficher l’état des ports sur l'usb.

26/05 : Debug des verrouillage JTAG

Résumé et utilisation

1. Architecture Matérielle (Hardware)

1.1 Capteurs de Flamme (Détection IR)

  • Composant : Modules à base de comparateur LM393.
  • Connexions :
    • Capteur Gauche : PF7
    • Capteur Centre : PF6
    • Capteur Droit : PF5
  • Calibration : Utilisation de la broche numérique DO (Digital Output). Le seuil de basculement (0V = repos, 5V = flamme détectée) est réglé manuellement via le potentiomètre intégré au module en fonction de la luminosité ambiante.

1.2 Motorisation (Pont en H)

  • Composant : Pont en H L293D.
  • Alimentation : Ligne dédiée +BATT (indépendante du +5V logique de l'USB) pour absorber les pics de courant des moteurs.
  • Routage Moteurs Gauches (Connecteur J9) :
    • Direction : PD1 (IN1) et PD2 (IN2)
    • Puissance (PWM) : PB6 (ENA) - Relié au Timer 1 (OC1B)
  • Routage Moteurs Droits (Connecteur J10) :
    • Direction : PE6 (IN3) et PD4 (IN4)
    • Puissance (PWM) : PC6 (ENB) - Relié au Timer 3 (OC3A)

1.3 Actionneur (Pompe à Eau)

  • Broche de commande : PF0 (Broche physique 41).


2. Le Piège Matériel/Logiciel : Le port JTAG

Problème rencontré : Malgré la présence de 4.2V sur les broches PF5, PF6 et PF7 lors de la détection d'une flamme, le registre PINF renvoyait constamment l'état 0.

Explication : Sur l'ATmega32U4, les broches du port F (PF4 à PF7) sont réservées par défaut en sortie d'usine au port de débogage matériel JTAG. Tant que le JTAG est actif, ces broches sont verrouillées et inutilisables en tant qu'E/S numériques (GPIO).

Solution : Désactivation dynamique du JTAG au démarrage du programme. La documentation Atmel exige que l'instruction soit envoyée deux fois en moins de 4 cycles d'horloge.


3. Architecture Logicielle (Software)

3.1 Débogage USB via LUFA

L'USB n'est pas nécessaire au fonctionnement autonome du robot, mais il est utilisé pour la télémétrie. Le robot se présente comme un port série virtuel (/dev/ttyACM0). Pour éviter de bloquer le microcontrôleur lorsque le câble USB est débranché (utilisation sur batterie), l'envoi de texte est conditionné à l'état de la connexion.

3.2 Contrôle de Puissance (Timers Matériels)

La vitesse des moteurs n'est pas gérée par des délais bloquants, mais par la génération de signaux PWM matériels (Fast PWM 8-bit, prescaler 64, fréquence ~488Hz).

  • Moteur Gauche : Registres TCCR1A, TCCR1B, et OCR1B.
  • Moteur Droit : Registres TCCR3A, TCCR3B, et OCR3A. Une fonction d'abstraction Set_Moteurs(vitesse_gauche, vitesse_droit) permet de piloter le châssis de -255 à 255.

3.3 Logique d'Asservissement (Tracking)

Le comportement autonome est une machine à états simple basée sur les entrées discrètes des capteurs infrarouges :

  1. Recherche : Aucun capteur actif. Le robot tourne lentement sur lui-même (ex: Moteurs à 90 et -90).
  2. Alignement (Gauche/Droite) : Si PF7 (Gauche) ou PF5 (Droit) passe à l'état haut, le robot tourne agressivement dans la direction correspondante pour centrer la flamme.
  3. Verrouillage & Extinction : Si PF6 (Centre) passe à l'état haut, le robot s'arrête instantanément (Set_Moteurs(0, 0)) et active la broche de la pompe (PORTF |= (1 << 0)).