Auteur Sujet: Problème d'utilisation de timer  (Lu 19111 fois)

johancdu95

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Problème d'utilisation de timer
« le: février 06, 2019, 09:44:02 pm »
Bonjour à tous,

Je me présente, je suis actuellement élève en deuxième année d'ingénieur en mécatronique. Dans le cadre d'un cours d'électronique embarqué le prof nous à demandé d'effectué un projet donc en arduino. Mon sujet c'est donc porté sur un bras robotisé commandé dans un premier temps par des potentiomètres actionnant des servo-moteurs et plus tard si je peux par un capteur gyroscopique et une sonde de flexion afin de le contrôler par le mouvement.
J'ai donc trouvé un bras robot on va dire tout prêt a être imprimer avec toute l'explication sur les composants etc sur le site "how to mechatronics" https://howtomechatronics.com/tutorials/arduino/diy-arduino-robot-arm-with-smartphone-control/.
Cependant mon professeur voudrais que nous utilisions ce que nous avons vu en cour avec lui c'est a dire les timbres/interruptions/PWM/registre etc...

La contrainte c'est que j'ai 6 servo moteurs ce qui va donc utilisé les trois timers de la carte arduino uno.
J'ai donc d'abord effectué un programme sur le timer 1 qui fonctionne et me permet bien de pouvoir contrôler deux moteurs même si j'ai des problèmes d'angles (voir  code Timer 1 ci-joint).

J'ai ensuite essayé de faire marché les deux autres en utilisant le timer 2 mais voila rien ne fonctionne et cela saccade complètement (voir code timer 2).

Je vous remercie par avance pour votre aide .


Johan.

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1713
    • Voir le profil
Re : Problème d'utilisation de timer
« Réponse #1 le: février 07, 2019, 12:37:21 am »
Ce n'est pas du modélisme ferroviaire mais je vais faire une exception :-)

Les timers 0 et 2 sont des timers 8 bits. Par conséquent, quand dans le code timer2.ino, je lis

       OCR2A=OCR2A+19000-valPot;

et

       OCR2A=OCR2A+1000+valPot;

Je me dis que mettre 19000 ou 1000 plus des trucs dans un seul octet conduit à un débordement et donc à mettre n'importe quoi dans OCR2A
Cordialement

johancdu95

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : Problème d'utilisation de timer
« Réponse #2 le: février 07, 2019, 08:23:03 am »
Bonjour Jean-Luc et merci dans un premier temps pour ton message.

J'avais vu que le timer 2 était un 8 bit contre 16 pour le 1 mais je t'avoue que je ne vois pas la différence ?
Ensuite si je comprend bien quand tu dit débordement c'est que j'écrit quelque chose de trop gros dans un octet ?(j'essaye de comprendre un peu je maîtrise pas totalement les histoires de Bit etc...)
Le 19000 et le 1000 font quand il sont ensemble ma période pour une fréquence de 50hz le calcul est ((1/50)/2)/0.5x10^-6=20000. Alors je fais peut être une erreur je suis pas très bon en maths.

Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1713
    • Voir le profil
Re : Problème d'utilisation de timer
« Réponse #3 le: février 07, 2019, 08:26:30 am »
Oui mais ce n'est pas possible. La différence est que le timer 8 bits ne peut pas compter aussi loin que le 16 bits.

19000 font 0x4A38 en hexa. Si tu écris 19000 dans un octet, seul le poids faible est écrit : 0x38. Donc tu écris 56.
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1713
    • Voir le profil
Re : Problème d'utilisation de timer
« Réponse #4 le: février 07, 2019, 11:23:31 am »
Par ailleurs, si tu utilises un timer 8 bits en étant capable de régler le prescaler pour qu'il puisse compter au max (255) en 20ms (ce qui n'est pas le cas), en PWM, la largeur d'impulsion de commande du servo étant entre 0,5 et 2,5 ms, c'est à dire 2ms de large au maximum pour une plage de 180°, tu n'aura que 25 crans soit des sauts de 180/25 = 7°. Le fonctionnement va être tout sauf doux.
Cordialement

johancdu95

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : Problème d'utilisation de timer
« Réponse #5 le: février 09, 2019, 05:44:50 pm »
D'accord merci Jean-Luc .
je prend note je pense avoir a peu près piger.
Par contre j'ai vu que le calcul était  F=fclk/(N.256) c'est bien ça ?

cordialement,

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1713
    • Voir le profil
Re : Problème d'utilisation de timer
« Réponse #6 le: février 09, 2019, 05:47:18 pm »
Il y a une série d'articles sur les timers : http://www.locoduino.org/spip.php?article84
Je pense que tu y trouveras des réponses  :)
Cordialement