Go Down

Topic: alimentation servo moteur en 7.4 volts (Read 268 times) previous topic - next topic

nicopyro

bonjour à tous ,
pour les besoins d'un montage avec 8 servos moteurs ( 7.4 volts 800 mAh ) je voudrais utiliser une batterie Yuasa 12 volts 1.2A h , mais les servos fonctionnent en 7.4 volts ?

avez vous une solution pour avoir une tension de 7. 4 volts à partir de 12 v ?
merci d'avance pour vos réponses
cordialement

Artouste

bonjour à tous ,
pour les besoins d'un montage avec 8 servos moteurs ( 7.4 volts 800 mAh ) je voudrais utiliser une batterie Yuasa 12 volts 1.2A h , mais les servos fonctionnent en 7.4 volts ?

avez vous une solution pour avoir une tension de 7. 4 volts à partir de 12 v ?
merci d'avance pour vos réponses
cordialement
Bonjour
Le plus efficace : utiliser un (ou des) step-down converter 12V --> 7.4V
çà coute qq 10zaine de cents/unité sur les sites "asia"
NB : un servo consomme en A (mA) pas en mAh :smiley-mr-green:

nicopyro

merci pour ta réponse ,
effectivement bien vu pour la conso du servo  :)

comme je suis un peu novice dans ce monde , tu pourrais me donner un lien où me procurer ce genre de composant et comment le câbler avec ma batterie ?
merci de ton aide

Artouste

merci pour ta réponse ,
effectivement bien vu pour la conso du servo  :)

comme je suis un peu novice dans ce monde , tu pourrais me donner un lien où me procurer ce genre de composant et comment le câbler avec ma batterie ?
merci de ton aide
au pif un lien ali ;D

cablage : pas tres compliqué , tu met ta batterie 12 V en IN et tu mesure 7.4V en OUT au voltmètre en ajustant le potentiometre implanté sur le PCB ;)

nicopyro

merci pour le lien c,'est commandé !!!
cependant , du coup j'ai avancé un peu cet apres midi , et 2 petits soucis ( avec alim 6 volts ) :

j'utilise un carte nano , et seul 6 servos sur 8 fonctionnent , j'utilise les sortie A0 à A7
est ce normal ?

et je viens de me rendre compte , que 2 servos sur 6 n'étaient pas de la même ref LDX 218 et LDX 270
les 218 font bien les mvts demandés par contre les 270 ont un déplacement plus grand
si j'ai bien compris , les 270 ont plus de débattements que les 180 , cependant si je leur indique un angle je ne comprend pas pourquoi ils se déplacent différament alors que j'utilise la bib SERVO ?



Artouste

merci pour le lien c,'est commandé !!!
cependant , du coup j'ai avancé un peu cet apres midi , et 2 petits soucis ( avec alim 6 volts ) :

j'utilise un carte nano , et seul 6 servos sur 8 fonctionnent , j'utilise les sortie A0 à A7
est ce normal ?

et je viens de me rendre compte , que 2 servos sur 6 n'étaient pas de la même ref LDX 218 et LDX 270
les 218 font bien les mvts demandés par contre les 270 ont un déplacement plus grand
si j'ai bien compris , les 270 ont plus de débattements que les 180 , cependant si je leur indique un angle je ne comprend pas pourquoi ils se déplacent différament alors que j'utilise la bib SERVO ?



sur nano A6 etA7 ne sont utilisables qu'en entrées analogiques  (pas utilisable en sortie)

nicopyro

merci artouste , du coup ok pour les sortie A6 A7 , j'en apprends tous les jours  :)

du coup je viens de changer les sorties ( D7 et D8 ) dispo sur mon montage arduino UNO
et toujours rien ? les 7 et 8 ne sont pas des sorties ?

voici le code :
Code: [Select]
#include<Servo.h>
#include <SPI.h>
#include <NRFLite.h>

int rge = 6;
int vert = 5;

Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;
Servo myservo5;
Servo myservo6;
Servo myservo7;
Servo myservo8;



const static uint8_t RADIO_ID = 0;       
const static uint8_t PIN_RADIO_CE = 9;
const static uint8_t PIN_RADIO_CSN = 10;

struct RadioPacket // Packet de données envoyé,

{
    uint32_t Valeur;
    uint32_t ValeurB;
    uint32_t ValeurC;
   
};

NRFLite _radio; //Déclaration du module NRF
RadioPacket _radioData;//Déclaration du packet de données


int tir = 3;


