« SE3Trinome2022-6 » : différence entre les versions
Ligne 90 : | Ligne 90 : | ||
|} | |} | ||
=== | === Makefile === | ||
Tout d'abord, nous avons écris notre Makefile comme ceci : | Tout d'abord, nous avons écris notre Makefile comme ceci : | ||
[[Fichier:Makefile .png|centré|Makefile|sans_cadre]] | [[Fichier:Makefile .png|centré|Makefile|sans_cadre]] |
Version du 4 juin 2023 à 15:08
Premier Système SE3
Voici le lien de notre Git :
https://archives.plil.fr/mnorman1/PSE_trinome_6
Introduction et objectif
Nous partons sur la voiture 1/43.
Notre voiture comportera les éléments ci-dessous :
- 2 moteurs pour le contrôle (1 DC à l'arrière et un pas à pas à l'avant),
- 1 module Bluetooth,
- des leds (4 : deux phares avants ainsi que deux arrières),
- une batterie
L'idée est, avec le module Bluetooth, de pouvoir piloter la voiture à distance.
L'objectif à la fin des semaines de ce projet est d'être capable de gérer les différentes leds, les moteurs et d'avoir une batterie fonctionnelle.
Schéma électronique
Pour faire notre schéma électronique ainsi que notre routage, nous avons utilisé le logiciel Kikad.
Vous trouverez différentes blocs :
- L'ATMega16u2 qui est alimenté en +5V
- L'alimentation et la charge batterie, avec un MAX1811 et un USB pour brancher directement la carte sur le PC pour l'alimentation et le téléversement du programme en C.
- Un bloc AVR qui est un connecteur femele pour se brancher directement à l'autre carte.
- Les 4 leds (qui sont les phares de notre voiture)
- Les moteurs : nous avons choisi d'utiliser un moteur pas à pas bipolaire et un moteur à courant continu (avec des PWM qui sont connectés aux Pins PWM du microcontroleur)
- Le Bluetooth avec un BM71BLE01FC2 (nous l'avons créé nous même sur Kikad) et son antenne (créée également par nous-même)
Nous avons choisi de créer un circuit à part pour l'AVR car il ne sera utilisé que pour la programmation et pas pour le fonctionnement de la voiture.
Routage
- Carte de la voiture
La carte se connectera directement sur une prise USB pour téléverser le programme dans l'atMega16u2. Les deux faces sont des plans de masse, ce qui facile le routage. Pour faire notre routage, nous avons dû créer certains footprint tels que celui de l'antenne, du moteur continu et du BM71BLE01FC2 (le module bluetooth).
- Carte de l'ISP
Carte imprimée
Voici la carte imprimée et partiellement soudée (uC, Leds, moteur pas à pas, USB) :
Remarque : un des pins du moteur n'a pas était relié au microcontrôleur lors du routage de la carte, nous avons donc connecté un fil entre le moteur et la pin 25 du microcontrôleur.
Avant de souder tous les composants, l'idée est de vérifier si le PC détecte bien la carte. Pour pouvoir alimenter notre carte via l'usb sans avoir a souder le régulateur et ces condensateurs, nous avons simplement souder un fil entre le port USB et l'alimentation du microcontrôleur.
Carte fonctionnelle
Premièrement, afin de vérifier si la carte est fonctionnelle nous n'avons soudé que l'atmega, le quartz et le port usb, pour s'assurer avec la commande "lsusb" que la carte est bien vue par le PC.
On voit ici que l'atmega16u2 est bien détecté.
Maintenant que l'on sait que notre carte fonctionne, on peut passer à la partie programmation des différents composants de la voiture.
Programmation
Les PINS dont nous allons avoir besoin sont les suivants :
LED 1 | B6/20 |
LED 2 | B5/19 |
LED 3 | B4/18 |
LED 4 | B1/14 |
MOT1 | D4/10 |
MOT2 | D5/11 |
MOT3 | D6/12 |
MOT4 | C5/25 |
Makefile
Tout d'abord, nous avons écris notre Makefile comme ceci :
Gestion des LEDS
Nous avons repris la base du programme que nous avons utilisé en TPI (manette) pour configurer les Leds ainsi que le programme io.c pour utiliser les fonctions présentes dans celui-ci (output_toogle(), output_set(), ...).
Nous avons également repris les configurations des Pins des entrées/sorties des Leds ainsi que les moteurs , comme ci-dessous.
Par la suite, afin de faire clignoter les Leds, voici le programme (fonctionnel) que nous avons écrit :
Gestion du moteur pas à pas
Pour poursuivre, afin de faire fonctionner le moteur pas à pas, nous avons fait quelques recherches pour la programmation. Pour ce faire, nous nous sommes aidés du chronogramme de l'activité du moteur bipolaire suivant :
Le fonctionnement est simple, les 4 pines du moteur sont connecté directement à 4 pattes du microcontrôleur. et il suffit alors de mettre à 1 chacune des sorties selon le chronogramme ci-dessus.
Voici le code final fonctionnel du moteur pas à pas :
On trouve l'initialisation des sorties avec DDRX, et la mise à 1 des sorties avec PORTX. On peut alors configurer les pins du microcontrôleur pour commander le moteur selon le chronogramme.
Dans ce cas, le code permet au moteur de tourner dans un sens puis dans l'autre.
USB/LUFA
Par la suite, l'idée est de faire fonctionner le moteur directement avec les commandes de l'ordinateur. Pour se faire, on a récupéré les programmes faits en TPI Manette.
Evidemment, nous devons changer quelques informations, telles que le idVendor et le idProduct.
Enfin, nous avons ajouter une fonction principale dans lib.c afin de controler, grâce aux octets, l'allumage des leds et du moteur :
Dans data[] : on a 2 octets : le premier qui sert à gérer les Leds et le moteur et la 2ème qu'on n'utilisera pas.
Les 4 bits de poids faibles servent à allumer les Leds (chaque bit commande une led).
Les 4 bits de poids forts servent à gérer le moteur(1 pour un un sens, 2 pour l'autre sens)
Dans le fichier Voiture.c, on a repris les lignes de test_leds.c (notre programme de tests) et les avons mis dans la fonction HandlePCReceive() de Voiture.c.
Vidéos système
Les vidéos étant trop lourdes, voici un lien Drive de nos vidéos : https://drive.google.com/drive/folders/1xb7-hz1aA-z115mloMOLafnvyD3ojA3p?usp=share_link
Conclusion
A la fin du projet, notre carte est détectée par le PC, et nous sommes en mesure de programmer le microcontrôleur pour commander les leds et le moteur pas a pas. Il est également possible de commander les leds et le moteur via l'USB.
La principale difficulté de ce projet à été la réalisation du PCB sur Kicad, où nous avons appris plusieurs aspects de la conception d'un PCB :
- créer des footprint, en allant chercher les dimensions dans les datasheets.
- s'assurer que notre schéma est cohérent, et que chaque composant est correctement câblé, sans quoi la carte finale n'a aucune chance de fonctionner.
- rooter de manière cohérente, en prenant en compte les perturbations que chaque composants engendrent sur les autres, notamment au niveau de l'antenne. Ce projet nous a aussi permit d'apprendre a soudé des composants montés en surface (led, microcontrôleur, résistance).
Nous avons aussi eu un problème lors de la soudure du moteur, où celui-ci a été endommagé, probablement à cause d'une exposition prolongée au fer à souder, qui a endommagé la bobine.
La voiture est loin d'être finie, nous n'avons malheureusement pas pu traiter la partie Bluetooth et la partie batterie. Néanmoins, ce projet nous à permit d'avoir une première approche de ce en quoi consiste un projet de système embarqué, de sa conception, à sa réalisation, et nous somme maintenant bien plus à l'aise avec la créations des PCB et la programmation avec un microcontrôleur.