Commande des moteurs

Posted in I2C, PIC, electronique, informatique on mai 27th, 2009 by Cyril

Hello !

Cela fait maintenant quelques semaines que j’ai repris la fabrication du robot, et après une grosse partie de mécanique enfin achevée, l’électronique avait besoin de progresser pour pouvoir faire rouler le robot et poursuivre son développement.

Bon, la commande de la vitesse et du sens de rotation des moteurs du robot est plus complexe qu’elle peut y paraitre au premier abord et il ne s’agit pas seulement de brancher les moteurs sur un gros potentiomètre avec un joli système d’inversion de polarité pour changer la direction!

Imaginé et conçu en détail depuis belle lurette,il ne manquait plus que la phase de réalisation et d’assemblage pour chacun des éléments suivants (du moteur vers la commande):
1 – Carte de puissance (Pont en H – L298)
2 – Carte de contrôle (Microcontroleur – PIC 18F2431)
3 – Contrôle informatique de la carte de contrôle (haha …)

1 – Carte de puissance
Le courant de puissance des moteurs passe par un pont en H, circuit classique pour commander de manière simple et efficace un moteur à courant continu. Cette carte reçoit en entrée les signaux logiques (5V) de gestion du sens de rotation, et le signal PWM pour varier la puissance.

puissance moteur
Carte de puissance en cours de test, connectée à la carte de contrôle des moteurs (en haut, fils blancs et jaunes) et à la partie puissance (vers le bas, alimentation a droite, moteur de test à gauche).

 

2 – Carte de contrôle

J’avais déjà pas mal travaillé sur la carte de contrôle moteur, celle ci ayant même eu le privilège d’être assemblée sur une plaque de pvc avec le programmateur de PIC, la carte d’interface USB/I²C Diolan, et un petit régulateur 5 volts. Cette implantation étant très pratique pour travailler et tester le code envoyé au PIC, tout est resté comme ça pour les phases de test.

La carte dans sa version actuelle sert simplement de « passerelle » pour les ordres venant du PC en direction de la carte de puissance, et ceux qui pensaient y trouver un contrôleur PID seront – pour l’instant – déçus. Le PIC est programmé en C (MCC18) dans l’IDE MaLab de Microchip.
Pour la partie du code qui s’occupe de la gestion des moteurs, la carte réagis à 6 commandes en provenance du bus I2C. Ces identifiants de commandes sont déclarés dans un ficher d’entête sous forme de constantes, communes au projet MCC18 pour le PIC et à l’interface développée en C++ côté informatique.

Voici les déclarations de commandes avec le code en hexadécimal qui leur est attribué:

#define I2C_SET_PWM1 0x10 //Valeur de la sortie PWM pour le moteur 1 (0-1023)
#define I2C_SET_SENS1 0x11 //Direction de rotation pour le moteur 1 (0-1)
#define I2C_SET_PWM2 0x18 //Valeur de la sortie PWM pour le moteur 2 (0-1023)
#define I2C_SET_SENS2 0x12 //Direction de rotation pour le moteur 2 (0-1)
#define I2C_SET_PWMS 0x20 //Valeur de la sortie PWM pour les deux moteurs (0-1023 / 0-1023)
#define I2C_SET_SENSS 0x21 //Direction de rotation pour pour les deux moteurs (0-1 / 0-1)

3 – Contrôle informatique

Le programme qui commande la carte moteur est développée en C++ sous CodeBlocks à l’aide des librairies graphiques wxWidget, associés au driver de la carte U2C de Diolan compilé sous forme de librairie partagée. Cette interface permet de communiquer avec les différentes cartes à base de PIC via le bus I²C (contrôle moteur, alimentation principale et carte d’interface générale), d’y envoyer des commandes et de lire des valeurs. Les fonctions développées dans cette interface seront par la suite regroupées au sein du driver Player (cf ce post décrivant le système : Contrôle informatique : Player, Stage et compagnie)

