SE3Groupe2025-18
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 :
Résultat du routage :
[[Fichier:Capture d'écran
Photo de la carte soudée :
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 :
- Roues + 4 moteurs
- Chassis IMPRESSION 3D
- Régulateur de tension TPS61230DRCT https://eu.mouser.com/ProductDetail/Texas-Instruments/TPS61230DRCT?qs=p08Uhw9w2FwKD5ucIJprNg%3D%3D
- ATmega32u4 avec un port UBS-A
- Chargement de batterie MAX1811 https://fr.farnell.com/analog-devices/max1811esa/usb-powered-li-charger/dp/2518962
- Pompe à eau
- Réservoir
- Une Led pour indiquer l'état de la batterie
- Capteur de flamme infrarouge
- Servo-moteur https://fr.farnell.com/multicomp-pro/mp-708-0002/servo-moteur-6v-130rpm-rotation/dp/3359812
Carte électronique
Carte réalisée en utilisant le logiciel KiCAD : Fichier:2025-PSE-B18-systeme.zip.
Schéma électronique de la carte :
Résultat du routage :
Photo de la carte soudée :
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 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
- Capteur Gauche :
- 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+5Vlogique de l'USB) pour absorber les pics de courant des moteurs. - Routage Moteurs Gauches (Connecteur J9) :
- Direction :
PD1(IN1) etPD2(IN2) - Puissance (PWM) :
PB6(ENA) - Relié au Timer 1 (OC1B)
- Direction :
- Routage Moteurs Droits (Connecteur J10) :
- Direction :
PE6(IN3) etPD4(IN4) - Puissance (PWM) :
PC6(ENB) - Relié au Timer 3 (OC3A)
- Direction :
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, etOCR1B. - Moteur Droit : Registres
TCCR3A,TCCR3B, etOCR3A. Une fonction d'abstractionSet_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 :
- Recherche : Aucun capteur actif. Le robot tourne lentement sur lui-même (ex: Moteurs à
90et-90). - Alignement (Gauche/Droite) : Si
PF7(Gauche) ouPF5(Droit) passe à l'état haut, le robot tourne agressivement dans la direction correspondante pour centrer la flamme. - 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)).