Positron libre     EasyRobotics     Robot-passion     Assoc-Caliban     AMF     NaoForge     MbRobot 
Auteur Message

Index du forum <  Electronique  ~  Alimentation d'une grappe de servomoteurs

MessagePublié: Sam 19 Déc 2009, 20:46
Avatar de l’utilisateurRoboticien confirméInscrit le: Lun 23 Fév 2009, 22:53Messages: 461Localisation: Toulouse con
Thot dans un autre sujet a écrit:
Pour l'alimentation, je suis confronté au même problème avec el Caballon. L'alimentation des servomoteurs pour qu'elle se fasse bien doit être entièrement indépendante de l'électronique (et informatique s'il y en a). S'il y a de nombreux servomoteurs, en effet l'appel de courant au demarrage de chacun est énorme et risque non seulement de griller l'électronique mais en plus de faire chuter la tension des électroniques + informatique.
J'ai vu plusieurs fois un PC embarqué rebooter après l'activation d'un servo-moteur.
Ensuite il y a le problème de la masse qui est importante. Il y a en effet 2 "moins" :
- le moins de l'électronique de signal
- le moins des moteurs
Faut-il les relier ?
Si les courants circulants sont faibles on peut les relier. Si les courants sont forts, il faut les relier par ce que l'on appelle des "ferrites" qui sont équivalentes à des bobines qui vont isoler de maniere souple les deux masses vis à vis des brusques changements de tension et intensités.

Du coup je pense assigner une batterie par patte (c'est à dire 4 servomoteurs dont 1 est très peu sollicité en croisière) et je pense que je ne mettrai pas de ferrite de protection entre l'arduino et l'alimentation des servomotueurs.

J'espère que je n'ai pas dis trop de bétises... ::-D:


Je replace la proposition exposée ailleurs ici pour que vous m'explosiez ;)



_________________
"C'est l'intention qui compte"
Hors-ligne Profil
MessagePublié: Lun 21 Déc 2009, 15:15
Avatar de l’utilisateurInvité de passageInscrit le: Ven 6 Nov 2009, 15:26Messages: 21Localisation: oui
Je ne peux pas vraiment t'aider mais ce point m'interesse aussi.
Pour mon cas, je ne comptais brancher aucun servos sur mon arduino mais tous les brancher sur une carte de controle de servos SD21. Je pensais séparer les 2 alims (arduino + PIC de la SD21 vs servos) et en gardant une masse commune (- de l'alim des servos et - de l'alim de controle).

Je pensais que cet appel de courant était négligeable...
Tu as bien fait de soulever le sujet ^^


Hors-ligne Profil
MessagePublié: Lun 21 Déc 2009, 15:22
Avatar de l’utilisateurRoboticien initiéInscrit le: Jeu 23 Oct 2008, 14:27Messages: 1024Localisation: Saint-Ouen
La carte SSC32 (qui ne peut servir qu'a controller des servomoteurs depuis un pc ) est trés bien foutue a cet égard.

En effet, elle possède 3 entrées electriques. Une pour le controlleur (5Volt à 500mA) et 2 entrées (une par rack de servo) supportant jusqu'a 9Volt et 15 Ampères.

C'est cette carte qui_ me sert pour les bras de Cybrina. Ainsi, via le port RS232, le microcontrolleur gère la position des servo qui sont alimentés à part grace a leur alim dédiée. Ca marche bien...

Post sur SSC32



_________________
Image

Languages : Delphi, Pascal, C#, RPL, SQL, PL-SQL, Français, Anglais
Hors-ligne Profil
MessagePublié: Mer 23 Déc 2009, 21:06
Avatar de l’utilisateurInvité de passageInscrit le: Ven 6 Nov 2009, 15:26Messages: 21Localisation: oui
J'avais déjà vu ce post et c'est justement en cherchant des infos sur la SSC32 que je suis tombé sur la SD21 ( http://www.robot-electronics.co.uk/htm/sd21tech.htm ).
D'après ce que j'avais vu, la SSC32 est bien une interface PC-Servos via le port série et j'ai l'impression qu'elle n'est pas forcément faite pour être embarquée (sauf dans le cas où on embarque un PC dans le robot :) ).

Je trouve que la SD21 est plus une carte de "terrain". De plus l'arduino gère le I2C et je me disais que c'était un bon point de départ pour faire dans le modulaire.

Après, je peux toujours dialoguer avec la SSC32 en série direct avec l'arduino, je présume.

Concernant le problème évoqué par Thot, je suppose que 20 servos alimentés et gérés par une carte de contrôle type SSC32 ou SD21 pilotée par une arduino ne devrait pas poser de problèmes (alors que mettre plusieurs servos direct sur l'arduino me ferait un peu peur, en effet).


Hors-ligne Profil
MessagePublié: Mar 26 Jan 2010, 16:33
Avatar de l’utilisateurInvité de passageInscrit le: Ven 6 Nov 2009, 15:26Messages: 21Localisation: oui
Salut à vous,

Petit retour d'expérience:
J'ai donc acheté une carte de controle servos SD21, qui me permet de controler jusqu'à 21 servos moteurs.
Coté SD21:
- L'alimentation des moteurs peut être séparée de l'alimentation logique (5V du PIC).
- Impose un refresh de 20 mS constant (d'après la fiche technique; je n'ai pas mesuré ^^)
- Communication i2C
- Manipulation des servos très simple via les registres de la SD21.
- On peut imposer/lire la vitesse et la position de chaque servos et connaitre la tension courante de la carte.

Coté arduino, la communication i2C avec la librairie "wire" rend la vie facile =).
On met tout ça en place assez vite et le cablage n'est pas sorcier même un newbie de l'electronique comme moi ^^.

A+


Hors-ligne Profil
MessagePublié: Mar 26 Jan 2010, 17:20
Roboticien débutantInscrit le: Sam 5 Déc 2009, 12:53Messages: 294
cool
je veux voir le code pour la librairie wire svp :)

je me fais la main sur artmega328(freeduino) et piloter une chiée de servo m'intéresse grandement ^^
si tu as des tof du cablage,je suis preneur aussi ^^


Hors-ligne Profil
MessagePublié: Mar 26 Jan 2010, 18:45
Avatar de l’utilisateurInvité de passageInscrit le: Ven 6 Nov 2009, 15:26Messages: 21Localisation: oui
Hello

Voila le code.
Le cablage ci-dessous (trouvé sur http://www.robot-electronics.co.uk), comme tu le vois est valable pour une arduino 2009 (pas une méga), tu devras donc cabler SDA et SCL sur les pins 20 et 21 (alors que moi, c'est 4 et 5).
Sur le schéma, les resistances de pull up sont des 1800 ohms. J'ai mis des 10k ohms à la place car j'ai trouvé ce schéma après avoir fait mon cablage -_-, et cela fonctionne très bien...

Il faut penser à enlever le jumper de la SD21 qui n'est à mettre que si tu n'utilise qu'une seule alim (logique et puissance).

datasheet SD21: http://www.robot-electronics.co.uk/htm/sd21tech.htm
lib wire: http://www.arduino.cc/en/Reference/Wire

Image

Je ne t'ai mis que le code concernant la communication.
Code:
#include <Wire.h>

//La SD21 possede l'adresse 0xC2 (codé en dur)
#define SD21_I2C_ADDRESS 0xc2


#define SD21_BATTERY_REGISTER 65

void
setup()

   Wire.begin();

 
void
loop() 
{
   //Bouge le premier servo, à la vitesse max (0), à la position 1500
   moveServo(1, 0, 1500);
 
}



void
moveServo(const unsigned char servoId, const unsigned char servoSpeed, const word position)
{
  int registre = ((int(servoId)) - 1) * 3;
 
  Wire.beginTransmission(SD21_I2C_ADDRESS>>1);
  Wire.send(registre);
  Wire.send(servoSpeed);
  Wire.send(lowByte(position));
  Wire.send(highByte(position));
  Wire.endTransmission();
}

float
getVoltage()
{
  unsigned char SD21_Voltage = 0x00;
 
  Wire.beginTransmission(SD21_I2C_ADDRESS>>1);
  Wire.send(SD21_BATTERY_REGISTER);
  Wire.endTransmission();
 
  Wire.beginTransmission(SD21_I2C_ADDRESS>>1);
  Wire.requestFrom(SD21_I2C_ADDRESS>>1, 1);
  if(Wire.available())
  {
    SD21_Voltage = Wire.receive();
  }else
  {
    Serial.println("Wire pas available!");
  }
  Wire.endTransmission();

  return 0.039f * SD21_Voltage;
}


Bon courage ^^


Hors-ligne Profil
MessagePublié: Mer 27 Jan 2010, 09:25
Roboticien débutantInscrit le: Sam 5 Déc 2009, 12:53Messages: 294
merci....
je m'en jeter un oeil sur cette sd21 :)


Hors-ligne Profil
MessagePublié: Mer 27 Jan 2010, 21:54
Invité de passageInscrit le: Mer 27 Jan 2010, 21:20Messages: 2
Bonjour,
je suis etudiant en electronique et je pense pouvoir repondre à un certain nombre de tes questions.

Je pense que tu n'a tout dabord pas à mettre une batterie par patte. Dans l'absolue une seule batterie/pile de 9Volts suffit.
Le puissance consommée par tes servomoteurs ne fera pas chauffer ton microcontrolleur par exemple.
Le seul composant sensible à ce genre de chose est le regulateur de tension (du genre lm317), mais là c'est pareil. Pour une conversion DC/DC de 9v à 5v, tu aura une difference de potentiel diff=4Volts aux bornes de ce composant.
D'aprés la datasheet de ce composant (lm317) tu ne dois pas avoir une temperature de jonction superieur à TJ=125°C, en estimant que ton robot evolue à une temperature ambiante Ta= 25°C, sachant que la resistance thermique de la jonction au boitier RJC= 4°C/W pour le package T0-220 (le plus courant) et que tu met un radiateur de resistance thermique RCA= 10°C/W.
Tu aura en estimant que tu debite en tout 1.5A pour la totalité de tes servos, et je pense que c'est largement surestimé:
Tj = (RCA + RJC) * (diff * I) + Ta = 14 * 6 + 25 = 109°C
Tu es en dessous de 125°C, donc tu n'a aucun probléme de surchauffe. Par contre ne pas oublier de mettre un radiateur, car pour le package T0-220 la resistance thermique entre le boitier et l'air ambiant est de 50°C/W, donc ca chauffe vite.

Pour le fait qu'il y est deux "moins", tu dois en effet les relier ensemble, on parle de difference de potentiel, et la masse est ton referentiel.


Hors-ligne Profil

Afficher les messages depuis:  Trier par:

Heures au format UTC
Page 1 sur 1
9 messages
Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité
Rechercher pour:
Publier un nouveau sujet  Répondre au sujet
Sauter vers:  
Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum
cron