Présentation

Aloupol

New Member
Bonjour à tous les Picaxistes.
Je viens de m'inscrire sur le forum et je n'ai pas bien vu si il y a un endroit spécifique pour se présenter. Je vais le faire ici et je copierai dans la rubrique appropriée si nécessaire.
J'habite à Liège, j'ai 42 ans et je découvre le monde des micro contrôleurs. Je n'y connais pas grand chose en électronique, mon domaine c'est la mécanique.*
Dans le civil je suis délégué syndical dans une entreprise de construction aéronautique et enseignant au cours du soir.
J'entreprends de réaliser un simulateur dynamique pour améliorer les sensations dans des jeux comme Flight Simulator ou rFactor.
Pour ce projet, je dois trouver le moyen de réguler 3 moteurs à courant continu avec des courants de l'ordre de 10A en pointe. Je pense récupérer les moto réducteurs dans des vieilles perceuses sans fil.
Comme je veux commander mes moteurs dans les deux sens et que le courant est quand même conséquent je dois mettre un étage de puissance avec des mosfet montés en ponts en H. Sans rien y connaitre je crois qu'il me faut en tout 6 sorties modulées PWM.
Peut-être que 3 sorties suffiraient en utilisant la fonctionnalité HPWM qui, si j'ai bien compris, permet d'adresser une sortie PWM sur une borne que l'on peut changer par une fonction dans le programme.
Existe-t-il des Picaxe avec 6 sorties PWM? ou alors 3 mais avec une possibilité de les adresser tantôt à une patte tantôt à une autre suivant le sens dans lequel le moteur doit tourner? ou alors je dois utiliser plusieurs Picaxe? Ou encore utiliser les sorties ordinaires pour commander un chip d'un autre type qui transforme un signal numérique en PWM? Ou alors est-ce que je me plante et cherche midi à quatorze heures?
Si je fais un montage à plusieurs Picaxe, comment ça se passe pour la synchronisation? Peut-on les cadencer tous avec le même quartz?
Au niveau des autres entrées et sorties, je dois lire les signaux analogiques donnés par 3 potentiomètres, lire 3 valeurs qui viennent d'un port RS232, *et actionner 3 servos en PPM. C'est tout, à part l'un ou l'autre témoin lumineux ou bouton poussoir.
Le programme devra utiliser des données qui viennent de l'ordi en flux, et à partir d'elles calculer des valeurs de consigne pour la position des potentiomètres. La boucle de régulation agira sur le courant des moteurs pour atteindre ces valeurs de consigne, un peu comme fonctionne un servo. J'essayerai d'abord avec une simple régulation proportionnelle et si ce n'est pas suffisant, je verrai comment faire une régulation PID.
Les données qui viennent du PC sont renouvelées en permanence et je voudrais que le programme tourne à environ 200 cycles par seconde.
Vous utiliseriez quoi comme matériel pour ce genre de montage? Est-ce que les Picaxe sont indiqués? Que dois-je utiliser comme drivers de mosfet et comme circuits périphériques?Quel sont les gammes de circuits qui pourraient me servir et sur lesquels je ferais bien de me documenter?
Merci d'avance pour vos réponses.*
 

PieM

Senior Member
Bonjour,

Bienvenue. Beau projet en effet ...

La commande en pwm permet de hacher la tension alimentant les moteurs, donc de réduire vitesse et couple.
Dans votre cas, il s'agit d'un asservissement en position. Le potentiomètre est lié, je pense, directement ou pas au moteur. Il s'agit donc de commander le moteur pour qu'il fasse tourner d'un certain angle le potentiomètre afin de compenser l'écart mesure/consigne.
La commande nécessaire serait donc davantage un pulse de durée, proportionnelle à l'écart, qu'un pwm continu sur lequel il faudrait faire varier le rapport cyclique en permanence.

Ceci est très possible avec un picaxe, mais je ne suis pas certain que commander simultanément 3 moteur à 200 Hz de fréquence d'échantillonnage (ce qui me semble démesuré! **) soit bien réalisable si d'autres fonctions sont à remplir, telle que la gestion d'une com. RS232.
** A titre indicatif, la commande servo est échantillonnée à 50 Hz.
Par contre, le principe d'une régulation PID dépasse les capacités du picaxe, sauf à utiliser un coprocesseur !

Je ne sais si vous avez défini la précision et la bande morte de votre régulation, mais c'est la première chose à estimer, en fonction de l'inertie des moteurs lors des démarrages et des arrêts.
Et concernant les moteurs CC de perceuse, je ne suis pas certain qu'ils vont avoir une grande durée de vie à ce régime !

