Innehållsförteckning:
Video: ADXL345 Använda Arduino Uno R3: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
I den här lektionen lär vi oss hur man använder accelerationssensorn ADXL345.
Steg 1: Komponenter
- Arduino Uno board * 1
- USB -kabel * 1
- ADXL345 *1
- Brödbräda * 1
- Tröjor
Steg 2: Princip
En accelerometer används för att mäta kraften som genereras under accelerationen. Det mest grundläggande är den allmänt kända tyngdaccelerationen som är 1 g.
Genom att mäta accelerationen som orsakas av gravitation kan du beräkna enhetens lutningsvinkel mot den plana ytan. Genom att analysera den dynamiska accelerationen kan du berätta hur enheten rör sig. Till exempel tillämpar självbalanseringskort eller hoverboard accelerationssensorn och gyroskopet för Kalman-filter och hållningskorrigering.
ADXL345
ADXL345 är en liten, tunn, lågeffekt, 3-axlig accelerometer med hög upplösning (13-bitars) mätning på upp till ± 16 g. Digital utdata formateras som 16-bitars tvåkomplement och kan nås antingen via ett SPI (3- eller 4-trådars) eller I2C digitalt gränssnitt. I detta experiment används det digitala gränssnittet I2C.
Den är väl lämpad att mäta den statiska tyngdaccelerationen i lutningsavkännande applikationer, liksom dynamisk acceleration till följd av rörelse eller stötar. Dess höga upplösning (4 mg/LSB) möjliggör lutningsändringsmätning med mindre än 1,0 °. Och den utmärkta känsligheten (3,9 mg/LSB @2g) ger en hög precision på upp till ± 16g.
Hur fungerar ADXL345
ADXL345 detekterar accelerationen med avkänningskomponenten längst fram, och sedan ändrar den elektriska signalavkänningskomponenten den till en elektrisk signal, som är analog. Därefter omvandlar den AD -adapter som är integrerad på modulen den analoga signalen till en digital.
X_OUT, Y_OUT och Z_OUT är värdena på X-, Y- och Z -axeln. Placera modulen med framsidan uppåt: Z_OUT kan högst uppgå till +1 g, minsta X_OUT är -1 g mot axelriktningen och minsta Y_OUT är -1 g mot Ay -riktningen. Å andra sidan, vänd upp och ner på modulen: lägsta Z_OUT är -1g, max X_OUT är +1g mot axelriktningen och maximalt för Y_OUT är +1g mot Ay -riktningen., enligt nedanstående. Vrid på ADXL345 -modulen så ser du ändringen av tre värden.
när kanal A ändras från hög till låg nivå, om kanal B är hög nivå, indikerar den att roterande kodare snurrar medurs (CW); om kanal B är låg i det ögonblicket betyder det snurr moturs (CCW). Så om vi läser värdet på kanal B när kanal A är låg, kan vi veta i vilken riktning den roterande kodaren roterar.
Princip: Se det schematiska diagrammet för Rotary Encoder -modulen nedan. Därifrån kan vi se att stift 3 på den roterande kodaren, nämligen CLK på modulen, är kanal B. Stift 5, som är DT, är kanal A. För att känna till inspelarens rotationsriktning, läs bara värdet på CLK och DT.
Det finns ett 3.3V spänningsregulatorchip i kretsen, så du kan driva modulen med 5V eller 3.3V.
Eftersom SDO har anslutits till GND är I2C -adressen för ADXL345 0x53, 0xA6 för skrivning, 0xA7 för läsning
Stiftfunktion för ADXL345 -modulen.
Steg 3: Förfaranden
Steg 1. Bygg kretsen.
Steg 2:
Ladda ner koden från
Steg 3:
Ladda upp skissen till Arduino Uno -kortet
Klicka på ikonen Ladda upp för att ladda upp koden till kontrollkortet.
Om "Klar överföring" visas längst ned i fönstret betyder det att skissen har laddats upp.
Efter överföringen öppnar du Serial Monitor, där du kan se data som upptäckts. När accelerationen för modulen ändras kommer figuren att ändras i enlighet med fönstret.
Steg 4: Kod
// ADXL335
/********************************
ADXL335
Obs: vcc5v, men ADXL335 Vs är 3.3V
Kretsen:
5V: VCC
analog 0: x-axel
analog 1: y-axel
analog 2: z-axel
Efter att ha bränt
program, öppna det seriella bildskärmsfelsökningsfönstret, där du kan se data som upptäckts visas. När accelerationen varierar kommer siffran att variera därefter.
*********************************
/E-post:
// Webbplats: www.primerobotics.in
const int xpin =
A0; // x-axeln för accelerometern
const int ypin =
A1; // y-axel
const int zpin =
A2; // z-axel (endast på 3-axliga modeller)
void setup ()
{
// initiera seriekommunikationen:
Serial.begin (9600);
}
void loop ()
{
int x = analogRead (xpin); // läst från xpin
fördröjning (1); //
int y = analogRead (ypin); // läst från ypin
fördröjning (1);
int z = analogRead (zpin); // läst från zpin
float zero_G = 338,0; // ADXL335 strömförsörjning
med Vs 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 ");
flyta
zero_Gx = 331,5; // noll_G -utgången för x -axeln: (x_max + x_min)/2
flyta
zero_Gy = 329,5; // noll_G -utmatningen för y -axeln: (y_max + y_min)/2
floate zero_Gz = 340.0; // the
zero_G -utmatning av z -axeln: (z_max + z_min)/2
flottörskala =
67,6; // strömförsörjning med Vs 3,3V: 3,3v/5v *1024/3,3v *330mv/g = 67,6g
float skala_x =
65; // skalan för x -axeln: x_max/3,3v*330mv/g
float scale_y =
68,5; // skalan på y -axeln: y_max/3,3v*330mv/g
float skala_z =
68; // skalan för z -axeln: z_max/3,3v*330mv/g
Serial.print (((float) x
- zero_Gx)/scale_x); // skriv ut x -värde på seriell bildskärm
Serial.print ("\ t");
Serial.print (((float) y
- zero_Gy)/scale_y); // skriv ut y -värde på seriell bildskärm
Serial.print ("\ t");
Serial.print (((float) z
- zero_Gz)/scale_z); // skriv ut z -värde på seriell bildskärm
Serial.print ("\ n");
fördröjning (1000); // vänta i 1 sekund
}
Steg 5: Kodanalys
Koden för ADXL345 -experimentet innehåller tre delar: initiera varje port och enhet, hämta och lagra data som skickas från sensorerna och konvertera data.
Rekommenderad:
Arduino Traffic Light Controller Använda RBG Led - 4-vägs: 3 steg
Arduino Traffic Light Controller Använda RBG Led | 4-vägs: I det här inlägget lär du dig hur du gör en Arduino-trafikljuskontroll. Denna trafikljuskontroll kommer att användas för att styra trafikflödet. Dessa kan tillämpas i områden med hög trafik för att undvika trafikblock eller olyckor
HUR DU BRÄNDER BOOTLOADER I ATMEGA328 Använda Arduino Uno: 5 steg
HUR DU BRÄNDER BOOTLOADER I ATMEGA328 Använda Arduino Uno: första klockvideohandledning
Gränssnitt Multiple LCD till Arduino Uno Använda Common Data Line: 5 steg
Gränssnitt Multiple LCD till Arduino Uno med hjälp av Common Data Line: Idag kommer jag i denna instruerbara att visa dig hur du gränssnittar flera 16x2 LCD -moduler med ett arduino uno board med gemensam datalinje. Det mest intressanta med det här projektet är att det använder gemensam datalinje och visar olika data i e
Neopixel Ws2812 Rainbow LED-glöd med M5stick-C - Köra Rainbow på Neopixel Ws2812 Använda M5stack M5stick C Använda Arduino IDE: 5 steg
Neopixel Ws2812 Rainbow LED-glöd med M5stick-C | Köra Rainbow på Neopixel Ws2812 Använda M5stack M5stick C Använda Arduino IDE: Hej killar i denna instruktioner kommer vi att lära oss hur man använder neopixel ws2812 lysdioder eller ledremsor eller ledmatris eller ledring med m5stack m5stick-C utvecklingsbräda med Arduino IDE och vi kommer att göra ett regnbågsmönster med det
Använda Arduino Uno för XYZ Positionering av 6 DOF robotarm: 4 steg
Använda Arduino Uno för XYZ Positionering av 6 DOF Robotic Arm: Detta projekt handlar om att implementera en kort och relativt enkel Arduino -skiss för att ge XYZ invers kinematisk positionering. Jag hade byggt en 6 servo robotarm men när det gällde att hitta programvara för att köra den fanns det inte mycket där ute förutom cust