Страница 1 из 3
Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 29 май 2017, 11:14
Umka
Список ингредиентов:
1. Digispark или его клон.
2. Шаговый двигатель с драйвером 28BYJ-48
3. Блок питания на 5В или 12В (зависит от моторчика) и с током не менее 1А.
4. Провода.
Подключаем входы 1-2-3-4 драйвера к пинам 0-1-2-3 Дигиспарка, подаем на оба питание. На пин 4 Дигиспарка вешаем кнопку, замыкающую пин на общий. После включения реле поворачивает мотор на 180 градусов каждый час. Вращение реверсивное. Раз крутим туда, другой обратно. Можно выключить в коде и крутить в одну сторону. Кнопка для установки механизма лотка в нужное начальное положение. Пока кнопка нажата и удерживается, мотор плавно вращается в одном направлении с шагом 1 градус и паузой 0,2 сек.
Код: Выделить всё
#include <Stepper.h>
#define buttonPin 4
#define STEPS 100
# define waitTime 30 //3600 каждый час на 180 градусов
unsigned long loopTime;
boolean direct;
Stepper egg_stepper(STEPS, 0, 2, 1, 3);
void setup() {
egg_stepper.setSpeed(100);
pinMode (buttonPin, INPUT_PULLUP);
}
void loop()
{
unsigned long currentTime;
currentTime = millis() / 1000;
byte i;
if (!digitalRead(buttonPin)) {
egg_stepper.step(5);
delay(200);
for (i = 0; i < 4; i++) digitalWrite(i, LOW);
}
if (currentTime > (loopTime + waitTime)) {
direct = !direct;
loopTime = currentTime;
turnEgg(direct);
}
}
void turnEgg(boolean dir) {
byte i;
if (dir) egg_stepper.step(1019);
else egg_stepper.step(-1019);
for (i = 0; i < 4; i++) digitalWrite(i, LOW);
}
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 30 май 2017, 15:23
KnyazewAndrey
Роман, а хватит ли момента этого моторчика для поворота китайских лотков?
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 30 май 2017, 16:08
Umka
Да.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 31 май 2017, 16:38
KnyazewAndrey
Сразу просто заинтересовался, вариантом замены в своем Китайчике, что бы прогнозировано поворачивались лоточки..
Я в Ютюбе обзор моторчиков этих наткнулся, так там пальцами останавливали вращение, не смотря на редуктор....
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 31 май 2017, 18:47
Umka
Я тоже останавливал, пока к хорошему блоку питания не подключил.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 01 июн 2017, 18:36
KnyazewAndrey
Цена комплекта без блока питания с кнопкой и разъемом питания) 700руб.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 21 янв 2018, 15:07
SergeiCRIM
Подскажите пожалуйста. Загружаю скетч в ардуинку - все работает. Крутит влево вправо и шагает. Пины соответственно поменял. Загружаю в ATtiny85 или Digispark начинает шагать, а затем крутится и все в одну сторону. Скорость какая то не такая но на 180 поворачивается. IDE 1.6.5. Загружаю через программатор CP2102
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 21 янв 2018, 15:12
Umka
Кнопка не подтянута к плюсу.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 22 янв 2018, 17:01
SergeiCRIM
Да нет кнопка подтянута. В видео про пайку там был резюк, я догадался его поставить. Когда программируем какой программатор нужно выбирать для ATtiny85 и Digispark. Я в этом не смыслю может это и есть глюк.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 22 янв 2018, 17:10
Umka
Это разные вещи, Tiny85 и Digispark, у Спарка загрузчик и эмуляция USB. Я шью как Digispark именно, через его загрузчик.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 22 янв 2018, 18:17
SergeiCRIM
Дико прошу прощения сам балбес в коде (STEPS, 0, 2, 1, 3); а подключаю 0123. Поехал вправо влево и резистор на + сунул
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 22 янв 2018, 18:38
Umka
STEPS, 0, 2, 1, 3 это для "не обрезанного" мотора с родным драйвером на ULN2003. 0, 1, 2, 3 для переделанного.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 22 янв 2018, 19:35
SergeiCRIM
Если угол будет немного меньше 180 и лотки будут в верхнем положении то нажав кнопку поедем еще выше, а назад не вернемся. То есть кнопка реверс не даст.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 22 янв 2018, 23:40
Umka
Это можно допилить, с КШМ не важно куда крутить.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 23 янв 2018, 04:11
SergeiCRIM
Если угол будет немного меньше 180 и лотки будут в верхнем положении то нажав кнопку поедем еще выше, а назад не вернемся. То есть кнопка реверс не даст. Хотелось бы чтобы кнопка работала в пределах угла поворота step(1019) и step(-1019).
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 23 янв 2018, 04:59
SergeiCRIM
Да пусть крутит по кругу.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 23 янв 2018, 05:02
Umka
С крайними положениями вроде концевики лучше. Я посмотрю, если сделаю поддержку двойного клика компактную, то будет реверс на 90 градусов.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 23 янв 2018, 05:58
SergeiCRIM
Концевик уменьшит надежность
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 23 янв 2018, 06:01
Umka
Можно проверять.
Код: Выделить всё
// Copyright Umka mailumka2@gmail.com 01.2018
// GPL license. Free for non-commercial use
#include "OneButton.h"
#include <Stepper.h>
#define buttonPin 4
#define STEPS 100
# define waitTime 30 //3600 каждый час на 180 градусов
unsigned long loopTime;
boolean direct;
Stepper egg_stepper(STEPS, 0, 1, 2, 3);
OneButton button(4, true);
void doubleclick() {
byte i;
if (direct) egg_stepper.step(-510);
else egg_stepper.step(510);
for (i = 0; i < 4; i++) digitalWrite(i, LOW);
} // doubleclick
void myClickFunction() {
byte i;
egg_stepper.step(5);
delay(100);
for (i = 0; i < 4; i++) digitalWrite(i, LOW);
}
void setup() {
egg_stepper.setSpeed(50);
//pinMode (buttonPin, INPUT_PULLUP);
button.attachClick(myClickFunction);
button.attachDoubleClick(doubleclick);
}
void loop()
{
unsigned long currentTime;
currentTime = millis() / 1000;
byte i;
if (currentTime > (loopTime + waitTime)) {
direct = !direct;
loopTime = currentTime;
turnEgg(direct);
}
button.tick();
}
void turnEgg(boolean dir) {
byte i;
if (dir) egg_stepper.step(1020);
else egg_stepper.step(-1020);
for (i = 0; i < 4; i++) digitalWrite(i, LOW);
}
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 23 янв 2018, 08:14
SergeiCRIM
Как подключить кнопку?
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 23 янв 2018, 08:44
Umka
Как и была.
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 23 янв 2018, 08:47
SergeiCRIM
Тогда нет реакции на неё. В сетаре закомментирована строка подтяжки
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 23 янв 2018, 09:09
SergeiCRIM
А где мы обращаемся в теле программы к функциям нажатия на кнопки?
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 23 янв 2018, 10:17
Umka
button.tick();
Re: Реле поворота на шаговом двигателе 28BYJ-48
Добавлено: 23 янв 2018, 10:28
SergeiCRIM
Да я это уже понял, button.tick(); читает кнопку только в примере в библиотеке есть еще какая то функция
if (nextAction == ACTION_OFF) {
// do nothing.
digitalWrite(13, LOW);
Которая стоит в основном цикле