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 la puce atMega16u2 et de l'alimenterLes deux faces sont des plans de masse, ce qui nous a à la fois facilité de routage mais ça permet également d'isoler la carte. 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 l'ordianteur voyait 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'atméga et les composants nécéssaire au bon fonctionnement de la carte, puis vérifiés si lsusb détecté bien la carte. Effectivement l'ordinateur l'a détéctée :

Fonction lsusb


Programmation

Tout d'abord, nous avons programmé 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

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). Sans oublier de changer le sens pour ne pas griller la bobine dans le moteur.

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 ou 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, les 4 de poids forts servent à gérer le moteur.

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

En conclusion, nous avons une carte qui est repérable par le PC, des leds qui fonctionnent correctement et un moteur qui change de sens. Egalement, il est possible de gérer, grâce à un octet, les Leds et le moteur.


La plus grande difficulté dans ce projet a été que nous n'avions jamais fait de projet entier comme celui-ci (de la carte électronique à la programmation), nous avons donc dû nous adapter et anticiper parfois certaines choses et surtout gérer le fait que nous étions à 3, pour que tous fassent quelque chose. Aussi, la soudure en surface a été une première pour nous tous, ça a donc pris un peu de temps parfois. C'est un projet qui nous a plu, même si il n'est pas entièrement fini nous sommes contents du résultat.