Inhoudsopgave:
Video: ADXL345 Arduino Uno R3 gebruiken: 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
In deze les leren we hoe we de acceleratiesensor ADXL345 kunnen gebruiken.
Stap 1: Componenten
- Arduino Uno-bord * 1
- USB-kabel * 1
-ADXL345 *1
- Broodplank * 1
- Jumper draden
Stap 2: Principe
Een versnellingsmeter wordt gebruikt om de kracht te meten die tijdens de versnelling wordt gegenereerd. De meest fundamentele is de algemeen bekende versnelling van de zwaartekracht die 1 g is.
Door de versnelling te meten die wordt veroorzaakt door de zwaartekracht, kunt u de hellingshoek van het apparaat ten opzichte van het vlakke oppervlak berekenen. Door de dynamische versnelling te analyseren, kunt u zien hoe het apparaat beweegt. Een zelfbalancerend bord of hoverboard past bijvoorbeeld de versnellingssensor en gyroscoop toe voor Kalman-filter en houdingscorrectie.
ADXL345
De ADXL345 is een kleine, dunne, energiezuinige 3-assige accelerometer met een hoge resolutie (13-bit) meting tot ±16 g. Digitale uitvoergegevens zijn geformatteerd als 16-bits two's complement en zijn toegankelijk via een SPI (3- of 4-draads) of I2C digitale interface. In dit experiment wordt de I2C digitale interface gebruikt.
Het is zeer geschikt om de statische versnelling van de zwaartekracht te meten in tilt-sensing toepassingen, evenals dynamische versnelling als gevolg van beweging of schokken. Zijn hoge resolutie (4 mg/LSB) maakt het meten van hellingsverandering met minder dan 1,0° mogelijk. En de uitstekende gevoeligheid (3,9 mg/LSB @2g) zorgt voor een uiterst nauwkeurige uitvoer tot ±16g.
Hoe ADXL345 werkt
De ADXL345 detecteert de versnelling met de sensorcomponent aan de voorkant, en vervolgens verandert de elektrische signaaldetectiecomponent deze in een elektrisch signaal, dat analoog is. Vervolgens zal de AD-adapter die op de module is geïntegreerd, het analoge signaal omzetten in een digitaal signaal.
De X_OUT, Y_OUT en Z_OUT zijn respectievelijk de waarden op de X-, Y- en Z-as. Plaats de module met de afbeelding naar boven: Z_OUT kan maximaal +1g bereiken, het minimum van X_OUT is -1g in de richting van Ax en het minimum van Y_OUT is -1g in de richting van Ay. Aan de andere kant, draai de module ondersteboven: het minimum van Z_OUT is -1g, het maximum van X_OUT is +1g in de richting van Ax en het maximum van Y_OUT is +1g in de richting van Ay., zoals hieronder weergegeven. Draai de ADXL345-module en je ziet de verandering van drie waarden.
wanneer kanaal A verandert van hoog niveau naar laag niveau, als kanaal B hoog niveau is, geeft dit aan dat de encoder met de klok mee draait (CW); als kanaal B op dat moment laag is, betekent dit dat het tegen de klok in draait (CCW). Dus als we de waarde van kanaal B lezen wanneer kanaal A een laag niveau heeft, kunnen we weten in welke richting de roterende encoder draait.
Principe: Zie het schema van de Rotary Encoder-module hieronder. Hieruit kunnen we zien dat pin 3 van de roterende encoder, namelijk CLK op de module, kanaal B is. Pin 5, dat is DT, is kanaal A. Om de draairichting van de recorder te kennen, lees je gewoon de waarde van CLK en DT.
Er zit een 3.3v spanningsregelaarchip in het circuit, zodat je de module kunt voeden met 5V of 3.3V.
Aangezien SDO is verbonden met GND, is het I2C-adres van de ADXL345 0x53, 0xA6 voor schrijven, 0xA7 voor lezen
Pinfunctie van ADXL345-module.
Stap 3: Procedures
Stap 1. Bouw het circuit.
Stap 2:
Download de code van
Stap 3:
Upload de schets naar het Arduino Uno-bord
Klik op het pictogram Uploaden om de code naar de besturingskaart te uploaden.
Als "Klaar met uploaden" onderaan het venster verschijnt, betekent dit dat de schets succesvol is geüpload.
Open na het uploaden Serial Monitor, waar u de gedetecteerde gegevens kunt zien. Wanneer de versnelling van de module verandert, verandert het cijfer op het venster dienovereenkomstig.
Stap 4: Coderen
//ADXL335
/********************************
ADXL335
opmerking:vcc5v, maar ADXL335 Vs is 3,3 V
Het circuit:
5V: VCC
analoog 0: x-as
analoog 1: y-as
analoog 2: z-as
Na het verbranden van de
programma, opent u het debugging-venster van de seriële monitor, waar u kunt zien dat de gedetecteerde gegevens worden weergegeven. Wanneer de versnelling varieert, zal het cijfer dienovereenkomstig variëren.
*********************************
/E-mail:
// Website: www.primerobotics.in
const int xpin =
A0; // x-as van de versnellingsmeter
const int ypin =
A1; // y-as
const int zpin =
A2; // z-as (alleen op 3-assige modellen)
ongeldige setup()
{
// initialiseer de seriële communicatie:
Serieel.begin(9600);
}
lege lus()
{
int x = analoog lezen (xpin); // lees van xpin
vertraging(1); //
int y = analoogRead(ypin); // lees van ypin
vertraging(1);
int z = analoog lezen (zpin); // lees van zpin
zweven nul_G = 338,0; //ADXL335 voeding
door versus 3.3V: 3.3V/5V*1024=676/2=338
//Serial.print(x);
//Serial.print("\t");
//Serial.print(y);
//Serial.print("\t");
//Serial.print(z);
//Serial.print("\n");
vlot
zero_Gx=331.5;//de zero_G output van x-as:(x_max + x_min)/2
vlot
zero_Gy=329.5;//de zero_G output van y-as:(y_max + y_min)/2
float zero_Gz=340.0;//the
zero_G output van z-as:(z_max + z_min)/2
vlotterschaal =
67,6;// voeding door versus 3,3 V: 3,3 v /5 v * 1024 / 3,3 v * 330 mv/g = 67,6 g
float scale_x =
65;//de schaal van x-as: x_max/3.3v*330mv/g
float scale_y =
68.5;//de schaal van de y-as: y_max/3.3v*330mv/g
float scale_z =
68;//de schaal van de z-as: z_max/3.3v*330mv/g
Serial.print(((float)x
- zero_Gx)/scale_x); // print x-waarde op seriële monitor
Serieel.print("\t");
Serial.print(((float)y
- zero_Gy)/scale_y); // y-waarde afdrukken op seriële monitor
Serieel.print("\t");
Serial.print(((float)z
- zero_Gz)/scale_z); // print z-waarde op seriële monitor
Serieel.print("\n");
vertraging (1000); // wacht 1 seconde
}
Stap 5: Code-analyse
De code voor het ADXL345-experiment bestaat uit 3 delen: initialiseer elke poort en elk apparaat, verkrijg en bewaar gegevens die door de sensoren worden verzonden, en converteer de gegevens.
Aanbevolen:
Hoe de GPIO-pinnen en Avrdude van een Raspberry Pi te gebruiken om DIMP 2 of DA PIMP te Bit-bang-programma te gebruiken 2: 9 stappen
Hoe de GPIO-pinnen van een Raspberry Pi en Avrdude te gebruiken voor Bit-bang-programma DIMP 2 of DA PIMP 2: Dit zijn stapsgewijze instructies voor het gebruik van een Raspberry Pi en het gratis open-source commando avrdude to bit-bang -programmeer een DIMP 2 of DA PIMP 2. Ik neem aan dat je bekend bent met je Raspberry Pi en de LINUX-opdrachtregel. Je hoeft niet
WeMos TTgo ESP32 Uno D1 R32 instellen en gebruiken: 3 stappen
WeMos TTgo ESP32 Uno D1 R32 instellen en gebruiken: WeMos® TTgo ESP32 uno D1 R32 instellen doorloopt alle stappen om uw WeMos® TTgo ESP32 uno D1 R32 in gebruik te nemen
Mac Terminal gebruiken en toetsfuncties gebruiken: 4 stappen
Mac Terminal gebruiken en toetsfuncties gebruiken: We laten u zien hoe u de MAC Terminal opent. We zullen u ook enkele functies binnen de Terminal laten zien, zoals ifconfig, mappen wijzigen, toegang tot bestanden en arp. Met Ifconfig kunt u uw IP-adres en uw MAC-advertentie controleren
Orange Pi gebruiken zonder monitor door SSH en VNC-server te gebruiken - Ajarnpa
Gebruik Orange Pi zonder monitor door SSH en VNC-server te gebruiken: Orange Pi is als een minicomputer. Het heeft alle basispoorten die een normale computer heeft.Zoals HDMIUSBEthernetIT heeft een aantal speciale speciale poorten ZoalsUSB OTGGPIO-headersSD-kaartsleufParallelle camerapoortAls u orange pi wilt bedienen, moet u o
Hoe de Wiimote als computermuis te gebruiken Kaarsen als sensor gebruiken!! - Ajarnpa
De Wiimote als computermuis gebruiken Kaarsen als sensor gebruiken!!: Deze gids laat je zien hoe je je Wii-afstandsbediening (Wiimote) op je pc aansluit en als muis gebruikt