Секундомер для бассейна
-
- Сообщения: 7
- Зарегистрирован: 15 апр 2017, 12:28
Секундомер для бассейна
Шаговый двигатель FL42STH47-0406A.Драйвер буду делать на КТ829А.Базовый блок с aliexpress nano v3.Помогите с прошивкой.
Re: Секундомер для бассейна
Александр! Насколько я понял, надо просто вращать двигатель со скоростью 1 оборот в минуту. Вы к нему прицепите секундную стрелку, и будет иллюзия механического секундомера.
Об электронике.
Вы хотите использовать двигатель FL42STH-0406A. Думаю для такой задачи удачный выбор, требующий минимум дополнительных компонентов.
Двигатель FL42STH-0406A это:
Подключить его к плате Ардуино можно с помощью 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.
Вот скетч.
У вас двигатель имеет 200 шагов на оборот. Для того, чтобы стрелка двигалась более плавно я включил полу шаговый режим. Получилось 400 шагов на оборот.
Время одного шага 60 сек / 400 шагов = 0,15 мс.
Я задал делитель равным 1.
Время переключения шагов определяется временем таймера 1 и задается в этих строчках
Вы можете изменить его в небольших пределах и добиться высокой точности часов.
Библиотеки есть в уроке 29 Ардуино.
Я не проверял работу программы с реальным двигателем. Я загрузил программу в Arduino Nano и убедился, что светодиод 13 мигает примерно с нужной частотой (светится примерно 0,3 сек). Я специально задал один вывод фазы на светодиод 13.
Можете изменить выводы. В будущем добавить светодиодный семи сегментный индикатор. Свободных выводов на плате осталось много.
Что-то будет не получаться напишите. Если получиться выложите фотографию.
Об электронике.
Вы хотите использовать двигатель 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.
Можете изменить выводы. В будущем добавить светодиодный семи сегментный индикатор. Свободных выводов на плате осталось много.
Что-то будет не получаться напишите. Если получиться выложите фотографию.
Re: Секундомер для бассейна
Забыл прицепить сторожевой таймер. Попробуйте этот скетч, напишите, таймер я добавлю.
-
- Сообщения: 7
- Зарегистрирован: 15 апр 2017, 12:28
Re: Секундомер для бассейна
Доброе утро Эдуард.Не могу установить драйвер CH340G.Скачал с вашего урока №3 Чтото связано с учетной записью.Уменя WIN XP.Помогите разобратся.
Re: Секундомер для бассейна
Удалите драйвер и попробуйте установить, как в этой статье.
-
- Сообщения: 7
- Зарегистрирован: 15 апр 2017, 12:28
Re: Секундомер для бассейна
Доброе утро Эдуард.С драйвером разобрался.Собрал схему на КТ829А.Точность отличная(гонял25 минут)Транзисторы холодные,двигатель за это время нагрелся до 51 град.Нормально ли это? Резисторы в базах 1 ком.Первоначально подключил двигатель по цветам проводов,как у вас в статье "Простой контроллер шагового двигателя на PIC12F629 " Вращение против часовой,развернул обмотки зеркально,стал крутится правильно.Продолжаю гонять 40 мин. 54 град.Пока прекратил.
Re: Секундомер для бассейна
Здравствуйте!
51 град это вполне нормальная температура. Шаговые двигатели рассчитаны на температуру 90 - 100 град. Если хотите снизить температуру нагрева двигателя, уменьшите напряжение питания.
Можете включить шаговый режим
Только надо учесть, что число шагов станет 200. Стрелка будет двигаться не так плавно, но двигатель греться будет меньше.
Рад, что у вас все получилось. Если можно, выложите на форум фотографию секундомера.
51 град это вполне нормальная температура. Шаговые двигатели рассчитаны на температуру 90 - 100 град. Если хотите снизить температуру нагрева двигателя, уменьшите напряжение питания.
Можете включить шаговый режим
Код: Выделить всё
clockMotor.setMode(0, false); // шаговый режим, без фиксации при остановке
Только надо учесть, что число шагов станет 200. Стрелка будет двигаться не так плавно, но двигатель греться будет меньше.
Рад, что у вас все получилось. Если можно, выложите на форум фотографию секундомера.
-
- Сообщения: 7
- Зарегистрирован: 15 апр 2017, 12:28
Re: Секундомер для бассейна
всё работает, одно но...
стрелка тяжёлая и получается, что из-за шаговости происходят обратные колебания, подёргивания.
https://youtu.be/Wt6VCMpdadk
стрелка тяжёлая и получается, что из-за шаговости происходят обратные колебания, подёргивания.
https://youtu.be/Wt6VCMpdadk
Re: Секундомер для бассейна
Не знаю, что посоветовать. Какое-то механическое демпфирование надо использовать. Попробуйте напряжение снизить. Не так резко будет дергаться, но крутящий момент уменьшится.
-
- Сообщения: 7
- Зарегистрирован: 15 апр 2017, 12:28
Re: Секундомер для бассейна
а с шагом если увеличиь? чобы не было явных остановов
Re: Секундомер для бассейна
Да. Можно попробовать попадать в секунды. Быстро делать несколько шагов для перехода в следующую секунду.
Re: Секундомер для бассейна
Нет, не получится. Перемещать стрелку на секунду можно. Но нужна еще синхронизация какого-нибудь одного положения. Иначе стрелка не будет попадать в секундные отметки.
-
- Сообщения: 7
- Зарегистрирован: 15 апр 2017, 12:28
Re: Секундомер для бассейна
а как заставить его вот так двигаться: https://youtu.be/kTj9QIrtfew
Re: Секундомер для бассейна
Я думаю используется либо механический демпфер, либо микро шаговый режим вращения двигателя. Для второго случая надо использовать STEP/DIR драйвер.
Re: Секундомер для бассейна
Попробуйте рукой придержите вал двигателя. Будет эффект?
Попробуйте напряжение снизить.
Попробуйте напряжение снизить.
-
- Сообщения: 7
- Зарегистрирован: 15 апр 2017, 12:28
Re: Секундомер для бассейна
да, думаю нужно микрошаги сделать, чтобы стрелка не успевала отдачу сделать, как поставить STEP/DIR драйвер? или мужет увеличить попробывать шаги до 800 к примеру?
Re: Секундомер для бассейна
STEP/DIR драйвер поставить просто. В уроке 35 написано.
Надо этот драйвер иметь.
Программу переправить под него просто.
А на счет механического демпфирования информацию не искали? Может это не сложно. Я просто не знаю.
Надо этот драйвер иметь.
Программу переправить под него просто.
А на счет механического демпфирования информацию не искали? Может это не сложно. Я просто не знаю.
Вернуться в «Шаговые двигатели и драйверы»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей