Cours:VoitureTelecommandee
Sommaire
Cahier des charges
Présentation du système global
On dispose d'une voiture radiocommandée pour laquelle nous souhaitons remplacer la télécommande. Ceci impose automatiquement de remplacer la partie réception (sauf à faire du reverse ingeenering sur le protocole existant). Il y a ainsi une télécommande à concevoir complètement et une partie réception qui sera destinée à envoyer les ordres reçus à la partie puissance de la voiture.
Le système a concevoir doit permettre de réaliser les fonctions suivantes :
- Transmettre une consigne de vitesse
- Transmettre une consigne de direction
- Calibrer l'axe de direction : il faut qu'un zéro en direction fasse une ligne droite
- Assurer une sécurité de la voiture en cas de perte du signal de la télécommande
- Visualiser le niveau de charge de la voiture sur la télécommande à l'aide de trois leds de couleurs
La transmission sans fil utilisera des modules Xbee série 1, qu'il conviendra de configurer de façon adaptée.
Les cartes à réaliser s'articuleront autour du processeur attiny 841 et d'un module xbee.
Présentation de la télécommande
La partie émetteur sera alimentée complètement en 3,3V qui sera réalisée à partie d'une alimentation sur batterie constituée de 4 accumulateurs AA.
Prévoir le connecteur ISP pour la programmation du processeur
Présentation de la partie réception
La partie réception sera alimentée en deux tensions différentes :
- 3,3V obligatoire pour le module XBee
- 5V pour le microcontrôleur
Le 5V est tiré de la partie puissance mais le 3,3V devra être réalisé avec un régulateur adapté.
Prévoir le connecteur ISP pour la programmation du processeur. Vous utiliserez, comme Atmel le préconise, le connecteur ISP à 6 broches.
Étude et réalisation du projet Télécommande
Étude
Les études de chacune des fonctions se feront sur plaque à essais. Nous vous présentons l'ensemble des fonctions à réaliser à l'aide d'un schéma de principe.
- Les commandes manuelles seront réalisées à l'aide d'un joystick analogique :
- un joystick sera utilisé de droite à gauche pour définir la direction de déplacement
- un autre joystick sera utilisé d'avant en arrière pour choisir la vitesse de déplacement
- Une alimentation 3,3V est nécessaire pour le XBee et l'ATtiny841
- La partie centrale est un ATtiny841 qui sera alimenté en 3,3V
- Il devra recevoir les informations du joystick et les envoyer au XBee
- Il devra permettre la calibration de la direction à l'aide du joystick de direction et de la commande manuelle de validation
- Il élaborera à partir de la tension batterie reçue un affichage sur 3 leds (signaux visuels sur le schéma)
Saisie schématique
Chaque étude validée sur plaque à essais sera aussitôt traduite en schématique. La réalisation du schéma se fera donc au fur et à mesure de l'avancement de la validation de vos fonctions.
N'oubliez pas de prévoir le connecteur pour le XBee qui a un pas très particulier.
En ce qui concerne l'ICSP, le forum Arduino indique qu'il faut prendre PA4/PA5/PA6 pour MISO/MOSI/SCK sur l'ATTiny841 (ATTENTION : il y a deux MISO/MOSI/SCK sur l'ATTiny841 !).
Routage et boards
Vous avez tout validé, le schéma est terminé, il faut respecter les règles de routage :
- pistes larges
- pistes espacées
- pistes courtes
- Via : 0.8 pour les trous et 1,25 pour le diamètre externe
- N'hésitez pas à ajouter du texte sur vos cartes. Le minimum et bien sûr BOT XXX et TOP XXX pour du double face avec XXX remplacé par votre nom.
- Les connecteurs aussi doivent être renseignés par du texte. Vous devez être capable de réutiliser votre carte dans 6 mois !
Réalisation du calque
Exports sous forme d'images :
- fond en blanc : Options -> user interface -> layout
- lancer ulp -> drill-aid vous propose Drill center diameter 0,3mm et c'est OK. Le remplissage se fait en couche 116 mais avec des hachures.
- Choisir cette couche 116 puis change -> Fillstyle en plein
- Choisir les couches Bottom (bleu) Pads vias et la 116
- File -> export -> Image donner un nom et choisir 1200 DPI et monochrome
- Idem pour Top (rouge) avec pads et vias (et éventuellement la 116)
Étude et réalisation du projet Réception
Étude
Les études de chacune des fonctions se feront sur plaque à essais. Nous vous présentons l'ensemble des fonctions à réaliser à l'aide d'un schéma de principe.
- Une alimentation 3,3V est à réaliser à partir du 5V disponible dans la partie puissance
- Le 3,3V est uniquement destiné au module XBee
- La partie centrale est un ATtiny841 alimenté en 5V
- Il devra recevoir les informations du XBee (vitesse et direction) et les envoyer aux parties de puissance correspondantes
- La vitesse se commande par une Modulation de Largeur d'Impulsion ou MLI (rapport cyclique)
- La direction est réalisée par un servo, c'est à dire aussi une commande en MLI
- Adaptation des tensions
- Le 3,3V du XBee peut être directement relié à l'ATtiny841 (en réception)
- Le 5V de l'ATtiny841 (en émission) ne peut pas être relié directement au XBee. Pont diviseur ?
- La mesure de la tension batterie nécessite plus de précaution pour l'adaptation. Vous devez à tout prix regarder le datasheet du ATtiny861 pour connaître sa tension de référence et en déduire l'adaptation
Plus d'explications sur le dernier point
La Conversion Analogique Numérique (CAN) nécessite une tension de référence. Si vous prenez la tension de batterie comme référence et que vous mesurez celle-ci, vous trouverez toujours la même valeur et ce quel que soit l'état de la batterie. Il faut donc une référence de tension, ce que tous les microcontrôleurs proposent. Classiquement on trouve soit 1,1V ou soit 2,56V ou encore les deux ! A chercher dans le datasheet.
Saisie schématique
Chaque étude validée sur plaque à essais sera aussitôt traduite en schématique. La réalisation du schéma se fera donc au fur et à mesure de l'avancement de la validation de vos fonctions.
N'oubliez pas de prévoir le connecteur pour le XBee qui a un pas très particulier.
En ce qui concerne l'ICSP, le forum Arduino indique qu'il faut prendre PA4/PA5/PA6 pour MISO/MOSI/SCK sur l'ATTiny841 (ATTENTION : il y a deux MISO/MOSI/SCK sur l'ATTiny841 !).
Routage et boards
Vous avez tout validé, le schéma est terminé, il faut respecter les règles de routage :
- pistes larges
- pistes espacées
- pistes courtes
- Via : 0.8 pour les trous et 1,25 pour le diamètre externe
- N'hésitez pas à ajouter du texte sur vos cartes. Le minimum et bien sûr BOT XXX et TOP XXX pour du double face avec XXX remplacé par votre nom
- Les connecteurs aussi doivent être renseignés par du texte. Vous devez être capable de réutiliser votre carte dans 6 mois !
Réalisation du calque
Exports sous forme d'images :
- fond en blanc : Options -> user interface -> layout
- lancer ulp -> drill-aid vous propose Drill center diameter 0,3mm et c'est OK. Le remplissage se fait en couche 116 mais avec des hachures.
- Choisir cette couche 116 puis change -> Fillstyle en plein
- Choisir les couches Bottom (bleu) Pads vias et la 116
- File -> export -> Image donner un nom et choisir 1200 DPI et monochrome
- Idem pour Top (rouge) avec pads et vias (et éventuellement la 116)
Protocole et programmation
Les 2 cartes vont échanger des données par l'intermédiaire d'une liaison série (cf TP liaison série), utilisant les modules Xbee comme support de transmission sans fil.
Vous devrez envoyer sur cette liaison différentes données, et donc il sera nécessaire de définir un protocole cf tp M1103.
Pour transmettre une valeur de MLI pour la vitesse v=10 et une consigne de MLI pour la direction d=102, vous pourrez par exemple envoyer :
- caractère de départ : #
- vitesse : 10
- séparateur : "espace"
- direction : 102
- séparateur : "espace"
- caractère de fin : $
- Trame complète : #10 102 $
Fonctions de programmation
Dans le cas de l'utilisation d'un Atiny841, vous pouvez utiliser les fonctions Arduino pour faire votre programme.
Les fonctions suivantes seront sans doute nécessaires, soit pour l'émetteur (télécommande) soit pour le récepteur (voiture)
- atoi() => récepteur
- Serial.readBytesUntil => récepteur
- analogRead()
- analogReference()
Vous avez à programmer une MLI pour votre servomoteur et votre moteur de propulsion qui est un moteur brushless. Sa commande se fait exactement de la même façon que celle des servomoteurs. Il vous est donc possible d'utiliser les fonctions Arduino pour cela. Voir aussi :
- Voir aussi TP sur servomoteur dans un autre cours
- Donnez du mouvement a vos montages avec un servo-moteur
Compilation
Vous utiliserez l'IDE eclipse pour réaliser votre programme. L'horloge par défaut de votre µcontrôleur est 1MHz.
Une autre solution est d'utiliser un éditeur de texte quelconque (gedit par ex) pour créer votre programme (fichier test.c par ex). L'étape de compilation s'effectuera en "ligne de commande" de la façon suivante :
avr-gcc -Wall -g -Os -mmcu=attiny841 -o test.o test.c
avr-objcopy -j .text -j .data -O ihex test.o test.hex
avrdude -c avrisp2 -P usb -p t261 -U flash:w:"test.hex"
Il conviendra bien entendu de remplacer les occurrences "test.*" par le nom de votre programme
Contraintes sur les projets
Planning à respecter
Vous serez évalué tout au long du projet en début de séance. Ce qui vous permettra de terminer en dehors des séances le travail que vous n'aurez pas achevé.
Une chose importante à noter : Il vous revient de saisir au fur et à mesure le schéma des différentes fonctions étudiées dès que possible.
Vous trouverez ci dessous l'avancement attendu des différentes séances. Notons également que vous devrez achever votre travail après les 8 séances si le projet n'est pas terminé.
De plus, le routage devra être fait en bonne partie en dehors des séances.
n° de séance | Détail de l'attendu | |
---|---|---|
1 | Étude | |
2 | Étude | |
3 | Saisie | Étude, validation et saisie |
4 | Routage | Validation du routage et schéma de la carte électronique |
5 | Fabrication | Brasage des composants |
6 | Vérification | Tests et dépannage de la carte |
7 | Programmation | Mesure des performances de la carte réalisée |
8 | Programmation (suite) | Amélioration et finition du programme et rendu de rapport écrit |
Évaluation
Vous serez évalué tout au long du projet en début de séance. Ce qui vous permettra de terminer en dehors des séances le travail que vous n'aurez pas achevé.
Comme indiqué dans le tableau du planning vous avez un rapport à rendre qui lui aussi sera évalué.
Composants utilisés
Nom | Type | Boîtier | Librairie Eagle | Référence eagle | Documentation | Fournisseur | Référence |
---|---|---|---|---|---|---|---|
ATTINY841 | µcontrôleur | SOIC14 | bt_avr | ATTINY 441/841-SSU | attiny841.pdf | Farnell | 2396716 |
ISP | barrette mâle sécable | traversant | con-lstb | MA03-2 | |||
XBee | traversant | adafruit | XBEE | Xbee et atmega | |||
Connecteur | connecteur pour 3 fils | traversant | con-lstb | MA03-1 | |||
Joystick | Joystick analogique |