salut
j'ai essayé de commander un servo POWER HD-1160A avec un pic 16f84A.
avec simulation ISIS le travail sa marche bien,mais en pratique quelque soit le signal de commande ,le servo tend toujours vers le -90°.
aidez svp?
-----
salut
j'ai essayé de commander un servo POWER HD-1160A avec un pic 16f84A.
avec simulation ISIS le travail sa marche bien,mais en pratique quelque soit le signal de commande ,le servo tend toujours vers le -90°.
aidez svp?
soft avec MIKROC :
Code:void main() {trisb=0x00; trisa=0x1f; portb=0; while(1) { //SERVO MOTEUR if ((porta.f3==0)&&(porta.f2==1)) { portb.f4=1;delay_us(1000); portb.f4=0;delay_us(2000); } // -90° if ((porta.f3==0)&&(porta.f2==0)){ portb.f4=1; delay_us(1500); portb.f4=0;delay_us(1500);} // 0° if ((porta.f3==1)&&(porta.f2==0)){ portb.f4=1; delay_ms(2); portb.f4=0;delay_us(1000);} //+90° }}
Dernière modification par gienas ; 30/05/2012 à 10h51. Motif: Ajouté les balises code, obligatoires pour les programmes
Cherche "rapport cyclique servomoteur" sur ton moteur de recherche préféré, ça pourra peut-être résoudre ton problème...
voici le datasheet de servo
bonsoir
environ 20ms entre chaque pulse !
A+
dans le prog je vois 1000uS +2000 ou 1500 + 1500 ou 2000 + 1000....
il faut 1000uS + 20mS ou 1500uS + 20mS ou 2000uS + 20mS
Bonsoir
Où est ce que tu as acheté le servo servo POWER HD-1160A
Non, il faut AU MAXIMUM 20ms entre deux pulses
Donc, il faut en théorie 1000µs(état 1)+(20ms -1000µs)(état 0), 1500µs+(20ms-1500µs), 2000µs - (20ms-2000µs)
En pratique, avec un temps à 0 de 15ms, ça devrait très bien marcher tout en simplifiant un peu les calculs (mais en compliquant peut-être la prog, tout dépend de l'archi du timer)
20mS , 15mS, 25mS..... ça n'a aucune importance et on est pas a 2mS pres...
Fto a raison, toutes les docs parlent de 20ms MAXI, et je plussoie concernant un choix de periode plus petite genre 15-16ms.
deja teste avec plus de 50mS : le servo vibre un peu pendant les deplacements, et ça met des pointes de courant repetitives, mais ça marche
et la 20 ou 22 ms ......!
de toute façon le pb de mizzovic c'est le non respect de ces 20mS (environ... )) )
Dernière modification par Pierrre ; 30/05/2012 à 14h52.
salut
comme j'ai dis le20ms est le maxi de la periode ,alors on peut prendre periode 3ms tel est le cas de soft ci-dessus,nn?
oui, mais il y a aussi un mini a respecter...
Bonjour ce sujet m'interresse fortement, le temps mini a respecter est d'environ combien?
merci
ça depend de l'electronique des servos... mais le fait de reduire ce temps ne change strictement rien a la vitesse de deplacement ni a la precision du servo.
oui Pierre exactement ca , mon servo tourne toujours dans le meme direction vers le meme angle -90°
Bonsoir,
Toutes les 20ms, tu envois une impulsion de 1 à 2 ms.
C’est ce pulse de 1 à 2ms qui positionnera ton servo.
Envois bien sûr cet période de 20ms pendant un temps suffisant pour que le servo se positionne.
J’ai retrouvé des mesures que j’avais effectuées :
Pulse de 1.10ms à 1.92ms toutes les 22 ms
chaque servo a ses propres implusion mais la periode est commune 20ms ,nn?
Perso, j’ai appliqué ces périodes sur plusieurs servos, mais je ne peux pas affirmer que ça marche sur tous les servos.
Branches ton oscillo sur le signal, et tu auras les périodes exactes.
Par plusieurs servos, j’entends marques de servos, bien sûr !