interface controle moteur
Interface de contrôle sous Linux

 

Une vidéo est en cours de préparation ou je présenterais une démo d’un moteur, piloté grâce à toutes cette chaine de commande.

A très bientôt pour la suite !

Fabrication de la carte d’alimentation

Posted in I2C, PIC, electronique on avril 21st, 2009 by Cyril

Hi, encore des news !

Il y a quelques semaines (mois…?), j’ai passé un peu de temps sur la fabrication de la carte d’alimentation du robot.

Cette carte ayant été conçue et décrite il y a déjà un bon moment, je met les 2 liens vers les articles correspondants mais je ne vais pas me ré-étendre sur les fonctionnalités de la carte :
Ici : Carte d’alimentation
et là : Carte d’alimentation – Suite

Le PBC avait été gravé en même temps que toutes les autres cartes, il y a plus d’un an, et attendait sagement de recevoir ses composants depuis tout ce temps.

Voici en photos, les étapes de la réalisation !!

Mise en place des straps

La première étape est la mise en place des – trop nombreux – straps de la carte.

Composants fins

On soude ensuite les composants sur la carte, généralement du plus petit au plus gros, ou du plus fin au plus épais comme vous préférez ;-)

Suite de la mise en place des composants…

La carte terminée

Voici la carte terminée. Le connecteur marqué « INT » est celui de l’interrupteur général du robot.

Autre vue de la carte

Sur cette dernière vue, vous pouvez voir de gauche à droite :

- le connecteurs I2C (communication avec la carte mère)
- le connecteur pour la programmation in-situ du microcontrôleur (ICSP)
- la masse générale ( – )
- l’alimentation externe pour l’alimentation en station (EXT)
- l’entrée du chargeur de batterie (BATT)
- les 2 bornes de la batterie (BATT + et -)

J’ai effectué quelques tests sur cette carte et écrit une ébauche de programme pour le PIC 16F819. Ma première impressions concernant la programmation est que je me suis planté en choisissant un pic de cette famille car du coup, je suis obligé de jongle entre 2 compilateurs (le reste de mes micro-contrôleurs sont des 18F).
Pour ce qui est des fonctionnalités principales, la conversion analogique/numérique des 3 tensions à l’air de se passer pas trop mal malgré quelques valeurs bizares et la communication 1²C fonctionne aussi à peu près.

Je ne détaillerais pas le code aujourd’hui mais comme tout le reste, vous pouvez le trouver sur le repository SVN de mon projet Sourceforge

Dans les jours qui viennent, j’espère trouver le temps pour terminer le couplage entre les moteurs et les roues de la base roulante du robot. Une fois que cette première partie mécanique sera terminée, je m’attaquerais à la carte de puissance des moteurs.

A bientôt !

Essais I2C et contrôle moteur

Posted in I2C, PIC, electronique on mars 3rd, 2009 by Cyril

Hop, reprise effectuée avec succès !

La carte de contrôle des moteurs qui me posait tant de problèmes est enfin domptée, il ne me reste que quelques résistances cms de pull up à souder pour qu’elle soit totalement fonctionnelle.

Comme elle n’a pas encore été décrites dans ces colonnes, voici un topo sur son cas:

Cette carte très simple est architecturée autour d’un PIC 18F2431 de Microchip. Vous trouverez la datasheet de ce composant sur sa page produit mais voici quelques unes des caractéristiques qui m’ont fait le choisir:
- Un module SSP (port de communication I²C)
- Jusqu’à 6 sorties PWM (Pulse Width Modulation), pratiques pour le contrôle des moteurs du robot (4 utilisées)
- Un module « MotionFeedback » qui peut se charger du décodage d’un encodeur en quadrature
- Pas mal d’autres IO qui compléteront les fonctionnalités de la carte en assurant par exemple le comptage du 2ème décodeur, etc….

