Eğitimler
ADXL3xx
Bu öğretici, ADXL3xx serisinden (örn. ADXL320 , ADXL321 , ADXL322 , ADXL330 ) ivmeölçerden nasıl okunacağını ve Arduino Yazılımının (IDE) seri monitöründeki veya seri bağlantı noktası üzerinden veri alan başka bir uygulamanın değerlerini nasıl alacağınızı gösterir.
Bu eğitim Sparkfun'un kesme tahtaları kullanılarak oluşturuldu . Adafruit ivmeölçer koparma panosu da çalışır, ancak farklı kablolanması gerekir.
ADXL3xx her eksendeki ivmeyi 0 ila 5 volt arasında bir analog voltaj olarak verir. Bunu okumak için tek ihtiyacınız olan analogRead()
fonksiyonudur.
Gerekli Donanım
- Arduino veya Genuino Kurulu
- ADXL3xx İvmeölçer
Devre
İvmeölçer çok az akım kullanır, böylece kartınıza takılabilir ve doğrudan dijital çıkış pinlerinden çıkıştan çıkabilir. Bunu yapmak için, ivmeölçere güç ve topraklama için ve kendi kendine test pininde dijital I / O pinleri olarak üç analog giriş pimini kullanacaksınız. İvmeölçerin analog çıkışlarını okumak için diğer üç analog girişi kullanacaksınız.
Şematik:
büyütmek için resme tıklayın
Yukarıda gösterilen konfigürasyon için pin bağlantıları şunlardır:
Koparma Kurulu Pimi | Kendi kendini test | Z ekseni | Y-Ekseni | X-Ekseni | Zemin | VDD |
Arduino Analog Giriş Pimi | 0 | 1 | 2 | 3 | 4 | 5 |
Veya yalnızca ivmeölçer kullanıyorsanız:
ADXL3xx Pimi | Kendi kendini test | zout | yout | xout | Zemin | VDD |
Arduino Pimi | Yok (bağlı değil) | Analog Giriş 1 | Analog Giriş 2 | Analog Giriş 3 | GND | 5V |
Lütfen, bazı ivmeölçerlerin 3.3V güç kaynağı kullandığını ve 5V hasar görebileceğini unutmayın. Doğru voltajın hangisi olduğunu öğrenmek için tedarikçinin belgelerine bakın.
Kod
İvmeölçer bağlantıları, güç kaynağı olarak iki Analog pim 4 ve 5 kullanılarak çizimin başlangıcında sabitler olarak tanımlanır. Bu, Dijital I / O pinleri 18 ve 19 olarak kullanılarak gerçekleştirilir. Gerekirse, A0 D14, A1 D15 vb.
const int groundpin = 18;
const int powerpin = 19;
Pimi 19 (A5) YÜKSEK ve pim 18 (A4) DÜŞÜK olarak ayarlamak, 5V'ye ivmeölçerin çalışması için gereken birkaç miliamper sağlar.
pinMode(groundpin, OUTPUT);
pinMode(powerpin, OUTPUT);
digitalWrite(groundpin, LOW);
digitalWrite(powerpin, HIGH);
Bu çözüm, Sparkfun'un kesme panolarının doğrudan Arduino veya Genuino kartınıza bağlanmasını sağlar. Standart 5V - veya 3.3V - ve GND pinlerine farklı kartlar bağlanabilir. Bu son durumda, kod void setup()
bölümünde yukarıdaki satırlara yorum yapılarak değiştirilebilir.
ADXL3xx
Reads an Analog Devices ADXL3xx accelerometer and communicates the
acceleration to the computer. The pins used are designed to be easily
compatible with the breakout boards from SparkFun, available from:
http://www.sparkfun.com/commerce/categories.php?c=80
The circuit:
- analog 0: accelerometer self test
- analog 1: z-axis
- analog 2: y-axis
- analog 3: x-axis
- analog 4: ground
- analog 5: vcc
created 2 Jul 2008
by David A. Mellis
modified 30 Aug 2011
by Tom Igoe
This example code is in the public domain.
http:egitim.aspx?e=ADXL3xx
*/
// these constants describe the pins. They won't change:
const int groundpin = 18; // analog input pin 4 -- ground
const int powerpin = 19; // analog input pin 5 -- voltage
const int xpin = A3; // x-axis of the accelerometer
const int ypin = A2; // y-axis
const int zpin = A1; // z-axis (only on 3-axis models)
void setup() {
// initialize the serial communications:
Serial.begin(9600);
// Provide ground and power by using the analog inputs as normal digital pins.
// This makes it possible to directly connect the breakout board to the
// Arduino. If you use the normal 5V and GND pins on the Arduino,
// you can remove these lines.
pinMode(groundpin, OUTPUT);
pinMode(powerpin, OUTPUT);
digitalWrite(groundpin, LOW);
digitalWrite(powerpin, HIGH);
}
void loop() {
// print the sensor values:
Serial.print(analogRead(xpin));
// print a tab between values:
Serial.print("\t");
Serial.print(analogRead(ypin));
// print a tab between values:
Serial.print("\t");
Serial.print(analogRead(zpin));
Serial.println();
// delay before next reading:
delay(100);
}
Veri
Burada bir ADXL322 2g ivmeölçerin y eksenini yerden çeşitli açılarda konumlandırarak toplanan bazı ivmeölçer okumaları. Değerler diğer eksenler için aynı olmalıdır, ancak cihazın hassasiyetine bağlı olarak değişecektir. Eksen yatay olduğunda (yani toprağa paralel veya 0 °), ivmeölçer okuması yaklaşık 512 olmalıdır, ancak farklı açılardaki değerler farklı bir ivmeölçer için farklı olacaktır (örn. ADXL302 5g bir).
Açı | -90 | -80 | -70 | -60 | -50 | -40 | -30 | -20 | -10 | 0 |
Hızlanma | 662 | 660 | 654 | 642 | 628 | 610 | 589 | 563 | 537 | 510 |
Açı | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 |
Hızlanma | 510 | 485 | 455 | 433 | 408 | 390 | 374 | 363 | 357 | 355 |
See Also
- pinMode()
- digitalWrite()
- analogRead()
- serial.begin()
- serial.print()
- AnalogInput- Bir LED'in yanıp sönmesini kontrol etmek için bir potansiyometre kullanın.
- AnalogInOutSerial- bir analog girişi okuyun, değerlerini eşleyin ve ardından bir LED'i kısmak veya aydınlatmak için bu bilgileri kullanın.
- Knock- Bir piezo elemanı ile darbelerini tespit edin.
- Memsic2125- İki eksenli ivmeölçer.
- Ping- Ultrasonik bir mesafe bulucu ile nesneleri tespit edin.