IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Embarqué Discussion :

Filtre RC par simulation numérique dans le microcontrôleur


Sujet :

Embarqué

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Filtre RC par simulation numérique dans le microcontrôleur
    Bonjour à tous
    Je cherche à réaliser un filtre RC par simulation numérique dans le microcontrôleur
    avec une tension d’alimentation : 3V
    Microcontrôleur : PIC10F220 (Microchip)
    Anémomètre : sortie en tension analogique proportionnelle à l’échelle Beaufort avec 0V correspondant à 0 Beaufort, 3V correspondant à 9 Beaufort (on n’affichera pas les valeurs supérieures à 9 Beaufort)
    Interface vers le module LCD :SPI (SPIdatas et SPI clk)
    Consommation minimale
    Vitesse du vent codée sur 8 bits

    Je pensais trouver de l'aide ici car je n'ai quasiment aucune idée et aucune notion de comment le programmer en langage assembleur.
    La configuration du PIC10f220 je les retrouver sur le net mai je n’ai pas trouvé d'exemple sur comment coder un filtre RC en langage ASM.
    C’est la raison pour laquelle je viens demander votre aide et vos connaissances. Tout idées est la bienvenues!

    Je vous remercie par avance et meilleures salutations!!

  2. #2
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    Décembre 2010
    Messages
    14 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14 939
    Points : 23 253
    Points
    23 253
    Billets dans le blog
    10
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    merci JML19

    mais cela ne m'aide pas sur comment programmer un filtre RC numérique

  4. #4
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    Décembre 2010
    Messages
    14 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14 939
    Points : 23 253
    Points
    23 253
    Billets dans le blog
    10
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  5. #5
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Tu as regardé des outils tout fait pour faire des filtres numériques ?
    Exemple : http://t-filter.appspot.com/fir/index.html

    Tu peux configurer ton filtre et générer le code C qui va avec.

    Quelques remarques :
    Pourquoi faire un filtre numérique ? Faire une moyenne ne suffit pas ? Le signal est fortement bruité ou perturbé ?
    Pourquoi faire ça en assembleur ? Les compilateurs d'aujourd'hui sont très optimisés et fournissent des résultats comparables à ce que tu pourrais faire toi même en assembleur.
    Ton PIC est très limite pour ce genre d'application (même si le nombre d'I/O semble suffisant), tu n'as que 256 octets de Flash et 16 octet de RAM pour gérer l'échantillonnage de l'ADC/les phrases pour l'affichage/le SPI et les éventuels traitements ou calculs. Tu as intérêt de ne pas trop imbriquer de fonction car tu auras rapidement un débordement de pile ! De plus, tu vas devoir gérer la communication SPI logiciellement car ce PIC n'a pas ce périphérique d'intégré. Il va falloir ruser !
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Au fait je souhaite réaliser un dispositif électronique qui mesure la vitesse du vent en Beaufort. La définition de l’échelle Beaufort nécessite le calcul d’une moyenne sur une durée de 10 minutes. On choisit d’effectuer ceci en utilisant le principe suivant (moyenne avec oubli) circuit RC)
    Pour des raisons économiques et d’encombrement, on choisit de réaliser le filtre RC par simulation numérique dans le microcontrôleur. et mon probleme c'est le codage d'un filtre RC numérique en assembleur , je ne sais vraiment pas par ou commencer .J'ai bien assimilé les cours de Traitement du signal avec filtre RC passif mais malheureusement je ne sais pas comment le programmer en assembleur.

  7. #7
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Citation Envoyé par thierrytf Voir le message
    offet je souhaite réaliser un dispositif électronique qui mesure la vitesse du vent en Beaufort. La définition de l’échelle Beaufort nécessite le calcul d’une moyenne sur une durée de 10 minutes. On choisit d’effectuer ceci en utilisant le principe suivant (moyenne avec oubli) circuit RC)
    Pour des raisons économiques et d’encombrement, on choisit de réaliser le filtre RC par simulation numérique dans le microcontrôleur. est mon probleme c'est le codage d'un filtre RC numerique en assembleur , je ne sait vraiment pas par ou commencer .J'ai bien assimilé les cours de Traitement du signal avec filtre RC passif mais malheureusement je ne sait pas comment le programmer en assembleur
    J'ai un peu de mal à te comprendre.
    Un filtre RC est un filtre passe bas du premier ordre et je ne comprends pas du tout ce qu'il a à voir là dedans ?

    Un filtre RC va commencer à filtrer, donc à atténuer le signal, à sa fréquence de coupure = 1/(2 x Pi x R x C).
    Imaginons que tu as R = 1k et C = 1µF alors Fc = 1 / (2 x 3.14 x 1000ohms x 0.000001F) = 160 Hz en arrondissant
    Ce qui veut dire que si ton capteur oscille avec des valeurs de sorties comprises entre 0V et 3V "très vite, c'est à dire plus vite que 160 Hz", alors le RC va commencer à atténuer les tensions au delà de 160 Hz. Par exemple une variation très rapide de 0V à 3.3V va être atténuer en 0V à 2V et plus ça sera rapide et plus ça sera atténuée jusque 0V tout court pour des variations hyper rapide !!!

    Toute fois, je ne comprends toujours pas pourquoi mettre un filtre RC numérique ou pas entre le capteur et le micro ? Le signal du capteur vari très rapidement ?
    Ce que je veux te dire c'est que si le signal de sortie varie lentement par rapport à la fréquence de coupure du filtre RC alors ce filtre ne servira à rien et tu retrouvera simplement en sortie du filtre la valeur qu'il y a à son entrée.

    Si ton but est de faire une moyenne alors il faut simplement que l'ADC du PIC lise le capteur toutes les minutes et que arrivé a 10 minutes il fasse la somme de toutes les valeurs lues puis il les divise par le nombre de valeur, donc 10 (le nombre de fois ou il a lu l'ADC). C'est la moyenne arithmétique.


    Ca m'intrigue ton histoire
    C'est pas plutôt une moyenne glissante (ou moyenne mobile) que tu souhaites faire ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Nom : image.png
