Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
364 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  (embarqué) Traitement du signal, un moyenneur ne suffit plus, idées ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

(embarqué) Traitement du signal, un moyenneur ne suffit plus, idées ?

n°2088707
NazzTazz
Profil: d'aile
Posté le 11-07-2011 à 16:07:28  profilanswer
 

Plop les gens [:dawa]
 
Je bosse sur un projet perso (mi embarqué, mi pas-embarqué) et je me heurte à un petit souci de traitement (en C, mais on s'en branle, quoique j'ai des contraintes de RAM).
 
Je lis 6 tensions [0;5v] qui sont converties en interne par un CAN 10b, deux décalages et un masque plus tard, j'ai bien 6 octets refletant mes 6 tensions (potentiomètres linéaires, c'est une surface de controle).
 
Je fais en sorte que mon module hardware envoie au PC mes 6 données, uniquement lorsqu'elles changent (économie de charge sur la ligne usb et sur le proc du PC hote, qui recoit du coup moins de data).
 
C'est la que les choses deviennent fun. A certaines positions (elles sont nombreuses), mon CAN oscille entre deux valeurs de sortie, disons 0xAD et 0xAE, par conséquent j'envoie une floppée de données "pour rien", sans parler des inconvénients beaucoup plus gênants à l'utilisation (more on this later).
 
Fort de mes souvenirs de physique appliquée (théorie du signal, niveau "pour les nuls" ), j'ai commencé par mettre un tampon de 20 échantillons en mémoire, et à prendre la moyenne comme valeur finale: c'est vachement mieux, mais il reste quelques valeurs qui font que le CAN a le cul entre deux chaises.  
 
(en aparté) Le souci, c'est que le projet dans son ensemble, est une console numérique pour l'éclairage de spectacle, et dans certains cas, le changement inopiné d'une valeur va se traduire par un changement de comportement radical (je pense à certains projecteurs qui ont une fonction "stroboscope" sur le même canal de contrôle que l'intensité lumineuse, ambiance 0x00 -> 0xC9 = intensité, 0xD0 -> 0xFD = stroboscope (fréquence), 0xFF = power off).
 
Coté hard, mon uC embarqué a seulement 256 octets de ram, et j'aimerais autant éviter qu'il swap ram<>flash en permanence, tant pour sa durée de vie que pour la fréquence de rafraichissement des trames usb.
 
J'avais pensé envoyer les infos de changement de valeur uniquement quand la différence > 0x01, mais je perds du coup 1 bit de résolution, en pratique, et j'ai besoin de mes 256 valeurs différentes.
 
J'ai aussi pensé à mettre un tampon de 3 commandes pour chaque canal, et n'envoyer réellement la dernière commande que si elle n'annule pas la précédente.
(Si c'est pas clair:
 
|
| Sens de lecture du tampon de commandes
|
V
 
CH1:FA
CH1:FB
CH1:FA
 
On vide le tampon sans envoyer de donnée
 
CH1:FA
CH1:FB
CH1:FB
 
On envoie effectivement CH1:FB)
 
D'autres idées ? Un pattern pour ce type de problème ?
 
 
 
 
 
 
 
 
 
 
 


---------------
I'm smart enough to know that I'm dumb. - Livres d'occase
mood
Publicité
Posté le 11-07-2011 à 16:07:28  profilanswer
 

n°2088714
nraynaud
trainoo.com
Posté le 11-07-2011 à 16:16:29  profilanswer
 

heu réponse un peu conne : c'est pas un échantillonneur-bloqueur ?
 
et mettre un condensateur à l'entrée du CAN ?


---------------
trainoo.com, re-faisez du sport | Mes derniers entraînements
n°2088718
NazzTazz
Profil: d'aile
Posté le 11-07-2011 à 16:23:31  profilanswer
 

Elle est pas conne la question :D Si, y'a bien un e/b, mais je boucle tout ça 44x par seconde (minimum, c'est la norme..) L'oscillation a lieu entre les différentes lectures successives.

 

J'ai bien une capa de 1,5nF sur chaque entrée du CAN, je l'avais fait avant meme de moyenner mes valeurs sur 20 samples.


Message édité par NazzTazz le 11-07-2011 à 16:26:50

---------------
I'm smart enough to know that I'm dumb. - Livres d'occase
n°2088770
NazzTazz
Profil: d'aile
Posté le 11-07-2011 à 18:20:31  profilanswer
 

résolu.
 
Lam's m'a mis sur la piste (analyse du bruit et rejet des échantillons non significatifs), et j'ai grossi mes capas en entrée.


---------------
I'm smart enough to know that I'm dumb. - Livres d'occase
n°2088785
beel1
Posté le 11-07-2011 à 19:53:39  profilanswer
 

nraynaud a écrit :

heu réponse un peu conne : c'est pas un échantillonneur-bloqueur ?
 
et mettre un condensateur à l'entrée du CAN ?


Ca suffit pas, tous les ADC des µC ont minimum 1 bit de bruit.
Sur un CAN 10 bits, tu vires les 2 bits de poids faible, ça résout déjà pas mal de pbs :D
Bonus, tes mesures tiennent direct sur un octet :D


Message édité par beel1 le 11-07-2011 à 19:55:55

---------------
Pour les sportifs du dimanche, c'est ici que ça se passe : http://trainoo.com
n°2088786
beel1
Posté le 11-07-2011 à 19:55:08  profilanswer
 

Oups, je viens de relire : t'as 3 bits de bruit ? [:wam]
 
Tes alims sont bien filtrées ?


---------------
Pour les sportifs du dimanche, c'est ici que ça se passe : http://trainoo.com
n°2088838
NazzTazz
Profil: d'aile
Posté le 12-07-2011 à 02:29:15  profilanswer
 

beel1 a écrit :

Oups, je viens de relire : t'as 3 bits de bruit ? [:wam]
 
Tes alims sont bien filtrées ?


 
Ouais, 3 bits de bruit.
 
Niveau filtrage c'est léger (c'est pas mon alim de prod, en plus).
 
J'ai découplé au mieux (100n au plus près de tous mes chips)... Ce qui fout la merde, c'est probablement les faders motorisés.
 
En gros, théoriquement j'ai dans l'ordre: une alim à découpage 12v 5a, qui feed un 317T (autour de 8.5v pour mes ponts H) et un 7805 pour mes uCs.
Actuellement pour dev, c'est plutot un bloc "chargeur pc portable" qui donne 2a sous 14v qui feed mes deux régulateurs. J'ai pas d'oscillo sous la main mais je suis convaincu que ma tension tremblotte quand les faders bougent.
 
En entrée des CAN je suis passé de 1,5n à 250n, ca aide bien, aussi.


---------------
I'm smart enough to know that I'm dumb. - Livres d'occase

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  (embarqué) Traitement du signal, un moyenneur ne suffit plus, idées ?

 

Sujets relatifs
[C#] Traitement de checkbox ou textbox en boucleProgramme de traitement image PGM binaire (tableau2D)
Transformer un signal 1D sous forme matricielle !Scheme - Traitement chaîne caractères
Traitement de fichiers .xmlTraitement d'une variable tableau
[C] Traitement d'une trame GPSPetit traitement de texte personalisé
[C++] Traitement d'image par pixel (bits)Traitement de fichier automatisé
Plus de sujets relatifs à : (embarqué) Traitement du signal, un moyenneur ne suffit plus, idées ?


Hit-Parade
Copyright © 1997-2012 Hardware.fr SARL / Groupe LDLC / LesNumeriques.com / Version anglaise du site: BeHardware