calcolo inclinazione usando accelerometro?


16

ho un dispositivi analogici ADXL203 accelerometro su un bordo breadout e mancava di utilizzare questo per misurare l'inclinazione di alcune attrezzature ad una frequenza ragionevolmente elevata (20-30 Hz). lo sto collegando a un logger campbell cr3000 per fare il rilevamento. Qualcuno ha le indicazioni su come interpretare le uscite del sensore. Grazie


grazie a tutti per i commenti. molto utile saluti TROY
troy jensen,

So di avere il massimo, ma se non ti piace il mio, almeno accetta quello di qualcuno.
Kortuk,

Risposte:


12

Ho un certo numero di cose da dire qui, e alcuni di loro non comporterà un accordo con pingswept e alcune con penjuin.

CR3000

Il campionamento cr3000 a 16 bit e 100 Hz sarà un po 'lento per consentirti di rimuovere facilmente il rumore dai tuoi dati, ma con una precisione significativamente maggiore sarà utilizzabile. Dubito che tu possa ottenere 13 o 14 bit di precisione senza alcuni algoritmi di filtraggio piuttosto buoni. Gli accelerometri mi hanno insegnato che la vibrazione è il diavolo, i fononi esplosi.

Condensatore di uscita

Devi assicurarti di fare come dice la scheda tecnica e indicare la teoria dei segnali. Per citare il foglio dati:

L'uscita del ADXL103 / ADXL203 ha una larghezza di banda tipica di 2,5 kHz. L'utente deve filtrare il segnale a questo punto per limitare gli errori di aliasing. La larghezza di banda analogico deve essere superiore alla metà della frequenza di campionamento analogico-digitale per minimizzare aliasing. La larghezza di banda analogica può essere ulteriormente ridotta per ridurre il rumore e migliorare la risoluzione.

Ciò significa che è necessario scegliere un condensatore per mantenere la frequenza inferiore a 50Hz. Se lo si inserisce sopra di questo si può ottenere aliasing, e fa di aliasing Noise Vibration un diavolo hai firmato un accordo con. Dichiarano come calcolare i livelli di rumore dal dispositivo e con una larghezza di banda di 50Hz un rumore da picco a picco di .006 * La gravità non verrà nemmeno notata se si dispone di questo su un dispositivo con vibrazioni.

Interpretazione dei dati

Questo è probabilmente ciò che ti interessa di più ed è relativamente facile da fare. È necessario contrassegnare una volta che il dispositivo è in posizione neutra, questo essere quando è piatto e lo avete ancora relativamente. Dategli un secondo o due, a questo punto, e allora si può prendere la mediana di questi dati per determinare la tensione a G. Quindi puoi usarlo come punto a cui confrontare il dispositivo. Ora, da questo punto, posso citare direttamente la scheda tecnica:

Quando l'accelerometro è perpendicolare alla forza di gravità, la sua uscita cambia quasi 17,5 mg al grado di inclinazione .

Quindi puoi semplicemente usare questa approssimazione se non inclinerai molto, ma dovrai usare la geometria se prevedi di inclinarla in entrambe le direzioni e in angoli che non sono estremamente piccoli.

Se stai per andare più grande, hanno anche le equazioni spiegate come:

PASSO = ASIN (AX / 1 g)
ROTOLO = ASIN (AY / 1 g)

Per quanto posso tel il tuo dispositivo fornisce una variazione di 1 V per 1 G di accelerazione posizionata su di esso. Se hai eseguito la fase di calibrazione, dovresti essere in grado di eseguire misurazioni, sottrarre l'offset e avere il numero di G che si verificano.

Smetti di leggere qui a meno che tu non abbia problemi o desideri maggiori informazioni per migliorare l'approccio.

Ho aggiunto un po 'di più parlando di altri approcci e metodi per migliorare il tuo approccio per sistemi in rapida evoluzione o sistemi in cui hai intenzione di programmare il dispositivo eseguendo i campioni.

Frequenza di campionamento

Devi campionare in modo significativamente più veloce della velocità con cui il tuo dispositivo cambia le direzioni in cui sta accelerando, poiché devi misurare l'orientamento 20-30 volte al secondo. devi essere in grado di misurare abbastanza rapidamente per filtrare il rumore di vibrazione e l'accelerazione a causa di altri effetti, che ho scoperto essere piuttosto grandi quando si lavora con un accelerometro.

3 assi accelerometro

In secondo luogo, se si dispone di un accelerometro a tre assi, è possibile riconoscere facilmente quando un asse sta perdendo parte dell'accelerazione a causa della gravità (ad es. Quando l'asse z ha una caduta di magnitudo di 2 m / s ^ 2, si sa che il guadagno che hai visto sull'altro asse è la gravità). Questo sarà ancora disordinato, ma in generale ci sarà un'aggiunta di accelerazione che dà la velocità necessaria per cambiare l'orientamento e poi un cambio in accelerazione a causa del cambiamento di orientamento, spesso consentendo di riconoscere l'orientamento.

Problemi con 2 assi

Questo sarà, come diceva il penjuin, quasi impossibile con un accelerometro a 2 assi, e nel migliore dei casi abbozzato se si dispone di un sistema che può avere 20-30 orientamenti diversi al secondo o se è necessario avere una misura esatta dell'orientamento a sempre. Sono sicuro che uno studente di master potrebbe scrivere una bella tesi su questo, o un dottorato potrebbe scrivere una tesi sul miglioramento di questo algoritmo.

Rumore di vibrazione

Per aggiungere di più, se si può mettere il dispositivo in cima a qualcosa che mantenerla staticamente bloccata al movimento del dispositivo, ma smorza le vibrazioni, si otterrà i numeri molto meglio e non hanno bisogno tanto di filtro software. Alcune semplici imbottiture in schiuma possono essere posizionate tra l'accelerometro e il dispositivo e, se è digitale, ciò non dovrebbe aumentare il rumore elettrico e aiutare ad assorbire il rumore delle vibrazioni. Questo dovrebbe essere fatto solo se vedi problemi con il rumore delle vibrazioni.

Accelerometro digitale

Vorrei suggerire un accelerometro digitale che è possibile utilizzare per connettersi a SPI. I dati possono essere sincronizzati a una velocità molto elevata e puoi lavorare in background poiché la tua SPI svolge il costante lavoro di caricamento del prossimo set di valori. Avrete bisogno di avere una bella microcontrollore se sta per essere fatto in modo digitale. Se potete darmi specifiche meglio su ciò che si vuole fare che posso dare un feedback migliore. Se si desidera un avviso basato sul rilevamento dell'inclinazione, dovrebbe essere molto facile da fare con tutti gli analoghi, ma se si desidera misurare la posizione e l'angolazione dell'apparecchiatura durante il funzionamento, prepararsi per qualche lavoro.

Si prega di farmi sapere se c'è qualcosa che posso aggiungere a rendere la risposta più chiara o applicabili a quello che stavi cercando.


1
Per la cronaca, questa risposta è epica.
spazzato il

1
Dr. Kortuk, Ph.D in accelerometri! :-)
Jay Atkinson,

Ho scritto questa risposta perché continuavo a pensare di aver dimenticato qualcosa, poi mi sono reso conto che era un po 'lungo e ho aggiunto il vero modo rapido di farlo, ma sembra che la gente preferisca la risposta lunga.
Kortuk,

Sul rumore delle vibrazioni, potrei aver avuto una quantità maggiore durante il tempo di funzionamento a causa della presenza di un motore Brushless DC (BLDC), ma prima che fosse acceso c'erano ancora cifre di vibrazione significative.
Kortuk,

3

Ho scritto e riscritto questa risposta più volte con molte idee matematiche pazze, ma onestamente non penso che ciò possa essere fatto con precisione. Puoi fare alcuni calcoli vettoriali, ma cosa succede se:

  • L'oggetto si ferma
  • L'oggetto ha una velocità costante
  • L'oggetto colpisce un bump / tu lo bump
  • La forza generata risalendo l'inclinazione è inferiore alla risoluzione dell'asse Z.

Mentre sono sicuro che ci sia qualche soluzione pazzo per fare questo genere di cose, non sono sicuro che sarebbe valsa la pena; gli accelerometri semplicemente non sono progettati per questo compito (almeno per quanto ne so). Per quello che stai cercando di ottenere, suggerirei un approccio giroscopico usando qualsiasi di questi , che sarebbe abbastanza resistente a tutti i problemi di cui sopra.


Gli accelerometri sono progettati proprio per questo, c'è un'intera sezione su come farlo. Gli accelerometri hanno un costo molto basso in molti casi e talvolta il costo è un problema più grande della funzionalità perfetta.
Kortuk

3
Cerco sempre di spiegare questo agli studenti, e ho intenzione di aggiungerlo qui perché penso che è un concetto importante. Ingegneria non è sempre di farlo nel modo migliore, si tratta di fare in modo di che l'utente ha non può dire la differenza di nulla, se non il cartellino del prezzo.
Kortuk

2
C'è qualcosa da dire per farlo prima, e c'è molto da dire per farlo meglio dell'ultimo ragazzo.
Kortuk,

Sono d'accordo, ma dipende dalle tue motivazioni (che troia non ha dichiarato); vuoi che funzioni bene o vuoi imparare? Non sono necessariamente si escludono a vicenda, ma non sarebbe scrivere il proprio compilatore solo a lampeggiare un LED a meno che non espressamente voluto sapere sulla progettazione del compilatore.
penjuin

Sì, aggiungo questo per discutere della tua risposta, in generale se deve essere in grado di dire un orientamento diverso 30 volte al secondo, avrà delle accelerazioni gigantesche, il che a sua volta significa che hai bisogno di più di 100 campioni a secondo.
Kortuk

3

Se capisco correttamente il foglio dati, l'uscita per ciascun asse varierà tra 1,5 V e 3,5 V mentre si inclina attorno all'asse. Quando il dispositivo è piatto (ignorando l'errore di allineamento del pacchetto di ± 1 grado), entrambe le uscite dovrebbero leggere 2,5 V.

Se solo è necessario misurare l'inclinazione in una direzione, si può prendere l'arcsin della deviazione da 2,5 V per ottenere l'angolo in radianti, poi convertire in gradi. Se il dispositivo può inclinarsi in qualsiasi direzione, è possibile calcolare i due angoli, e quindi calcolare l'angolo composto da quelli.

Per essere espliciti: angolo attorno ad un asse = (180 / π) * arcsin (Vout - 2.5)

Per ottenere una buona risposta in frequenza, avrai bisogno di piccoli condensatori di uscita, Cx e Cy. Dalla nota 6 a pag. 3 della scheda tecnica, sembra che 0,02 uF darebbe una larghezza di banda di 250 Hz, che è probabilmente circa a destra per la frequenza di campionamento. Si potrebbe forse arrivare fino a 0,1 uF, limitando la larghezza di banda a 50 Hz, ma i segnali inizierà a ottenere attenuato.


Non credo che attenuerà i segnali, a meno che non ci si riferisca alle frequenze più alte, che è il punto del limite. Deve andare a 50Hz o inferiore per abbinare il suo dispositivo di campionamento dei dati.
Kortuk

1
Ah, non ci avevo pensato dal punto di vista dell'aliasing. Continuo a pensare che i tappi di grandi dimensioni attenueranno i segnali ad alta frequenza, ma in realtà è una buona cosa in questo caso. Quindi sì, l'impostazione della larghezza di banda intorno a 50 Hz è buona.
pingswept

3

Sto aggiungendo una seconda risposta, perché l'altra è grande e potresti volere semplicemente semplice.

Il cappuccio del filtro deve essere di 0,10 uF o superiore per mantenerti al di sotto della frequenza di aliasing (50Hz). Devi dare una fase di calibrazione di un paio di secondi con il dispositivo seduto a livello con tutta l'accelerazione di gravità nella direzione Z, questo per determinare il tuo punto G zero.

La tensione misurata per il tuo punto G zero, probabilmente sarà diversa per la direzione X e Y, non rappresenta nulla. Prendi semplicemente la tensione che ottieni e sottrala da essa. Questa tensione, con l'offset sottratto è il numero di G che si sta ottenendo in quella direzione.

Prendi l'arcosina e otterrai l'angolazione in quella direzione.

Questo rumore ignora e altri accelerazione. preparatevi affinché NaN sia un risultato se lo avete completamente inclinato e c'è del rumore.


0

Per ottenere qualsiasi angolo, è necessario misurare l'accelerazione di gravità in entrambe le direzioni X e Y. sottrarre la media tensione (2,5 V) in modo che zero sia "nessuna accelerazione".

Ora puoi trovare l'angolo con arcsin (y / x). Ma questo è fastidioso per l'uso, a causa della divisione, e perché il segno è ambiguo, così che cosa si vuole veramente la funzione C atan2 (y, x). atan2 () ottiene il diritto segno per tutti i 360 gradi.


Fuori tema, poiché non stai usando un micro: se stai cercando atan2 () da usare su un microcontrollore, c'è un generatore atan2 () sul mio sito web: http://vivara.net/cgi-bin/ cordic.cgi


Non è un 2,5 V garantito per 0G. poiché egli sarà probabilmente utilizzare un computer per fare i conti dubito che il metodo che usa per fare la matematica sarà Mater.
Kortuk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.