Affichages : 1478
Taille : 16,7 Ko

    oui c'est juste sa mai avec aussi codée une communication SPI

  9. #9
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    La tu as un filtre passe bas qui va nettoyer les perturbations supérieures à la frequence de coupure du filtre RC.

    Peux tu m'en dire plus sur ce qui sort de l'anemometre ? Une courbe ? Des infos genre tension mini maxi, fréquence ou évolution dans le temps etc...
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    j'ai un exemple mais en c programmation mais avec un autre Pic est sans SPI J'aimerais bien avoir ça en assembleur et communication SPI

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Vincent PETIT Voir le message
    La tu as un filtre passe bas qui va nettoyer les perturbations supérieures à la frequence de coupure du filtre RC.

    Peux tu m'en dire plus sur ce qui sort de l'anemometre ? Une courbe ? Des infos genre tension mini maxi, fréquence ou évolution dans le temps etc...
    Fichiers attachés Fichiers attachés

  12. #12
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Salut,
    J'ai regardé ton programme et je ne vois pas du tout où il y a un calcul de moyenne glissante !?
    De plus, est ce que ce programme est fonctionnel ? J'ai un doute !

    Peu importe, je résume ce que tu souhaites :
    Tu souhaites faire une moyenne glissante sur les données issues de l'anémomètre pour en sortir une tendance.

    Je suppose que comme tu parles de filtre RC, tu fais référence en réalité à une moyenne glissante exponentielle car en effet la réponse impulsionnelle d'une telle moyenne ressemble à celle d'un filtre RC et avec les mêmes contraintes de déphasage de fréquence.

    J'ai pris le temps de faire ça :Nom : MME.JPG
Affichages : 1558
Taille : 151,0 Ko
    Fichier a télécharger pour faire des essais => MME.xls

    - La courbe bleue, c'est les valeurs que lit l'ADC du PIC.
    - En rouge ceux sont les valeurs après moyenne glissante exponentielle.
    - Tu as la formule que j'ai utilisé.

    Si tu regardes la courbe rouge, on voit bien que c'est une atténuation des variations rapides de la courbe bleue (comme le ferait un filtre passe bas) et ça te donne une tendance du vent en atténuant toutes les bourrasques qui pourrait fortement gêner une analyse. Tu peux t'amuser avec le nombre de période, dans le tableau Excel, tu pourras voir que plus la valeur que tu entreras sera grande et plus la courbe rouge sera lisse. A contrario plus le nombre de période est faible et plus la courbe rouge ressemblera à la bleue (en faisant un test avec 1, les deux courbes sont confondues) à toi de voir ce qui est le plus pertinent comme valeur.

    C'est bien ça que tu veux embarqué dans ton PIC10F ?

    Pourquoi vouloir faire ça en assembleur ? La dernière fois que j'ai programmé en assembleur PIC c'était il y à plus de 14 ans... Pourquoi ne le fais tu pas en C ?

    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    C'est bien ça que tu veux embarqué dans ton PIC10F ?

    Pourquoi vouloir faire ça en assembleur ? La dernière fois que j'ai programmé en assembleur PIC c'était il y à plus de 14 ans... Pourquoi ne le fais tu pas en C ?

    A+[/QUOTE]

    En assembleur car c'est la consigne demander
    Mai es ce que avec ce PIC10F220 tu réussiras à programmer en C? Car le ce pic a une très faible mémoire

  14. #14
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Salut Thierry,
    Écoute, ne prend pas mal ce que je vais écrire mais si je le fais pour toi ça ne ça pas t'aider mais alors pas du tout ! Je suis entrain de faire tes devoirs et ça c'est nul car le jour où tu sera seul devant un problème du même genre et bien tu ne sera pas le faire. Tout simplement car tu n'aura pas acquis la gymnastique d'esprit nécessaire.

    J'estime qu'à partir d'ici tu as toutes les billes en main pour faire ce qu'on te demande.

    Tu connais l'équation de la moyenne mobile exponentielle.

    Il ne te reste plus qu'à configurer ton Pic pour qu'il acquière des données de l'ADC de manière régulière (à chaque fois que le timer déborde) ensuite une fois qu'un panel d'échantillon est rempli tu applique la formule que je t'ai donné sous Excel et tu recommences.

    Pour ta communication SPI c'est juste une lecture de la datasheet.

    Bon courage !
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/09/2010, 16h05
  2. Réponses: 6
    Dernier message: 06/01/2010, 14h48
  3. Réponses: 5
    Dernier message: 03/07/2009, 19h36
  4. Réponses: 2
    Dernier message: 22/07/2008, 17h01
  5. Réponses: 3
    Dernier message: 12/09/2006, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo