SE3Binome2023-1
Projet voiture Autonome
Cahier des charges
La voiture doit être capable de:
- Avancer / Reculer
- Tourner
- Allumer des LEDs
- Eviter un mur
Description
Réalisation d'une voiture avec deux modes de fonctionnements.
- La voiture sera capable de suivre des instructions données par l'utilisateur via USB (Avancer à une vitesse maximale pendant 30 secondes, tourner à droite pendant 10 secondes, reculer lentement pendant 15 secondes, etc)
- Le second mode est en autonomie. La voiture avance et lorsqu'elle détecte un mur, puis elle tourne à droite jusqu'à ce qu'elle puisse avancer à nouveau.
Tâches à réaliser
- Conception mécanique ⏲
- Réalisation du PCB 🆗
- Gestion de l'énergie de la batterie ⏲
- Programmation du µC ⏲
- Gestion de chargement d'un programme ⏲
Conception du PCB
Schématique
Routage
PINOUT
NOM | PIN |
---|---|
EMETTEUR | PF0 |
LED2 | PB4 |
LED3 | PB5 |
LED4 | PC6 |
LED5 | PC7 |
PWMA | PB7 |
PWMB | PD0 |
AIN1 | PD1 |
AIN2 | PD2 |
BIN1 | PD3 |
BIN2 | PD4 |
MISO | PB3 |
MOSI | PB2 |
SCK | PB1 |
RST | RESET |
NOM | PIN |
---|---|
M1+ | A01 |
M1- | A02 |
M2+ | B01 |
M2- | B02 |
Réalisation du PCB / conception mécanique:
TO DO:
Partir sur l’un des plan de la manette 🆗
prendre en compte la taille de la batterie 🆗
Prendre en compte la position des moteurs 🆗
Prévoir de la place pour ajouter une roue libre 🆗
Prévoir de la place pour les capteurs de suivi de ligne 🆗
Pas de contrainte esthétique 🆗
Faire un listing des connectiques 🆗
Concept:
La voiture ne dispose pas de roue directrice. Le processus d'orientation du véhicule se fait donc via l'utilisation des moteurs dans le sens opposé pour faire tourner le véhicule.
Cependant, avec 4 roues ne possédant qu'un degrés de liberté le véhicule risque de sautiller pendant les phases d'orientation.
Il a donc été choisi de placer 3 roues sur le véhicule:
- 2 roues motrices.
- 1 roue libre.
Ce choix mécaniques permet au véhicule de tourner sans sautiller.
Gestion de l’énergie de la batterie
Regarder les specs de la batterie et mettre un système d’arrêt d’urgence
Gestion de la charge
Brasage des composants sur le PCB
PCB vide:
Brasage atmega32u4, driver moteur et USB sur le PCB:
Montage moteur et roue libre:
Correction de conception du PCB:
Conception mécanique
Support de moteur:
Roues:
Programmation du µC
PWM Timer0 et Timer4
Afin d'éviter à notre robot de ne pouvoir avancer seulement en tout ou rien, le choix a été fait d'utiliser des signaux PWM.
Une Pulse Width Modulation ou Modulation de Largeur d'Impulsion est le fait de faire varier le rapport cyclique d'un signal. Dans notre cas, les signaux PWM nous permettent de modifier la valeur moyenne du signal afin que les moteurs tournent plus ou moins vite.
Pour programmer un signal PWM sur un ATMEGA16u4 il faut :
- définir les broches sur lesquelles les signaux sortiront :
Lors de la datasheet du µC, vous pouvons voir certaines broches du type OCnx (n : un chiffre, x: une lettre), c'est celles-ci que nous recherchons.
Le chiffre correspond au Timer et la lettre au comparateur. exemple : OC0B, il s'agit du Timer 0 et sa valeur de comparaison sera OCR0B.
- Configurer les registres :
Chaque Timer a ses spécificités mais nous pouvons remarquer un schéma entre les différents Timers (il faut croire qu'ils y ont réfléchis).
Nous allons prendre le Timer 0 et nous nous mettrons en mode Fast PWM:
TCCR0A
- Les bits WGM00 et WGM01 permettent de choisir le mode du Timer0 (Table 13-6), pour nous ce sera le mode 3, Fast PWM avec WGM01 = 1 et WGM00 = 1 (et WGM02 = 0 situé dans le registre TCCR0B)
- les bits COM0x0 et COM0x1 servent à définir ce qu'il se passera lorsque le registre TCNT0 sera égal à OCR0n.
Si l'on regarde la table 13-2, nous pouvons voir les différentes configurations possibles. Dans notre cas, nous seront en COM0A1 = 1 et COM0A0 = 0 de sorte à ce que la tension moyenne soit en corrélation avec la valeur fixé de OCR0A.
TCCR0B
- WGM02 a le même rôle que les autres WGM0n dans le registre TCCR0A.
- CS00, CS01 et CS02 sont des pré diviseurs qui permettent d'avoir une fréquence précise. Dans notre cas CS00 = 1 et les reste à 0.
Mode contrôle USB
Fonctions:
- Avancer, choix de la vitesse et de la durée.
- Freiner, arrêt du véhicule avec activation du feux stop.
- Reculer, choix de la vitesse et de la durée avec activation des feux de détresses.
- Tourner à droite, choix de la durée avec activation du clignotant droit.
- Tourner à gauche, choix de la durée avec activation du clignotant gauche.
Gestion du chargement du programme
Se renseigner sur comment faire
Tests
Vidéo de test en marche avant :
Vidéo de test en marche avant puis virage à gauche :
Vidéo 0 à 100 :
Liste des composants
- µC ATMega16U4 (contient un bootloader)
- 5 Leds de contrôle (Moteurs, alimentation, transmission, détecteur de ligne)
- driver moteur
- Batterie LiPo 3.7V
- Connecteurs Molex 3pin 1mm
Archive
GIT : https://archives.plil.fr/vdetrez/DETREZ_CART_programmation_des_systemes_embarques.git