• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Настольные Часы напечатанные на 3d принтере

4 марта, 2018

Для реализации данного примера нам понадобится:

Arduino nano: http://ali.pub/1x1jri

Драйвер шаговых двигателей вместе с самим шаговым двигателем: http://ali.pub/2bq1hs

Труба латунная 8 mm ну или любая труба или Вал данного диаметра.

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

Для начала давайте разберемся что такое шаговый двигатель

Шаговые двигатели — основа точной робототехники. В отличие от двигателей постоянного вращения, один оборот «шаговика» состоит из множества микроперемещений, которые и называют шагами. Другими словами, мы можем повернуть вал двигателя ровно на 90 градусов, и зафиксировать его в этом положении. Грубым аналогом шагового двигателя является серводвигатель.

Шаговики применяют там, где требуется очень точно дозировать перемещение актуатора. Самый очевидный пример — робот манипулятор. Чтоб механическая рука коснулась рабочим инструментом нужной точки, необходимо чтобы каждый из узлов повернулся на строго заданный угол. Погрешность в доли градуса в основании руки, приведет к огромной погрешности на эффекторе.

В данном примере мы используем маленький шаговый двигатель 28BYj-48 , а драйвер к нему ULN2003.

Выглядят они таким образом:

В моем случае данный драйвер и двигатель пришли с разными разъемами не подходящими друг к другу, но я решил данную проблему подключив двигатель к драйверу по этой схеме:

Важно! обратите внимание на перекрестие проводов, иначе если подключить все прямо работать не будет. И к ардуино часы подлючаются не по этой схеме! а к аналоговым пинам A1,A2,A3,A4.

Данный часы напечатаны на 3d принтере. Схемы взяты от сюда: https://www.thingiverse.com/thing:2738384 и отсюда https://www.thingiverse.com/thing:2381829

Крепление для квадратного шагового двигателя уже имеется в данной статье Thingiverse. Вам останется только скачать все и собрать.

Как видно будет ниже в видео и на картинке в начале статьи, у меня цифры приклеены термоклеем, и видно всякую “требуху” торчащую из под цифр. Так вот, не делайте моей ошибки и клейте только на прозрачный клей. Так как силикон потом не вычистишь.

Как собираются данные часы я показываю в видео вконце статьи.

Скетч для работы с данными часами:

// NuMechRon design by Victorrr161 https://www.thingiverse.com/thing:2381829 
// Conversion for Arduino Nano and stepperboard ULN2003A by Jeroen Jonkman, 30/12/2017

// Wiring:
// Connect pin GND of the Arduino to pin GND of the stepper board
// Connect pin 5V of the Arduino to pin VCC of the stepper board
#define OUT1  A1 // Connect pin A1 of the Arduino to pin IN4 of the stepper board
#define OUT2  A2 // Connect pin A2 of the Arduino to pin IN3 of the stepper board
#define OUT3  A3 // Connect pin A3 of the Arduino to pin IN2 of the stepper board
#define OUT4  A4 // Connect pin A4 of the Arduino to pin IN1 of the stepper board

int countStep = 0; // Initialize countStep

void setup() // Handle setup
{
  pinMode(OUT1, OUTPUT); // Use A1 as a digital output
  pinMode(OUT2, OUTPUT); // Use A2 as a digital output
  pinMode(OUT3, OUTPUT); // Use A3 as a digital output
  pinMode(OUT4, OUTPUT); // Use A4 as a digital output
}

void loop() // Handle loop
{
  stepping(); // Call stepping
  delayMicroseconds(30943);  // Pause loop, use value of 30943 for timekeeping or 1000 for testing at high speed
}

void stepping() // Handle stepping
{
  switch(countStep) // Handle each step of countStep
  {
   case 0:
     digitalWrite(OUT1, LOW); 
     digitalWrite(OUT2, LOW);
     digitalWrite(OUT3, HIGH);
     digitalWrite(OUT4, HIGH);
   break; 
   case 1:
     digitalWrite(OUT1, LOW); 
     digitalWrite(OUT2, LOW);
     digitalWrite(OUT3, HIGH);
     digitalWrite(OUT4, LOW);
   break; 
   case 2:
     digitalWrite(OUT1, LOW); 
     digitalWrite(OUT2, HIGH);
     digitalWrite(OUT3, HIGH);
     digitalWrite(OUT4, LOW);
   break; 
   case 3:
     digitalWrite(OUT1, LOW); 
     digitalWrite(OUT2, HIGH);
     digitalWrite(OUT3, LOW);
     digitalWrite(OUT4, LOW);
   break; 
   case 4:
     digitalWrite(OUT1, HIGH); 
     digitalWrite(OUT2, HIGH);
     digitalWrite(OUT3, LOW);
     digitalWrite(OUT4, LOW);
   break; 
   case 5:
     digitalWrite(OUT1, HIGH); 
     digitalWrite(OUT2, LOW);
     digitalWrite(OUT3, LOW);
     digitalWrite(OUT4, LOW);
   break; 
     case 6:
     digitalWrite(OUT1, HIGH); 
     digitalWrite(OUT2, LOW);
     digitalWrite(OUT3, LOW);
     digitalWrite(OUT4, HIGH);
   break; 
   case 7:
     digitalWrite(OUT1, LOW); 
     digitalWrite(OUT2, LOW);
     digitalWrite(OUT3, LOW);
     digitalWrite(OUT4, HIGH);
   break; 
   default:
     digitalWrite(OUT1, LOW); 
     digitalWrite(OUT2, LOW);
     digitalWrite(OUT3, LOW);
     digitalWrite(OUT4, LOW);
   break; 
  }
   
   countStep=countStep+1; // After each cycle add 1 to countStep
   if(countStep==8)
     {countStep=0;} // Reset countStep on rollover
}

Из скетча и можно понять что подключение к двигателю осуществляется вот таким образом:

A1 IN4
A2 IN3
A3 IN2
A4 IN1

Если двигатель у Вас вращается в другую сторону, то поменяйте местами провода.

Ну и подробности сборки и нюансы в видео:

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·