La première chose que je ferais, c'est un essai avec un moteur, en boucle ouverte, d'estimer certains paramètres liés à la précision de positionnement, et des caractéristiques de marche des moteurs (intensités d'appel, temps d'arrêt sous charge...) et de vérifier que la fréquence de commande peut se situer bien en dessous de 200 Hz. :)
 

Aloupol

New Member
Merci pour la réponse.
Effectivement 200 Hz c'est un peu exagéré.. Je ne sais même pas à quel rythme le jeu rafraîchit les données. Si la fréquence est nettement plus basse genre 20 Hz le rendu sera un peu moins fidèle mais je pourrai déjà valider pas mal de trucs et faire varier cette fréquence pour voir si elle a une influence réelle.
Pour la bande morte je comptais y aller par tâtonnements, commencer par une valeur assez importante et la réduire jusqu'à ce que le moteur pompe..
Ce n'est pas un problème de positionnement, mais un asservissement à l'effort. Le moteur commandera un bras qui comporte une pièce flexible dont le potentiomètre mesurera la déflexion. Comme la déflexion est proportionnelle à l'effort le moteur tournera jusqu'à ce que le couple résistant soit à la valeur recherchée, quelle que soit la position.
Mais du point de vue de l'électronique de commande c'est un peu la même chose qu'un servo.
Dans un servo il y a un micro contrôleur qui décode les impulsions PPM, qui les traduit en valeur de consigne du potentiomètre et qui commande un moteur en régulation via un pont en H. Ce que je veux faire c'est un peu ça mais en plus gros.
J'ai pensé à récupérer le système de régulation d'un servo, qui est probablement très performant, lui donner le signal d'un potentiomètre plus gros mais de même valeur et utiliser le courant qu'il envoie à son moteur comme courant de commande d'un système à transistors pour attaquer un moteur plus gros, mais je ne crois pas que ce soit possible, ou alors il faudrait trouver le signal qui commande le pont en H du servo et j'imagine que dans des si petits trucs tout est intégré.
C'est sur que le moteur n'est pas fait pour ce genre de sport et aura peut-être du mal mais il existe des systèmes comme ça, où le moteur fonctionne pratiquement tout le temps en stall, comme par exemple un volant à retour de force. Le truc est d'utiliser des moteurs largement surdimensionnés. Se posera aussi le problème du jeu de renversement du réducteur qui fait que quand la valeur de consigne sera de 0 ça risque de faire clac-clac-clac.
Des moteurs d'essuie-glaces seraient plus indiqués mais je n'en trouve pas à petit prix. Les casses auto ce n'est plus ce que c'était...
J'ai vu qu'il y a des Picaxe avec 2 sorties PWM indépendantes, et d'autres avec plus que 2 mais dans ce cas je ne sais pas si elles sont indépendantes. Pouvez-vous me renseigner sur ce point?
Et faire un montage à plusieurs Picaxe ça se fait couramment? Je crois que c'est la fonctionnalité I2C qui permet ça, mais faut-il que tous les Picaxe soient synchronisés par un seul quartz?
 

PieM

Senior Member
Servo commande

Bonjour,

Concernant les circuits utilisés dans les servo, à une époque :)rolleyes:) c'était le NE544 de SIGNETICS qui était utilisé. En fait il n'y avait qu'une comparaison des largeurs d'impulsion, avec une bande morte, et une résistance de contre réaction .
Ces circuits intégraient le pont en H. donc il est guère possible de récupérer les signaux de commande.

Quid du maintien en position si un couple est appliqué en permanence ?
C'est vrai qu'un moteur d'essuie glace avec réducteur non réversible serait plus indiqué ...

Je pense que pour des raison de temps de cycle, la configuration générale serait d'utiliser un picaxe par moteur, les infos partagée étant transmises par I2C , sous réserve d'utiliser un picaxe central pouvant être esclave. Aucune synchronisation n'est nécessaire.
 

Aloupol

New Member
Merci pour les infos et conseils.
Je suis plongé dans les docs pour comprendre un peu comment ça marche.
Je vais commander deux 28x1 et un cable USB pour pouvoir faire quelques montages d'essai. L'idée sera de tester séparément les fonctions dont j'ai besoin.
Le problème des moteurs est mis de coté pour le moment, je mettrai des charges plus faciles à gérer pendant les premiers essais.
Salutations.
Daniel
 

PieM

Senior Member
Bonjour,

N'oubliez pas que seuls les Picaxes X2 peuvent être en I2C esclave !
 

Aloupol

New Member
OK, merci. J'avais vu, c'est des 28X2 que j'ai commandé. Ils ont 4 PWM donc avec 2 chips je peux commander mes 4 moteurs.
 

Aloupol

New Member
J'ai essayé d'imaginer ce que serait le schéma de la partie système de ma machine. Je sais c'est un peu naïf mais c'est mon tout premier schéma électronique.
Il manque à coup sûr des résistances et capacités comme les pull-up et des trucs comme ça. Par exemple je sais bien que l'USB ça ne se câble pas comme ça. Je vais corriger les erreurs au fil de ma lecture des manuels.
Si c'est totalement à côté de la plaque merci de me le dire ;-)
En tous cas je suis à l'écoute des remarques.
 

Attachments

PieM

Senior Member
Je pense qu'il faudrait d'abord considérer le schéma sous forme de blocs logiques, en mettant en évidence les échanges de données et les contraintes de temps de réponse.
J'ignore de quoi est faite la partie soft, mais compte tenu d'une régulation, il va falloir avec un temps de scrutation de programme assez tendu! donc il faudra sans doute éviter de lire les valeur ana de potentiomètres avec le même processeur que celui qui contrôle les moteurs.

Sinon, ce schéma dans son principe de base pour la partie puissance, me semble correct. Bien entendu, il va falloir ajouter quelques bricoles en résistances, et condos, mais le principe est là.

Toutefois, je crois que la commande servo n'est pas possible en même temps que le pwmout: utilisation du même timer. (à vérifier ...) mais possible si utilisation de servopos et pwmduty qui ne remettent pas le timer à 0.
Mais là aussi, cette commande de servo est elle logiquement liées aux moteurs ?
De plus elle n'est disponible que sur le port B des X2, donc pas sur les broches 16 et 17!

Il serait possible d'économiser 4 pwm , en mettant entre picaxe et Max4426 commandant les MosfetN, des portes logiques aiguillant le pwm vers inA ou inB en fonction de l'état de inA et inB de l'autre Max4426 pilotant les MosfetP.

Un seul 28X2 serait dans ce cas théoriquement suffisant.

Le Max4426 inverse le signal. donc le pwm va moduler en inverse la grille du MosfetN !
 
Last edited:

Aloupol

New Member
Les servos ne sont pas absolument nécessaires, ils servent simplement à embrayer le mécanisme en tout ou rien, une seule fois à l'initialisation.

J'ai pensé à prendre des servos parce que c'est disponible et pas cher, mais je peux les remplacer par exemple par un vérin à solénoïde actionné au travers d'un transistor.

Je viens seulement de comprendre ta suggestion d'un message précédent, de commander les moteurs en tout ou rien plutôt qu'en PWM en les faisant tourner durant un temps qui dépend de la différence entre la consigne et la valeur lue au potentiomètre.

Ce serait beaucoup plus simple et je dois essayer pour voir si ça marche. Du coup je pourrais commander les mosfet par paires opposées. Un seul 28X2 suffirait alors.

Je pourrais en utiliser un autre qui ne ferait que la lecture analogique et USB.

Bref je ne suis qu'au début du processus et à ce stade je dois faire des montages simples sur une plaque proto sans soudure pour faire connaissance avec les différentes fonctions, tester les temps de réaction etc.

Ce qui me permettra aussi de mettre au point chaque fonction indépendamment.

Merci pour les conseils. Je reviendrai avec des résultats d'essais quand j'aurai reçu ma commande.
 

Aloupol

New Member
Les portes logiques, ce serait des 74LS08 ou autre chose?
Avec cette solution je ne risque pas, à cause des temps de latence des différents circits, de mettre la pile en court-circuit pendant un bref instant?
Je veux dire si les mosfet ou les MAX4426 ou les portes logiques "collent" un petit peu, je ferme deux mosfet qui ouvrent un chemin qui ne passe pas par le moteur.

Edit: j'écris trop vite et je réfléchis trop lentement ;-)
Il faut imposer un temps de quelques ms au point mort à chaque changement de sens du courant.
 
Last edited:

PieM

Senior Member
Bonjour,

Comme le driver est un inverseur, il serait préférable d'avoir un Nand afin de conserver la logique des pulses positifs du pwm.

Concernant le risque de cross-conduction (passage direct du V+ au GND) il faut savoir qu'un Mos met plus de temps à s'ouvrir qu'à se fermer.
Il faut donc commander la conduction du Mos en retard par rapport à l'ouverture de son correspondant du même coté.
Le retard dépend de beaucoup de choses, en particulier des MOSFet utilisés. Ce retard sera en principe bref . Penser qu'il est possible de faire des pauses inférieures à la ms avec l'instruction pauseus (x 10µs)
 
Top