Robots @ Loamok

Aller au contenu | Aller au menu | Aller à la recherche

Mot clé - Monty

lundi, 2 juillet 2007

Carte de commande "Monty" et adaptations diverses


Comme vous pouvez le voir sur le site dédié au robot Monty, la carte de commande principale sert à la fois de carte mère et de carte de programmation pour un pic 16f84.
Voici le schema de cette carte :

Monty plan carte commande

Cette carte a le désavantage d'intégrer toute l'électronique nécessaire à la programmation des pics.
Je dis désavantage car cette électronique n'est indispensable que pour les "séances" de programmation du pic. En mode "fonctionnement" cette électronique représente une pompe à courant et un surpoids inutile.
De plus cette partie de la carte a été particulièrement mal étudiée en termes de choix des valeurs des composants. Il n'est en effet pas possible, sans la modifier, d'utiliser d'autres logiciels de programmation que celui fournit. Et enfin de graves perturbations électro-magnétiques surviennent systèmatiquement lors des séquences de programmation rendant temporairement inutilisable le pic embarqué.

Modifications notoires :
- Inversion des sorties de r12 et r13 respectivement vers les pattes 5 et 9 du buffer U3.
Cette modification permet d'apporter à la partie "programmateur" la compatibilité "Tait Programmer".
Après tout, s'adapter à un standard reconnu est une forme d'ouverture et ça ne peut pas faire de mal à une plateforme mal conçue. (NDLR)
- Remplacement des résistances de "Pull-up" R2, R3, R4 de 10K par des résistances de 1K.
Cette modification notoire des composants est censée supprimer les problèmes de programmation dus aux perturbations électro-magnetiques induites par la fréquence (élevée) présente sur les signaux "datas" et "clock" lors du transfert du code.
Je n'ai pas encore éffectué cette modification et subit toujours des erreurs quasi-systèmatiques lors de mes essais de programmation d'un pic 16f84.
Le plus comique lors de mes tests est que l'orsque je place un multimètre mesureur de tension entre la patte 6 du buffer (Data) et la masse du montage, la programmation s'effectue sans problème !!!
Ma conclusion est donc que mon multimètre (résistance interne de 10 MOhms) une fois placé en sortie du buffer data crée une sorte de pont diviseur de tension entre la résistance R4, la sortie du buffer et la masse stabilisant ainsi la sortie de données et permettant le bon déroulement de la programmation.
Je ne sais si le terme est "électroniquement correct" mais j'en conclut que mon multimétre ainsi placé se comporte en résistance "Pull-down".
Voici le schéma résultant :

Pont sur broche Data

Et les calculs en loi d'Ohms décrivant la tension présente en "Data" une fois le montage en place :

Sachant que la broche RB7 (Data in) reçoit un "1" logique avec une tension de +5V et un "0" logique par une tension de 0V, le buffer avec sa résistance de pull-up est censé délivrer soit 5V soit rien (0V).
Un appareil de mesure placé entre la sortie du buffer et donc la masse indique bien des oscillations de 5V et 0V.
/!\ Oui mais voila le multimètre n'est pas neutre et contient sa propre résistance interne ! /!\
L'orsque l'on enlève le multimètre on ne peut être certain de bien revenir à 0V quand c'est nécessaire. Le +5V est, quand à lui, assuré par la résistance de pull-up.
J'en déduit que l'orsque je place mon multimètre mon montage change pour de venir un "Pont diviseur de tension". Dont les valeurs de sorties sont :

Formule : RB7 = BO + (5V*(10000000/(10000+10000000)))
A°) : pour Buffer-Out = 5V : RB7 = ~10V
B°) : pour Buffer-Out = 0V : RB7 = ~5V

Ces résultats êtant parfaitement faux car ils ne tiennent pas compte de la résistance interne du pic entre RB7 et la masse du montage.
Ce qui transforme notre pont simple en "Pont diviseur de tension chargé".
L'ajout de cette résistance "enlevant" ~5V au montage (étant donné que mes mesures au multimètre me donnent une oscillation entre 0 et 5V j'en déduit que la réduction voltaïque du pic est d'environ 5V) nous obtenons donc :

Formule : RB7 = (BO + (5V*(10000000/(10000+10000000)))) - 5V
A°) : pour Buffer-out = 5V : RB7 = ~5V
B°) : pour Buffer-out = 0V : RB7 = ~0V

Pour conclure sur les modification de la platine de "Monty".
Je ne remplacerais sûrement pas les résistances de 10k par des 1K mais placerais, de préférence, une résistance de 10MOhms entre la sortie du buffer et la masse. Afin de stabiliser proprement et définitivement le signal de programmation.

J'attends bien évidemment vos commentaires car je n'ai aucune confirmation ou infirmation de mes théories si ce ne sont les expérimentations que j'ai moi-même conduit. (en tout cas si mon montage explose une fois la résistance de pull-down en place je ne comprendrais pas pourquoi).

Je placerais bientôt, ici-même, une vidéo démontrant ce bug étrange.

dimanche, 1 juillet 2007

Le(s) cerveau(x) d'un Robot : un micro-controleur


Tout robot digne de ce nom ce doit d'être doté d'un ou plusieurs cerveau(x).

Ces cerveaux sont matérialisés sous la forme de micro-controleurs (pic 16fxxx, Atmel, ...etc etc...).

Je commence donc mon étude des micro-controleurs avec l'ultra classique PIC 16F84A.

Ayant tenté, par le passé, de réaliser un robot "Monty", je dispose de presque tout le matériel nécessaire pour démarrer une longue période d'aprentissage, de ratages et de bugs divers :) . Bref le lot quotidien de tout geek convaincu. Pour le reste je le fabriquerais au fur et à mesure et ferais en sorte que chaque "module" soit suffisamment générique pour servir aussi bien mon robot qu'un autre.

Ce que j'ai appris lors de ma tentative de "Monty" :

- un micro-controleur est programmable à souhait (limité toutefois à sa structure physique),
- ces petites bestioles à multiples pattes ont besoin d'un programmateur pour ingérer le code compilé,
- ces mêmes bestioles ont besoin d'un support électronique pour fonctionner,
<< ce support pouvant se confondre avec le précédent (cas du robot "Monty" dont la platine principale sert aussi à la programmation ce qui n'est pas sans poser quelques problèmes à nombre de Montyliens) >>

Ce que j'ai appris bien plus tard :

- Le fabricant des PICS (Microchip) a breveté une technique de programmation nommée ICSP (In Circuit Sérial Programming).

Au sommaire donc :

- Carte de commande "Monty" et adaptations diverses,
- Concept de programmateur multi-ports ICSP pour pics,
- Carte mère minimale pour pic.