Contexte: Nous avons un système embarqué qui convertit les positions linéaires (0 mm - 40 mm) d'une tension potentiomètre à sa valeur numérique à l'aide d'un convertisseur analogique / numérique de 10 bits. Nous montrons à l'utilisateur la position linéaire par incréments de 1 mm. Ex. 1mm, 2mm, 3mm, etc. Le problème: Notre système peut être utilisé dans des environnements électromagnétiquement bruyants qui peuvent provoquer le clignotement de la position linéaire en raison du bruit entrant dans le CAN. Par exemple, nous verrons des valeurs telles que: 39,40,39,40,39,38,40 etc. lorsque le potentiomètre est à 39 mm. Comme nous arrondissons à 1 mm, nous voyons flicker entre 1 et 2 si la valeur bascule entre 1,4 et 1,6 mm par exemple. Solution de logiciel proposée: En supposant que nous ne pouvons pas changer le matériel, je voudrais ajouter une certaine hystérésis à l'arrondissement des valeurs pour éviter ce scintillement. De sorte que: Si la valeur est actuellement à 1mm, elle ne peut aller à 2mm iff la valeur brute est de 1,8 ou plus. De même, si la valeur courante est de 1 mm, elle ne peut aller qu'à 0 mm si la valeur brute est égale ou inférieure à 0,2. J'ai écrit l'application simple suivante pour tester ma solution. S'il vous plaît laissez-moi savoir si je suis sur la bonne voie, ou si vous avez des conseils. J'ai eu à faire face à quelque chose de similaire il ya quelque temps où je devais lire la tension de sortie d'un circuit et d'afficher un graphique sur un écran d'ordinateur. La ligne du bas est, cela dépend vraiment de vos exigences de système. Si l'exigence est 1mm d'exactitude alors il n'y a rien que vous pourriez vraiment faire. Sinon, comme mentionné ci-dessus, vous pourriez aller avec plusieurs méthodes qui peuvent vous aider à réduire le scintillement. Vous pouvez: Calculer la moyenne de ces valeurs sur une certaine période de temps que l'utilisateur peut configurer. Permet à l'utilisateur de définir un seuil de sensibilité. Ce seuil peut être utilisé pour décider de la météo pour considérer la nouvelle valeur comme valide ou non. Dans votre exemple, le seuil peut être réglé à 2 mm, auquel cas des valeurs telles que 39, 40, 39, 38 seraient 39 comme 39 mm. Aussi, avez-vous pensé à mettre un stabilisateur externe entre votre application et le matériel lui-même 21:50 Merci pour le discernement. Pouvez-vous développer sur ce stabilisateur externe. Ndash Ryan R May 1 12 at 22:07 Votre réponse 2017 Stack Exchange, IncHi Tout ce que je travaille sur un projet où je dois calculer la moyenne mobile des lectures ADC. Les données provenant de l'ADC représentent une onde sinusoïdale. C'est le code que j'utilise pour obtenir la moyenne mobile d'un signal donné. Pour ce qui est de la limite supérieure et de la limite inférieure de la référence (ou avgA), j'utilise actuellement une valeur constante pour obtenir la limite supérieure et la limite inférieure de tension pour mon application que je calcule comme suit upperlimit avgA Delta (x) lowerlimit AvgA - Delta (x) Dans mon cas, je prends Delta (x) 15. Je veux calculer cette expression constante ou Delta (x) en fonction de la force du signal. Le niveau de tension maximum du signal est de 255 ou 5Volt. Le niveau de tension minimum du signal varie fréquemment car une valeur constante n'est pas utile pour mon application qui détermine la limite inférieure et la limite supérieure. Si la sortie ADC est de 10 bits, utiliser uniquement les 8 bits inférieurs ne fera pas ce que vous voulez. Si vous voulez une moyenne de 8 bits, masquez les 6 bits supérieurs (ET avec 0xFC00) puis basculez par 2. Et le masquage des 8 bits supérieurs en décalant vers le haut puis vers le bas est à la fois plus lent que les données avec 0xFF00, il est également Pas portable, puisque faire cela sur un système 32 bits ne fera absolument rien. Ndash Erik Johnson Oct 26 15 at 19:45 Maintenant, avec la description de ce qui se passe, je pense que vous voulez trois moyennes courantes: Le signal d'entrée. Légèrement la moyenne pour aider à tasser le bruit. Upperlimit Lorsque vous déterminez les maximums locaux, poussez-les dans cette moyenne. Lowerlimit Lorsque vous déterminez les minimums locaux, poussez-les dans cette moyenne. Votre delta serait (upperlimit-lowerlimit) 8 (ou 4, ou autre). Vos points d 'hystérésis seraient delta - delta et delta delta. Chaque fois que vous passez à 1, poussez le minimum local actuel dans la moyenne mobile de la limite inférieure, puis commencez à rechercher un nouveau maximum local. Lorsque vous passez à 0, poussez le maximum local dans la moyenne mobile de limite supérieure et commencez à chercher un nouveau minimum local. Il y a un problème si la puissance du signal varie énormément (vous pourriez arriver à un point où votre signal tombe brusquement dans la bande d'hystérésis et vous n'obtenez plus de transitions). Vous pourriez résoudre ceci quelques manières: Comptez combien de temps vous passez dans la bande d'hystérésis et réinitialisez tout si vous passez trop de temps. Pour chaque échantillon dans la bande d'hystérésis, rapprochez légèrement la limite supérieure et la limite inférieure. Finalement, ils s'effondrent au point où vous commencez à détecter les transitions à nouveau. Prenez ceci avec un grain de sel. Si vous faites cela pour un projet scolaire, il ne correspondra presque certainement pas à la méthode scientifique que votre professeur recherche. J'ai implémenté cette fonctionnalité sur mon système. Il fonctionne bien maintenant. Mais, maintenant je suis en courant dans un autre problème. Je veux verrouiller la valeur de Delta. Comme mon système dépend du mouvement du robinet par rapport au capteur optique. Lorsque le robinet déplace la moyenne du signal commence soit à partir de la valeur maximale (255). Valeur minimale (0) ou entre ces valeurs en fonction de la position du robinet. Comme ma valeur de repos système de Delta (x) devient 0. ndash Kunal Sonone Oct 30 15 at 20:31 Maintenant, si je dois détecter les trous et taper d'abord, je dois courir le robinet pendant quelques secondes et puis je peux commencer à obtenir 139s et 039s (trou ou robinet). Dans ce cas, mon système n'est pas fiable et je n'ai besoin de déplacer toucher tout le temps avant qu'il me donne les bons résultats. Maintenant, j'essaie d'enregistrer la valeur de Delta lorsque le système est en cours d'exécution et puis une fois qu'il a redémarré Je veux utiliser les valeurs précédentes de Delta, donc je don39t besoin de déplacer le robinet de nouveau pour faire t de travail. J'essaie dur de deux derniers jours, mais toujours pas capable de comprendre la solution. S'il vous plaît conseil ndash Kunal Sonone Oct 30 15 à 20: 38Application de l'hystérésis aux moyennes mobiles rejoindre la bande Appliquer cette méthode pour déplacer les crossovers moyens pour se débarrasser du retard et les faux signaux. L'un des premiers indicateurs que toute étude technique sur les novices est le croisement moyen. Les moyennes mobiles (LM) lissent une série de prix en déterminant le cours de clôture moyen pour une période déterminée (les dernières n barres) et, par conséquent, sont des indicateurs en retard, plus adaptés aux marchés tendanciers plutôt qu'à ceux à distance. Si deux MA de périodes différentes sont utilisées ensemble, un simple système de négociation peut être construit autour d'elle facilement. Chaque fois que la moyenne mobile plus courte (plus rapide) traverse la plus longue (plus lente), un signal d'achat est généré, un signal de vente est produit lorsque la moyenne plus rapide passe au-dessous de la plus lente. Comme n'importe quel analyste technique sait, ces croisements sont sujettes à des whipsaws le prix se déplace juste assez dans une direction pour déclencher un signal, puis change rapidement de direction, déclenchant un signal opposé. Cela provoque des entrées et sorties précoces qui compromettent les performances commerciales (Figure 1). FIGURE 1: SOUFFLETES. Les flèches indiquent des signaux clairs, tandis que les cercles pointent vers des whipsaws. Notez que, pour des raisons de clarté, les barres de prix ont été supprimées et seules les lignes SMA ont été tracées. Les Whipsaws sont le résultat de la sensibilité des MA à la fluctuation des données. L'approche classique de ce problème a été d'augmenter la période de moyenne (Figure 2) à un coût de décalage accru qui, si trop prononcé, peut rendre l'indicateur inutile. FIGURE 2: RALENTISSEMENT. Observer comment les whipsaws ont été empêchés en augmentant les périodes utilisées par les moyennes mobiles, mais aussi noter le retard d'au moins un mois dans les signaux. En outre, les whipsaws ont tendance à affecter des intervalles de temps différents d'une manière similaire. Par exemple, un ensemble de deux MA sur un graphique quotidien entraînera vraisemblablement une fréquence similaire de signaux faux au cours de sept mois (154 bars), car un ensemble de MA paramétré sera maintenu sur un graphique hebdomadaire de trois ans (3 52 156 bars). La fréquence de l'ennui se déplace juste à un cadre de temps plus grand. Le problème réside donc dans le concept: les crossovers de ligne simples doivent être remplacés comme générateurs de signaux par un autre type de système de déclenchement. Si nous devions tracer des tableaux à la main (la seule option avant l'âge de l'ordinateur), nous trouverions l'idée d'un crayon à doublure épaisse utile, car elle permettrait une certaine largeur où les moyennes se croisent. Mais l'épaisseur de la ligne est, mathématiquement parlant, une absurdité. Ce dont nous avons besoin, c'est d'une bande ou d'une enveloppe autour de la MA plus lente, dans laquelle l'indicateur peut gicler sans provoquer de faux signaux. Avant de développer cette idée, entrons dans le monde de l'ingénierie et nous familiarisons avec une notion cruciale dans les systèmes de contrôle. Tout d'abord, en tant qu'étudiant en génie et plus tard dans l'industrie alimentaire, j'ai été initié au domaine des systèmes de contrôle et au problème des cycles d'activation-désactivation répétés. Prenez, par exemple, un thermostat contrôlant un système de refroidissement comme celui que vous trouverez dans votre réfrigérateur. Nous voulons qu'il maintienne la température aussi constante que possible, disons cinq degrés C (T0), et le système de refroidissement ne peut être que dans un des deux états: éteint ou allumé. Si le thermostat réagit immédiatement à toute différence par rapport à T0, il activera ou désactivera le système avec une fréquence qui causerait des contraintes à l'équipement et l'inefficacité de refroidissement. Suite dans le numéro de janvier de l'analyse technique des stocks et des produits de base Extrait d'un article publié initialement dans le numéro de janvier 2009 de l'analyse technique du magazine Stocks amp Commodities. Tous les droits sont réservés. Copy Copyright 2009, Analyse Technique, Inc.
No comments:
Post a Comment