Grâce à ce petit microcontroleur de 28 broches, la carte remplira donc les fonctions suivantes:
- Contrôle de la distance effectuée, de la vitesse et du sens de rotation des 2 moteurs de propulsion grâce aux 2 encodeurs incrémentiels
- Stockage et mise à disposition de ces informations via le bus I²C
- Asservissement en vitesse (position ..?) des moteurs en fonction des commandes de position reçue.
- Communication avec le PC maître, via la carte U2C-12 de Diolan

Voici le schéma électronique de la carte:Dans un prochain post, je montrerais la réalisation de la carte et les premiers pas de son utilisation.

A bientôt !

Plate-forme d’expérimentation pour carte moteurs

Posted in PIC, construction, electronique on mai 9th, 2008 by Cyril

Hello !

Hier après midi j’ai décidé que de passer ne serai-ce que 5 minutes à sortir 4 cartes différentes, tout brancher etc… pour pouvoir expérimenter et développer sur ma carte de contrôle moteurs ne pouvais plus durer !

J’ai très rapidement fabriqué une platine en PVC pour fixer tout ce bazar et n’avoir ainsi qu’à brancher mes deux prises USB et la batterie pour pouvoir faire joujou.

Voici quelques photos du bidule:

Préparation de la plaque (mesures ultra-précises des emplacements de fixation par la technique dite du crayon-dans-les-trous-des-cartes)

Voici la plate-forme terminée avec toutes les cartes fixées dessus et les différents branchements faits.
Détail de la carte en cours d’expérimentation.

Je viens de me rendre compte que je n’avais pas encore décrit cette carte ni publié les schémas et typons ailleurs que sur sourceforge… cet oubli sera réparé dans les prochains jours si je trouve un peu de temps.

A bientôt!

Tourelle pan/tilt pour webcam – EasyRobotics

Posted in construction, electronique, mecanique on avril 28th, 2008 by Cyril

Histoire de mettre un peu la charrue avant les bœufs, et avant d’avoir un robot en ordre de marche, j’ai commandé tout le nécessaire à la fabrication d’une tourelle orientable pour la(les) webcam(s) du robot.

La webcam pourra être orientée selon deux axes :
- gauche / droite
- haut / bas

La partie mécanique sera constitué de deux servo-moteurs, un par axe de rotation, montés dans des supports adaptés. Les servos utilisés sont des machins premier prix (5€) qui ont ont été achetés « en prévision » lors d’une commande chez Conrad.

En revanche, tout le système de montage des servos, la fixation des axes de rotation, et plus généralement toutes les pièces mécaniques de la tourelle, proviennent de la société EasyRobotics.
J’ai commandé jeudi dernier un ensemble de pièces pour fabriquer la tourelle et après une expédition vendredi, j’ai reçu les pièces ce matin, lundi. Entre temps, une personne m’a contacté pour me donner des indications sur le suivi de ma commande et j’ai pu lui poser des questions qui ont reçu des réponses avec beaucoup de réactivité.
Bref, beaucoup de sérieux et ça mérite d’être signalé;-)

Le système de tourelle, une fois monté, ressemblera à ça et vous trouverez un guide de montage (que je n’ai pas pris la peine de suivre… rhooo !) en bas de page:
Tourelle pan/tilt

Allez, assez parlé et place à une petite séance photos (qui n’a pas la prétention d’être un guide de montage !!)

Voici l’ensemble des pièces commandées chez EasyRobotics…
…et les deux servos
Le servo de base (rotation droite/gauche) est fixé dans sa cage
La cage du servo supérieur (rotation haut/bas) est équipée d’une plaque latérale qui supporte un palonier pour entrer en rotation avec le premier servo, ainsi que d’un axe pour la rotation de la fourche (non visible ici car derrière en face de l’axe du servo).
Notons que le servo devra être démonté pour fixer le palonier au servo de base.
Le bloc supérieur est fixé au bloc inferieur en retirant le servo pour accéder à la vis du palonier.
Il ne reste plus qu’à insérer délicatement la fourche équipée d’un palonier entre l’axe métalique et l’axe du servo, et de visser le tout des deux cotés.
Voici la tourelle une fois terminée !

L’étape suivante est le démontage de la webcam prévue pour le robot et la fixation de la partie capteur/electronique sur la fourche de la tourelle.
Dès que possible, j’écrirais un petit programme pour faire une vidéo de démonstration en fonctionnement.
Je répondrais comme d’habitude avec plaisir à vos questions ou commentaires concernant cette réalisation, n’hésitez pas à me faire part de vos remarques !

Carte Diolan U2C-12

Posted in I2C, electronique on avril 27th, 2008 by Cyril

Hello !

Je vais m’attarder un peu sur l’élément principal de l’électronique de mon robot : la carte interface USB <-> I²C.
Vous l’avez déjà aperçu rapidement sur le schéma électrique général que j’avais publié en juillet 2007 mais voici aujourd’hui une description de cette carte.

La carte est une U2C-12 fabriquée par Diolan.


Elle dispose des caractéristiques suivantes:
- Connectée et auto-alimentée sur un port USB 2 (compatible 1.1 et 1).
- Compatible Win, Linux et MacOs
- Drivers écrits en C et code source accessible et modifiable
- Interface I²C maitre en mode rapide ( 400kBit/s ) ou personnalisable de 2kBit/s à 100kBit/s
- Gestion des transactions I²C (paquet de trames)
- Commandes I²C intégrées sur 3 niveaux ( niveau paquet, niveau commande (Read/Write, Start/Stop/Ack) ou niveau ligne (SDA et SCL))

En plus du port I²C, la carte propose quelques petits trucs sympas en complément:
- Interface SPI Full duplex
- 23 lignes d’I/O compatibles 3,3V et 5v

Il ne manque que des entrées analogiques et des triggers sur les IO pour en faire le produit parfait :-)

Un exemple d’utilisation avec les IO sera mis en ligne bientôt (récupération des données de 2 capteurs infra-rouges PROXIR)

Fabrication de câblages

Posted in construction, electronique on avril 14th, 2008 by Cyril

Bonjour !!

Le weekend dernier, j’ai passé un peu de temps à câbler quelques éléments du robot:

- Installation de connecteurs de modelisme TAMIYA sur les deux moteurs ainsi qu’aux bornes de la batterie.
- Fabrication d’un câble pour l’alimentation générale (carte d’alim)
- Sertissage de 3 cables RJ12 pour le bus I²C
- Soudage des cartes Hub I²C, Interface Diolan et Interface Proxir

Voici quelques photos de ces réalisation :

Câblage des connecteurs TAMIYA sur les moteurs
Les deux moteurs terminés
La batterie reçoit également un connecteur
Fabrication du câble d’alimentation principal
Une fois terminé, tout de vert vêtu !!

Fabrication de la carte d’interface pour les capteurs de proximité IR « PROXIR »

Carte d’alimentation V1.1

Posted in electronique, etude on mars 27th, 2008 by Cyril

Bonjour !

Voici une mise à jour importante de la carte d’alimentation qui passe en version 1.1.
La première version postée ici même comportait des erreurs de routage comme l’avait fait remarquer Léon et n’a jamais été fabriquée.
En plus de corriger ces erreurs, la carte que vous avez aperçu dans le reportage photo sur la gravure est la version 1 et apporte quelques évolutions :

  • Plan de masse sur l’ensemble de la carte
  • Nombre de straps réduits

Malheureusement, elle comportait plusieurs pistes coupées, surement à cause d’une insolation trop longue, et n’était donc pas fonctionnelle. Cette carte assurant l’alimentation générale du robot, une fiabilité totale est nécessaire et il était donc hors de question de procéder à des réparations de pistes hasardeuses.

