Le problème est le suivant :
Normalement nous pouvons orienté les servosmoteurs de 0 à 180 degrés a partir du programme suivant de la librairie tlc 5940:
#include "Tlc5940.h"
#include "tlc_servos.h"
#define SERVO_CHANNEL 0
#define DELAY_TIME 20
void setup()
{
tlc_initServos(); // Note: this will drop the PWM freqency down to 50Hz.
}
void loop()
{
for (int angle = 0; angle < 180; angle++) {
tlc_setServo(SERVO_CHANNEL, angle);
Tlc.update();
delay(DELAY_TIME);
}
for (int angle = 180; angle >= 0; angle--) {
tlc_setServo(SERVO_CHANNEL, angle);
Tlc.update();
delay(DELAY_TIME);
}
}
___________________________________________________________________________________________
mon programme:
#include "Tlc5940.h"
#include "tlc_servos.h"
#define SERVO_CHANNEL 0
#define DELAY_TIME 20
void setup()
{
tlc_initServos(); // Note: this will drop the PWM freqency down to 50Hz.
}
void loop()
{
tlc_setServo(SERVO_CHANNEL, 30);
Tlc.update();
delay (1000);
tlc_setServo(SERVO_CHANNEL, 90);
Tlc.update();
delay (1000);
tlc_setServo(SERVO_CHANNEL, 0);
Tlc.update();
delay (1000);
tlc_setServo(SERVO_CHANNEL, 180);
Tlc.update();
delay (1000);
tlc_setServo(SERVO_CHANNEL, 60);
Tlc.update();
delay (1000);
tlc_setServo(SERVO_CHANNEL, 120);
Tlc.update();
delay (1000);
}
_________________________________________________________________________________________
Cependant quand nous utilisons celui-ci , le servomoteur ne tourne qu'à 90 degrés.
En augmentant la valeur de 0 a 255 nous pouvons augmenté l'angle , cependant il s'arrête a 255 et on est a peut près à 110°aprés cela il y a un décrochement.
Pouvez vous m'aider afin de pouvoir atteindre 180° .
Merci d'avance !
Problème entre servos moteur et arduino en utilisant le tlc 5940 de sparkfun.
Débuté par lyc-gb, févr. 10 2014 05:54
1 réponse à ce sujet
#1
Posté 10 février 2014 - 05:54
#2
Posté 10 février 2014 - 07:35
Non, la boucle va de 0 à 179 degrés.Normalement nous pouvons orienté les servosmoteurs de 0 à 180 degrés a partir du programme suivant de la librairie tlc 5940:
...
for (int angle = 0; angle < 180; angle++) {
tlc_setServo(SERVO_CHANNEL, angle);
Tlc.update();
delay(DELAY_TIME);
}
Donc, je suggérerais de tester avec 179 au lieu de 180, pour avoir l'angle maximal :
D'autre part, je ne suis pas sûr que le délai de 1000 soit suffisant.tlc_setServo(SERVO_CHANNEL, 0);
Tlc.update();
delay (1000);
tlc_setServo(SERVO_CHANNEL,180179);
Tlc.update();
delay (1000);
Par ailleurs, l'angle maximum dépend aussi du servo. Certains ont plus d'amplitude que d'autres. C'est pour cela qu'il peut-être intéressant de tester un servo avec un testeur de servo avant de l'utiliser.
Edit :
En lisant les commentaires sur la page de Sparkfun, on voit que des utilisateurs ont été obligés de modifier deux constantes (SERVO_MIN_WIDTH et SERVO_MAX_WIDTH) qui se trouvent dans le fichier "tlc_servos.h" pour avoir une plus grande amplitude.
Edit 2 :
La page qui montre l'exemple a aussi des commentaires dont un qui indique comment éviter un problème de tremblements : "What I did was go into the tlc_servos.h file and adjust the timings. I changed the SERVO_MIN_WIDTH from 200 to 203 and SERVO_MAX_WIDTH from 400 to 560. I also found that changing the SERVO_TIMER1_TOP to 19500 got rid of some jitter that was going on. I think the servos ideally like a 60Hz signal but I couldn't work out how to get that exactly and I got 19500 by trial and error."
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users