« SE3Binome2023-1 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 190 : Ligne 190 :
Se renseigner sur comment faire
Se renseigner sur comment faire


= Tests =
= Tests en autonomie =


=== Vidéo de test en marche avant : ===
=== Vidéo de test en marche avant : ===
Ligne 200 : Ligne 200 :
=== Vidéo 0 à 100 : ===
=== Vidéo 0 à 100 : ===
[[Fichier:0-100.mp4|sans_cadre]]
[[Fichier:0-100.mp4|sans_cadre]]
=== Allumage des LEDs en fonction des actions: ===
[[Fichier:Video LEDs.mp4|sans_cadre]]
Le clignotant gauche s'allume lorsque la voiture tourne à gauche et inversement pour un déplacement vers la droite. Lorsque la voiture recule, les feux de détresse s'actionnent et lorsque le frein est actionné, le feu stop s'allume.


= Liste des composants =
= Liste des composants =

Version du 12 juin 2024 à 09:41

Titre page VOITURE.png

Projet voiture Autonome

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 elle recule, puis tourne à droite jusqu'à ce qu'elle puisse avancer à nouveau.

Ce projet mêle tous les domaines des systèmes embarqués de la programmation d'un microcontrôleur au brasage des composants en passant par la gestion de la batterie.

Conception du PCB

Schématique

Schématique finale.pdf

Routage

Rootage final.pdf

PINOUT

ATMEGA16U4
NOM PIN
EMETTEUR PD4
LED2 PB4
LED3 PB5
LED4 PC6
LED5 PB0
PWM1 PB7
PWM2 PD0
AIN1 PD2
AIN2 PD1
BIN1 PD3
BIN2 PD5
MISO PB3
MOSI PB2
SCK PB1
RST RESET

Réalisation du PCB / conception mécanique:

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.

De la conception 3D a aussi été utilisée afin de concevoir un support de batterie et un support pour le capteur IR pour éviter que les composants soient en l'air.

Gestion de l’énergie de la batterie

Pour gérer la charge de la batterie, nous utilisons le MAX1811ESA+. Ce composant permet de gérer la charge de batterie 3,7V Lithium-ion.

Pour recharger la batterie de la voiture, un autre port USB mini a été prévu uniquement pour cette tâche.

Il faut faire attention à ne pas brancher les 2 connecteurs USB en même temps (même si une diode a été placée pour éviter les retours d'alimentations) et débrancher le cavalier situé près du connecteur de la batterie.

Brasage des composants sur le PCB

PCB vide:

PCB Vide.jpg

Brasage atmega16u4, driver moteur et USB sur le PCB:

Brasage 21-05.jpg

Montage moteur et roue libre et correction de conception du PCB:

Montage moteur et roue libre.jpg

Conception mécanique

Support de moteur:

Support de moteur.jpg

Roues:

Roue.jpg

Support de batterie:

Support de batterie 1.jpgSupport de batterie 2.jpg

Support de capteur IR:

Capteur 1.jpgCapteur 2.jpg

Programmation du µC

PWM

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 un signal dont le rapport cyclique varie. 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 avec 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 des similitudes entre les différents Timers (il faut croire qu'ils y ont réfléchis).

Dans notre projet nous avons utilisé le Timer0 mais les autres font très bien l'affaire avec une particularité pour le Timer4.

  • METTRE LES BROCHES OCnx EN SORTIE

Timer0

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 ce n'est pas nécessaire donc CS00 = 1 et les reste à 0.
  • Nous n'utilisons pas d'interruption donc TIMSK0 n'est pas utilisé.
Timer4

Le Timer4 est très similaire au Timer0, mais il a ses particularités.

Son registre de compteur de coups d'horloge est sur 10 bits et donc 2 registres TCNT4 et TC4H , ce dernier stockant les 2 MSB.

Il possède aussi 4 registres de comparaison OCR4A, OCR4B, OCR4C et OCR4D cependant OCR4C est fixe et toujours placé à la valeur max possible du Timer4.

Enfin, il existe des sorties complémentées OC4x (barre). Mais attention elles ne fonctionnent pas exactement en inverse car il faut ajuster tnon-overlap / rising edge et tnon-overlap / falling edge grâce à DT4H et DT4L (registre DT4).

La configuration des registres se passe exactement de la même manière que pour le Timer0 (en adaptant le nom des registres bien sûr).

Seul élément important : Il faut activé le PWM avec le bit PWM4x dans le registre TCCR4A et/ou TCCR4C (15.12.1 / 15.12.2 de la datasheet).


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 en autonomie

Vidéo de test en marche avant :

Vidéo de test en marche avant puis virage à gauche :

Vidéo 0 à 100 :

Allumage des LEDs en fonction des actions:

Le clignotant gauche s'allume lorsque la voiture tourne à gauche et inversement pour un déplacement vers la droite. Lorsque la voiture recule, les feux de détresse s'actionnent et lorsque le frein est actionné, le feu stop s'allume.

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