Pages: [1] 2   Go Down
Author Topic: Refaire l'ampli d'un servo de modélisme  (Read 1508 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Un arduino nano, un potentiomètre, un moteur brushed et une prise recevant la voie d'un récepteur RC, bref refaire l'électronique d'un servo...


Y a un bout de code quelque part  ?

Merci d'avance
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 11
Posts: 1304
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

C'est bien compliqué, de faire de l'asservissement... Il existe des chips qui font tout le boulot. Soit tu prends un servo tout fait, et tu récupères le circuit de commande interne, soit tu t'orientes vers un Ci dont je n'ai plus la ref, mais je l'avais trouvé dans un moteur de réglage de phare automobile, il se commande par une tension continue. Rien ne t'empêchera par la suite de mettre l'arduino entre le récepteur et le servo si tu veux modifier la courbe de réponse ou le signal servo.
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je sais bien que c'est compliqué, c'est pourquoi je ne voudrais pas recommencer de zéro.
Je ne cherche pas à faire un servo mais à faire une appli plus puissante, et pour cela le système de maintien en place des électroniques de servo ne convient pas, ils "grognent", et surtout consomment et les mosfets du pont en H chauffent.
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4211
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je sais bien que c'est compliqué, c'est pourquoi je ne voudrais pas recommencer de zéro.
Je ne cherche pas à faire un servo mais à faire une appli plus puissante, et pour cela le système de maintien en place des électroniques de servo ne convient pas, ils "grognent", et surtout consomment et les mosfets du pont en H chauffent.

bonjour
si ton servo actuel rempli déjà bien sa mission initiale de positionnement  (puissance/vitesse/positionnement) et
si il "grogne" sur un stimuli "fixe" c'est souvent le signe :
- d'un accouplement mecanique (pignonage)  "elastique" (trop de jeu)
- d'une recopie (potentiometre) de basse qualité (couche resistive)
-  pompage de puissance sur l'alim du servo entrainant une derive de la recopie, ce qui entraine une pseudo oscillation autour du point de position .

c'est un servo tout venant ou un servo reputé ?
« Last Edit: November 22, 2012, 06:35:12 am by Artouste » Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bin non, C'est une question de pwm...
Plus on s'approche de la position théorique et moins y a de puissance donnée, donc sous effort continu, le servo n'arrive pas à "finir" la course vers la position théorique et continue à essayer (grognement).
il faudrait modifier le programme pour que le couple (donc le pwm) soit plus fort mais moins souvent dans un premier temps au cas où la position théorique n'est pas atteinte puis au bout d'un certain temps, qu'il cesse de tenter d'atteindre cette position théorique.
Pourquoi crois-tu que les gros servos hitec possède ce type de réglage, au moins pour le maintien, mais ne réglant pas le pb de fin de course théorique ?
Problème suivant, les mosfets chauffent puisqu'ils n'arrêtent pas de changer d'état et finalement grillent.
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 110
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Un servo-moteur utilise un signal qui se répété tout les 20 ms, du faite toutes les 20 ms il va corriger l'angle, s'est se qui provoque le grognement que tu entends,

j'ai trouver ce lien en rapport avec les servomoteurs http://fr.wikipedia.org/wiki/Asservissement_(automatique)

A mon avis l'Arduino seul est pas top pour les servomoteurs,
Vaut mieux placer une puce ou carte entre ton servomoteur et ton Arduino,
Ou peu être faire en sorte qu'une fois que le servomoteur a atteint son angle ne plus donner d'ordre jusqu'au prochain changement, ou alors rende le signal très stable.

http://www.brodeurelectronique.com/index.php?2007/03/15/16-les-servomoteurs sur se lien tu trouvera une description du signal ainsi qu'un code, mais malheureusement pour toi il a été rédiger pour l'architecture pic.
« Last Edit: November 22, 2012, 08:51:23 pm by lacolombenoir » Logged

www.hatokuro.comuf.com site consacrer au rétrogaming

Bretagne
Offline Offline
Edison Member
*
Karma: 11
Posts: 1304
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai constaté que selon la période du PWM envoyé au servo, ce dernier est plus ou moins précis. J'utilise maintenant une période de 15ms, et le servo est bien plus à l'aise et consomme moins.

La librairie servo de l'arduino fournit une pwm logicielle, et peu précise (si tu utilises d'autres interruptions, la commande se met à bouger). C'est pour ça que j'ai arrêté de l'utiliser et je programme un timer 16 bits en pwm matérielle, c'est extrêmement stable et ne consomme aucune ressource logicielle.

J'ai eu le cas aussi avec un "gros" servo qui avait besoin de 3A (alors qu'il était donné pour 800mA), du coup, si l'alim ne suit pas, ça ne marche pas bien.

Sinon, en cas de puissance, il faut passer à autre chose, mais il doit y avoir une question de poids...
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Ah Le PID qu'est-ce que j'aimerais savoir l'utiliser, mais pas trouvé de tutoriel à mon niveau.

Quote
J'ai constaté que selon la période du PWM envoyé au servo, ce dernier est plus ou moins précis. J'utilise maintenant une période de 15ms, et le servo est bien plus à l'aise et consomme moins.
On peut essayer, mais cela ne résout pas le pb du voisinage arrivée valeur théorique sous effort important, dans les Hitec on fait varier le %
Quote
http://www.brodeurelectronique.com/index.php?2007/03/15/16-les-servomoteurs sur se lien tu trouvera une description du signal ainsi qu'un code, mais malheureusement pour toi il a été rédiger pour l'architecture pic.
C'est un point de départ pour utiliser une servo et son électronique... Pas pour mettre un moteur à une dizaine d'ampères et bien plus au démarrage.
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 110
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
C'est un point de départ pour utiliser une servo et son électronique... Pas pour mettre un moteur à une dizaine d'ampères et bien plus au démarrage.
Je n'ai jamais toucher a de l'électronique de puissance donc je ne peu pas t'aider sur se plant, par contre une chose est sure l'Arduino ne fournira jamais 10 ampères donc il faudra une alimentation externe par contre le signal lui peu être gérée par un Arduino.
Logged

www.hatokuro.comuf.com site consacrer au rétrogaming

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Je n'ai jamais toucher a de l'électronique de puissance donc je ne peu pas t'aider sur se plant, par contre une chose est sure l'Arduino ne fournira jamais 10 ampères donc il faudra une alimentation externe 

Il ne s'agit pas de demander 10 A à l'arduino ni de savoir comment sera l'alim externe, juste le code pour gérer la ou les commandes d'un pont en h, asservi par un signal type servo Rc et un potentiomètre.
Quote
par contre le signal lui peu être gérée par un Arduino.
et oui, mais comment ?
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 11
Posts: 1304
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

et oui, mais comment ?
C'est pour ça que je te propose d'utiliser une électronique toute faite d'un servo en rajoutant un pont de puissance, ça peut commander n'importe-quel moteur, et tu t'affranchis de la régulation. De plus, si tu as vraiment besoin de puissance, tu peux utiliser un moteur d'essuie-glace par exemple, la démultiplication par vis sans fin te garantie la tenue de position mécaniquement...
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4211
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Quote
par contre le signal lui peu être gérée par un Arduino.
et oui, mais comment ?
Bonjour
Pour faire simple :
en fait tu veux utiliser un arduino pour gerer en entrée le stimuli servo  (signal 1-2 ms)
et en consequence agir sur la commande de puissance autour du point de consigne une fois ce point atteint ?

Pour eviter la conso et le broutage en position atteinte ?
AMHA la gestion en PID "pur" serait très consommatrice,  une simple gestion en boucle simple basé sur un simple hystérésis serait plus opportune.
position atteinte (lecture de la recopie) mise en CC du moteur (frein) , plus d'action de puissance si la recopie n’excède pas la valeur d’hystérésis prévu.  
Mais comme toute solution, cela entraine des contraintes/conséquences, cette méthode implique des pseudos états discrets de positionnement et est au détriment de la vitesse de réaction.

Les LMD18200 ou approchant sont faciles à interfacer pour ce genre d'appli (gestion du brake) , mais je ne connais pas la puissance que tu veux commander

 




« Last Edit: November 23, 2012, 08:25:24 am by Artouste » Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 66
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
en fait tu veux utiliser un arduino pour gerer en entrée le stimuli servo  (signal 1-2 ms)
et en consequence agir sur la commande de puissance autour du point de consigne une fois ce point atteint ?
OUI
Quote
Pour eviter la conso et le broutage en position atteinte ?
OUI
Quote
AMHA la gestion en PID "pur" serait très consommatrice,  une simple gestion en boucle simple basé sur un simple hystérésis serait plus opportune.
position atteinte (lecture de la recopie) mise en CC du moteur (frein) , plus d'action de puissance si la recopie n’excède pas la valeur d’hystérésis prévu. 
Mais comme toute solution, cela entraine des contraintes/conséquences, cette méthode implique des pseudos états discrets de positionnement et est au détriment de la vitesse de réaction.


Bien, c'est cela ! On progresse, je me suis fais comprendre  smiley
Dans la plupart des ampli de servo, le pont n'est commandé que par 2 ports donc pas de frein moteur possible, c'est une des raisons avec celles citées ci-dessus pour lesquelles il me faut refaire une commande par microcontrôleur... Plus facile avec un arduino peut-être mais un pic avec de l'assembleur ne me gênerait pas, genre 12F675
Le code, c'est possible ?

Quote
Les LMD18200 ou approchant sont faciles à interfacer pour ce genre d'appli (gestion du brake) , mais je ne connais pas la puissance que tu veux commander
http://www.freescale.com/files/analog/doc/data_sheet/MC33486.pdf serait mieux à mon avis pour quelques Ampères
Un peu faible pour mon appli mais c'est pas mon problème, pour le pont en H j'ai une solution à base de  deux MPT50P03HDL et
deux STP60NF06, faciles à trouver.

Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4211
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...
Bien, c'est cela ! On progresse, je me suis fais comprendre  smiley
Dans la plupart des ampli de servo, le pont n'est commandé que par 2 ports donc pas de frein moteur possible, c'est une des raisons avec celles citées ci-dessus pour lesquelles il me faut refaire une commande par microcontrôleur... Plus facile avec un arduino peut-être mais un pic avec de l'assembleur ne me gênerait pas, genre 12F675
Le code, c'est possible ?
...

bonsoir
le principal, c'est finalement de bien "parler" de la meme chose  smiley-mr-green

un PIC 12F675 ou un Atmel genre Attyni85 comme cible, c'est selon tes habitudes et dispo.
pas de code tout fait, mais la methodologie est globalement la meme quel que soit la cible
- acquerir les durée des creneaux entrants par interruption
- lecture de la recopie
- action selon application hysteresis

un petit MCU 8 pins est surement suffisant en I/O , l'ideal (à mon sens) est de disposer aussi d'une entrée ana
permettant de "jouer" sur la profondeur de l'hysteresis

Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 961
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir

je serai étonné qu'on ne trouve pas d'exemple utilisable (schéma et code) dans les notes d'application des fabricants de petits DSP . (dsPIC par exemple)

De mon côté je ne pense qu'à deux réalisations assez anciennes (on a l'âge de ses notes d'application !!)
- un petit bijou d'elm-chan avec un 90S2313, PID et plusieurs modes de fonctionnement dont l'asservissement de position http://elm-chan.org/works/smc/report_e.html
-encore plus ancien  : une note d'application complète de Microchip (pour un Pic obsolète, famille 17C)
http://ww1.microchip.com/downloads/cn/AppNotes/cn_00532c.pdf

ça permet au moins de donner des indications pour bâtir son code
« Last Edit: November 23, 2012, 02:26:16 pm by al1fch » Logged

Pages: [1] 2   Go Up
Jump to: