Avec un NE555 tu n'iras pas loin, tu vas avoir besoin d'un petit processeur type ATtiny or Pic pour 1 ou 2 €.
L'autre question que je me pose est si tu ne pourrais pas sérialiser les taches. Le servo doit être rafraîchit que tous les 15-20ms. Donc d'abord lis pendant environ 10ms les impulsions et prends garde à mesurer le temps au plus précis possible (avec Timer2 ou une boucle de longueur définie) et en calcule la vitesse. Ensuite génère l'impulsion pour le servo pendant 1 ou 2 milli-secondes et à la fin actualise ton écran. Puis répete.
À la limite, tu pourras même désactiver les interruptions de Timer0 pour millis avec sei()/cli() pour que tes mesures soient plus précises. En fin de compte, ton machin ne va rien faire d'autre que ça, donc tu n'auras pas besoin de l'USB, la sérielle ou d'autre choses qui ont besoin de millis() avec précision. Pour faire clignoter une lampe, ça change pas grand choses si la seconds prends 1200 millisecondes à cause des pertes d'interruptions pendant tes mesures.
Pour continuer sur le côté "besoin", c'est que j'ai déjà testé ta proposition.
en gros, le timer1 (le plus précis) est configuré ainsi (en dur, sans passer par les sketches touts faits qui ne sont pas précis) :
RAZ du compteur timer sur OCRA,
OCRA et prescaler calés à 15ms
ORC1B contient la durée de l'imp servo, quand TCNT1 = OCR1B, on met à 0 la sortie Servo
donc toutes les 15ms :
TCNT1 se réinitialise tout seul (ça de moins à gérer),
je met à 1 la sortie Servo,
j'incrémente une variable qui quand elle arrive à 10 (donc 150ms) lit mon comptage d'impulsions pour déterminer la vitesse de mon moteur, calculs et affichages.
super, mais voilà, tant que la routine ISR correspondant à OCR1A n'est pas terminée, OCR1B est désactivée (matériellement, on ne peut rien y faire), et c'est là que ça coince, car toutes les 150ms, la routine est plus longue, et le servo "clignotte", puisque l'ISR OCR1B n'est appelée que lorsque OCR1A est terminée...
Je cherche en fait une sorte de générateur PWM programmable, ça doit bien exister en DIP8... je vais continuer à chercher...
Un servo n'est rien qu'un petit moteur avec un circuit qui transforme les impulsions PWM en commandes sur le pont en H. (Voir ici pour une description) Maintenant tu veux un circuit qui transforme des signaux de l'Arduino en signal PWM, qui de son tour va devenir des commandes sur le pont en H.
À ta place, j'abandonnerais cette direction der recherche et contrôlerais un moteur pas à pas directement avec un circuit de pont en H. Ces puces sont des composant standard, la programmation est bien maîtrisée, tu n'auras pas de soucis timing pour ajuster le moteur et tu gagne un choix nettement supérieur pour le moteur commandé. Va voir ce que tu trouves au sujet de "Arduino H-Bridge" (ne pas confondre avec la recherche pour "Arduino H-Bomb", c'est quelque chose de différent).
Au sujet de la puce que tu cherches, ça existe (par exemple le FT639 Servo Controller Chip), mais ne me demande pas où trouver et à quel prix. J'en ai aucune idée.
Voilà, l'idée du servo, c'est qu'il est asservi en interne, et qu'il a assez de patate, et qu'il coûte pas cher (8€).
Pour utiliser un PAP, il faudrait que je fabrique un servo-moteur pas-à-pas, car il me semble indispensable de savoir exactement quel est l'angle de la commande mécanique. un PAP, ça peut sauter un pas sans prévenir...
J'ai trouvé aussi le FT639. si on regarde la photo, on voit qu'en fait, c'est ... un PIC... mais la liaison à 2400 bauds, c'est un peu lent, car j'aimerais que mon arduino se repose de temps en temps, dès-fois que je lui trouve d'autres conneries à faire entre deux mesures...
bon, en même temps que j'écrivais le paragraphe précédent, j'ai eu une idée... inverser mes comparateurs... du coup, ça peut marcher avec le OCR1B quand même (ce n'est pas encore sur papier, mais je vais tester ça tout de suite!) je vous tiens au courant...
Je ne sais pas quelle est la précision dont tu aurais besoin pour faire ton "régulateur de vitesse" (aurais tu un lien pour que je voie de quoi tu parles ?) et si ce que je te propose conviendrait, mais je m'étais amusé à faire ce montage avec un ATTiny85.
J'ai utilisé la librairie "Software Servo"
Snootlab:
Je ne sais pas quelle est la précision dont tu aurais besoin pour faire ton "régulateur de vitesse" (aurais tu un lien pour que je voie de quoi tu parles ?) et si ce que je te propose conviendrait, mais je m'étais amusé à faire ce montage avec un ATTiny85.
J'ai utilisé la librairie "Software Servo"
Lionel
Merci! j'ai fait ce premier montage via l'arduino, il marche à merveille (tout seul). C'est la raison pour laquelle je me suis inscrit ici, c'est que certaines librairies ne sont pas compatibles avec d'autres. en fait, étant donné la structure des timers de l'arduino, il devient complètement impossible de faire tourner des procs avec une stabilité temporelle irréprochable. La lib utilise un timer pour le servo, mais moi, j'ai besoin de resynchroniser les timers toutes les 150ms, donc gros risque de resynchroniser le timer du servo pendant l'impulsion de commande, donc de foirer sa valeur, c'est pour ça que je cherche un "timer" externe...