Съдържание:

Платформа с контролер на жироскоп за сензор за лабиринт: 3 стъпки
Платформа с контролер на жироскоп за сензор за лабиринт: 3 стъпки

Видео: Платформа с контролер на жироскоп за сензор за лабиринт: 3 стъпки

Видео: Платформа с контролер на жироскоп за сензор за лабиринт: 3 стъпки
Видео: Только не говори никому.. Как легко можно восстановить жидкокристаллический экран.. 2024, Ноември
Anonim
Платформа, управлявана от жироскоп, със сензор за лабиринт
Платформа, управлявана от жироскоп, със сензор за лабиринт

Тази инструкция е създадена в изпълнение на проектните изисквания на курса 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 отпечатани и аз прикачих stl. готови за печат файлове.

Сглобете всички части, както е показано на фигурите. Лабиринтът е горещо залепен към кръглата платформа, за да изглежда както на снимката. Трите сервомотора трябва да бъдат залепени горещо върху 3D отпечатаната основа, която е монтирана на капака на кутията. Кутията съдържа Arduino UNO и Breadboard, сглобени, както е показано на фигурата. Настройката на макета ще бъде обсъдена в следващата стъпка.

След сглобяването крайният прототип трябва да изглежда като на последната снимка.

Стъпка 2: Настройка на макета

Настройка на макета
Настройка на макета
Настройка на макета
Настройка на макета
Настройка на макета
Настройка на макета

След сглобяването, сензорът Arduino, акселерометърът, сервомоторите са свързани, както е описано по -долу.

Положителните и отрицателните релси на макета са свързани съответно към 5V и GND на Arduino. Сензорът е свързан към Arduino с помощта на половин метров проводници, които трябва да бъдат запоени към сензора, така че щифтовете VCC и GND на сензора да бъдат свързани към +ve и -ve релси съответно на макета. SCL и SDA пиновете на сензора за свързване към аналоговите щифтове A5 и A4 на Arduino. PWM щифтовете на трите сервомотора са свързани към 2, 3, 4 пина съответно на Arduino, а +ve и -ve щифтовете на всички сервоустройства са свързани към +ve и -ve релсите на макета. с това нашите връзки се осъществяват.

Стъпка 3: Код за проекта

можете да изтеглите библиотеките MPU6050 и Servo от интернет и да ги използвате за проекта. Компилирайте и качете следния код в Arduino и проектът е готов. Наклонете сензора и ще видите как лабиринтът се накланя в същата посока! Разрешаването на пъзела отнема известно време, тъй като е малко предизвикателно, но е забавно да се играе.

#включва

#включва

#включва

Серво Серво1;

Servo Servo2;

Servo Servo3;

Сензор MPU6050;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t брадва, ay, az;

int16_t gx, gy, gz;

void setup ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3.attach (4);

Wire.begin ();

Serial.begin (9600);

}

void loop ()

{

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

брадва = карта (брадва, -17000, 17000, 0, 180);

ay = карта (ay, -17000, 17000, 0, 180);

Serial.print ("ax =");

Serial.print (брадва);

Serial.print ("ay =");

Serial.println (ay);

if (ax <80 && ay <80) {

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

if (брадва 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);

}

}

Препоръчано: