Stap 5: Het gebruik van de versnellingsmeter MMA7361?:
Het is een breakout board voor de Freescale MMA7361L drie assen analoge MEMS versnellingsmeter. De sensor vereist een zeer lage hoeveelheid stroom en heeft een g-select input die schakelt de versnellingsmeter tussen ±1.5 g en ±6g meting bereiken. Andere functies omvatten een slaapstand, signaal conditioning, een 1-polig low-pass filter, temperatuurcompensatie, zelftest, en 0 g-detect die detecteert lineaire vrije val. Verschuiving van de Zero-g en gevoeligheid zijn fabriek ingesteld en vereisen geen externe apparaten.
De specificaties zijn:
- Ondersteunt 2.2V ~ 3.6V of 5V spanning ingang.
- Twee instelbare meetbereiken (±1.5 g, ±6g)
- Breadboard vriendelijke - 0.1" worp kop
- Laag stroomverbruik: 400 µA
- Slaapstand: 3 µA
- Laag voltage werking: 2.2 V - 3,6 V
- Hoge gevoeligheid (800 mV/g 1.5 g)
- Snel draai op tijd (0.5 ms inschakelen reactietijd)
- Zelftest voor vrije val detecteren diagnose
- 0 Detect g-voor de bescherming van de vrije val
- Signaal conditioning met low pass filter
- Robuust ontwerp, hoge schokken overlevingskansen
Met de AcceleroMMA7361-bibliotheek is het zo makkelijk te gebruiken deze uiterst kleine module. De opdrachten die u met deze bibliotheek gebruiken kunt zijn:
- VOID beginnen)
- void (int sleepPin, int selfTestPin, int zeroGPin, int gSelectPin, int xPin, int yPin, int zPin) beginnen
- int getXRaw)
- getXRaw(): geeft als resultaat de ruwe gegevens van de x-as analoge I/O poort van de Arduino als integer
- int getYRaw)
- getYRaw(): geeft als resultaat de ruwe gegevens van de y-as analoge I/O poort van de Arduino als integer
- int getZRaw)
- getZRaw(): geeft als resultaat de ruwe gegevens van de z-as analoge I/O poort van de Arduino als integer
- int getXVolt)
- getXVolt(): geeft als resultaat de spanning in mV van de x-as analoge I/O poort van de Arduino als een geheel getal
- int getYVolt)
- getYVolt(): geeft als resultaat de spanning in mV van de y-as analoge I/O poort van de Arduino als een geheel getal
- int getZVolt)
- getZVolt(): geeft als resultaat de spanning in mV van de z-as analoge I/O poort van de Arduino als een geheel getal
- int getXAccel)
- getXAccel(): geeft als resultaat de versnelling van de x-as is als een int (1 g = 100,00)
- int getYAccel)
- getYAccel(): geeft als resultaat de versnelling van de y-as is als een int (1 g = 100,00)
- int getZAccel)
- getZAccel(): geeft als resultaat de versnelling van de z-as is als een int (1 g = 100,00)
- VOID getAccelXYZ (int _XAxis, int _YAxis, int _ZAxis)
- getAccelXYZ (int _XAxis, int _YAxis, int _ZAxis) retourneert alle assen meteen als pointers
- int getTotalVector)
- getTotalVector geeft de omvang van de totale versnelling vector als een geheel getal
- VOID setOffSets (int xOffSet, int yOffSet, int zOffSet)
- VOID kalibreren)
- VOID setARefVoltage (dubbele _refV)
- VOID setAveraging (int avg)
- setAveraging (int avg): Sets hoeveel monsters moeten worden gemiddeld in getAccel standaard is 10.
- int getOrientation)
- VOID setSensitivity (Booleaanse sensi)
- setSensitivity stelt de gevoeligheid voor +/-1,5 G (hoog) of +/-6 G (laag) met behulp van een Booleaanse HIGH (1.5 G) of laag (6 G)
- VOID sleep)
- slaap laat de slaap van het apparaat (als apparaat al dit betekent niets slaapt)
- VOID wake)
- Wake in staat stelt het apparaat na slapen (wanneer het apparaat is niet slapen dit betekent niets) er is een vertraging van 2 ms, als gevolg van inschakelen responstijd (gegevensblad: type 0.5 ms, max 2 ms)
De bibliotheek hebben 3 eenvoudige voorbeelden. Men krijgt de versnellingen in elke as, de tweede krijgt de hoek en de derde de spanning. Ik gebruikte de "RawData" om de hoek van elke as othe controller waarmee de helling:
<p>#include <AcceleroMMA7361.h></p><p>AcceleroMMA7361 accelero; int x; int y; int z; void setup() { Serial.begin(9600); accelero.begin(8, 7, 6, 5, A5, A6, A7); accelero.setSensitivity(HIGH);//sets the sensitivity to +/-6G accelero.calibrate(); }</p><p>void loop() { x = accelero.getXRaw(); y = accelero.getYRaw(); z = accelero.getZRaw(); Serial.print("\nx: "); Serial.print(x); Serial.print("\ty: "); Serial.print(y); Serial.print("\tz: "); Serial.print(z); delay(500); //(make it readable) }</p>