Страница 1 из 1

Параллельное подключение серводвигателей SG90 к Arduino UNO

СообщениеДобавлено: 28 май 2019, 11:01
-=dp=-
Всем привет!
Решил поделится своим опытом и наработками ;)
Представляю вам проект - "Псевдо-колонки" или "Псевдо-динамики" на Ардуино.
или
Параллельное подключение серводвигателей SG90 к Arduino UNO!

Заказчик поставил задачу - сделать фейковые колонки, чтобы динамики у них двигались как будто у настоящих :D
Что то, где то будут ими украшать :D
Всего необходимо сделать 10 колонок с 20-тью динамиками, разделенные на 2 части по 5 колонок, 10 динамиков в каждой.

Итаак, приступаем к разработке ;)

Для реализации данного проекта нам понадобятся комплектующие:
Контроллер Ардуино УНО - 2 шт
Серводвигатели SG90 или их аналоги - 20 шт
Понижающий преобразователь напряжения DC-DC Step down на 5 V 2A - 2шт
Блок питания AC220V- 12V 4A - 2 шт
Монтажные провода, прямые руки, 3Д принтер ;)

Подключаем все детали по схеме
Kolonka_cxema.jpg
параллельное подключение серводвигателей SG90

Re: Параллельное подключение серводвигателей SG90 к Arduino

СообщениеДобавлено: 28 май 2019, 11:05
-=dp=-
Для написания скетча воспользуемся стандартной библиотекой Servo.h

Вот собственно весь скетч:
Код: выделить все
#include <Servo.h>

Servo myservo1;
Servo myservo2;

int pos1 = 0;
int pos2 = 0;

void setup() {
  myservo1.attach(9);
  myservo2.attach(8);
}

void loop() {
//-------Effect-1--------------------------
  for (pos1 = 0; pos1 <= 45; pos1 += 1) {
    myservo1.write(pos1);
    delay(5);
  }

  for (pos2 = 0; pos2 <= 45; pos2 += 1) {
    myservo2.write(pos2);
    delay(5);
  }
   
   for (pos1 = 45; pos1 >= 0; pos1 -= 1) {
    myservo1.write(pos1);
    delay(5);
  }
 
  for (pos2 = 45; pos2 >= 0; pos2 -= 1) {
    myservo2.write(pos2);
    delay(5);
  }

  for (pos1 = 0; pos1 <= 45; pos1 += 1) {
    myservo1.write(pos1);
    delay(5);
  }

  for (pos2 = 0; pos2 <= 45; pos2 += 1) {
    myservo2.write(pos2);
    delay(5);
  }
   
   for (pos1 = 45; pos1 >= 0; pos1 -= 1) {
    myservo1.write(pos1);
    delay(5);
  }
 
  for (pos2 = 45; pos2 >= 0; pos2 -= 1) {
    myservo2.write(pos2);
    delay(5);
  }
 
  for (pos1 = 0; pos1 <= 45; pos1 += 1) {
    myservo1.write(pos1);
    delay(5);
  }

  for (pos2 = 0; pos2 <= 45; pos2 += 1) {
    myservo2.write(pos2);
    delay(5);
  }
   
   for (pos1 = 45; pos1 >= 0; pos1 -= 1) {
    myservo1.write(pos1);
    delay(5);
  }
 
  for (pos2 = 45; pos2 >= 0; pos2 -= 1) {
    myservo2.write(pos2);
    delay(5);
  }

//---------Effect-2--------------------------

 for (pos1 = 0; pos1 <= 45; pos1 += 1) {
    myservo1.write(pos1);
    myservo2.write(pos1);
    delay(7);
  }

   for (pos1 = 45; pos1 >= 0; pos1 -= 1) {
    myservo1.write(pos1);
    myservo2.write(pos1);
    delay(7);
  }

   for (pos1 = 0; pos1 <= 45; pos1 += 1) {
    myservo1.write(pos1);
    myservo2.write(pos1);
    delay(7);
  }

   for (pos1 = 45; pos1 >= 0; pos1 -= 1) {
    myservo1.write(pos1);
    myservo2.write(pos1);
    delay(7);
  }

   for (pos1 = 0; pos1 <= 45; pos1 += 1) {
    myservo1.write(pos1);
    myservo2.write(pos1);
    delay(7);
  }

   for (pos1 = 45; pos1 >= 0; pos1 -= 1) {
    myservo1.write(pos1);
    myservo2.write(pos1);
    delay(7);
  }

     for (pos1 = 0; pos1 <= 45; pos1 += 1) {
    myservo1.write(pos1);
    myservo2.write(pos1);
    delay(7);
  }

   for (pos1 = 45; pos1 >= 0; pos1 -= 1) {
    myservo1.write(pos1);
    myservo2.write(pos1);
    delay(7);
  }

}





В скетче реализовано два эффекта движения сервоприводов, попеременный и одновременный.
Угол поворота выбран 45 градусов, так как для реализации поставленной задачи нам больше и не надо :ugeek:

Re: Параллельное подключение серводвигателей SG90 к Arduino

СообщениеДобавлено: 28 май 2019, 11:19
-=dp=-
А дальше начинается самое интересное - 3Д моделирование механических частей конструкции и печать.
Все созданные для данного проекта 3Д модели я выложу чуть позже на сайте thingiverse.com
Процесс 3Д моделирования я фотографировать не стал, а вот фото готовых напечатанных деталей сделал ;)

Фото деталей напечатанных на 3Д принтере:
1.jpg
Фейковая колонка на Ардуино


А тут уже детали закреплены в фейковой колонке:
2.jpg
Фейковый динамик на Ардуино


И еще фото с другого ракурса:
3.jpg
Подключение серводвигателей к Ардуино

Re: Параллельное подключение серводвигателей SG90 к Arduino

СообщениеДобавлено: 08 июн 2019, 10:39
-=dp=-
Выкладываю фотографии 3D моделей всех деталей

1.jpg
pseudo speaker arduino and servo sg90
1.jpg (27.47 KiB) Просмотров: 30159

2.jpg
псевдо динамик на ардуино

3.jpg
динамик на ардуино
3.jpg (65.35 KiB) Просмотров: 30159

Re: Параллельное подключение серводвигателей SG90 к Arduino

СообщениеДобавлено: 08 июн 2019, 10:41
-=dp=-
4.jpg
динамик на ардуино и servo sg90
4.jpg (49.53 KiB) Просмотров: 30159

Arduino and Servo SG90 Dynamic 1.JPG
собранный прототип динамика на ардуино

Arduino and Servo SG90 Dynamic 5.JPG
arduino fake speaker

Re: Параллельное подключение серводвигателей SG90 к Arduino

СообщениеДобавлено: 08 июн 2019, 11:05
-=dp=-
Еще фото

Arduino and Servo SG90 Dynamic 2.JPG
динамик на Ардуино


Arduino and Servo SG90 Dynamic 3.JPG
Механизм динамика на ардуино


Arduino and Servo SG90 Dynamic 4.JPG
параллельное соединение серводвигателей Servo SG90

Re: Параллельное подключение серводвигателей SG90 к Arduino

СообщениеДобавлено: 08 июн 2019, 11:15
-=dp=-
Выложил 3D модели деталей на сайте https://www.thingiverse.com/thing:3678296

Re: Параллельное подключение серводвигателей SG90 к Arduino

СообщениеДобавлено: 08 июн 2019, 13:46
-=dp=-
Отснял и выложил видео с демонстрацией работы фейкового динамика на Ардуино :roll:
:arrow: https://youtu.be/BC5K4Xuutlw