Egy ADXL3xx gyorsulásmérő olvasása.
Utolsó felülvizsgálat: 2022.02.04 16:50
Ez az oktatóanyag bemutatja, hogyan olvassa el az ADXL3xx sorozatú (például ADXL320, ADXL321, ADXL322, ADXL330) gyorsulásmérőt, és hogyan fogadja az értékeket az Arduino Software (IDE) soros monitorán vagy más olyan alkalmazásban, amely adatokat fogad a soros porton keresztül.
Ez az oktatóanyag a Sparkfun moduljainak felhasználásával készült. Az adafruit gyorsulásmérő modulja is működik, bár másképp kell bekötni.
Az ADXL3xx minden tengelyen analóg feszültségként adja ki a gyorsulást 0 és 5 volt között. Ennek elolvasásához nincs másra szüksége, mint az analogRead()
függvényre.
Hardver szükséglet
Arduino kártya
ADXL3xx gyorsulásmérő
Az áramkör
A gyorsulásmérő nagyon kevés áramot használ, így csatlakoztatható a kártyához, és közvetlenül a digitális kimeneti kivezetésekről működtethető. Ehhez az analóg bemeneti kivezetések közül hármat kell digitális I/O kivezetésként használni, a gyorsulásmérő tápellátására és földelésére, valamint az önellenőrző kivezetésre. Másik három analóg bemenetet fogja használni a gyorsulásmérő analóg kimeneteinek olvasásához.

Vázlat

Íme a fent bemutatott konfiguráció kivezetéseinek csatlakozásai:
Modul csatlakozó | Önellenőrző | Z-tengely | Y-tengely | X-tengely | Föld | VDD |
Arduino analóg bemeneti kivezetés | 0 | 1 | 2 | 3 | 4 | 5 |
Vagy ha csak a gyorsulásmérőt használja:
ADXL3xx csatlakozó | Önellenőrző | ZKi | YKi | XKi | Föld | VDD |
Arduino kivezetés | Nincs csatlakoztatva | Analóg bemenet 1 | Analóg bemenet 2 | Analóg bemenet 3 | GND | +5V |
Kérjük, vegye figyelembe, hogy egyes gyorsulásmérők 3,3 V-os tápfeszültséget használnak, és az 5 V károsíthatja őket. Ellenőrizze a szállító dokumentációját, hogy megtudja, melyik a megfelelő feszültség.
A kód
A gyorsulásmérő csatlakozásait a vázlat elején konstansként határozzuk meg, áramforrásként a két analóg 4-es és 5-ös kivezetést használva. Ez a 18-as és 19-es digitális I/O kivezetések használatával érhető el. Ha szükséges, A0 D14, A1 D15 és így tovább.
const int groundpin = 18;
const int powerpin = 19;
Ha a 19-es (A5) kivezetést HIGH-ra és a 18-as kivezetést (A4) LOW-ra állítja, az 5 V-ot néhány milliamperrel biztosítja a gyorsulásmérő működéséhez.
pinMode(groundpin, OUTPUT);
pinMode(powerpin, OUTPUT);
digitalWrite(groundpin, LOW);
digitalWrite(powerpin, HIGH);
Ez a megoldás lehetővé teszi, hogy a Sparkfun moduljait közvetlenül az Arduino kártyához csatlakoztassuk. A különböző kártyák csatlakoztathatók szabványos 5V-hoz - vagy 3,3V-hoz - és GND kivezetésekhez. Ez utóbbi esetben a kód módosítható, kommentálva a fenti sorokat a void setup()
szakaszban.
/*
ADXL3xx
Beolvassa az Analog Devices ADXL3xx gyorsulásmérőt, és közli a gyorsulást
a számítógéppel. A felhasznált kivezetéseket úgy tervezték, hogy könnyen
kompatibilisek legyenek a SparkFun moduljaival, amelyek a következő címen érhetők el:
https://www.sparkfun.com/categories/80
Az áramkör:
- analóg 0: gyorsulásmérő önellenőrzés
- analóg 1: z-tengely
- analóg 2: y-tengely
- analóg 3: x-tengely
- analóg 4: föld
- analóg 5: vcc
created 2 Jul 2008
by David A. Mellis
modified 30 Aug 2011
by Tom Igoe
Ez a kód nyilvános.
https://docs.arduino.cc/built-in-examples/sensors/ADXL3xx
*/
// ezek az állandók a kivezetéseket írják le. Nem változnak:
const int groundpin = 18; // analóg bemeneti kivezetés 4 -- föld
const int powerpin = 19; // analóg bemeneti kivezetés 5 -- feszültség
const int xpin = A3; // gyorsulásmérő x-tengely
const int ypin = A2; // y-tengely
const int zpin = A1; // z-tengely (csak 3-tengelyes modelleknél)
void setup() {
// inicializálja a soros kommunikációt:
Serial.begin(9600);
// Biztosítsa a földelést és a tápellátást az analóg bemenetek normál
// digitális kivezetésként történő használatával.
// Ez lehetővé teszi a modul közvetlen csatlakoztatását az Arduino-hoz.
// Ha a normál 5V-os és GND érintkezőket használja az Arduino-n,
// eltávolíthatja ezeket a sorokat.
pinMode(groundpin, OUTPUT);
pinMode(powerpin, OUTPUT);
digitalWrite(groundpin, LOW);
digitalWrite(powerpin, HIGH);
}
void loop() {
// nyomtassa ki az érzékelő értékeket:
Serial.print(analogRead(xpin));
// tabulátort nyomtat az értékek közé:
Serial.print("\t");
Serial.print(analogRead(ypin));
// tabulátort nyomtat az értékek közé:
Serial.print("\t");
Serial.print(analogRead(zpin));
Serial.println();
// késleltetés a következő olvasás előtt:
delay(100);
}
Az adat
Íme néhány gyorsulásmérő leolvasás, amelyeket egy ADXL322 2g gyorsulásmérő y-tengelyének a talajhoz képest különböző szögekben történő pozicionálásával gyűjtöttünk össze. Az értékeknek azonosaknak kell lenniük a többi tengelyen, de az eszköz érzékenységétől függően változhatnak. Ha a tengely vízszintes (azaz párhuzamos a talajjal vagy 0°), a gyorsulásmérő leolvasott értékének 512 körül kell lennie, de az egyéb szögek értékei eltérőek lesznek egy másik gyorsulásmérőnél (például az ADXL302 5g esetében).
Szög | -90 | -80 | -70 | -60 | -50 | -40 | -30 | -20 | -10 | 0 |
Gyorsulásmérő | 662 | 600 | 654 | 642 | 628 | 610 | 589 | 563 | 537 | 510 |
Szög | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 |
Gyorsulásmérő | 510 | 485 | 455 | 433 | 408 | 390 | 374 | 363 | 357 | 355 |
Tudj meg többet
További alapvető oktatóanyagokat a beépített példák részben talál.
Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.