void setup()
{
  pinMode( rge , OUTPUT );
    pinMode( vert , OUTPUT );
   pinMode( tir , OUTPUT );
   digitalWrite(tir, HIGH);
   
 


  myservo1.attach(A0);
  myservo2.attach(A1);
  myservo3.attach(A2);
  myservo4.attach(A3);
  myservo5.attach(A4);
  myservo6.attach(A5);
  myservo7.attach(7);
  myservo8.attach(8);

 
  myservo1.write(10);
  myservo2.write(10);
  myservo3.write(10);
  myservo4.write(10);
  myservo5.write(10);
  myservo6.write(10);
  myservo7.write(10);
  myservo8.write(10);

 
 
   
     Serial.begin(9600);
   
   
    if (!_radio.init(RADIO_ID, PIN_RADIO_CE, PIN_RADIO_CSN))//si l'initialisation du module n'est pas finie
    {
       
        digitalWrite(rge, HIGH);
        digitalWrite(vert, LOW);
        while (1); // Attend
    }
   
        digitalWrite(rge, LOW);
        digitalWrite(vert, HIGH);
        delay(200);
        digitalWrite(vert, LOW);
        delay(200);
        digitalWrite(vert, HIGH);
        delay(200);
        digitalWrite(vert, LOW);
        delay(200);
         digitalWrite(vert, HIGH);
        delay(200);
        digitalWrite(vert, LOW);
        delay(2000);
       
       
     
    }
   
   
   
   
   
   
   
   


void loop()

{

     digitalWrite(rge, HIGH);   // témoin module allumé
     

    while (_radio.hasData())//Tant que le module NRF a des données
    {
        _radio.readData(&_radioData); // lecture des nouvelles données
       
     
       
        _radioData.Valeur = map( _radioData.Valeur, 0, 255, 5, 110);

        _radioData.ValeurB = _radioData.ValeurB ;
       
        _radioData.ValeurC = _radioData.ValeurC ;
       
       
         
       }
       
       
       
  myservo1.write(_radioData.Valeur);
  myservo2.write(_radioData.Valeur);
  myservo3.write(_radioData.Valeur);
  myservo4.write(_radioData.Valeur);
  myservo5.write(_radioData.Valeur);
  myservo6.write(_radioData.Valeur);
  myservo7.write(_radioData.Valeur);
  myservo8.write(_radioData.Valeur);   
       
       
         
       if (_radioData.ValeurB >=100&& _radioData.ValeurB <=150){   
         
         
         
         
          for(int pos = 5; pos <= 110; pos += 1)
  {                                 
    myservo1.write(pos);
    myservo2.write(pos);
    myservo3.write(pos);
    myservo4.write(pos);
    myservo5.write(pos);
    myservo6.write(pos);
    myservo7.write(pos);
    myservo8.write(pos);
       
    delay(20);                       
  }
 
       for(int pos = 110; pos>=5; pos-=1)   
  {                               
     myservo1.write(pos);
    myservo2.write(pos);
    myservo3.write(pos);
    myservo4.write(pos);
    myservo5.write(pos);
    myservo6.write(pos);
    myservo7.write(pos);
    myservo8.write(pos);

   
    delay(10);                       
  }
 
    _radioData.ValeurB = 0 ; 
   
         
    }       
 
   Serial.println(_radioData.ValeurB);
 


 
 
   
   
   
    if (_radioData.ValeurC >=200){
        digitalWrite(tir, LOW);
        digitalWrite(vert, HIGH);
        delay(100);
       
         
      }   
     
      else {
   
       digitalWrite(tir, HIGH);
       digitalWrite(vert, LOW);
      }
     
     
    }       
   
     
     
   

Artouste

merci artouste , du coup ok pour les sortie A6 A7 , j'en apprends tous les jours  :)

du coup je viens de changer les sorties ( D7 et D8 ) dispo sur mon montage arduino UNO
et toujours rien ? les 7 et 8 ne sont pas des sorties ?
Bonjour
Je ne suis pas un grand utilisateur de la lib servo
Mais je crois avoir lu/vu qu'il y a des limitations en nombre de servo , possibles conflits avec d'autres libs qui utilisent les "timers", .

hbachetti


Tu ne dis pas quel carte tu utilises ?

Ce que je vois ici : https://www.arduino.cc/en/Reference/Servo

Quote
The Servo library supports up to 12 motors on most Arduino boards
Servo.h

#define SERVOS_PER_TIMER 12 // the maximum number of servos controlled by one timer

ServoTimers.h

#else  // everything else
#define _useTimer1
typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t;
#endif

Seul le timer1 est utilisé (pour un ATMega328).
S'il y avait un conflit entre librairies utilisant le timer1, l'édition de liens échouerait.

Tu es sûr que tes sorties 7 & 8 marchent ?

Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Artouste

Tu ne dis pas quel carte tu utilises ?
Bonjour Henri

A priori c'est un nano ( voir + haut)

hbachetti

Je ne vois pas ce qui pourrait clocher.

Vérifier les sorties 7 et 8 en faisant clignoter des LEds.

Procéder par élimination, en permutant :

Code: [Select]

  myservo1.attach(7);
  myservo2.attach(8);
  myservo3.attach(A2);
  myservo4.attach(A3);
  myservo5.attach(A4);
  myservo6.attach(A5);
  myservo7.attach(A0);
  myservo8.attach(A1);


etc.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Go Up