Секундомер для бассейна

Вопросы об управлении шаговыми двигателями
Александр Бор
Сообщения: 7
Зарегистрирован: 15 апр 2017, 12:28

Секундомер для бассейна

Сообщение Александр Бор » 15 апр 2017, 12:42

Шаговый двигатель FL42STH47-0406A.Драйвер буду делать на КТ829А.Базовый блок с aliexpress nano v3.Помогите с прошивкой.


Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Секундомер для бассейна

Сообщение Эдуард » 15 апр 2017, 17:07

Александр! Насколько я понял, надо просто вращать двигатель со скоростью 1 оборот в минуту. Вы к нему прицепите секундную стрелку, и будет иллюзия механического секундомера.

Об электронике.
Вы хотите использовать двигатель FL42STH-0406A. Думаю для такой задачи удачный выбор, требующий минимум дополнительных компонентов.
Двигатель FL42STH-0406A это:
    униполярный двигатель;
    рабочий ток фазы 0,4 А;
    сопротивление обмоток 30 Ом;
    индуктивность обмоток 25 мГн;
    крутящий момент 3,17 кг см.

Подключить его к плате Ардуино можно с помощью 4 транзисторных ключей по схеме из урока 28.

Изображение

Если вы будете использовать транзисторы КТ829, то в схеме ничего не поменяется. Резисторы R1-R4 можно даже увеличить до 2 кОм.
Эти резисторы задают ток базы. Считаются так:
Определяется ток базы, как Iбазы = Iколлектора / H21Э.
У вас ток коллектора 0,4 А. Получается, что Iбазы = 0,4 / 750 = 0,53 мА.
Ток базы определяется, как Iбазы = ( Uлог.1 – UБЭ ) / Rбазы
Rбазы = ( Uлог.1 – UБЭ ) / Iбазы = ( 5 – 1,2 ) / 0,53 = 7 кОм
Т.е. с вашим маломощным двигателем и с транзисторами, имеющими высокий коэффициент усиления 750, резисторы R1-R4 должны быть не больше 7 кОм. Я бы выбрал 1 кОм.
В вашем случае можно применить гораздо менее мощные транзисторы или использовать MOSFET транзисторв.

Изображение


Программа часов для секундомера.
Самый простой вариант – использовать библиотеку StepMotor из урока 29.
Вот скетч.

Код: Выделить всё

// вращение двигателя со скоростью 1 оборот в минуту

#include <TimerOne.h>
#include <StepMotor.h>

StepMotor clockMotor(10, 11, 12, 13);  // создаем объект типа StepMotor, задаем выводы для фаз
void setup() {
  Timer1.initialize(150000);  // инициализация таймера 1, период 150 мс
  Timer1.attachInterrupt(timerInterrupt, 150000);  // задаем обработчик прерываний
  clockMotor.setMode(1, false);  // полушаговый режим, без фиксации при остановке
  clockMotor.setDivider(1);     // делитель частоты 1
}

void loop() {
  clockMotor.step(-200);  // вращать по часовой стрелке
}

//-------------------------------------- обработчик прерывания 150 мс
void  timerInterrupt() {
  clockMotor.control(); // управление двигателем
}


У вас двигатель имеет 200 шагов на оборот. Для того, чтобы стрелка двигалась более плавно я включил полу шаговый режим. Получилось 400 шагов на оборот.
Время одного шага 60 сек / 400 шагов = 0,15 мс.
Я задал делитель равным 1.
Время переключения шагов определяется временем таймера 1 и задается в этих строчках

Код: Выделить всё

Timer1.initialize(150000);  // инициализация таймера 1, период 150 мс
Timer1.attachInterrupt(timerInterrupt, 150000);  // задаем обработчик прерываний


Вы можете изменить его в небольших пределах и добиться высокой точности часов.
Библиотеки есть в уроке 29 Ардуино.
Я не проверял работу программы с реальным двигателем. Я загрузил программу в Arduino Nano и убедился, что светодиод 13 мигает примерно с нужной частотой (светится примерно 0,3 сек). Я специально задал один вывод фазы на светодиод 13.
Можете изменить выводы. В будущем добавить светодиодный семи сегментный индикатор. Свободных выводов на плате осталось много.

Что-то будет не получаться напишите. Если получиться выложите фотографию.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Секундомер для бассейна

Сообщение Эдуард » 15 апр 2017, 17:15

Забыл прицепить сторожевой таймер. Попробуйте этот скетч, напишите, таймер я добавлю.

Александр Бор
Сообщения: 7
Зарегистрирован: 15 апр 2017, 12:28

Re: Секундомер для бассейна

