Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

PPE servomoteur



  1. #1
    moicham

    PPE servomoteur

    bonjour, dans le cadre de mon PPE, je dois piloter un
    servomoteur avec Flowcode.
    Mais je ne comprend pas l'utilisation de l interruption

    -----


  2. Publicité
  3. #2
    Flyingsquirrel

    Re : PPE servomoteur

    Discussion déplacée dans le forum d'électronique.

  4. #3
    Antoane

    Re : PPE servomoteur

    Bonjour,
    qu'est ce que tu n'as pas compris ? ce qu'est une interruption ou comment s'en servir, ou comment la programmer sous Flowcode ?
    Sais-tu comment piloter un servo-moteur ?
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  5. #4
    moicham

    Re : PPE servomoteur

    oui, je connais le principe de fonctionnement du servomoteur mais je ne c pas comment faire une impulsion entre 1 et 2 ms sur une période de 20ms en utilisant l interruption sur flowcode

  6. #5
    Antoane

    Re : PPE servomoteur

    Bonjour,
    Le timer-0 (par exemple) est un compteur, qui, bien paramétré, compte les coups d'horloge du pic. Tu vas donc pouvoir t'arranger pour que, tout les n coups d'horloge, c'est à dire toutes les p µs, il déclenche une interruption.Compter les interruptions (on parle de "débordement du Timer0) permettra de "lire le temps qui passe".

    C'est aussi faisable avec des "pauses", des temporisations, mais c'est moins précis et le µC ne peux rien faire en même temps.


    PS : il me semble que flowcode V4 gère les servo-moteurs, pas flowcode V3.
    PS2 : il me semble que c'est faisable "simplement" avec le module PWM, masi pas sous Flowcode (fréquence du PWM fixée).
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  7. A voir en vidéo sur Futura
  8. #6
    moicham

    Re : PPE servomoteur

    Bonjour,
    il faut donc que je mette l'interruption a une fréquence de 50 Hz (pr période de 20 ms), il faut aussi que je mette une deuxiéme interruption pour pour une impulsion de 1ms ?

  9. Publicité
  10. #7
    Antoane

    Re : PPE servomoteur

    C'est pas possible : le timer, c'est en fait un compteur, un diviseur de fréquence. Tu le configures pour qu'il divise la fréquence d'horloge par un certain nombre n (sur flowcode, c'est des puissances de deux : 2,4,8...) ; et à une fréquence égale à , le programme appellera ta macro d'interruption (le 4 vient du fait qu'il faut 4 coups d'horloge pour exécuter une action, le 256... je sais plus, il me semble que c'est le prédiviseur, réglé d'office sur 2^8 par Flowcode)

    Si tu veux créer un signal de période 500µs, 100µs à l'état haut :
    - quartz de 20MHz,
    - pré-diviseur du timer0 (c'est le n) configuré à 1
    le timer déborde tous les 51µs
    Ton programme :
    avec var une variable, temps vaut ici : 100µs/51µs = 2 :

    var = var + 1
    Si var == temps_haut alors sortie = 0
    Si var == 10 alors sortie = 1 et var = 0

    PS : c'est sûr que c'est ici pas très précis, on gagnerait à ne pas utiliser 51µs, mais beaucoup moins, au prix de variables qui compteraient plus, et d'un interruption qui serait appelée plus souvent (rien de bien méchant).
    Dernière modification par Antoane ; 16/05/2010 à 14h54.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  11. #8
    moicham

    Re : PPE servomoteur

    merci pour l explication,
    J'ai compris la premiére partie mais pas totalement compris le programme.
    avec ton exemple: signal de 100µs et de periode 500µs
    si var= temps haut alors sortie =0
    temps haut doit être égale a 2
    Et le programme que tu m a énoncé doit se situer dans la interruption ?
    Dans le programme principal je ne dois mettre que l'interruption ?

  12. #9
    Antoane

    Re : PPE servomoteur

    Imagine que tu discutes tranquillement avec un amis en bas d'un immeuble. Tout d'un coup, un piano tombe du 3e étage, juste à votre verticale. Attendras-tu que M. ai fini sa phrase avant de réagir ?
    C'est ça une interruption : le programme se déroule tranquillement (dans la boucle principale) et quand un piano arrive, on appelle une macro d'interruption, qui va agir en conséquence (appeler un nouvel accordeur ou autre...)
    Ici, ton programme se déroule gentiment (gestion de moteur, de LCD, de boutons-poussoirs....), et à chaque débordement du TMR0, il appelle la macro d'interruption, dans laquelle tu mets le code que j'ai écris, qui sera fait une unique fois, tous les 51µs.
    Si tu le mets dans la boucle principale (entre les Tant que), var va être incrémentée de manière anarchique, regardless to the TMR0.


    PS : probablement la seule chose que j'ai retenu de BigOnOff.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  13. #10
    moicham

    Re : PPE servomoteur

    bonjour,
    J'ai essayé le programme que tu ma donné sur flowcode v4 qui possede un simulateur de servomoteur mais le servomoteur ne tourne pas.
    Dans mon programme principal je n'ai mis que l interruption.
    Faut il que je rajoute quelque chose ?

  14. #11
    Antoane

    Re : PPE servomoteur

    Sans voir le programme...
    http://forums.futura-sciences.com/el...-sabonner.html

    PS : essaye aussi de le compiler en C et de nous l'envoyer.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  15. #12
    moicham

    Re : PPE servomoteur

    voici le programme d'interruption:
    Images attachées Images attachées

  16. Publicité
  17. #13
    Antoane

    Re : PPE servomoteur

    De deux choses l'une :
    - ma voiture ne démare pas, peux-tu me dire d'où vient le problème ? en voici une photo pour t'aider. Tout ça pour dire que sans savoir comment tu as configuré l'interruption, sans voir la boucle principale...
    - Ya clairement un problème dans ton programme :
    Tu dois pas avoir compris le fonctionnement de l'interruption : à chaque débordement du timer (càd à des intervalles de temps précis), tu appelles un routine d'interruption, qui exécute un (cours) morceaau de programme. Le but, c'est de compter le nombre d'appels de cette routine, cartu saura alors exactement quel est le temps écoulé.
    Ce n'est pas ce que tu as fais : une fois qu'on est entré dans le programme d'interruption, on va y rester pour toujours, le timer ne servant absolument à rien (sauf peut-être à planter le programme).

    Le pictogramme d'interruption, que tu mets dans le programme principal correspond à l'autorisation de l'interruption, il doit donc être lû une seule fois par le micro-contrôleur, il doit alors être en dehors de la boucle infinie.

    Renseigne-toi sur les interruptions, sur ce que fait un timer,
    Ecrit un programme "basique" qui fait clignoter une led à une fréquence choisie à l'aide d'un timer,
    Puis reprend l'exemple que je t'ai donné, comprend-le, et gère ton servo-moteur.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  18. #14
    moicham

    Re : PPE servomoteur

    bonjour,
    J'ai réussi a faire clignoter une led avec une interruption.
    Je bloque sur la programmation du servomoteur.
    Faut il que j'utilise 2 interruption ?
    car je rencontre des problémes avec une seule interruption

  19. #15
    Antoane

    Re : PPE servomoteur

    Bonjour,
    poste ton programme, en flowcode et C.
    "car je rencontre des problémes avec une seule interruption " Quels problèmes ?
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  20. #16
    moicham

    Re : PPE servomoteur

    bonjour,
    J'ai fait ce programme mais il ne veut pas fonctionner, je n'arrive pas trouver l'erreur.
    _La fréquence d'interruption est de 30,518 HZ
    _Dans le programme d'interruption, int_a sert a compter le nombre d'interruption
    _Dans le programme principal; je met la variable a sur le port A
    Images attachées Images attachées

  21. #17
    Antoane

    Re : PPE servomoteur

    Bonsoir,
    je ne vois pas d'erreur. Dans les calculations, dans la macro d'interruption, il y a bien int_a = int_a +1 ?
    Si oui, c'est peut-être que le simulateur n'arrive pas à suivre la vitesse de fonctionnement (20MHz) demandée. Diminue le rapport de deivision du Timer ; ça devrait par contre bien marcher en vrai.


    PS : c'est une version demo de flowcode V4 ?
    PS2 : il est évident qu'on ne voit pas tout le programme (configuration des fusibles, de l'interruption...) "non sans raison avais-je" demandé le C
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

Sur le même thème :

Discussions similaires

  1. servomoteur sans servomoteur RC
    Par cedcestmoi dans le forum Électronique
    Réponses: 3
    Dernier message: 25/06/2013, 07h11
  2. servomoteur PPE
    Par spikeze dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 03/05/2010, 09h55
  3. Servomoteur ?
    Par nikko-electro dans le forum Électronique
    Réponses: 5
    Dernier message: 16/11/2009, 18h49
  4. PPE : branchement servomoteur
    Par commandantbasket dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 10/11/2009, 10h11
  5. PPE SI banc d'essai servomoteur
    Par HeRoS dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 07/01/2008, 14h23