Bonsoir à tous;
Je rencontre des difficultés avec un servomoteur.
Il s'agit d'un Futaba S148 que je contrôle à l'aide d'un PIC Atmel ATMega16.
Si j'ai bien compris, on lui envoie un signal carré d'amplitude 5V et, selon la "période" pendant laquelle le signal est à 5V, le servo va effectuer un angle plus ou moins important dans un sens ou dans un autre.
Sur la fiche constructeur, je lis "1.52ms neutral", j'en déduis donc qu'un signal de plus de 1.52ms fera tourner le servo dans un sens et qu'un signal de moins de 1.52ms le fera tourner dans l'autre.
J'ai commencé par faire un code tout simple sur CodeVisionAvr :
Sur l'oscilloscope, j'obtiens un parfait signal carré avec une alternance +5 pendant 1ms et 0 pendant 18ms.Code:#include <mega16.h> #include <io.h> #include <delay.h> void main(void) { DDRD=0xFF; PORTD=0x00; delay_ms(2000); while(1) { PORTD=0xFF; delay_us(1000); PORTD=0x00; delay_ms(18); } }
Le problème dans tout ça, c'est que j'ai essayé une innombrable quantités de valeurs pour le temps fort (à la place du "1000" de "delay_us(1000);"), de 50μs à 2 secondes, et mon servo tourne TOUJOURS dans le même sens, jusqu'à arriver en butée.
Je cherche à faire +90, -90...
Comment faire ?
Je vous avoue qu'après y avoir passé 6 heures de ma journée, je désespères.
Merci pour votre aide :
Flyerjet
-----