Wiki » History » Version 18

« Previous - Version 18/19 (diff) - Next » - Current version
Florent Zonta, 10/23/2015 04:04 PM


Wiki Carte commande 8 servos moteurs sur PIC18f4550

Sommaire :
A) Sous-traitance 2014
I. Fonctions principales de la carte
II. Schéma de la carte
III. Guide utilisateur code source

B) Sous-traitance 2015
I. Sujet et objectifs fixés
II. Commande des composants manquants
III. Recherche d'erreurs
IV. Commande des PWMs
V. Projet de nouvelle carte
Bilan dernière séance

A) Sous-traitance 2014
A-I. Fonctions principales de la carte :

Durant la sous-traitance 2014, nous avons été amené à réaliser une carte fonctionnelle permettant la commande de plusieurs servos moteurs (8 par carte). Ce projet s'inscrit dans la mise en place d nouveaux TP d'AURO avec MrLengagne. La carte doit pouvoir :
-Contrôler 8 servos
-Echanger par USB des informations et ordres de commande
-Permettre un identification de la carte par "PIN" physiques
-Permettre l'interface avec un vieux boitier matlab analogique
-Permettre l'utilisation d'un module gyro/accel et d'un autre BT
-Diverses fonctions ....

Nous avons donc découpé le travail par importance des tâches :

Réalisation de la carte sous proteus et mise en place de la liaison USB + PWMS des servos afin de permettre un fonctionnement "minimale" du dispositif. Nous avons par la suite ajouté des fonctions et l'étage analogique.

A-II. Schéma de la carte :

Le schéma est réalisé sous proteus ( isis+ares ). La carte est imprimée et soudée, L'ICSP et l'USB sont fonctionnels (oct 2014). Vous trouverez dans le dépôt la carte finale.

A-III. Guide utilisateur code source :

Notre but est d'expliquer comment paramétrer la carte en fonction de nos besoins.

TRAMES USB :

A:34FE //permet de modifier la valeur d'une PWM
A? //permet de lire la valeur d'une PWM
A#3435 //permet d'utiliser des fonctions particulières selon les PWMs

Les PWMs sont disponibles de la lettre A à H inclut ( 8 PWMs)

La lettre "I" permet l'identification de la carte avec : I? ("i" majuscule)
Les lettres "M,N,O,P" sont réservés pour les opérations sur les I/O de libre. ( M:0001 = met la sortie à 1 et M:0000 = met la sortie à zéro)

B) Sous-traitance 2015 (Desternes\Zonta)
B-I. Sujet et objectifs fixés.

Le projet confié par M.Langagne consiste à déterminer la phase de développement et de test de la carte UIO développée en sous traitance l'année passée.

Notre premier objectif était de commander les composants manquants à partir de la version Proteus de la carte. Ensuite, nous devions trouver d'éventuelles erreurs sur la carte, qu'elles concernent la conception (routage) ou le choix des composants.
Ensuite nous devions remédier si possible à ces problèmes de manière à pouvoir valider chaque partie de la carte. Si toutes ces étapes sont validées, il nous était proposé de créer un PCB plus compact.

Au final nous nous sommes concentrés sur la partie "Génération de 8 PWMs"

B-II. Commande des composants manquants
Voici la liste des composants qui ont été commandés pour la carte :
-TL084CN x1
-CNY74-4 x2
-TL082 x2
-MCP4922 x1
-TMA0505S x1

Tous les composants sont donc à disposition pour tester toutes les parties de la carte.

B-III. Recherche d'erreurs

Le premier problème rencontré a été le problème d'alimentation avec le Jack. En effet la tension fournie ne permettait pas d'alimenter le PIC18F4550. En se référant à la documentation du régulateur, nous avons vu que la valeur des capacités de découplage n'était pas les bonnes, il y avait 2 capacités de 1nF alors que la documentation propose 330nF et 100nF. Les changements ont été effectués et l'alimentation par Jack est fonctionnelle.

Nous avons vite vu un problème de taille concernant la commande des PWMs.

En effet, pour pouvoir avoir une tension PWM0, il faut une tension 6VMOT, le problème réside dans le fait que sur le routage il n'y a pas d'alimentation 6VMOT, les tests sur les optocoupleurs ne peuvent pas être réalisés sur cette carte. De même, il manquait GNDMOT. L'ajout de cette alimentation ("6VMOT" et "GNDMOT") a été faite sur le fichier Proteus. Et sur la carte, nous avons donc soudé deux fils. De plus nous avons remarqué que la carte avait uniquement quatre sorties PWM utilisables (Pw0 -Pw3).

Après ces deux erreurs rectifiées, nous pensions pouvoir faire nos tests de PWMs sur la carte. Par simple mise un 1 de tout le portD, nous avons remarqué que les broches avaient des états variables (0 , 2v, environ 2.5v, 5V), alors que l'on aurait du avoir des sorties à 5V. Les essais sur la carte de synthèse fonctionnaient. Nous avons contrôlé les soudures et essayé de débugger la carte UiO, sans succès. Les tests sont donc, à partir de maintenant, réalisés sur une carte de synthèse, avec une plaque à trous pour pouvoir utiliser les composants complémentaires.

En changeant notre PIC de carte, nous avons remarqué que sur la carte UiO, le support du PIC était soudé dans le sens inverse. La modification n'a pas été encore apportée donc il faut veiller à mettre le PIC dans le bon sens, à savoir dans le sens inverse à celui indiqué par le support.

Pour pouvoir connecter le PicKit sur la carte UiO, nous avons ajouté un témoin (petite flèche) sur une broche. La flèche sur la carte et la flèche sur le pickit doivent être alignées.

La version modifiée est disponible sur "Dépôt".

B-IV. Commande des PWMs

On rappelle que le PIC18F4550 n'a que deux sorties PWM, or le cahier des charges impose la commande de 8 servomoteurs, il faut donc 8 sorties PWMs, nous utiliserons donc ainsi les interruptions du timer pour générer des PWMs. On rappelle que pour commander un servomoteur, il faut une impulsion de 1 à 2ms périodique (T=20ms). Le projet MPLAB est disponible sur "Dépôt", à noter que le compilateur utilisé est le compilateur C18. Le programme test (seulement pour les PWMs) est le plus simple possible. Le programme étant commenté, nous ne nous attarderons pas ici sur l'explication du programme.

B-V. Projet de nouvelle carte

Etant donné que nous nous sommes concentrés sur la partie PWM, nous avons réalisé la CAO d'une carte dédiée à la commande de 8 servomoteurs. Le fichier Proteus correspondant est disponible sur "Dépôt".

Bilan.

Nous avons descellé des erreurs, celle-ci ont été corrigées sur la carte ou sur Proteus. Les tests ont été réalisés sur une carte de synthèse, le programme permet de commander les différentes PWMs et donc de commander les servomoteurs un par un avec un identifiant et une consigne en degrés. La CAO d'une carte dédiée aux PWMs est réalisée.

Capture.JPG (55.6 KB) Romain Desternes, 10/20/2015 02:46 PM