วิธีเชื่อมต่อมาตรความเร่งกับ Arduino

สารบัญ:

วิธีเชื่อมต่อมาตรความเร่งกับ Arduino
วิธีเชื่อมต่อมาตรความเร่งกับ Arduino

วีดีโอ: วิธีเชื่อมต่อมาตรความเร่งกับ Arduino

วีดีโอ: วิธีเชื่อมต่อมาตรความเร่งกับ Arduino
วีดีโอ: Arduino bluetooth communication to computer 2024, พฤศจิกายน
Anonim

คราวนี้เราจะจัดการกับการเชื่อมต่อตัววัดความเร่งสามแกนแบบแอนะล็อก ADXL335 กับ Arduino

มาตรความเร่งแบบอนาล็อก ADXL335
มาตรความเร่งแบบอนาล็อก ADXL335

จำเป็น

  • - Arduino;
  • - มาตรความเร่ง ADXL335;
  • - คอมพิวเตอร์ส่วนบุคคลที่มีสภาพแวดล้อมการพัฒนา Arduino IDE

คำแนะนำ

ขั้นตอนที่ 1

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

ภาพประกอบแสดงรูปภาพจากหนังสือเดินทาง (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) สำหรับมาตรความเร่ง ADXL335 นี่คือแกนพิกัดของความไวของตัวตรวจวัดความเร่งที่สัมพันธ์กับตำแหน่งทางเรขาคณิตของตัวอุปกรณ์ในอวกาศ รวมถึงตารางค่าแรงดันไฟจากช่องมาตรวัดความเร่ง 3 ช่อง ขึ้นอยู่กับการวางแนวในอวกาศ ข้อมูลในตารางมีไว้สำหรับเซ็นเซอร์ที่อยู่นิ่ง

มาดูกันดีกว่าว่ามาตรความเร่งแสดงให้เราเห็นอะไร ให้เซ็นเซอร์วางในแนวนอน เช่น บนโต๊ะ จากนั้นเส้นโครงของเวกเตอร์ความเร่งจะเท่ากับ 1g ตามแกน Z หรือ Zout = 1g อีกสองแกนจะมีเลขศูนย์: Xout = 0 และ Yout = 0 เมื่อเซ็นเซอร์ถูกหมุน "ที่ด้านหลัง" เซ็นเซอร์จะถูกนำไปในทิศทางตรงกันข้ามกับเวกเตอร์แรงโน้มถ่วง กล่าวคือ Zout = -1g. ในทำนองเดียวกัน การวัดจะใช้ทั้งสามแกน เป็นที่ชัดเจนว่าเครื่องวัดความเร่งสามารถจัดตำแหน่งได้ตามต้องการในอวกาศ ดังนั้นเราจะอ่านค่าอื่นที่ไม่ใช่ศูนย์จากทั้งสามช่องสัญญาณ

หากโพรบถูกเขย่าอย่างรุนแรงตามแนวแกน Z ในแนวตั้ง ค่า Zout จะมากกว่า "1g" ความเร่งที่วัดได้สูงสุดคือ "3g" ในแต่ละแกนในทิศทางใดก็ได้ (กล่าวคือ มีทั้ง "บวก" และ "ลบ")

แกนความไวของตัวตรวจวัดความเร่งและตารางค่าเอาต์พุต
แกนความไวของตัวตรวจวัดความเร่งและตารางค่าเอาต์พุต

ขั้นตอนที่ 2

ฉันคิดว่าเราเข้าใจหลักการทำงานของมาตรความเร่งแล้ว ทีนี้มาดูแผนภาพการเชื่อมต่อกัน

ชิปมาตรความเร่งแบบแอนะล็อก ADXL335 ค่อนข้างเล็กและบรรจุอยู่ในแพ็คเกจ BGA และติดตั้งบนบอร์ดที่บ้านได้ยาก ดังนั้น ฉันจะใช้โมดูล GY-61 สำเร็จรูปที่มีมาตรความเร่ง ADXL335 โมดูลดังกล่าวในร้านค้าออนไลน์ของจีนมีค่าใช้จ่ายเกือบหนึ่งเพนนี

ในการจ่ายไฟให้กับมาตรความเร่งจำเป็นต้องจ่ายแรงดัน +3, 3 V ให้กับพิน VCC ของโมดูล ช่องวัดเซ็นเซอร์เชื่อมต่อกับพินอะนาล็อกของ Arduino เช่น "A0", "A1" และ A2". นี่คือวงจรทั้งหมด:)

แผนภาพการเดินสายไฟของมาตรความเร่ง ADXL335 ไปยัง Arduno
แผนภาพการเดินสายไฟของมาตรความเร่ง ADXL335 ไปยัง Arduno

ขั้นตอนที่ 3

โหลดภาพสเก็ตช์นี้ลงในหน่วยความจำ Arduino เราจะอ่านค่าที่อ่านได้จากอินพุตแบบอะนาล็อกในสามช่องสัญญาณ แปลงเป็นแรงดันไฟฟ้าและส่งออกไปยังพอร์ตอนุกรม

Arduino มี ADC 10 บิต และแรงดันพินสูงสุดที่อนุญาตคือ 5 โวลต์ แรงดันไฟฟ้าที่วัดได้จะถูกเข้ารหัสด้วยบิตที่รับได้เพียง 2 ค่า - 0 หรือ 1 ซึ่งหมายความว่าช่วงการวัดทั้งหมดจะถูกหารด้วย (1 + 1) เป็นกำลังที่ 10 นั่นคือ บน 1024 ส่วนเท่า ๆ กัน

ในการแปลงค่าที่อ่านได้เป็นโวลต์ คุณต้องแบ่งแต่ละค่าที่วัดที่อินพุตแบบอะนาล็อกด้วย 1024 (ส่วน) แล้วคูณด้วย 5 (โวลต์)

เรามาดูกันว่าอะไรมาจากมาตรความเร่งจริง ๆ โดยใช้แกน Z เป็นตัวอย่าง (คอลัมน์สุดท้าย) เมื่อเซ็นเซอร์อยู่ในตำแหน่งแนวนอนและเงยหน้าขึ้นมอง ตัวเลขจะมา (2.03 +/- 0.01) นี่ควรสอดคล้องกับความเร่ง "+ 1g" ตามแนวแกน Z และมุม 0 องศา พลิกเซ็นเซอร์ ตัวเลขมาถึง (1, 69 +/- 0, 01) ซึ่งควรสอดคล้องกับ "-1g" และมุม 180 องศา

มาตรความเร่งการอ่านร่าง
มาตรความเร่งการอ่านร่าง

ขั้นตอนที่ 4

ลองเอาค่าจากมาตรความเร่งที่มุม 90 และ 270 องศาแล้วป้อนลงในตาราง ตารางแสดงมุมการหมุนของมาตรความเร่ง (คอลัมน์ "A") และค่า Zout ที่สอดคล้องกันในหน่วยโวลต์ (คอลัมน์ "B")

เพื่อความชัดเจน พล็อตของแรงดันไฟฟ้าที่เอาต์พุต Zout เทียบกับมุมการหมุนจะแสดงขึ้น สนามสีน้ำเงินคือช่วงพัก (ที่อัตราเร่ง 1g) กล่องสีชมพูบนกราฟคือระยะขอบเพื่อให้เราสามารถวัดความเร่งได้สูงถึง + 3g และสูงถึง -3g

ที่การหมุน 90 องศา แกน Z จะมีอัตราเร่งเป็นศูนย์ เหล่านั้น. ค่า 1.67 โวลต์เป็นศูนย์ที่มีเงื่อนไข Zo สำหรับแกน Z จากนั้นคุณจะพบความเร่งดังนี้:

g = Zout - Zo /ความไว_z ในที่นี้ Zout คือค่าที่วัดได้เป็นมิลลิโวลต์ Zo คือค่าที่ความเร่งเป็นศูนย์ในหน่วยมิลลิโวลต์, sensitivity_z คือความไวของเซ็นเซอร์ตามแนวแกน Z ปรับเทียบมาตรวัดความเร่งและคำนวณค่าความไวเฉพาะสำหรับคุณ เซ็นเซอร์โดยใช้สูตร:

sensitive_z = [Z (0 องศา) - Z (90 องศา)] * 1000 ในกรณีนี้ ความไวของมาตรความเร่งตามแกน Z = (2, 03 - 1, 68) * 1000 = 350 mV ในทำนองเดียวกัน ความไวจะต้องคำนวณสำหรับแกน X และ Y

คอลัมน์ "C" ของตารางแสดงอัตราเร่งที่คำนวณได้จากห้ามุมที่ความไว 350 อย่างที่คุณเห็น พวกมันเกือบจะตรงกับที่แสดงในรูปที่ 1

ความสอดคล้องของมุมการหมุนของมาตรความเร่งกับค่าที่อ่านได้
ความสอดคล้องของมุมการหมุนของมาตรความเร่งกับค่าที่อ่านได้

ขั้นตอนที่ 5

เมื่อนึกถึงหลักสูตรเรขาคณิตพื้นฐาน เราได้สูตรการคำนวณมุมการหมุนของมาตรความเร่ง:

angle_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx]

ค่าอยู่ในหน่วยเรเดียน หากต้องการแปลงเป็นองศา ให้หารด้วย Pi แล้วคูณด้วย 180

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

เมื่อส่งออกไปยังพอร์ต "Serial.print ()" อักขระ "\ t" หมายถึงอักขระแท็บเพื่อให้คอลัมน์เท่ากันและค่าต่างๆ จะอยู่ใต้อีกอันหนึ่ง "+" หมายถึงการต่อ (concatenation) ของสตริง ยิ่งไปกว่านั้น ตัวดำเนินการ "String ()" จะบอกคอมไพเลอร์อย่างชัดเจนว่าค่าตัวเลขจะต้องถูกแปลงเป็นสตริง ตัวดำเนินการปัดเศษ () ปัดเศษมุมให้ใกล้ที่สุด 1 องศา

ภาพร่างที่คำนวณความเร่งและมุมของมาตรความเร่ง
ภาพร่างที่คำนวณความเร่งและมุมของมาตรความเร่ง

ขั้นตอนที่ 6

ดังนั้นเราจึงได้เรียนรู้วิธีรับและประมวลผลข้อมูลจากเครื่องวัดความเร่งแบบแอนะล็อก ADXL335 โดยใช้ Arduino ตอนนี้เราสามารถใช้มาตรความเร่งในการออกแบบของเราได้แล้ว

แนะนำ: