servo futaba S3001 et PIC18F452

Mar 31, 2012 3 Replies

Bonjour,



Je m'essaie à utiliser un servomoteur futaba S3001 à l'aide du port RA0 d'un pic 18F452, en utilisant l'interruption du Timer1 (16 bits avec prédiviseur à 8), le pic est cadencé à 40mHz, 4 cycles pour la plupart des instructions, soit 100 nanosecondes pour 1 instruction. Voici le bout de code:



#pragma interrupt hprioISR



void hprioISR(void) { if (PIE1bits.TMR1IE && PIR1bits.TMR1IF) { // Si interruption Timer



1 valide et en cours SERVO = 0x01; LED = !LED; WriteTimer1(TimerOffset); PIR1bits.TMR1IF = 0; // Remise à 0 du flag de l'interruption Timer 1. Delay1KTCYx(10); SERVO = 0x00; } }

Quand j'observe les signaux à l'oscillo, cela semble coller, toutes les



20mS, j'ai un front montant de 1mS, (j'ai aussi essayé à 1,5mS).

Dés que je connecte le port RA0 sur le fil blanc du Servo, cela déraille grave, (la LED ne clignote plus, etc...).


2 questions:
1) le servo a 3 fils, 1 rouge, 1 noir, et 1 blanc. J'imagine que le noir est la masse, le rouge +5V et le blanc est la commande, est-ce exact ? (je ne trouve pas sur google le brochage de la bête).


2) Faut il relayer le signal par un transistor afin de ne pas trop pomper de jus ?



Si certains d'entre vous ont expérimenté la chose, cela m'intéresse.



Merci à vous tous et A+



Le 31/03/2012 17:38, Bruno a écrit :

google en 15 secondes te confirme le brochage.

la led est sur un autre port ?? en supposant que oui, ce n'est pas un problème de sortance du pic, car si la led ne clignote plus, c'est que le soft ne tourne plus. si c'était juste un probleme d'interfacage, le pic tournerait.

pour avoir joué avec des servos, je sais qu'il faut bien l'alimenter, avec une alim faiblarde, les pointes de courant du moteur peuvent faire des variations de tension qui font déconner le servo et tout ce qui est alimenté avec.

JJ

Le 31/03/2012 19:52, jj a écrit :

On 31 mar, 19:57, jj :

t

Exact, j'avais suppos=E9 que la LED =E9tait elle aussi sur RA0, mais =E0 regarder son code ce sont deux ports diff=E9rents : les deux variables (ou macros) "SERVO" et "LED".

  1. > >> Delay1KTCYx(10);

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required