Après l'appui sur un Bouton Poussoir, le servo atteint bien sa consigne d'arrivée (pendant 3sc), mais parfois, quand il revient pour ça position initiale, il la dépasse et revient pour atteindre sa consigne initiale.
ça doit être une bêtise.. Si quelqu'un à une idée, merci d'avance.
#include <Servo.h>
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
Servo myservo; // create servo object to control a servo
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
myservo.attach(9);
}
void loop()
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{ myservo.write(115);
delay( 3000);
}
if (buttonState == LOW)
{delay(0);
}
{ myservo.write(20);
delay( 20);
}
{
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
}
bonjour,
certains servo sont défaillants mais en principe on les alimentes via une autre alim avec GND commune car ca pompe pas mal pour l'arduino.
sujet évoqué maintes fois sur le forum.
Ton servo est t'il gros? Ton alim externe délivre combien d'ampères?
Ta consigne pwm de 20 (20 microsecondes??) est t'elle bonne?
Quel est la fréquence de fonctionnement de ton servo? (50Hz, 100Hz, etc...)
Ok c'est donc un micro servo, à mon avis 600mA y a pas de soucis pour en alimenter plusieurs des servo comme cela...
Par contre 7.2V arrêtes parce que tu vas les cramer !
C'est 5V max.
Le servo sinon fonctionne bien avec un signal pwm de 50Hz (d'après le datasheet), 1000us de duty cycle signifie palonnier à fond dans un sens, et 2000us dans l'autre sens (pas en butée normalement).
Il faut que tu vérifies tout ça, la classe servo servo.h envoie un pwm 50Hz ?
Ah ok j'avais pas compris, tu alimentes en 7.5V une carte arduino uno équipée d'un régulateur qui t'abaisse ça à 5V.
Par contre du coup tes 600mA vont sûrement chuter... ...mais pour un micro servo ça me semble largement suffisant, c'est ça qui est bizarre dans ton soucis.
sylvainmahe:
Ah ok j'avais pas compris, tu alimentes en 7.5V une carte arduino uno équipée d'un régulateur qui t'abaisse ça à 5V.
Par contre du coup tes 600mA vont sûrement chuter... ...mais pour un micro servo ça me semble largement suffisant, c'est ça qui est bizarre dans ton soucis.
Pour avoir joué avec ces mêmes servos et une Uno, le régulateur ne l'étale pas, il est poussé dans ses retranchements. On a l'impression que ça marche mais quand même le servo a de drôle de comportement. Il faut donc passer par une alim externe pour le servo.
deud:
Jambe, tu veux dire qu'il faut une alimentation pour le servo, différente de la carte?
oui avec le GND en commun
infobarquee:
bonjour,
certains servo sont défaillants mais en principe on les alimentes via une autre alim avec GND commune car ca pompe pas mal pour l'arduino.
sujet évoqué maintes fois sur le forum.
C'est un principe général :
Quand dans un montage il y a des composants de puissance, c'est à dire qui consomment, on sépare les alimentations :
Une alim est réservée aux circuits commande (ex le microcontrôleur, RTC, etc). Ces composants doivent avoir une alimentation parfaitement stable et PROPRE.
Une ou plusieurs alim réservées à la puissance (moteurs, relais, émetteurs RF, etc).
Et bien entendu ces alimentations doivent OBLIGATOIREMENT avoir un point commun sinon cela ne peut pas fonctionner.
Comme la masse de la carte arduino est au 0V il faut relier tous les 0V entre eux.
Seule exception au 0V commun : quand on n'utilise pas des élecrons pour transmettre une information mais un fluide :
Cas du transformateur (obsolète maintenant) : transfert par fluide magnétique
Cas de l'opto-coupleur (courant actuellement) : transfert par fluide optique (photons)
Dans tout les cas par fil il faut les 0V commun sinon les électrons ne peuvent pas circuler.
@sylvainmahe
Compare les caractéristiques de la carte arduino et celle de la grosse alim 5V de ton PC.
Celle de ton PC est munie d'énormes ventilateurs de refroidisseurs, de filtrage Inductances/Condensateurs et peut délivrer des dizaines d'ampères.
Ce n'est pas le cas du pauvre SOT223 de la carte arduino.
Servo digitaux : seule la commande est digitale, il y a quand même à l'intérieur un moteur à courant continu et un asservissement de position : que de l'analogique.
68tjs je comprend, mais normalement un port usb n'est donné que pour fournir dans les 500mAh max, même si derrière il y a des grosses alim.
Pour les servos analogiques/digitaux, non, la commande est la même, c'est à dire un pwm, c'est analogique au final (modulation de la largeur d'impulsion), par contre, la ou sa change c'est dans le servo. Potentiomètre numérique (roue codeuse) / système d'asservissement numérique pour une plus grande rapidité et précision du palonnier. Certains ont un petit moteur sans charbons également.
Donc ce que je voulais dire par la c'est que les servos digitaux en général consomment légèrement plus qu'un servo classique, de part le fait qu'ils sont plus performants en terme de puissance et rapidité.
Autre chose que je voulais signaler aussi, c'est que quand tu alimentes ta carte arduino par l'usb, le régulateur de tension interne à l'arduino (SOT223 ou autre) n'est pas utilisé (ou alors j'ai rien compris). C'est le 5V/500mAh du port usb qui alimente directement tout. Le régulateur lui est laissé en l'air.
Exactement comme avec ma carte quand je l'alimente en passant par l'usbasp: http://sylvainmahe.xyz/photo/dsc02460.jpg
Le LM7805 sur la carte ne sert plus à rien, c'est le port usb qui alimente.