Vraag:
helling berekenen met versnellingsmeter?
troy jensen
2010-06-03 09:49:01 UTC
view on stackexchange narkive permalink

ik heb een analoge ADXL203-versnellingsmeter op een breadout-bord en wilde dit gebruiken om de helling van sommige apparatuur met een redelijk hoge frequentie (20-30 Hz) te meten. ik sluit het aan op een campbells cr3000-logger om de detectie te doen. Heeft iemand aanwijzingen om de sensoruitgangen te interpreteren. Bedankt

iedereen bedankt voor de reacties. zeer behulpzaam
Ik weet dat ik de hoogste heb, maar als je de mijne niet leuk vindt, accepteer dan in ieder geval die van iemand.
Vijf antwoorden:
Kortuk
2010-06-03 20:12:27 UTC
view on stackexchange narkive permalink

Ik heb hier een aantal dingen te zeggen, en sommige ervan houden in dat je het eens moet zijn met pingswept en sommige met penjuin.

cr3000

De cr3000-sampling op 16 bits en 100 Hz gaat een beetje traag bemonsteren zodat u gemakkelijk ruis uit uw gegevens kunt verwijderen, maar met een aanzienlijk hogere precisie is dan bruikbaar. Ik betwijfel of je 13 of 14 bits precisie kunt krijgen zonder behoorlijk goede filteralgoritmen. Versnellingsmeters hebben me geleerd dat vibratie de duivel is, gestraalde fononen.

Uitgangscondensator

Je moet ervoor zorgen dat je doet wat de datasheet zegt en de signaaltheorie zegt. Om de datasheet te citeren:

De output van de ADXL103 / ADXL203 heeft een typische bandbreedte van 2,5 kHz. De gebruiker moet het signaal op dit punt filteren om aliasingfouten te beperken. De analoge bandbreedte mag niet meer zijn dan de helft van de analoog-naar-digitaal bemonsteringsfrequentie om aliasing te minimaliseren. De analoge bandbreedte kan verder worden verkleind om ruis te verminderen en de resolutie te verbeteren.

Dit betekent dat je een condensator moet kiezen om je snelheid onder de 50Hz te houden. Als je het hierboven plaatst, kun je aliasing krijgen, en aliasing maakt trillingsgeluid tot een duivel waarmee je een deal hebt getekend. Ze geven aan hoe de geluidsniveaus van het apparaat berekend moeten worden, en bij een bandbreedte van 50Hz zal een piek tot piek geluid van .006 * Zwaartekracht niet eens opgemerkt worden als je dit op een apparaat met trillingen hebt.

Tolken Gegevens

Dit is waarschijnlijk datgene waarin u het meest geïnteresseerd bent, en het is relatief eenvoudig te doen. U moet een tijd aangeven dat het apparaat op neutraal staat, dit is wanneer het plat is en u het relatief stil hebt. Geef het op dit punt een seconde of twee, en dan kun je de mediaan van deze gegevens nemen om de no-G-spanning te bepalen. Dan kunt u dit gebruiken als een punt waarmee u het apparaat vergelijkt. Nu, vanaf dit punt, kan ik direct het gegevensblad citeren:

Wanneer de versnellingsmeter loodrecht op de zwaartekracht staat, verandert zijn output bijna 17,5 mg per graad tilt.

Je kunt deze benadering dus gewoon gebruiken als je niet erg veel gaat kantelen, maar je zult geometrie moeten gebruiken als je plan om in beide richtingen te kantelen en in hoeken die niet extreem klein zijn.

Als je groter gaat worden, hebben ze zelfs de vergelijkingen gespeld als:

PITCH = ASIN (AX / 1 g)
ROLL = ASIN (AY / 1 g)

Voor zover ik kan zeggen, geeft je apparaat een 1V verandering per 1G versnelling erop. Als je de kalibratiefase hebt gedaan, zou je in staat moeten zijn om metingen te doen, de offset af te trekken, en je hebt het aantal G's dat je ervaart.

Stop hier met lezen, tenzij je problemen tegenkomt of je zou willen meer informatie om de aanpak te verbeteren.

Ik heb een behoorlijk beetje meer toegevoegd over andere benaderingen en methoden om je aanpak te verbeteren voor snel veranderende systemen of systemen waar je het apparaat gaat programmeren dat de samples doet.

Bemonsteringsfrequentie

U moet aanzienlijk sneller bemonsteren dan de snelheid waarmee uw apparaat de richting waarin het accelereert verandert, aangezien u de oriëntatie 20-30 keer per seconde moet meten. je moet snel genoeg kunnen meten om trillingsgeluid en versnelling als gevolg van andere effecten weg te filteren, waarvan ik heb vastgesteld dat ze vrij groot zijn bij het werken met een versnellingsmeter.

3-assige versnellingsmeter

Ten tweede, als je een versnellingsmeter met drie assen hebt, kun je vrij gemakkelijk herkennen wanneer een as een deel van de versnelling verliest als gevolg van de zwaartekracht (dat wil zeggen: als de z-as een magnitudedaling van 2 m / s ^ 2 heeft, weet dat de winst die u op de andere as zag, de zwaartekracht is). Dit zal nog steeds rommelig zijn, maar in het algemeen zal er een versnelling zijn die de snelheid geeft die nodig is om je oriëntatie te veranderen en vervolgens een verandering in versnelling als gevolg van oriëntatieverandering, waardoor je vaak de oriëntatie kunt herkennen.

Problemen met 2-assige

Dit wordt, zoals Penjuin zei, bijna onmogelijk met een 2-assige versnellingsmeter, en op zijn best vaag als je een systeem hebt dat 20-30 verschillende oriëntaties per seconde kan hebben, of als je een exacte maat nodig hebt van oriëntatie te allen tijde. Ik weet zeker dat een masterstudent hier een mooie scriptie over zou kunnen schrijven, of een doctoraat zou een proefschrift kunnen schrijven over het verbeteren van dit algoritme.

Trillingsgeluid

Om meer toe te voegen, als je kunt plaats je apparaat bovenop iets dat het statisch vergrendeld houdt aan de beweging van je apparaat, maar trillingen dempt, je krijgt veel betere cijfers en hebt niet zoveel softwarefiltering nodig. Enkele eenvoudige schuimvulling kan tussen de versnellingsmeter en uw apparaat worden geplaatst, en als het digitaal is, zou dit de elektrische ruis niet moeten verhogen en wat trillingsgeluid helpen absorberen. Dit zou alleen moeten worden gedaan als u problemen ziet met het trillingsgeluid.

Digitale versnellingsmeter

Ik zou een digitale versnellingsmeter willen voorstellen waarmee u SPI kunt gebruiken om verbinding mee te maken. Gegevens kunnen met een zeer hoge snelheid worden geklokt en u kunt op de achtergrond werken terwijl uw SPI het constante werk doet om de volgende reeks waarden te laden. Je hebt een mooie microcontroller nodig als het digitaal gedaan gaat worden. Als je me betere details kunt geven over wat je wilt doen, kan ik betere feedback geven. Als u een waarschuwing wilt op basis van kanteldetectie, dan zou het heel gemakkelijk moeten zijn om alles analoog te doen, maar als u de positie en hoek van apparatuur tijdens het gebruik wilt meten, bereid u dan voor op wat werk.

laat me weten of er iets is dat ik kan toevoegen om dit antwoord duidelijker of toepasbaarder te maken voor wat je zocht.

Voor de duidelijkheid, dit antwoord is episch.
Dr. Kortuk, Ph.D in accelerometers! :-)
Ik schreef dit antwoord omdat ik bleef denken dat ik iets was vergeten, maar toen realiseerde ik me dat het een beetje lang was, en voegde ik het snelle antwoord toe hoe je het moet doen, maar het lijkt erop dat mensen de voorkeur geven aan het lange antwoord.
Wat betreft het trillingsgeluid, ik heb misschien een grotere hoeveelheid gehad tijdens bedrijfstijd vanwege de aanwezigheid van een borstelloze DC (BLDC) -motor, maar voordat deze werd ingeschakeld, waren er nog steeds aanzienlijke trillingscijfers.
jeremy
2010-06-03 16:44:41 UTC
view on stackexchange narkive permalink

Ik heb dit antwoord verschillende keren geschreven en herschreven met veel gekke wiskundige ideeën, maar ik denk eerlijk gezegd niet dat dit met enige nauwkeurigheid kan worden gedaan. Je kunt wat vectorberekeningen doen, maar wat als:

  • Het object stopt met bewegen
  • Het object heeft een constante snelheid
  • Het object raakt een hobbel / je stoot ertegen
  • De kracht die wordt gegenereerd door de helling op te gaan, is lager dan de resolutie van de Z-as.

Hoewel ik zeker weet dat er een gekke oplossing is om dit te doen soort dingen, ik weet niet zeker of het het waard zou zijn; versnellingsmeters zijn simpelweg niet ontworpen voor deze taak (althans voor zover ik weet). Voor wat u probeert te bereiken, zou ik een gyroscopische benadering willen voorstellen met alle van deze, die allemaal redelijk resistent zouden zijn tegen alle bovenstaande problemen.

