Სარჩევი:

Gyro Sensor კონტროლირებადი პლატფორმა Maze Puzzle: 3 ნაბიჯი
Gyro Sensor კონტროლირებადი პლატფორმა Maze Puzzle: 3 ნაბიჯი

ვიდეო: Gyro Sensor კონტროლირებადი პლატფორმა Maze Puzzle: 3 ნაბიჯი

ვიდეო: Gyro Sensor კონტროლირებადი პლატფორმა Maze Puzzle: 3 ნაბიჯი
ვიდეო: How MEMS Accelerometer Gyroscope Magnetometer Work & Arduino Tutorial 2024, ივნისი
Anonim
Gyro Sensor კონტროლირებადი პლატფორმა Maze Puzzle
Gyro Sensor კონტროლირებადი პლატფორმა Maze Puzzle

ეს ინსტრუქცია შეიქმნა სამხრეთ ფლორიდის უნივერსიტეტში Make კურსის საპროექტო მოთხოვნების შესასრულებლად (www.makecourse.com)"

ეს მარტივი პროექტი შთაგონებულია თვითბალანსირებული პლატფორმით, რომელიც იღებს გამოხმაურებას ამაჩქარებლის სენსორისგან. შეამოწმეთ, თუ უკვე არ გააკეთეთ.

პროექტი იყენებს Arduino UNO - მარტივი მიკროკონტროლი, რომელიც შეგიძლიათ მიიღოთ ონლაინ საყიდლების ვებსაიტებიდან! ამ სასწავლო ინსტრუქციაში მე ვაჩვენებ, თუ როგორ შეგიძლიათ შექმნათ თქვენი საკუთარი პროგრამირებადი დახრის პლატფორმა - დიზაინის პროცესიდან დაწყებული ნაწილების მოძიებამდე, 3D ბეჭდვის ფაილებამდე, შეკრებაზე და პროგრამირებაზე. დარჩით და წავიდეთ წინ!

ნაბიჯი 1: კომპონენტები საჭირო და 3D ბეჭდვის ნაწილები

კომპონენტები საჭირო და 3D ბეჭდვის ნაწილები
კომპონენტები საჭირო და 3D ბეჭდვის ნაწილები
კომპონენტები საჭირო და 3D ბეჭდვის ნაწილები
კომპონენტები საჭირო და 3D ბეჭდვის ნაწილები
კომპონენტები საჭირო და 3D ბეჭდვის ნაწილები
კომპონენტები საჭირო და 3D ბეჭდვის ნაწილები

პროექტისათვის გამოყენებული კომპონენტების ჩამონათვალი:

1. Arduino UNO მიკროკონტროლერი.

2. პურის დაფა ჯუმბერის მავთულხლართებით.

3. ყუთი.

4. წრიული პლატფორმა

5. სიბრაზე.

6. ბმულები - 3 არა

7. ბაზა სამი სერვისის დასაყენებლად.

8. გირო/აქსელერომეტრის სენსორი. (MPU6050)

9.1 კვადრატული მმ მავთულები (500 სმ) - 4 არა

10. 3 მმ დია ფოლადის ბურთულები.

პროექტისთვის გამოყენებული ნაწილების უმეტესობა 3D ბეჭდვაა და მე დავამატე ქ. ფაილები დასაბეჭდად მზად.

შეაგროვეთ ყველა ნაწილი, როგორც ეს მოცემულია ფიგურებში. ლაბირინთი ცხელი წებოა წრიულ პლატფორმაზე, რომ გამოიყურებოდეს როგორც სურათზე. სამი servos უნდა იყოს ცხელი წებოვანი 3D დაბეჭდილ ბაზაზე, რომელიც დამონტაჟებულია ყუთის სახურავზე. ყუთში არის Arduino UNO და Breadboard აწყობილი, როგორც ეს მოცემულია ფიგურაში. პურის დაფის დაყენება განხილული იქნება შემდეგ ეტაპზე.

შეკრების შემდეგ, საბოლოო პროტოტიპი უნდა გამოიყურებოდეს, როგორც ბოლო სურათზე.

ნაბიჯი 2: პურის დაფის დაყენება

პურის დაფის დაყენება
პურის დაფის დაყენება
პურის დაფის დაყენება
პურის დაფის დაყენება
პურის დაფის დაყენება
პურის დაფის დაყენება

შეკრების შემდეგ, Arduino, აქსელერომეტრის სენსორი, servos დაკავშირებულია, როგორც აღწერილია ქვემოთ.

პურის დაფაზე არსებული დადებითი და უარყოფითი რელსები დაკავშირებულია არდუინოს 5V და GND შესაბამისად. სენსორი არდუინოს უკავშირდება ნახევარი მეტრიანი მავთულის გამოყენებით, რომელიც სენსორზე უნდა იყოს მიბმული ისე, რომ სენსორის VCC და GND ქინძისთავები იყოს დაკავშირებული პურის დაფაზე +ve და -ve რელსებთან შესაბამისად. სენსორის SCL და SDA ქინძისთავები, რომლებიც დაკავშირებულია არდუინოს A5 და A4 ანალოგიურ ქინძისთავებთან. სამი სერვისის PWM ქინძისთავები დაკავშირებულია არდუინოს შესაბამისად 2, 3, 4 პინებთან და ყველა სერვისის +ve და -ve ქინძისთავები უკავშირდება პურის დაფის +ve და -ve რელსებს. ამით ჩვენი კავშირები დასრულებულია.

ნაბიჯი 3: პროექტის კოდი

შეგიძლიათ ჩამოტვირთოთ MPU6050 და Servo ბიბლიოთეკები ინტერნეტიდან და გამოიყენოთ იგი პროექტისათვის. შეადგინეთ და ატვირთეთ Arduino– ში შემდეგი კოდი და პროექტი მზად არის. დახრილი სენსორი და თქვენ ხედავთ ლაბირინთიდან დახრილი იმავე მიმართულებით! თავსატეხის ამოხსნას გარკვეული დრო სჭირდება, რადგან ის ცოტა რთულია, მაგრამ სახალისოა თამაში.

#ჩართეთ

#ჩართეთ

#ჩართეთ

სერვო სერვო 1;

სერვო სერვო 2;

სერვო სერვო 3;

MPU6050 სენსორი;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t ცული, ay, az;

int16_t gx, gy, gz;

ბათილად დაყენება ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3.atach (4);

Wire.begin ();

სერიული.დაწყება (9600);

}

ბათილი მარყუჟი ()

{

sensor.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz);

ცული = რუკა (ცული, -17000, 17000, 0, 180);

ay = რუკა (ay, -17000, 17000, 0, 180);

Serial.print ("ცული =");

სერიული. ბეჭდვა (ცული);

Serial.print ("ay =");

Serial.println (ay);

თუ (ცული <80 && ay <80) {

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

თუ (ცული 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (servoPos3--); }

if (ax> 120 && ay> 0) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.write (servoPos3 ++); }

if (ax == 90 && ay == 90) {

Servo1.write (0);

Servo2.write (0);

Servo3.write (0);

}

}

გირჩევთ: