สารบัญ:

ADXL345 การใช้ Arduino Uno R3: 5 ขั้นตอน
ADXL345 การใช้ Arduino Uno R3: 5 ขั้นตอน

วีดีโอ: ADXL345 การใช้ Arduino Uno R3: 5 ขั้นตอน

วีดีโอ: ADXL345 การใช้ Arduino Uno R3: 5 ขั้นตอน
วีดีโอ: การใช้ Arduino อ่านค่าความเร่งจาก Triple Axis Accelerometer ADXL345 2024, กรกฎาคม
Anonim
ADXL345 โดยใช้ Arduino Uno R3
ADXL345 โดยใช้ Arduino Uno R3

ในบทนี้ เราจะเรียนรู้วิธีใช้เซ็นเซอร์เร่งความเร็ว ADXL345

ขั้นตอนที่ 1: ส่วนประกอบ

- บอร์ด Arduino Uno * 1

- สาย USB * 1

- ADXL345 *1

- เขียงหั่นขนม * 1

- สายจัมเปอร์

ขั้นตอนที่ 2: หลักการ

มาตรความเร่งใช้เพื่อวัดแรงที่เกิดขึ้นระหว่างการเร่งความเร็ว พื้นฐานที่สุดคือความเร่งของแรงโน้มถ่วงที่รู้จักกันทั่วไปคือ 1 กรัม

โดยการวัดความเร่งที่เกิดจากแรงโน้มถ่วง คุณสามารถคำนวณมุมเอียงของอุปกรณ์กับพื้นผิวระดับได้ ด้วยการวิเคราะห์การเร่งความเร็วแบบไดนามิก คุณสามารถบอกได้ว่าอุปกรณ์เคลื่อนที่อย่างไร ตัวอย่างเช่น บอร์ดปรับสมดุลตัวเองหรือโฮเวอร์บอร์ดใช้เซ็นเซอร์เร่งความเร็วและไจโรสโคปสำหรับตัวกรองคาลมานและการแก้ไขท่าทาง

ADXL345

ADXL345 เป็นมาตรความเร่งแบบ 3 แกนขนาดเล็ก บาง และใช้พลังงานต่ำ พร้อมการวัดความละเอียดสูง (13 บิต) ที่สูงถึง ±16 กรัม ข้อมูลเอาต์พุตดิจิทัลจัดรูปแบบเป็นส่วนประกอบเสริม 16 บิต และสามารถเข้าถึงได้ผ่านอินเทอร์เฟซดิจิทัล SPI (3 หรือ 4 สาย) หรือ I2C ในการทดลองนี้ ใช้อินเทอร์เฟซดิจิทัล I2C

เหมาะอย่างยิ่งสำหรับการวัดความเร่งคงที่ของแรงโน้มถ่วงในการใช้งานการตรวจจับการเอียง รวมถึงการเร่งความเร็วแบบไดนามิกที่เกิดจากการเคลื่อนไหวหรือการกระแทก ความละเอียดสูง (4 มก./LSB) ช่วยให้สามารถวัดการเปลี่ยนแปลงความเอียงได้น้อยกว่า 1.0 ° และความไวแสงที่ยอดเยี่ยม (3.9 มก./LSB @2 ก.) ให้เอาต์พุตที่มีความแม่นยำสูงถึง ±16 ก.

ADXL345 ทำงานอย่างไร

ADXL345 ตรวจจับการเร่งความเร็วด้วยส่วนประกอบตรวจจับที่ด้านหน้า จากนั้นส่วนประกอบตรวจจับสัญญาณไฟฟ้าจะเปลี่ยนเป็นสัญญาณไฟฟ้า ซึ่งเป็นสัญญาณแอนะล็อก ถัดไป อะแดปเตอร์ AD ที่รวมอยู่ในโมดูลจะแปลงสัญญาณแอนะล็อกเป็นสัญญาณดิจิทัล

X_OUT, Y_OUT และ Z_OUT เป็นค่าที่แกน X, Y และ Z ตามลำดับ วางโมดูลโดยหงายหน้าขึ้น: Z_OUT สามารถเข้าถึง +1g ได้สูงสุด X_OUT ขั้นต่ำคือ -1g ในทิศทาง Axe และต่ำสุดของ Y_OUT คือ -1g ในทิศทาง Ay ในทางกลับกัน ให้พลิกโมดูลกลับด้าน: ค่าต่ำสุดของ Z_OUT คือ -1g, ค่าสูงสุดของ X_OUT คือ +1g ในทิศทางของ Axe และสูงสุดของ Y_OUT คือ +1g ไปยังทิศทาง Ay ดังที่แสดงด้านล่าง หมุนโมดูล ADXL345 แล้วคุณจะเห็นการเปลี่ยนแปลงของค่าสามค่า

เมื่อช่อง A เปลี่ยนจากระดับสูงเป็นระดับต่ำ หากช่อง B อยู่ในระดับสูง แสดงว่าตัวเข้ารหัสแบบหมุนหมุนตามเข็มนาฬิกา (CW) หากในขณะนั้นช่อง B อยู่ในระดับต่ำ แสดงว่าหมุนทวนเข็มนาฬิกา (CCW) ดังนั้นหากเราอ่านค่าของช่อง B เมื่อช่อง A อยู่ในระดับต่ำ เราจะทราบได้ว่าตัวเข้ารหัสแบบหมุนหมุนไปในทิศทางใด

