« SE3Trinome2022-6 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
 
(4 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 7 : Ligne 7 :
Nous partons sur la voiture 1/43.
Nous partons sur la voiture 1/43.


Voici le modèle de carte de que nous choisissons :
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),
* 2  moteurs pour le contrôle (1 DC à l'arrière et un pas à pas à l'avant),
Ligne 13 : Ligne 13 :
* des leds (4 : deux phares avants ainsi que deux arrières),
* des leds (4 : deux phares avants ainsi que deux arrières),
* une batterie
* une batterie
L'idée est, avec le module Bluetooth, de pouvoir piloter la voiture grâce à une application mobile.   
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.   
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.   
Ligne 50 : Ligne 50 :
[[Fichier:Carte imprimée et soudée.png|centré|Carte imprimée|sans_cadre]]
[[Fichier:Carte imprimée et soudée.png|centré|Carte imprimée|sans_cadre]]
   
   
Avant de souder tous les composants, l'idée était de vérifier si le PC détectait bien la carte, nous avons souder un fil sur le Pin 4 et le Pin 5 pour pouvoir alimenter l'ATMega16u2.  
<u>Remarque :</u>  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 ==
== 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.  
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.  
Ligne 60 : Ligne 62 :
== Programmation ==
== Programmation ==


Les PINS dont nous allons avoir besoin sont les suivants : 
{| class="wikitable"
|+
|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 :   
Tout d'abord, nous avons écris notre Makefile comme ceci :   
[[Fichier:Makefile .png|centré|Makefile|sans_cadre]]
[[Fichier:Makefile .png|centré|Makefile|sans_cadre]]
   
   
=== 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 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(), ...'').  


Ligne 70 : Ligne 102 :
[[Fichier:Programme leds.png|centré|Prog leds|sans_cadre]]  
[[Fichier:Programme leds.png|centré|Prog leds|sans_cadre]]  


=== Gestion du moteur pas à pas ===
Pour poursuivre, afin de faire fonctionner le moteur pas à pas, nous avons fait quelques recherches pour la programmation.   
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 :  
Pour ce faire, nous nous sommes aidés du chronogramme de l'activité du moteur bipolaire suivant :  
[[Fichier:Chronogramme des pas .png|centré|chrono des pas |sans_cadre]]
[[Fichier:Chronogramme des pas .png|centré|chrono des pas |sans_cadre]]
   
   
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   
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 :   
Voici le code final fonctionnel du moteur pas à pas :   
[[Fichier:Code moteur pas à pas .png|centré|prog mots|sans_cadre]]
[[Fichier:Code moteur pas à pas .png|centré|prog mots|sans_cadre]]
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).     
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.     


Notre code ci-dessus permet donc de tourner le moteur dans un sens puis dans l'autre.     
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.   
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.   


Ligne 100 : Ligne 134 :


== Conclusion ==
== 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.
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.


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 :
* 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.


- créer des footprint, en allant chercher les dimensions dans les datasheets.
* router 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).  


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


- 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.
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.
Ce projet nous a aussi permit d'apprendre a souder des composants monté en surface (led, microcontrôleur, résistance).

Version actuelle datée du 5 juin 2023 à 14:09

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

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.

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

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 :

Makefile

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.

Config entree/sortie

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

Prog leds

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 :

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

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é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.
  • router 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.