Question:
Suppression du bruit numérique dans le logiciel
jeremy
2010-05-06 16:27:57 UTC
view on stackexchange narkive permalink

J'ai une conception qui attend une onde carrée de niveau TTL d'un récepteur radio qui est introduit dans un microcontrôleur. Il y a du bruit de niveau TTL car aucun codage n'est effectué à l'extrémité de transmission. Je me demandais si quelqu'un avait des conseils sur la façon dont vous pourriez réduire le bruit dans les logiciels? (Je comprends qu'il existe un certain nombre de solutions matérielles, mais je suis plus intéressé par l'apprentissage) Je ne cherche personne pour résoudre mon problème à ma place, juste pour quelques conseils.

Les noms / articles / sujets seraient être génial!

Lorsque vous dites «bruit de niveau TTL», voulez-vous dire que le signal reste bien en dehors de la zone interdite TTL, qu'il bascule de manière inattendue? Si tel est le cas, s'agit-il de pointes isolées ou de rebond de commutateur? Ou le signal passe-t-il du temps entre 0,8 et 2,4? La solution dépendra du type de bruit.
Je parle de pointes isolées de 0-5V et retour qui se produisent au hasard mais potentiellement assez souvent (jusqu'à 25% du signal)
Vous vous attendez donc à une onde carrée pure, mais il y a aussi des problèmes dans le signal qui sont beaucoup plus courts que la période prévue de l'onde carrée?
c'est correct
Cinq réponses:
#1
+8
ajs410
2010-05-07 20:49:32 UTC
view on stackexchange narkive permalink

D'après votre dernier commentaire, je suggérerais de suréchantillonner l'entrée. Enregistrez plusieurs échantillons consécutifs, puis votre sortie devrait être celle de la majorité des échantillons enregistrés.

Par exemple, disons que vous enregistrez 10 échantillons. Si vous obtenez un pic de bruit, seuls un ou deux des échantillons seront corrompus, alors que la majorité d'entre eux ont la valeur correcte. Si vous obtenez des données réelles, les 1 finiront par être plus nombreux que les 0 et la sortie changera.

#2
+6
Kortuk
2010-05-06 16:55:10 UTC
view on stackexchange narkive permalink

Il existe de nombreuses façons de travailler avec le bruit dans les logiciels, et elles deviennent de plus en plus efficaces à implémenter dans des logiciels plutôt que dans du matériel, ce qui réduit le coût du système.

Au lieu d'essayer de l'expliquer moi-même, je Je vais vous céder la parole à Jack Ganssle, un consultant en systèmes embarqués dont j'ai grandi en lisant les articles de.

Il a une liste de ses articles en ligne, le premier que je voudrais que vous parliez concerne le bruit analogique dans les systèmes embarqués. Le deuxième article auquel je dois vous connecter concerne l’utilisation d’un logiciel pour réduire le bruit dans votre système.

Je suggère également son article sur le lissage des entrées numériques et systèmes d'auto-étalonnage. Après avoir passé du temps à travailler avec des systèmes embarqués, j'ai repris certaines de ces informations à partir de mes propres erreurs, mais j'ai vraiment aimé lire ses façons de penser. Le système d'auto-étalonnage était très évident pour moi, mais la façon dont il suggérait de s'y prendre était précieuse pour moi. Vous n'avez peut-être pas besoin de ces informations, mais ses articles m'ont aidé.

#3
+5
pingswept
2010-05-06 17:13:40 UTC
view on stackexchange narkive permalink

J'ai trouvé que Digital Signal Processing and the Microcontroller by Grover and Deller est le seul livre sur les filtres que je puisse comprendre. Malheureusement, il est difficile de trouver un bon marché.

http://www.google.com/books?id=GzVmQgAACAAJ

Je vais voir si je peux obtenir une copie de bureau, les critiques semblent bonnes!
Pas très pertinent pour la question originale IMHO.OTOH, vous voudrez peut-être essayer http://dspguide.com/. Il est disponible en téléchargement gratuit en PDF mais j'en possède fièrement une copie. C'est vraiment génial pour apprendre le DSP.
#4
+4
JustJeff
2010-06-02 08:29:25 UTC
view on stackexchange narkive permalink

Votre logiciel interroge-t-il cette entrée ou utilisez-vous un schéma d'interruption pour la traiter?

Si vous interrogez, vous lisez probablement l'entrée à un taux beaucoup plus élevé que les changements attendus dans le signal. Si le bruit est bien séparé, des pics de très haute fréquence, ceux-ci ressembleront alors à des échantillons isolés de polarité «incorrecte». Vous pouvez atténuer cela en conservant les N échantillons les plus récents et en décidant de lire l'entrée selon la polarité la plus majoritaire. Par exemple, si N = 5, alors si vous avez 3, 4 ou 5 bits '1', votre entrée est un '1'; si vous avez 0, 1 ou 2 bits «1», votre entrée est un «0». C'est en fait juste une sorte de filtre passe-bas dans le logiciel.

Si vous utilisez l'entrée pour déclencher des interruptions en cas de changement (les deux fronts), vous pouvez demander à la routine d'interruption (ISR) de démarrer une minuterie pour provoquer une seconde interruption peu de temps après, mais plus longue que le temps de pic de bruit. Plutôt que de faire accumuler directement les bits de signal par la broche d'entrée ISR, vous demandez au temporisateur ISR de le faire. Par exemple, si le signal est faible et qu'un pic élevé survient, le front montant démarre la minuterie, mais avant l'expiration du compte de la minuterie, le front descendant de la pointe le réinitialise, donc lorsque l'interruption de la minuterie se déclenche enfin, vous regardez le signal, pas le bruit. Le signal, par contre, déclenchera la minuterie une seule fois, et la minuterie ISR pourra saisir le nouveau niveau de signal.

De ces deux, Interrogé vs Interruption, personnellement, j'irais pour l'approche interrogée, les interruptions b / c (1) sont simplement plus compliquées, et (2) une paire de pointes placées pathologiquement pourrait encore vous donner une fausse entrée.

#5
  0
Leon Heller
2010-05-06 19:15:02 UTC
view on stackexchange narkive permalink

Peut-être que le "bruit" est un problème causé par le manque d'encodage. Les émetteurs et récepteurs simples nécessitent NRZ - le code Manchester est souvent utilisé.

Je suis certain que ces émetteurs n'utilisent aucun mécanisme d'encodage et je ne suis pas en mesure de modifier l'émetteur, d'où mon problème.
Vous devez alors ajouter un codage si NRZ est requis.
malheureusement, je ne peux rien ajouter ou modifier quoi que ce soit à la fin de la transmission, il n'y a donc aucun moyen d'ajouter du codage
Vous encodez les données avant qu'elles ne soient entrées dans l'émetteur.
Il a précisé qu'il ne pouvait pas changer la façon dont la transmission était faite, je pense que cela implique que Penjuin ne peut pas changer les données qui lui sont envoyées.
L'encodage ne supprimera pas les pointes et Penjuin aura toujours des problèmes pour distinguer son signal du bruit. Un bon algorithme de décodage aidera, mais cela est vrai pour tous les types d'encodage.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 2.0 sous laquelle il est distribué.
Loading...