Versnellingsmeters zijn hier eigenlijk voor ontworpen, er is een hele sectie over hoe je dit moet doen. Versnellingsmeters zijn in veel gevallen erg goedkoop en soms zijn de kosten een groter probleem dan perfecte functionaliteit.
Ik probeer dit altijd aan studenten uit te leggen, en ik ga het hier toevoegen omdat ik denk dat het een belangrijk concept is. Engineering gaat niet altijd over het op de beste manier doen, het gaat erom het zo te doen dat de gebruiker het verschil in niets kan zien, behalve aan het prijskaartje.
Er is iets te zeggen om het als eerste te doen, en er is veel te zeggen om het beter te doen dan de laatste.
Ik ben het ermee eens, maar het hangt af van uw motieven (die Troy niet heeft vermeld); wil je dat het goed werkt, of wil je leren? Ze sluiten elkaar niet noodzakelijk uit, maar je zou niet je eigen compiler schrijven om alleen een LED te laten knipperen, tenzij je specifiek meer wilde weten over het ontwerp van de compiler.
Ja, ik voeg dat toe om je antwoord te bespreken, in het algemeen als hij 30 keer per seconde een andere oriëntatie moet kunnen vertellen, zal het gigantische versnellingen hebben, wat op zijn beurt betekent dat je veel meer dan 100 monsters per seconde nodig hebt. tweede.
Het lijkt erop dat de gebruiker een versnellingsmeter heeft en dat het moeilijker is, geeft je de kans om meer te leren. Het LED-idee was gewoon omdat er een goede kans is dat als je zoiets goedkoops implementeert, je een goedkoop versnellingsmeetapparaat gebruikt.
pingswept
2010-06-03 19:40:15 UTC
view on stackexchange narkive permalink

Als ik de datasheet goed begrijp, zal de output voor elke as variëren tussen 1,5 V en 3,5 V terwijl je om de as kantelt. Als het apparaat plat is (waarbij de pakketuitlijningsfout van ± 1 graad buiten beschouwing wordt gelaten), moeten beide uitgangen 2,5 V aangeven.

Als u de helling maar in één richting hoeft te meten, kunt u de boog van de afwijking nemen van 2,5 V om de hoek in radialen te krijgen en vervolgens om te rekenen naar graden. Als het apparaat in elke richting kan kantelen, kunt u de twee hoeken berekenen en daaruit de samengestelde hoek berekenen.

Om expliciet te zijn: hoek rond één as = (180 / π) * arcsin (Vout - 2.5)

Om een ​​goede frequentierespons te krijgen, heb je kleine uitgangscondensatoren nodig, Cx en Cy. Vanaf voetnoot 6 op p. 3 van de datasheet, lijkt het erop dat 0,02 uF u een bandbreedte van 250 Hz zou geven, wat waarschijnlijk ongeveer goed is voor uw samplefrequentie. Je zou misschien wel tot 0,1 uF kunnen gaan en de bandbreedte beperken tot 50 Hz, maar je signalen zullen verzwakt worden.

Ik denk niet dat het de signalen zal verzwakken, tenzij je verwijst naar de hogere frequenties, wat het punt van de dop is. Hij moet naar 50Hz of lager gaan om overeen te komen met zijn gegevensbemonsteringsapparaat.
Ah, ik had er niet over nagedacht vanuit het perspectief van aliasing. Ik denk nog steeds dat large caps hoogfrequente signalen dempen, maar dat is in dit geval eigenlijk een goede zaak. Dus ja, de bandbreedte rond de 50 Hz instellen is goed.
Kortuk
2010-06-03 20:58:06 UTC
view on stackexchange narkive permalink

Ik voeg een tweede antwoord toe, omdat mijn andere groot is en je misschien gewoon simpel wilt.

Uw filterdop moet 0.10 uF of groter zijn om u onder uw aliasing-snelheid (50Hz) te houden. U moet een kalibratiefase van een paar seconden geven terwijl uw apparaat horizontaal zit met alle zwaartekrachtversnelling in de Z-richting, dit is om je nul-G-punt te bepalen.

De spanning die je meet voor je nul-G-punt, zal waarschijnlijk anders zijn voor de X- en Y-richting, vertegenwoordigt niets. Neem gewoon de spanning die u krijgt en trek dat ervan af. Deze spanning, met afgetrokken offset, is het aantal G's dat u in die richting krijgt.

Neem de arcsin en je gaat je hoek in die richting bepalen.

Dit negeert ruis en andere versnellingen. wees erop voorbereid dat NaN een resultaat is als je het volledig gekanteld hebt en er geen geluid is.

markrages
2010-06-11 01:57:19 UTC
view on stackexchange narkive permalink

Om elke hoek te krijgen, moet je de versnelling van de zwaartekracht in zowel de X- als de Y-richting meten. trek de middenspanning (2,5 V) af zodat nul "geen versnelling" is.

Nu kun je de hoek vinden met arcsin (y / x). Maar dat is vervelend om te gebruiken, vanwege de deling, en omdat het teken dubbelzinnig is, dus wat je echt wilt is de C-functie atan2 (y, x). atan2 () krijgt het teken goed voor alle 360 ​​graden.


Off-topic, aangezien je geen micro gebruikt: als je atan2 () zoekt om te gebruiken op een microcontroller, daar is een atan2 () generator op mijn website: http://vivara.net/cgi-bin/cordic.cgi

Het is geen gegarandeerde 2,5 V voor 0G. aangezien hij waarschijnlijk een computer zal gebruiken om de wiskunde uit te voeren, betwijfel ik of de methode die hij gebruikt om de wiskunde uit te voeren, van belang zal zijn.


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 2.0-licentie waaronder het wordt gedistribueerd.
Loading...