Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

servomoteur et hexapode



  1. #1
    mortaurat

    servomoteur et hexapode


    ------

    bonjour,
    je suis entrain de programmer les sequences pour la marche de mon robot hexapode constitué de 12 servos.
    J'ai acheté la carte "DEV21" afin de rendre completement transparent la gestion des servomoteur.
    On peut trouver la doc ici: http://www.robot-electronics.co.uk/htm/sd21tech.htm

    J'utilise les registres 8bits (63-83 inclusive) etant donné que je n'est pas besoin d'une grande precision.
    #define device_address 0xc2
    #define servo1_speed 0
    #define servo1 63
    #define servo2_speed 3
    #define servo2 64
    #define servo3_speed 6
    #define servo3 65
    #define servo4_speed 9
    #define servo4 66
    etc...
    J'ai crée une fonction pour pouvoir bouger simplement un servo à un position donnée (compilateur CCS):

    void move_servo(unsigned char registre, unsigned char position)
    {
    i2c_start();
    i2c_write(device_address); //device address 0xC2
    i2c_write(registre);//device register
    i2c_write(position);//position
    i2c_stop();
    delay_ms(100);
    }
    De cette façon, il me suffit d'ecrire
    move_servo(servo4, 128);
    pour bouger le servo4 en position centrale.

    j'utilise un pic 18f2550 cadencé à 4MHz en tant que maitre, qui dialogue avec la DEV21 via un bus I2C.
    Ma liaison I2c est definie comme tel:
    #use i2c(Master,Fast,sda=PIN_B0,scl =PIN_B1)
    L'alimentation des servos se fait via une pile de 9Volts, et celle de la "logique" se fait via mon ICD2 qui alimente mon 18f2550 (maitre) et le pic de la carte (sur les broches vcc et gnd dediées à I2C)


    Maintenant que vous avez les éléments, mon probléme est que ma fonction marche trés bien lorsque j'ecris par exemple:
    while(1)
    {
    move_servo(servo1, 128);
    move_servo(servo2, 128);
    move_servo(servo3, 128);
    move_servo(servo4, 128);
    delay_ms(2000);
    move_servo(servo1, 0);
    move_servo(servo2, 0);
    move_servo(servo3, 0);
    move_servo(servo4, 0);
    delay_ms(2000);
    }
    Cela ne marche que pour 1,2 ou 3 servos. A partir de 4 sa se gatte et j'ai quelques sursauts.
    Je n'est pas essayé avec servos 5, mais avec 12 servos la carte ne repond carrement plus et fait n'importe quoi.
    Même si mon code n'utilise que un ou deux servomoteur, si je branche les 12, il m'est impossible d'en controller un seul !
    J'ai essayé de mettre un delay de 2s entre chaque move_servo mais rien n'y fait, la carte fait toujours n'importe quoi.
    Je trouve cela trés curieux, d'autant plus que je n'est aucun probléme pour l'asservissement de position pour un, deux ou trois servos branchés (s'il y'en a plus de branchés sur la carte, ca bug..)

    Avez vous une idée d'où vient le probléme ?

    -----

  2. Publicité
  3. #2
    f6bes

    Re : servomoteur et hexapode

    Citation Envoyé par mortaurat Voir le message

    L'alimentation des servos se fait via une pile de 9Volts, et celle de la "logique" se fait via mon ICD2 qui alimente mon 18f2550 (maitre) et le pic de la carte (sur les broches vcc et gnd dediées à I2C)
    Bsr à toi,
    Je sais pas , mais je me méfierais de la pile pour alimenter PLUSIEURS servos !
    Ils consomment combien tes servos ? Ta pile est capable de quoi en débit?
    Si ça s'avachit lamentablement sur que le résultat est loin d'etre certain.


    A+

  4. #3
    mortaurat

    Re : servomoteur et hexapode

    Salut,
    Je pense que un servo comme ca doit consommer 300mA facile.
    C'est une pile 9v acheté chez leader price, il n'y a ni la capacité, ni le debit max ecrit...
    Tu dois avoir raison, je vais essayé de mettre une vraie batterie et je te tiens au courant.

  5. #4
    mortaurat

    Re : servomoteur et hexapode

    yearh ca marche beaucoup mieux

    merci

  6. A voir en vidéo sur Futura

Discussions similaires

  1. Un hexapode !
    Par ichigo01 dans le forum Électronique
    Réponses: 49
    Dernier message: 24/01/2010, 17h22
  2. [Identification] Un hexapode
    Par Razorback5924 dans le forum Biologie
    Réponses: 2
    Dernier message: 30/05/2008, 07h27
  3. [Identification] Hexapode inconnu
    Par nicolas1111 dans le forum Biologie
    Réponses: 9
    Dernier message: 12/05/2008, 16h31
  4. Amélioration robot hexapode
    Par Snikrot78 dans le forum Électronique
    Réponses: 1
    Dernier message: 26/04/2008, 08h29
  5. (débutant) Robot hexapode, problème sur l'électronique
    Par siteauludo dans le forum Électronique
    Réponses: 3
    Dernier message: 14/05/2006, 18h34
Découvrez nos comparatifs produits sur l'informatique et les technologies.