J’ai donc repris le typon, augmenté la largeur des pistes de 0,4 à 0,8mm là ou c’était possible (partout… ou presque) et procédé à quelques optimisations de tracé.

J’espère avoir le temps de la graver ce weekend et je ne manquerais pas de vous présenter le résultat ! En attendant, voici une image de la carte au format jpg et un PDF à imprimer.

Fabrication de circuits imprimés

Posted in construction, electronique on mars 25th, 2008 by Cyril

Bonjour,

Après pas mal d’inactivité, je me suis attelé à la réalisation de circuits imprimés le weekend dernier. Voici les différentes étapes de la fabrication en images. (Cliquez sur les images pour les voir en grand)

1 – Préparation des typons et découpage des plaques d’epoxy à leurs tailles respectives.

2 – Le typon est placé sur la vitre. Le petit texte de contrôle du sens ne doit pas être lisible par le dessus.

3 – On retire le film plastique de protection…

4 – …et on positionne précisément le circuit sur le typon, cuivre vers le bas bien sur.

5 – Un morceau de mousse est placé par dessus pour s’assurer que le tout est bien plaqué contre la vitre.

6 – La durée d’insolation de la plaque est doit être précisément chronométrée. Dans mon cas de figure (hauteur de la vitre, opacité du typon, etc…), la durée idéal est de 2 minutes. Cette durée est très importante pour la qualité finale des plaques et doit être calculée avec des petites chutes de circuit lorsqu’un changement de paramètre intervient.

7 – Tout de suite après l’insolation, on plonge la plaque dans un bain de révélateur préalablement réchauffé au bain-marie. Le temps de révélation, très approximatif, dépend surtout de la température et est d’une 1 minute à environ 40°.

8 – Quand la révélation est terminée (pistes bien nettes et cuivre à retirer entièrement nu), on plonge le circuit dans un bain de perchlorure de fer également réchauffé au bain-marie(50°).

9 – Au bout de quelques minutes, on commence à voir le cuivre se faire ronger entre les pistes.

10 – Quand tout le cuivre à enlever a disparu, on se dépêche de rincer abondamment à l’eau froide en frottant avec le doigt au besoin, pour complètement arrêter l’effet du perchlo.

11 – Voici la série des 6 circuits gravés, tout juste sortis de leur bain de rinçage à l’eau claire.

12 – Le vernis restant est retiré à l’aide d’un solvant, du dissolvant pour vernis à ongle premier prix (contact avec la peau dangereux j’imagine ) convient à merveille !

13 – La fabrication se poursuit avec le perçage de toutes les pastilles. Une première vague de perçage est faite à 0,6mm puis on passe au forêt de 0,8mm, 1mm et 1,2mm pour les connecteurs sécables, certains gros composants, les relais, borniers, etc…
Les trous de fixation quand à eux sont percés en 3mm.

14 – Voici toutes les plaques percées : 460 trous !

15 – Une fois le perçage terminé, on peut découper et limer proprement les bords.

Une dernière étape expérimentée mais non photographiée a été de faire prendre un bain d’étamage chimique à froid à tout ce petit monde. L’effet de blanchiment est quasi immédiat mais j’ai laissé les plaques dans le bain quelques minutes en espérant déposer une couche plus épaisse d’étain.

La fabrication de ces 6 circuits m’a pris environ 4 heures et je n’ai pas eu le temps de commencer l’assemblage; j’espère avoir le temps d’en faire un peu ce weekend !

A bientôt

Bonne année 2008 !!!

Posted in construction, divers, electronique, etude on janvier 2nd, 2008 by Cyril

Bonjour à vous, fidèle(s) lecteur(s) (Léon surtout…)

Je vous souhaite une excellente année, une bonne santé et plein de bonheur !

Bon, en cette nouvelles année qui commence un petit point est nécéssaire pour éclaircir l’état d’avancementde mon projet:

- Mon chalenge de faire rouler MecBot en 2007 est perdu, à l’eau, mort et enterré …sniff ! Bien sur, je suis pas mal dégouté mais je manque vraiment de temps !!
- J’ai avancé sur 2 carte électroniques : conception, routage, gravure des pcb. J’espère pouvoir souder quelques trucs avant la fin du mois et mettre les premiers résultats en ligne.
- Coté mécanique, c’est chaud…tendu… J’ai passé une demi-journée à usiner des tiges en alu pour fabriquer un groupe de propulsion (moteur-engrenages-roue). Je ne suis pas hyper satisfait du résultat : j’ai des écarts jusqu’à 0,5mm sur pas mal de perçages et comme j’aime pas bosser comme un goret, je vais surement les refaire en changeant de technique. Pour info, les perceuses à colonne à 100€ vendu chez Casto-Merlin, c’est DE LA MERDE :-( (le mandrin a un putain de jeu (1-2mm) sur son axe et bouge dès que le foret attaque le métal…super !!)
- Pour pouvoir construire ces blocs de propulsion, il me faut aussi travailler sur des pièces en tôle d’alu. J’ai trouvé une scie à chantourner dans l’association ou bosse une amie et je vais surement squatter un samedipour bosser tranquilement là bas.
- Niveau informatique, j’ai expérimenté pas mal de trucs avec les Pics et notamment sur le bus I2C (générer une PWM avec une consigne venant du bus).

@Léon: j’ai lu tes commentaires (qui m’ont fait très plaisir) sur mes 2 cartes et voici quelques réponses en vrac:
- Concernant la place disponible chez moi, je me suis résigné à voir mes séances de travail raccourcies d’une bonne heure pour cause de mise en place et rangement. Je voulais depusi le début fabriquer un robor qui ait une certaine taille, sur lequel on ne risque pas de marcher bêtement, et que mon chat ne rique pas d’envoyer valser d’un coup de pate (sisi!! ca arrivera !!)
- Pas la dernière verison du PCB ? euh..je vérifierai :-)
- Pour la carte de puissance moteurs, merci pour l’indication concernant les 2 sorties SENSE. Je pense que je vais strapper vite fait dans un premier temps, je referais peut-être une carte le jour ou je voudrais y apporter des modifs conséquentes.
- Pour l’alim Pico-PSU, j’avais pensé au problème des 13V de la batterie en fin de charge et je m’étais dit au pifomètre que « ca passerait ». Selon toi c’est quoi le risque ? quelle se mette en protection et que du coup je ne puisse pas allumer le PC ? Qu’elle crame (ça serais con ça…)?
Question subsidiaire, que préconises tu ? Je peux repenser ma carte d’alim pour y coller un régulateur (pas un 7812 très peu efficace, je sais) mais vu la puissance en jeu, ca risque de prendre de la place ert de me couter la peau du c*l si je m’oriente vers des TRACO (ou TARCO, je sais plus trop).
Diode Zenner ? mouhahaha la bonne blague ?
- Concernant le délai de détection de la déconnexion, en théorie, ca ne se passera pas comme tu le présentes: Lors d’une phase de charge, le PC ne prendra pas l’initiative de se barrer de la station, ou alors il y aura une procédure ou il demandera a la carte d’alim « arrete la charge stp ».
C’est la carte d’alim qui prendra l’initiative de déconnecter la source de charge puis de switcher l’alim sur la batterie pour déconnecter la source externe.
Pour les délai de « switch » du relai, et afin de ne pas éteindre le PC, c’est du pifomètre et c’est possible que ca ce fonctionne PAS DU TOUT (condos trop petits).
Combien de temps met un relai pour passer de fermé à ouvert ? c’est le temps pendant lequel il faut que les 2 condos tiennent la charge de la carte mère (pas de moteur car on est en stationnement)

Allez, a très bientôt j’espère !

PS: Ce post n’a pas été relu ou corrigé, il est livré « dans son jus », tappé à 1000 à l’heure avec plein de fautes de frappe.