SE3Trinome2022-6

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

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.

Voici le modèle de carte de que nous choisissons :

  • 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 grâce à une application mobile.

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)
Schéma entier

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.

Schéma ISP


Routage

  1. 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).

Routage
Top
Bottom
  1. Carte de l'ISP
Routage ISP

Carte imprimée

Voici la carte imprimée et partiellement soudée (uC, Leds, moteur pas à pas, USB) :

Carte imprimée

Avant de souder tous les composants, l'idée était de vérifier si le PC détectait bien la carte, nous avons dû souder un fil sur le Pin 4 et le Pin 5 pour pouvoir alimenter l'ATMega16u2.

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.

Fonction lsusb

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

Tout d'abord, nous avons écris notre Makefile comme ceci :

Makefile

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.

Config entree/sortie

Par la suite, afin de faire clignoter les Leds, voici le programme (fonctionnel) que nous avons écrit :

Prog leds

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 :

chrono des pas

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 :

prog mots

On trouve l'initialisation des sorties en fonction des pin des moteurs, et on a mis à 1 les sorties grâce à PORTx. Bien sûr, on n'a pas oublié de faire le décalage des pas (comme le chronogramme ci-dessus).

Notre code ci-dessus permet donc de tourner le moteur dans un sens puis dans l'autre.

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.

lsusb -vvv

Enfin, nous avons ajouter une fonction principale dans lib.c afin de controler, grâce aux octets, l'allumage des leds et du moteur :   

Fonction lib.c.png

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é 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 à était la réalisation du PCB sur Kicad, ou 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érant, et que chaque composant est correctement câblé, sans quoi la carte final n'a aucune chance de fonctionner.

- rooter de manière cohérant, en prenant en compte les perturbations que chaque composants engendre sur les autres, notamment au niveau de l'antenne. Ce projet nous a aussi permit d'apprendre a souder des composants monté en surface (led, microcontrôleur, résistance).