หลักการ: ดูแผนผังของโมดูล Rotary Encoder ด้านล่าง จากนั้นเราจะเห็นว่าพิน 3 ของตัวเข้ารหัสแบบหมุนคือ CLK บนโมดูลคือช่อง B ขาที่ 5 ซึ่งคือ DT คือช่อง A หากต้องการทราบทิศทางการหมุนของเครื่องบันทึกเพียงอ่านค่าของ CLK และ ดีที.

มีชิปควบคุมแรงดันไฟฟ้า 3.3v ในวงจร ดังนั้นคุณจึงสามารถจ่ายไฟให้กับโมดูลด้วย 5V หรือ 3.3V

เนื่องจาก SDO เชื่อมต่อกับ GND แล้ว ที่อยู่ I2C ของ ADXL345 คือ 0x53, 0xA6 สำหรับการเขียน, 0xA7 สำหรับการอ่าน

ฟังก์ชันพินของโมดูล ADXL345

ขั้นตอนที่ 3: ขั้นตอน

ขั้นตอนที่ 1 สร้างวงจร

ขั้นตอนที่ 2:

ดาวน์โหลดโค้ดจาก

ขั้นตอนที่ 3:

อัปโหลดภาพร่างไปยังบอร์ด Arduino Uno

คลิกไอคอนอัปโหลดเพื่ออัปโหลดรหัสไปยังแผงควบคุม

หาก "เสร็จสิ้นการอัปโหลด" ปรากฏที่ด้านล่างของหน้าต่าง แสดงว่าอัปโหลดภาพร่างสำเร็จแล้ว

หลังจากอัปโหลดแล้ว ให้เปิด Serial Monitor ซึ่งคุณสามารถดูข้อมูลที่ตรวจพบได้ เมื่อความเร่งของโมดูลเปลี่ยนไป ตัวเลขจะเปลี่ยนไปตามหน้าต่าง

ขั้นตอนที่ 4: รหัส

รหัส
รหัส

//ADXL335

/********************************

ADXL335

หมายเหตุ:vcc5v

แต่ ADXL335 Vs คือ 3.3V

วงจร:

5V: VCC

แอนะล็อก 0: แกน x

แอนะล็อก 1: แกน y

แอนะล็อก 2: แกน z

หลังจากเผา

โปรแกรม เปิดหน้าต่างการดีบักมอนิเตอร์แบบอนุกรม ซึ่งคุณสามารถดูข้อมูลที่ตรวจพบกำลังแสดงอยู่ เมื่อความเร่งแปรผัน ตัวเลขก็จะแปรผันตามไปด้วย

*********************************

/อีเมล:

//เว็บไซต์:www.primerobotics.in

const int xpin =

A0; // แกน x ของมาตรความเร่ง

const int ypin =

A1; // แกน y

const int zpin =

A2; // แกน z (เฉพาะรุ่น 3 แกนเท่านั้น)

การตั้งค่าเป็นโมฆะ ()

{

// เริ่มต้นการสื่อสารแบบอนุกรม:

Serial.begin(9600);

}

วงเป็นโมฆะ ()

{

int x = analogRead (xpin); // อ่านจาก xpin

ล่าช้า(1); //

int y = analogRead (ypin); //อ่านจาก ypin

ล่าช้า(1);

int z = analogRead (zpin); // อ่านจาก zpin

ลอยศูนย์_G = 338.0; //ADXL335 พาวเวอร์ซัพพลาย

โดย Vs 3.3V:3.3V/5V*1024=676/2=338

// Serial.print(x);

//Serial.print("\t");

// Serial.print(y);

//Serial.print("\t");

//อนุกรม.print(z);

//Serial.print("\n");

ลอย

zero_Gx=331.5;//เอาต์พุต zero_G ของแกน x:(x_max + x_min)/2

ลอย

zero_Gy=329.5;//เอาต์พุต zero_G ของแกน y:(y_max + y_min)/2

float zero_Gz=340.0;//the

เอาต์พุต zero_G ของแกน z:(z_max + z_min)/2

มาตราส่วนลอย =

67.6; // การจ่ายไฟโดย Vs 3.3V:3.3v /5v *1024/3.3v *330mv/g =67.6g

float scale_x =

65;//สเกลแกน x: x_max/3.3v*330mv/g

float scale_y =

68.5;//สเกลของแกน y: y_max/3.3v*330mv/g

float scale_z =

68;//สเกลของแกน z: z_max/3.3v*330mv/g

Serial.print(((ลอย)x

- zero_Gx)/scale_x); //พิมพ์ค่า x บนจอภาพอนุกรม

Serial.print("\t");

Serial.print(((ลอย)y

- zero_Gy)/scale_y); //พิมพ์ค่า y บนจอภาพอนุกรม

Serial.print("\t");

Serial.print(((ลอย)z

- zero_Gz)/scale_z); //พิมพ์ค่า z บนจอภาพอนุกรม

Serial.print("\n");

ล่าช้า (1000); //รอ 1 วินาที

}

ขั้นตอนที่ 5: การวิเคราะห์โค้ด

รหัสสำหรับการทดลอง ADXL345 ประกอบด้วย 3 ส่วน ได้แก่ เริ่มต้นแต่ละพอร์ตและอุปกรณ์ รับและจัดเก็บข้อมูลที่ส่งจากเซ็นเซอร์ และแปลงข้อมูล

แนะนำ: