Arduino Logging Acceleration Data

zacharoni16

Arduino Logging Acceleration Data


J’avais une question générale sur l’enregistrement des données de l’accéléromètre sur l’Arduino ou n’importe quel microcontrôleur.

J’avais un accéléromètre KXPS5-3157 branché en mode analogique pour mesurer l’accélération verticale de l’axe z dans une voiture passant par-dessus les bosses.

Ma question est que devrais-je avoir une référence de temps précise comme une horloge en temps réel ou un morceau de code qui a gardé un temps précis pour tracer la force d’accélération G? Puisque l’accélération est basée sur le temps.

Je veux obtenir l’accélération verticale des nids-de-poule, mais pour rendre les données significatives, je veux les tracer, mais l’accélération est basée sur le temps, est-il donc possible que l’Arduino l’enregistre avec le temps? Ou cela n’a pas d’importance?

Réponses


 HikeOnPast

Ce qui vous inquiète, c’est l’échantillonnage de la gigue. Je ne le suerais pas pour cette application; l’exécution du code d’échantillonnage dans une boucle liera le temps d’échantillonnage à l’oscillateur à cristal sur l’Arduino, qui devrait avoir une stabilité plus que adéquate pour votre application.

Le taux d’ échantillonnage est toutefois quelque chose auquel vous devriez réfléchir davantage. Afin de résoudre l’accélération de la frappe d’un nid-de-poule, qui est généralement un événement court, je recommanderais des taux d’échantillonnage dans la plage de 200 Hz à 2 kHz. Plus il est élevé, mieux c’est, au prix d’un stockage accru pour contenir tous les échantillons.

À des fréquences d’échantillonnage plus faibles, vous verrez toujours un pic d’accélération de frapper le nid-de-poule, mais il est probable que vous manquerez le pic réel de l’événement en raison d’une erreur d’échantillonnage. Par conséquent, vos données seront moins sévères qu’elles ne l’étaient en réalité.

En passant, c’est amusant de voir ce que votre suspension fait pour vous. Montez un accéléromètre haut de gamme directement sur la masse non suspendue (c’est-à-dire sur votre moyeu de roue). Cela vous montrera à quoi ressemble l’accélération avant qu’elle ne soit mécaniquement filtrée par votre suspension.

zacharoni16

Salut HikeonPast merci pour la perspicacité! Je veux créer un détecteur de nids-de-poule qui détecte les nids-de-poule et mesure en fait sur la base d’une échelle subjective à quel point il était inconfortable pour le conducteur / passager. Mon idée est de faire de la FFT sur un tas de nids-de-poule dans les tests, et d’essayer de trouver un motif qui identifie un nid-de-poule, puis de l’utiliser pour faire de la FFT sur les données d’accéléromètre entrantes pour trouver le motif ayant une correspondance de nid-de-poule. Je ne sais pas si l’Arduino peut le faire, ou j’aurais besoin d’un taux d’échantillonnage précis car la FFT est basée sur le taux d’échantillonnage

Phil Frost

Selon ce que l’on a l’intention de faire avec les données, il peut être judicieux d’exécuter les échantillons via un détecteur de crête, soit numériquement soit en analogique. De cette façon, vous pouvez obtenir l’accélération maximale des nids-de-poule, sans avoir à stocker tous les échantillons.

HikeOnPast

Vous voudrez alors nourrir vos échantillons bruts à travers un modèle de corps humain. Il existe des articles publiés qui documentent les fréquences auxquelles le corps humain est le plus sensible (c’est-à-dire qui se sentent moins bien). Je ferais la FFT et le filtrage du corps humain en post-traitement.


 Arcadien

Vous pouvez utiliser une minuterie pour déclencher l’échantillonnage de l’accéléromètre, puis avec juste une heure de début et une séquence d’échantillons, vous pouvez créer votre graphique. Il y a un bon article sur la bibliothèque Timer1 sur Arduino Playground, qui pourrait être un bon début.

Fondamentalement :

  • Utiliser une variable volatile comme commutateur
  • configurer une minuterie avec l’intervalle d’échantillonnage souhaité
  • attacher une interruption à la minuterie
  • Le gestionnaire d’interruption vient de basculer le commutateur sur
  • compteur de départ

  • 1 boucle principale ne fait rien pendant que l’interrupteur est éteint (goto 1)

  • 2 [le compteur se termine, déclenche l’interruption, bascule de l’interrupteur]
  • 3 boucles principales font l’échantillonnage de l’accéléromètre puis désactivent le compteur
  • 4 goto 1

Notez que votre temps d’échantillonnage doit prendre en compte la durée d’échantillonnage pour éviter un événement de minuterie avant la fin du dernier échantillonnage.


 hassan789

L’échantillonnage à un intervalle serré n’a pas d’importance. Lisez simplement la tension de la puce KXPS5-3157 et imprimez-la sur RS232. Une fois que vous avez suffisamment de données, vous pouvez les tracer dans Excel.

Arcadien

Je pense que cela pourrait avoir de l’importance, cela dépend du type de comportement que vous étudiez

zacharoni16

Je veux faire de la FFT sur les données, finalement je veux essayer de faire correspondre les « modèles » de FFT de l’accélération verticale aux signatures des nids de poule. C’est une idée folle, je ne sais même pas comment le faire actuellement ou comment

 

accélération, arduino, Data, Logging

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *