สารบัญ:

ไฟ LED และแรงโน้มถ่วง ?: 4 ขั้นตอน
ไฟ LED และแรงโน้มถ่วง ?: 4 ขั้นตอน

วีดีโอ: ไฟ LED และแรงโน้มถ่วง ?: 4 ขั้นตอน

วีดีโอ: ไฟ LED และแรงโน้มถ่วง ?: 4 ขั้นตอน
วีดีโอ: รีวิวโคมไฟน้ำต้านแรงโน้มถ่วง“Hydra Lamp” | TNN Tech Reports 2024, กรกฎาคม
Anonim
ไฟ LED และแรงโน้มถ่วง ?
ไฟ LED และแรงโน้มถ่วง ?

โปรเจ็กต์นี้ไม่ได้ใช้งานจริงแต่อย่างใด แต่เริ่มต้นขึ้นเพื่อเป็นแบบฝึกหัดในการใช้สูตรฟิสิกส์ที่เกี่ยวข้องกับแรงโน้มถ่วงในโค้ด C บน Arduino เพื่อให้มองเห็นสิ่งต่างๆ ได้ จึงใช้แถบ LED แบบนีโอพิกเซลพร้อมไฟ LED 74 ดวง ผลของความเร่งโน้มถ่วงบนวัตถุนั้นแสดงให้เห็นโดยใช้มาตรความเร่ง MPU-6050 และชิปไจโรสโคป ชิปนี้ติดอยู่กับแถบ LED ดังนั้นเมื่อแถบ LED ถูกยึดไว้ที่มุมหนึ่ง ชิปจะวัดมุมของแถบ LED และ Arduino จะใช้ข้อมูลนี้เพื่ออัปเดตตำแหน่งของวัตถุเสมือนราวกับว่า เป็นลูกที่สมดุลบนคานและกลิ้งจากด้านหนึ่งไปอีกด้านหนึ่งหากลำแสงถูกถือไว้ที่มุม ตำแหน่งของวัตถุเสมือนจะแสดงบนแถบ LED เป็น LED ดวงเดียวที่ติดสว่าง

ในการอัปเดตตำแหน่งของวัตถุเสมือนที่ตกลงสู่พื้นโลกภายใต้อิทธิพลของแรงโน้มถ่วง เราใช้สูตร:

y = y0 + (V0 * t) + (0.5 * a * t^2)

กับ:

y = ระยะทางที่เดินทางเป็นเมตร y0 = ระยะทางเริ่มต้นเป็นเมตร v0 = ความเร็วเริ่มต้นเป็นเมตร/วินาที a = ความเร่ง (แรงโน้มถ่วง) เป็นเมตร/วินาที^2 t = เวลาเป็นวินาที

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

วงจร
วงจร

Arduino Pro Mini ใช้พลังงานจากการจ่ายไฟ +5V ลงในพิน +5V โดยตรง ซึ่งเป็นเอาต์พุตของตัวควบคุมออนบอร์ด 5V นี่อาจดูธรรมดาไปหน่อย แต่เมื่อ Vin เปิดทิ้งไว้ จะไม่สร้างปัญหาตราบใดที่คุณไม่กลับขั้ว เพราะนั่นจะทำให้ Arduino ของคุณแย่อย่างแน่นอน

มาตรความเร่ง MPU6050 และชิปไจโรสโคปใช้พลังงานจากโมดูลตัวแปลง 5V เป็น 3V3 ที่ใช้พลังงานต่ำ และพูดคุยกับ Arduino ผ่านอินเทอร์เฟซ I2C (SDA, SCL) ด้วย Arduino Pro Mini SDA จะเชื่อมต่อกับ A4 และ SCL เชื่อมต่อกับ A5 ซึ่งทั้งคู่อยู่บน Arduino Pro Mini PCB ด้วยเวอร์ชัน Pro Mini ที่ฉันใช้ A4 และ A5 จะอยู่ภายใน PCB (2 รู) และไม่สามารถเข้าถึงได้ผ่านส่วนหัวของพินที่ด้านข้างของ PCB MPU6050 ยังมีอินเทอร์รัปต์เอาท์พุต (INT) ที่ใช้เพื่อบอก Arduino เมื่อมีข้อมูลใหม่ แถบ LED นีโอพิกเซล WS2812B พร้อมไฟ LED 74 ดวงได้รับพลังงานโดยตรงจากแหล่งจ่ายไฟ 5V และมี 1 สายข้อมูล (DIN) ที่เชื่อมต่อกับเอาต์พุตของ Arduino

ขั้นตอนที่ 2: ซอฟต์แวร์

ฉันใส่ไดรเวอร์ทั้งหมดที่ใช้โดย Sketch (.ino) ไว้ในโฟลเดอร์เดียวกับ Sketch แทนการใช้ไลบรารี เหตุผลก็คือฉันไม่ต้องการให้อัปเดตไดรเวอร์ ป้องกันไม่ให้บั๊กแอบเข้ามา และเพื่อป้องกันไม่ให้การเปลี่ยนแปลงที่ฉันทำกับไดรเวอร์นั้นจะถูกแทนที่ด้วยการอัปเดต

นี่คือรายการไฟล์โครงการ:

  • Balancing_LED_using_MPU6050gyro.ino: ไฟล์ร่าง
  • MPU6050.cpp / MPU6050.h: MPU6050 มาตรความเร่งและไจโรสโคป
  • MPU6050_6Axis_MotionApps20.h: MPU6050 DMP (ตัวประมวลผลการเคลื่อนไหวแบบดิจิตอล) คำจำกัดความและฟังก์ชัน
  • helper_3dmath.h: คำจำกัดความของคลาสสำหรับ quaternions และ integer หรือ float vectors
  • I2Cdev.cpp / I2Cdev.h: ไดรเวอร์ I2C โดยใช้ไลบรารีสาย Arduino
  • LEDMotion.cpp / LEDMotion.h: การใช้งานสมดุล LED แรงโน้มถ่วงโดยใช้แถบ LED และมุมที่วัดโดย MPU6050

ขั้นตอนที่ 3: รูปภาพ

แนะนำ: