« SE3Binome2023-4 » : différence entre les versions
Ligne 179 : | Ligne 179 : | ||
La séquence de comptage est déterminée par le réglage des bits WGM01 et WGM00 situés dans le registre de contrôle de minuterie/compteur (TCCR0A) et le bit WGM02 situé dans le registre de contrôle de minuterie/compteur B (TCCR0B). Il existe des liens étroits entre la façon dont le compteur se comporte (compte) et la manière dont les formes d'onde sont générées sur les sorties Output Compare OC0A et OC0B. | La séquence de comptage est déterminée par le réglage des bits WGM01 et WGM00 situés dans le registre de contrôle de minuterie/compteur (TCCR0A) et le bit WGM02 situé dans le registre de contrôle de minuterie/compteur B (TCCR0B). Il existe des liens étroits entre la façon dont le compteur se comporte (compte) et la manière dont les formes d'onde sont générées sur les sorties Output Compare OC0A et OC0B. | ||
Chaque fois que TCNT0 est égal à OCR0A ou OCR0B, le comparateur signale une correspondance. Un match définira le | |||
Indicateur de comparaison de sortie (OCF0A ou OCF0B) au prochain cycle d'horloge de la minuterie. Si l'interruption correspondante est | |||
activé, l’indicateur de comparaison de sortie génère une interruption de comparaison de sortie. | |||
Le générateur de forme d'onde utilise le signal de correspondance pour générer une sortie | |||
selon le mode de fonctionnement défini par les bits WGM02:0 et les bits Compare Output mode (COM0x1:0). | |||
[[Fichier:Image ds.png|vignette]] | |||
=== Programmation du détecteur d'obstacle === | === Programmation du détecteur d'obstacle === |
Version du 9 juin 2024 à 17:23
Sujet : voiture commandée par USB
Cahier des Charges
Le projet consiste à concevoir une voiture autonome en terme d'énergie, avec l'utilisation d'une batterie au lithium ainsi que la mise en place d'une alimentation intégrée sur la carte.
Cette voiture sera équipée de deux moteurs continus de petite taille (2 cm) situés au niveau des roues avant. Cette configuration présente plusieurs avantages, notamment la réduction des contraintes mécaniques grâce à l'utilisation d'un pont en H et l'inversion des sens de rotation des roues. De plus, cela permet de diminuer le poids de la voiture, ce qui se traduit par moins de contraintes sur la taille de la carte électronique.
Le système comprendra également quatre leds de surface, dont deux seront placées à l'avant et deux à l'arrière de la voiture. Ces leds serviront à indiquer le sens de déplacement de la voiture, par exemple en allumant la led gauche avant pour tourner à gauche en avançant.
L'utilisateur pourra choisir le programme de déplacement de la voiture grâce à un logiciel implanté sur un ordinateur, qui sera ensuite transféré sur la carte via le port USB.
Concernant la carte électronique, elle sera équipée d'un microcontrôleur ATmega16u4 ou ATmega32u4 (différence en fonction de l'espace dédié à la flash).
Une optimisation possible serait l'ajout d'un détecteur d'obstacles.
Lien GIT
https://archives.plil.fr/sdeparis/projet_voiture_sd_ah.git
Partie électronique
Schématique Kicad
On ajoute divers composants :
- Le microcontrôleur ATMega16u4.
- 4 leds (pour les feux) et leurs résistances associées.
- Un connecteur ISP afin que la carte puisse effacer le programme précédent et charger le suivant.
- Un capteur infrarouge afin de détecter les obstacles.
- Un contrôleur moteurs pour les moteurs gauche (placé sur le connecteur J5) et droit (placé sur le connecteur J6).
- Un chargeur pour la batterie et un connecteur qui à l'aide d'un cavalier permet de choisir le mode d'utilisation de la batterie.
- Deux ports USB : un pour transférer le programme à la carte, et un pour l'alimentation.
NOM | PIN |
---|---|
LED1 | PF7 |
LED2 | PB7 |
LED3 | PD2 |
LED4 | PC7 |
LED5 | PE6 |
PWMA | PD1 |
PWMB | PD0 |
AIN1 | PF4 |
AIN2 | PF5 |
BIN1 | PF1 |
BIN2 | PF0 |
capteur | PF6 |
NOM | PIN |
---|---|
M1+ | A01 |
M1- | A02 |
M2+ | B01 |
M2- | B02 |
Routage
On place des vias afin d'uniformiser le plan de masse.
Vue 3D
Brasure
PCB sans composants
Brasure des principaux composants
On doit ensuite braser les moteurs à l'avant de la voiture. Problème : après avoir brasé le premier moteur, la carte n'est plus reconnue en mode DFU. Par conséquent, il est inutile de braser le deuxième moteur et le détecteur d'obstacle. Il faudrait recommencer une carte mais nous manquons maintenant de temps pour braser à nouveau tous les composants sur une nouvelle carte.
Détecteur d'obstacles
Le OPB733TR est un interrupteur photoélectrique réflectif. Il intègre un émetteur infrarouge et un phototransistor dans un boîtier plastique compact.
L'émetteur infrarouge (une LED) émet de la lumière infrarouge lorsqu'un courant passe à travers lui. Cette lumière est ensuite réfléchie par un objet situé à proximité du capteur.
Le récepteur infrarouge (phototransistor) détecte alors la lumière réfléchie. Lorsqu'il la capte, il se met en conduction, permettant ainsi de détecter la présence de l'objet.
Attention, d'après la datasheet de OPB33TR, il ne doit pas être exposé à une température de plus de 260°C pendant plus de 10 secondes,
donc lors du brasage de ce détecteur il faut être rapide et précis.
Partie programmation
Détection du mode DFU sur notre carte
Utilisation de la carte Arduino Uno afin de détecter le mode DFU
Le mode DFU de notre carte n'étant pas détecté, comme pour notre manette : https://projets-se.plil.fr/mediawiki/index.php/SE3_PSE_Binome2023-2#D%C3%A9tection_du_mode_DFU_sur_notre_carte, nous avons dû utiliser un Arduino en lançant les commandes suivantes :
avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xFF:m -U efuse:w:0xF7:m
avrdude -c stk500v1 -p atmega32u4 -P /dev/ttyACM0 -b 19200 -U flash:w:ATMega32U4-usbdevice_dfu-1_0_0.hex
Programmation des leds
Le programme ci-dessous nous permet de faire clignoter les leds de la voiture.
Programmation des moteurs
Nous avons ensuite implémenté un programme afin de faire tourner les moteurs mais celui-ci n'a pas pu être testé à cause de l’absence de détection du mode DFU.
Les registres de comparaison de sortie à double tampon (OCR0A et OCR0B) sont comparés au minuteur/compteur. Le résultat de la comparaison peut être utilisé par le générateur de forme d'onde pour générer un PWM ou sortie à fréquence variable sur les broches de comparaison de sortie (OC0A et OC0B). La séquence de comptage est déterminée par le réglage des bits WGM01 et WGM00 situés dans le registre de contrôle de minuterie/compteur (TCCR0A) et le bit WGM02 situé dans le registre de contrôle de minuterie/compteur B (TCCR0B). Il existe des liens étroits entre la façon dont le compteur se comporte (compte) et la manière dont les formes d'onde sont générées sur les sorties Output Compare OC0A et OC0B. Chaque fois que TCNT0 est égal à OCR0A ou OCR0B, le comparateur signale une correspondance. Un match définira le Indicateur de comparaison de sortie (OCF0A ou OCF0B) au prochain cycle d'horloge de la minuterie. Si l'interruption correspondante est activé, l’indicateur de comparaison de sortie génère une interruption de comparaison de sortie. Le générateur de forme d'onde utilise le signal de correspondance pour générer une sortie selon le mode de fonctionnement défini par les bits WGM02:0 et les bits Compare Output mode (COM0x1:0).
Programmation du détecteur d'obstacle
Cette partie du programme nous permet de bloquer la rotation des moteurs lorsqu'un obstacle est détecté.
Programmation d'un trajet prédéfini pour la voiture
Le but est de programmer les leds et les moteurs de manière à ce que la voiture effectue un chemin prédéfini à l'avance. Pour cela, on va d'abord charger le programme sur la carte, puis laisser la voiture exécuter le programme en totale autonomie à l'aide de la batterie.
Cependant n'ayant plus le mode DFU nous n'avons pas pu tester notre programme.
Partie Énergie
Batterie
On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome, indépendamment du port USB.
Charge de la batterie
On place le cavalier entre les pins 1 et 2 du connecteur J10.
Utilisation de la batterie
On place le cavalier entre les pins 2 et 3 du connecteur J10.
Chargeur LIPO
La batterie au Lithium sera placée sur le connecteur J7.
USB alimentation
Partie mécanique
Cette partie pourra être utile pour fixer les moteurs, les roues et la batterie sur la carte.
Moteurs et roues
L'objectif est de coller les moteurs sous la carte à l'aide d'un pistolet à colle. On ajoute ensuite les roues sur les arbres des moteurs.
Nous avons également placé un lego à la place du deuxième moteur à l'aide de pâte à fixe. L'ajout de ce lego est temporaire, et sera ensuite remplacé par un moteur fixé à la carte par de la glue.
Support de batterie
Nous avons créé un support de batterie en lego. Celui-ci est maintenu sous la carte grâce à une liaison lego avec le support des roues arrières. La batterie est ainsi maintenue sur le support de manière fiable.