SE3Binome2023-5
Projet Groupe 5 : Voiture Programmable
Cette page est consacrée à la présentation du projet SE3 réalisé par BOURSAULT Rémi & LECOMTE Antoine, qui est porté sur la création d'une voiture contrôlé par programmation.
Présentation :
Objectifs
Les objectifs du projets sont :
- Concevoir une voiture fonctionnant sur batterie, avec un ATMega.
- Intégrer des clignotants fonctionnels.
- Permettre à la voiture d'avancer ou reculer, toujours en utilisant l'ATMega.
- Ajout d'un gyrophare.
Ressources
Pour atteindre ces différents objectifs, nous aurons besoins des ressources suivantes :
- Un microcontrôleur ATMega16U4/ATMega32U4
- Des LEDS
- Deux moteurs à courant continu
- Un châssis
- Des dipôles classiques
- Un gyrophare
Après avoir choisi notre projet et nos différents objectifs pour ce projet, nous avons commencé à travailler sur le schéma de montage sur KiCAD afin de pouvoir ensuite faire le PCB et le routage qui sera envoyé à une usine pour imprimer nos cartes. Les fonctions et composants principaux de notre projet sont les suivants.
Fonction sur le schéma :
Microcontrôleur
La partie indispensable de tous montages électroniques, le cerveau de la voiture. Sans le microcontrôleur rien dans ce projet n'est possible, il permet de gérer les informations. qui sont transmises dans toutes la carte. C'est un microcontrôleur ATMega32u4, ce n'est pas le plus puissant, mais pour la taille du projet que nous faisons c'est bien assez. Il possède assez d'entrées/sorties pour ce que nous voulons en faire.
Commande Moteur
Ce bloc est celui qui actionne les moteurs et leur dit quand s'arrêter. Celui-ci est composé d'un TB6612FNG, un driver pour moteur qui ne sert qu'à ça. Il prend sept signaux en entrée trois pour gérer chaque moteur et un signal de standby. Nous avons utilisé la datasheet pour savoir comment le schématiser et quels composants utilisé pour que celui-ci fonctionne dans des conditions optimales.
Il est nécessaire d'ajouter ce composant, car les signaux de sortie délivrés par l'ATMega sont trop faibles pour alimenter un moteur. Ce driver vient, à partir d'une tension d'alimentation Vcc amplifier le signal de commande délivré par l'ATMega pour que les moteurs aient l'alimentation adéquate.
Chargeur LI-PO
Comme notre voiture fonctionnera sur batterie, il faut un moyen de la recharger, ceci se faisant par l'intermédiaire d'un port USB, il faut un bloc pour adapter le courant que reçoit l'USB pour que cela corresponde aux caractéristiques de notre batterie.
Utilisation de la Batterie
Ce bloc permet de séparer l'alimentation en USB et sur batterie. Lorsqu'un cavalier est présent sur J6, VBAT est directement relié à Vcc et ainsi la batterie sert d'alimentation pour la carte. Il est impératif de débrancher l'USB avant de mettre le cavalier, pour éviter tout court-circuit. Lorsqu'on enlève le cavalier, on peut brancher l'USB et la carte fonctionne en filaire.
Connecteur USB
On dispose de deux connecteurs USB, un pour recharger la batterie, et un autre pour transmettre les données, qui servira à implanter un programme dans notre microcontrôleur.
Connecteur ISP
Pour charger le bootloader sur le microcontrôleur si besoin.
Diodes Électroluminescentes
PCB et routage :
Après avoir fini toutes nos fonctions et le schéma, nous nous sommes attaqué au PCB de la carte, il nous a fallu quelque essais pour obtenir une disposition qui nous convienne et qui facilite le routage.
Brasage des composants
Une fois les cartes reçues, nous nous sommes attaqués à la brasure des différents composants. Nous avons commencé par le microcontrôleur, le cristal et les résistances et capacités associées. Dès le départ nous avons eu des problèmes avec le brasage, des pattes soudées entre elles, le cristal mal posé. Mais notre plus gros problème a été l'allocation des pins du microcontrôleur. Nous ne le savions pas au moment de la création de notre PCB et nous n'y avons pas fait attention, mais des pins sont spécialement attribuées au MISO, MOSI et SOCKET. Pins que nous devons utilisés pour envoyer le bootloader sur la microcontrôleur via le programmateur ISP (en orange sur le schéma). Nous avons donc dû improviser une solution. Nous avons coupé les pistes et relié par des fils les broches de l'ISP aux pins correspondantes. A cause de cette erreur nos LEDs D2 et D3 ne sont plus utilisables.
Une fois ce problème réglé, nous avons pu passer à la suite, la gestion des moteurs. Pour ce faire il n'y a pas eu autant de problèmes que sur la partie microcontrôleur, nous avons simplement soudé le contrôleur de moteurs, un TB6612FNG, puis les broches sur lesquelles nous allons venir brancher les moteurs, et enfin les fils directement sur les broches des moteurs. Nous avons également utilisé du plastique thermo rétractable pour que les fils soient protégés et restent soudés aux moteurs durant toute la durée du projet. Les moteurs étant prêt à l'emploi, nous les avons testé pour savoir si tout était fonctionnelle. Une fois confirmé, nous avons pris des bouchons de bouteilles comme roues et mis des élastiques autour pour avoir de la traction lors de nos différents essais.
Pour tester toute notre carte, nous avons crée un code sous le nom de helloworld.c qui rempli différente fonction, allumer ou faire clignoter les LEDs en fonction du déplacement de la voiture et, bien évidemment, déplacer la voiture. La voiture réagissant comme nous le souhaitons, nous décidons donc de passer à l'étape suivante, le fonctionnement sur batterie. Ce n'est pas la partie la plus compliquée, il suffit de brasé les broches permettant d'accueillir la batterie puis celles destinées au cavalier. Une fois le tout installé sur notre carte, nous la testons et tout fonctionne normalement.
Comme il nous reste encore un peu de temps, nous décidons de nous attaqués à la dernière partie, la recharge de la batterie. Comme pour la partie de fonctionnement sur batterie, il n'y a aucune partie de code, il suffit de soudé des composants en plus sur la carte pour que la nouvelle fonctionnalité soit active. Donc nous nous y sommes mis et encore une fois il n'y a aucun problème.
GIT
Vous trouverez dans le lien GIT de notre projet, tous les fichiers de création de la carte se trouvent dans le dossier projet_voiture, le code envoyé pour tester la voiture dans le dossier cod.
dfu-programmer atmega16u4 erase
dfu-programmer atmega16u4 flash helloworld.hex
dfu-programmer atmega16u4 reset
puis débranché et rebranché la voiture
appuyé sur le bouton HWB puis RESET, relaché RESET puis HWB pour que la voiture repasse en mode DFU bootloader
appuyé sur le bouton reset pour arreter le cycle de la voiture au milieu