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

Demande d'aide sur détection d'un signal avec un µC



  1. #1
    ElectronPiege

    Demande d'aide sur détection d'un signal avec un µC

    Bonjour,

    Pour en revenir à mon précédent sujet concernant les interruptions que j'ai maintenant compris, voici une autre question.
    Le but de mon "projet" et de détecter la présence d'un signal MLI et d'activer un relais tant que le signal est présent. Je me suis donc amusé avec des timers et des interruptions mais je suis à cours d'idées... en fait je ne sais pas comment m'y prendre !

    J'ai mis en pièce jointe un chronogramme qui image ma demande.

    En entrée, j'ai le signal du haut. Une MLI qui est d'abord au repos (cela peut durer des heures) puis d'un coup la MLI se réveil. Là il faut que j'enclenche le relais le plus tôt possible. Ensuite la MLI stagne à +5V... puis au bout d'un certain temps le rapport cyclique diminue pour atteindre 0V. Là il faut que je désactive mon relais quand le signal atteint les 0V. Si j'utilise un µC c'est pour pouvoir rajouter des retards sur l'activation et ou l'activation du relais et d'autres fonctions.

    Le but est d'avoir le chronogramme en deuxième position (celui du dessous).

    J'ai commencé par utiliser une interruption, compter le nombre d’impulsions en entrée pour détecter le début de la MLI puis arrivé à 10 j'active le relais. J'ai même utilisé un timer pour remettre à zéro la variable d'interruption toutes les secondes pour supprimer les parasites qui pourraient arriver. Bref cela fonctionne pas vraiment.

    La MLI est à 100Hz.

    Avez-vous des idées ?

    Merci

    -----

    Images attachées Images attachées
    Dernière modification par ElectronPiege ; 29/11/2014 à 21h29.

  2. Publicité
  3. #2
    extremgear

    Re : Demande d'aide sur détection d'un signal avec un µC

    Montre nous ton programme .

  4. #3
    ElectronPiege

    Re : Demande d'aide sur détection d'un signal avec un µC

    J'ai rien sauvegardé puisque ce ne sont que des essais qui n'ont servis à rien et je n'ai pas d'idées...

  5. #4
    48Didou60

    Re : Demande d'aide sur détection d'un signal avec un µC

    Un truc comme ça ne devrait pas être trop mal :
    Je t'ai mis 2 timer pour une bonne compréhension mais en réalité, tu en as besoin que d'1 seul.

    Routine d'interruption sur front montant :
    initialiser timer2
    lancer timer2
    signal_valide = 1
    TANT QUE (timer2 < temps_de_filtrage) // on regarde si il ne s'agit pas d'un parasite
    SI (ITR0 == 0) // si l'entrée est à 0, le temps à l'état haut a été trop court
    signal_valide = 0 // donc il s'agit d'un parasite et on ne prend pas en compte cette activation
    FIN SI
    FIN TANT QUE

    SI (signal_valide == 1)
    initialiser à 0 le timer1
    lancer le timer1
    FIN SI


    Programme principale :
    SI (le timer1 > période de 100Hz & etat_relais==1)
    relais = 0
    etat_relais =0
    SINON SI (le timer1 < période de 100Hz & etat_relais==0)
    relais = 1
    etat_relais = 1
    FIN SI

  6. #5
    ElectronPiege

    Re : Demande d'aide sur détection d'un signal avec un µC

    Merci 48DIDOU60, je vais essayer cette méthode.

    Pour configurer mon timer, il faut que je calcule le temps à l'état haut minimum que je souhaite détecter. Si je pars sur un état haut à 10% ce devrait être pas mal et suffisamment rapide pour déclencher le relais le plus tôt possible.
    Donc je dois détecter un front montant de 1 ms.
    Dernière modification par ElectronPiege ; 30/11/2014 à 13h20.

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

    Re : Demande d'aide sur détection d'un signal avec un µC

    Bonjour,
    Le chronogramme est impossible car fondamentalement la fonction recherchée est identique à un monostable retriggerable, donc si la détection du premier pulse de MLI est immédiate celle de la disparition ne pourra se faire qu’après un temps correspondant au cycle de répétition max de la MLI.
    En clair si MLI à 10Hz alors l'inactivation du relais se produira au mieux 100ms après le dernier pulse actif.
    En clair cette fonction est réalisable au moyen d'une entrée sensible sur front (INTx sur AVR) déclenchant une interruption et une bête boucle de timing en tache de fond.
    JR
    l'électronique c'est pas du vaudou!

  9. Publicité
  10. #7
    ElectronPiege

    Re : Demande d'aide sur détection d'un signal avec un µC

    Salut Jiherve,

    Aucun soucis pour le temps de retard à la désactivation du relais. Là je suis à 100 Hz donc 10 ms. Cela ne se verra pas dans la réalité, et justement si je veux utiliser un µC c'est pour pouvoir retarder la désactivation du relais (ou l'activation ou les 2).

  11. #8
    bobflux

    Re : Demande d'aide sur détection d'un signal avec un µC

    Filtrage analogique + comparateur.

    Sinon, le même en numérique :

    Timer en mode capture et interruption sur chaque flanc du signal entrant. L'interruption mesure le temps écoulé depuis la dernière. On a donc le temps de l'état haut et de l'état bas dans chaque période.

    Option 1 : pas de filtrage

    On compare directement dans l'interruption le temps à l'état haut avec des seuils, et hop.

    Option 2 : filtrage basique

    On compare dans l'interruption le temps à l'état haut avec un seuil. Si supérieur on incrémente un compteur, si inférieur on le décrémente. La valeur du compteur à un instant donné sert à prendre une décision.

    Par exemple si on décide que 4 cycles supérieurs à 10% ça veut dire que c'est en marche, alors on borne le compteur entre 0 et 4 pour pas l'incrémenter infiniment, et puis après 4 cycles >10% le compteur vaut 4 donc on est en marche, quand ça s'arrête, après 4 cycles à 0% il redescend de 4 à 0, quand il attein 0 on sait qu'on est arrêté. Note qu'il y a un hystérésis au changement d'état.

    Option 3 : IIR

    A chaque interruption on fait : filtre = filtre*alpha + Ton - Toff

    alpha = 0.9 par exemple, on a donc un filtre passe bas FIR ultra basique qui donne un moyennage analogique du signal.

    On peut faire une moyenne glissante aussi, il faut 1 octet de mémoire par période, donc sur du 100Hz n'importe quel micro pourra te faire une moyenne sur quelques secondes si tu as besoin...

  12. #9
    jiherve

    Re : Demande d'aide sur détection d'un signal avec un µC

    Re
    si le signal MLI est propre la solution que j'ai proposée est simple à mettre en oeuvre:
    une routine de délais exécutée de façon cyclique (si elle se termine) en tache de fond et une routine d'interruption qui réinitialise les registres utilisés pour le délais.
    Si le signal MLI est cradingue il faudra un petit confirmateur en plus.
    Quel µC?
    si c'est un Atmel je peux t’écrire un bout de code.
    JR
    l'électronique c'est pas du vaudou!

  13. #10
    ElectronPiege

    Re : Demande d'aide sur détection d'un signal avec un µC

    Hé bien !
    Justement hier j'ai lus quelques articles sur les filtres numériques IIR.
    Le signal est vraiment propre, un jolis 100,00Hz mesuré au scope numérique, maintenant il se peut que de temps en temps il y'es un pique de tension. J'ai prévu un bon filtrage de l'alim avec des perles de ferrite et diodes TVS.

    J'utilise un micro contrôleur Attiny85. Pour l'interruption j'ai utilisé la broche INT0 (PIN 2).

    Serait-il mieux d'utiliser un quartz plutôt que l'oscillateur RC interne ? Sachant qu'on utilise le timer...

    Le filtrage analogique + comparateur j'ai déjà fais, mais j'aime moins car moins de souplesse qu'avec un µC.

    Pour le filtrage basique, j'avais fais un truc similaire mais en comptant les interruptions. Et mon timer 1 remettait à zéro ma variable de comptage toutes les secondes. Quand j'arrivais à 10, c'était OK.

  14. #11
    jiherve

    Re : Demande d'aide sur détection d'un signal avec un µC

    Re
    Vu l'usage l'oscillateur interne sera suffisant.
    J'ai un code utilisable tournant sur Attiny 45 voir ce fil :http://forums.futura-sciences.com/el...ateur-ppm.html
    la routine delay et son usage en liaison avec INT0.
    JR
    l'électronique c'est pas du vaudou!

  15. #12
    ElectronPiege

    Re : Demande d'aide sur détection d'un signal avec un µC

    Je ne parle malheureusement pas l'assembleur, ça remonte à trop loin. Je vais essayer d'écrire le code mais ca ne sera pas avant vendredi car demain je pars sur paris la semaine pour mon recyclage ipc-a-610.
    A moins que le soir à l’hôtel je sois motivé ^^

  16. Publicité
  17. #13
    ElectronPiege

    Re : Demande d'aide sur détection d'un signal avec un µC

    Je suis revenu !
    Comme ca je vais pouvoir attaquer ce projet

Sur le même thème :

Discussions similaires

  1. [aide]Branchement avec détection ?
    Par saphir351 dans le forum Électronique
    Réponses: 13
    Dernier message: 11/02/2013, 14h52
  2. que faire avec une licence en traitement et detection de signal physique
    Par physicien007 dans le forum Orientation après le BAC
    Réponses: 2
    Dernier message: 25/01/2009, 14h40
  3. détection signal par PLL
    Par gcortex dans le forum Électronique
    Réponses: 6
    Dernier message: 28/05/2008, 16h33
  4. Demande de signal avec 2 bascules D !
    Par alexis57 dans le forum Électronique
    Réponses: 3
    Dernier message: 07/10/2006, 20h11
  5. Demande aide pb avec ma TV
    Par jejom dans le forum Dépannage
    Réponses: 3
    Dernier message: 07/07/2006, 17h36