Сообщение Александр Бор » 16 апр 2017, 07:07

Доброе утро Эдуард.Не могу установить драйвер CH340G.Скачал с вашего урока №3 Чтото связано с учетной записью.Уменя WIN XP.Помогите разобратся.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Секундомер для бассейна

Сообщение Эдуард » 16 апр 2017, 13:10

Удалите драйвер и попробуйте установить, как в этой статье.

Александр Бор
Сообщения: 7
Зарегистрирован: 15 апр 2017, 12:28

Re: Секундомер для бассейна

Сообщение Александр Бор » 18 апр 2017, 03:18

Доброе утро Эдуард.С драйвером разобрался.Собрал схему на КТ829А.Точность отличная(гонял25 минут)Транзисторы холодные,двигатель за это время нагрелся до 51 град.Нормально ли это? Резисторы в базах 1 ком.Первоначально подключил двигатель по цветам проводов,как у вас в статье "Простой контроллер шагового двигателя на PIC12F629 " Вращение против часовой,развернул обмотки зеркально,стал крутится правильно.Продолжаю гонять 40 мин. 54 град.Пока прекратил.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Секундомер для бассейна

Сообщение Эдуард » 18 апр 2017, 09:53

Здравствуйте!
51 град это вполне нормальная температура. Шаговые двигатели рассчитаны на температуру 90 - 100 град. Если хотите снизить температуру нагрева двигателя, уменьшите напряжение питания.
Можете включить шаговый режим

Код: Выделить всё

clockMotor.setMode(0, false);  // шаговый режим, без фиксации при остановке

Только надо учесть, что число шагов станет 200. Стрелка будет двигаться не так плавно, но двигатель греться будет меньше.

Рад, что у вас все получилось. Если можно, выложите на форум фотографию секундомера.

Александр Бор
Сообщения: 7
Зарегистрирован: 15 апр 2017, 12:28

Re: Секундомер для бассейна

Сообщение Александр Бор » 18 апр 2017, 11:15

всё работает, одно но...
стрелка тяжёлая и получается, что из-за шаговости происходят обратные колебания, подёргивания.
https://youtu.be/Wt6VCMpdadk

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Секундомер для бассейна

Сообщение Эдуард » 18 апр 2017, 11:27

Не знаю, что посоветовать. Какое-то механическое демпфирование надо использовать. Попробуйте напряжение снизить. Не так резко будет дергаться, но крутящий момент уменьшится.

Александр Бор
Сообщения: 7
Зарегистрирован: 15 апр 2017, 12:28

Re: Секундомер для бассейна

Сообщение Александр Бор » 18 апр 2017, 11:58

а с шагом если увеличиь? чобы не было явных остановов

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Секундомер для бассейна

Сообщение Эдуард » 18 апр 2017, 12:58

Да. Можно попробовать попадать в секунды. Быстро делать несколько шагов для перехода в следующую секунду.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Секундомер для бассейна

Сообщение Эдуард » 18 апр 2017, 13:05

Нет, не получится. Перемещать стрелку на секунду можно. Но нужна еще синхронизация какого-нибудь одного положения. Иначе стрелка не будет попадать в секундные отметки.

Александр Бор
Сообщения: 7
Зарегистрирован: 15 апр 2017, 12:28

Re: Секундомер для бассейна

Сообщение Александр Бор » 18 апр 2017, 13:53

а как заставить его вот так двигаться: https://youtu.be/kTj9QIrtfew

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Секундомер для бассейна

Сообщение Эдуард » 18 апр 2017, 13:59

Я думаю используется либо механический демпфер, либо микро шаговый режим вращения двигателя. Для второго случая надо использовать STEP/DIR драйвер.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Секундомер для бассейна

Сообщение Эдуард » 18 апр 2017, 14:01

Попробуйте рукой придержите вал двигателя. Будет эффект?

Попробуйте напряжение снизить.

Александр Бор
Сообщения: 7
Зарегистрирован: 15 апр 2017, 12:28

Re: Секундомер для бассейна

Сообщение Александр Бор » 18 апр 2017, 14:38

да, думаю нужно микрошаги сделать, чтобы стрелка не успевала отдачу сделать, как поставить STEP/DIR драйвер? или мужет увеличить попробывать шаги до 800 к примеру?

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Секундомер для бассейна

Сообщение Эдуард » 18 апр 2017, 21:41

STEP/DIR драйвер поставить просто. В уроке 35 написано.
Надо этот драйвер иметь.
Программу переправить под него просто.
А на счет механического демпфирования информацию не искали? Может это не сложно. Я просто не знаю.


Вернуться в «Шаговые двигатели и драйверы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей