Запуск сервопривода SG90 по таймеру

Обсуждаем цифровые устройства...
Ответить
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 39
Зарегистрирован: Пн окт 01, 2007 10:17:36
Откуда: Санкт-Петербург

Сообщение Silent »

Дано: сервопривод https://www.chipdip.ru/product/sg90-analog-servo
Нужно сделать, чтобы он делал движения от 0 до 180 и сразу обратно несколько раз в сутки в заданное время (можно зашить в МК или куда-то там ещё).

Понятно, что использовать Ардуино для этого слишком дорого, а собирать из элементарных компонентов не очень гибко. Желательно, чтобы вся обвязка была дешевле 500 р. (ну и программатор не дороже). Чтобы компонентов было мало и они были бы достаточно распространенными (в Питере) и порог входа в это дело не очень высоким (если ещё и пример скините, вообще, супер). Есть опыт проектирования микросхем и прошивки МК, но курить мануалы и разбираться с неожиданными подводными камнями лишний раз тоже не хочется.

В общем, посоветуйте что-нибудь :-)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20137
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Сообщение vlasovzloy »

Если точное время срабатывания не важно мультивибратор на кмоп логике и на ней же одновибратор.

Добавлено after 32 minutes 21 second:
Ошибся, посчитал аналоговый значит в зависимости от напряжения на входе угол, а тут стандартный сигнал судя по даташиту. Тогда если на логике делать понадобится еще тестер серв
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Реклама
Друг Кота
Аватара пользователя
Сообщения: 44260
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

И вы хотите, чтобы серва постоянно под напряжением была?
(имхо) гораздо лучше- выкинуть из сервы всю электронику, и использовать только моторчик с редуктором..
Но, если вам выкидывать электронику не хочется, то можно сделать генератор на 555 таймере, и в нужные моменты параллельно резистору, определяющему "ширину" импульса- подключать резистор, который будет в 2 раза уменьшать длительность импульса.


Прежде всего- вопрос в том, какие именно радиодетали вы можете купить/достать/спи**ить/достать из тумбочки/выковырять откуда- либо.. Вариантов решения МНОГО, что именно вы хотите..

Ну, вот, "для затравки" -
типа "сервотестера" на 555 таймере:
Изображение
При нажатии на кнопку длительность управляющего импульса равна примерно 1 миллисекунде, при отпущенной- примерно 2 миллисекунды, период около 20 миллисекунд (50 герц), более точно- надо подбирать резисторы R3 и R2 так, чтобы серва в крайних положениях не упиралась в ограничители.


зы.. Проще всего, то, что вам надо- реализовать, например, на Тини13.. но.. Программист из меня никакой, поэтому с прошивкой для тини.. :facepalm: :dont_know:
Да и простенькая дураина :))) :))) не так уж и дорого стоит:
https://ru.aliexpress.com/item/10PCS-Pr ... autifyAB=0
https://ru.aliexpress.com/item/5V-Micro ... autifyAB=0
Последний раз редактировалось АлександрЛ Вт июн 19, 2018 01:27:26, всего редактировалось 3 раза.
Друг Кота
Аватара пользователя
Сообщения: 20137
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Сообщение vlasovzloy »

Кстати да, можно фиксатор выломать и пусть по кругу крутится. На концевике размыкает цепь мотора. При кратковременном импульсе мотор начнет крутить и концевик замкнется пока редуктор круг не сделает
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 39
Зарегистрирован: Пн окт 01, 2007 10:17:36
Откуда: Санкт-Петербург

Сообщение Silent »

В общем, тогда можно забить на имеющийся сервопривод и использовать что-то другое. Можно назад пружинкой или резинкой возвращать. Грубо говоря, устройство по-сути одноразовое, должно поднимать по расписанию картонку и тут же опускать. Можно, вообще, логику на часовом механизме построить (https://www.bookvoed.ru/book?id=6745285 ... 0IQAvD_BwE), который будет замыкать контакт часовой стрелкой в определенные промежутки времени. Можно и на дешевой плате с МК, если в инете есть мануалы для чайников, как к ней код писать или кто-то здесь поможет.

Тут главное простота. Желательно, чтобы всё в одном магазине продавалось (Чип и Дип, например), без недельной доставки, без разводки печатной платы и чтобы слишком много всего не городить. Припаять пару контактов, приклеить - и готово :)

P.S. В чём схемы моделируете?)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20137
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Сообщение vlasovzloy »

Если точное время срабатывания не важно мультивибратор на кмоп логике и на ней же одновибратор
дальше через транзистор питание кратковременно подается на двигатель
фиксатор выломать и пусть по кругу крутится. На концевике размыкает цепь мотора. При кратковременном импульсе мотор начнет крутить и концевик замкнется пока редуктор круг не сделает
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Реклама
Друг Кота
Аватара пользователя
Сообщения: 44260
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

[uquote="Silent",url="/forum/viewtopic.php?p=3402305#p3402305"]Грубо говоря, устройство по-сути одноразовое, должно поднимать по расписанию картонку и тут же опускать.[/uquote]
Мишень для обучения снайперов? :shock: :facepalm: :dont_know:
Друг Кота
Сообщения: 9438
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

что вы тут напридумывали...)) тестер серв на логике делать... На концевике размыкает цепь мотора... генератор на 555 таймере...
:facepalm:
Silent писал(а):Припаять пару контактов, приклеить - и готово
вы саме себе уже ответили выше...
Silent писал(а):(можно зашить в МК или куда-то там ещё).
SG90 - на любом радиорынке ~ 200 рублей.
программатор - на любом радиорынке ~ 200 рублей. Можно заказать ещё дешевле - https://ru.aliexpress.com/item/FREE-SHI ... autifyAB=0
ATmega8 - на любом радиорынке ~ 100 рублей.

Стабилизатор 5V - на любом радиорынке ~ 10 рублей.
Кварц (любой) - на любом радиорынке ~ 10 рублей.
Пару конденсаторов - на любом радиорынке ~ 1 рубл.
))

Всё.
Друг Кота
Аватара пользователя
Сообщения: 44260
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

[uquote="roman.com",url="/forum/viewtopic.php?p=3403443#p3403443"]что вы тут напридумывали...))
Silent писал(а):(можно зашить в МК или куда-то там ещё).
SG90 - на любом радиорынке ~ 200 рублей.
программатор - на любом радиорынке ~ 200 рублей.
ATmega8 - на любом радиорынке ~ 100 рублей.
Стабилизатор 5V - на любом радиорынке ~ 10 рублей.
Кварц (любой) - на любом радиорынке ~ 10 рублей.
Пару конденсаторов - на любом радиорынке ~ 1 рубл.
))

Всё.[/uquote]
Имхо- достаточно Тини13..
Осталась мелочь..
Выковырять из ТС информацию о том, с какой периодичностью надо мишень поворачивать, и НАПИСАТЬ ПРОГРАММУ...
А для питания будет достаточно вот такого БП:
https://www.pleer.ru/product_316692_Act ... 47057.html
https://www.pleer.ru/product_316682_Act ... 47059.html
Изображение


Дело за малым- найти того, кто согласится "просто так, из интереса, кайфа ради" :))) :))) написать прошивку.. :dont_know:

зы.. Вообще, ТС что- то говорил про ардуинку, но почему- то посчитал, что это дорого.. :dont_know:
Но ардуинку можно напрямую подключить к БП с USB выходом, и всё- кварц, программатор и пара конденсаторов уже есть на плате ардуинки, а серву можно подключать напрямую..
Друг Кота
Сообщения: 9438
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

Тини13.. не достаточно. У неё 8-битный таймер. А программно делать ШИМ не круто.
Лучше мега48 и выше... У неёё 16-битный таймер - для сервы то что надо.))
Уже подробно обсуждали когда делали радиоуправление например тут - viewtopic.php?f=28&t=5884&p=3402765#p3402765
А написать прошивку.. 10 строчек не проблема)) Просто взять радиоуправление и выкинуть всё лишнее... если знать что TC хочет... ))
Друг Кота
Аватара пользователя
Сообщения: 20137
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Сообщение vlasovzloy »

Написал же картонку поднимать. Кота кормить или в госдуме голосовать)))
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Друг Кота
Сообщения: 9438
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

Silent писал(а):Нужно сделать, чтобы он делал движения от 0 до 180 и сразу обратно несколько раз в сутки в заданное время (можно зашить в МК или куда-то там ещё).
Кто и как будет задавать время? Через меню? Кнопочками? C копьютера? Дистанционно (с помощью пульта)? по интернету...? ))

Кота кормить лучше дистанционно по интернету...))

А в госдуме картонку поднимать лучше по Wi-Fi (у них есть Wi-Fi)... через приложение на смартфоне... не вставая с места)) :)))

И т.д. и .т.п.))
Друг Кота
Аватара пользователя
Сообщения: 20137
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Сообщение vlasovzloy »

не ну вдруг уснул слуга народа, а так картонка поднялась и проголосовала. силент, сколько ты говорил тебе картонок надо поднимать?
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 39
Зарегистрирован: Пн окт 01, 2007 10:17:36
Откуда: Санкт-Петербург

Сообщение Silent »

В общем, сделал девайс всё-таки на Arduino nano (CH340). Уже почти неделю исправно работает. Вышло, конечно, дороже 500 р., около 1000 за всё, ну да ладно.

https://youtu.be/8fHxeEk03i4

Фотка вместо схемы (там видно куда что подключается). Большая кнопка - тестовый запуск сервы, маленькая - выставление текущего времени (часа), резисторы 10 кОм. Кому надо - пользуйтесь)
Изображение

Код:
Спойлер#include <SimpleTimer.h>
#include <Servo.h>

Servo myservo;
SimpleTimer timer;

const int timeButtonPin = 7;
const int actionButtonPin = 8;
const int servoPin = 9;
const unsigned long checkDelayMs = 1000L * 60 * 60;
const int periodTick = 24;
const int firstTick = 9;
const int secondTick = 18;

int actionButtonState = 0;
int timeButtonState = 0;
int tact = 0;
int cheatCounter = 0;

void setup() {
timer.setInterval(checkDelayMs, timerInterupt);

pinMode(actionButtonPin, INPUT);
pinMode(timeButtonPin, INPUT);
pinMode(LED_BUILTIN, OUTPUT);

myservo.attach(servoPin);
myservo.write(170);
delay(2000);
myservo.detach();
}

void timerInterupt() {
tact++;

if (tact >= firstTick && cheatCounter == 0) {
cheatCounter = 1;
runServo();
}

if (tact >= secondTick && cheatCounter == 1) {
cheatCounter = 2;
runServo();
}

if (tact >= periodTick) {
tact = 0;
cheatCounter = 0;
}
}

void loop() {
timer.run();
actionButtonState = digitalRead(actionButtonPin);
timeButtonState = digitalRead(timeButtonPin);

if (actionButtonState == HIGH) {
runServo();
}

if (timeButtonState == HIGH) {
digitalWrite(LED_BUILTIN, HIGH);

tact++;

if (tact == 24) {
tact = 0;
delay(100);
digitalWrite(LED_BUILTIN, LOW);
delay(100);
digitalWrite(LED_BUILTIN, HIGH);
delay(100);
digitalWrite(LED_BUILTIN, LOW);
delay(100);
digitalWrite(LED_BUILTIN, HIGH);
}
delay(200);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
}

void runServo(){
myservo.attach(servoPin);
myservo.write(5);
delay(2000);
myservo.write(170);
delay(2000);
myservo.detach();
}
Друг Кота
Аватара пользователя
Сообщения: 44260
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

И всё- таки, интересно- а для чего ОНО нужно?


зы.. Теперь перенести кот :facepalm: КОД :))) в какую- нибудь тиньку подешевле- и всё.. :beer: :beer:
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 39
Зарегистрирован: Пн окт 01, 2007 10:17:36
Откуда: Санкт-Петербург

Сообщение Silent »

[uquote="АлександрЛ",url="/forum/viewtopic.php?p=3408011#p3408011"]И всё- таки, интересно- а для чего ОНО нужно?[/uquote]
А что, по видео не понятно? :-)
Друг Кота
Аватара пользователя
Сообщения: 44260
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

[uquote="Silent",url="/forum/viewtopic.php?p=3408165#p3408165"][uquote="АлександрЛ",url="/forum/viewtopic.php?p=3408011#p3408011" для чего ОНО нужно?[/uquote]
по видео не понятно? :-)[/uquote]
"эффект присутствия"??? :dont_know:
Типа- на работе, входишь и выходишь..
Хорошая игрушка для создания алиби.. :facepalm:
:))) :))) :)))
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 39
Зарегистрирован: Пн окт 01, 2007 10:17:36
Откуда: Санкт-Петербург

Сообщение Silent »

Ага, типа солдат спит - служба идёт :-)

Правда, батарейки быстро кушает, буду оптимизировать. Тут есть спецы по ардуино? В какой теме стоит постить соответствующие вопросы?
Друг Кота
Аватара пользователя
Сообщения: 44260
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

[uquote="Silent",url="/forum/viewtopic.php?p=3408312#p3408312"]Правда, батарейки быстро кушает, буду оптимизировать. Тут есть спецы по ардуино?[/uquote]
Оптимизировать кот :facepalm: КОД в дураине- нет смысла, она "кушает" примерно тысячную долю того, что кушает серва-
Я не знаю, измеряли ли вы потребляемый ей ток- я измерил на похожей, только с поворотом на 90 градусов- она "кушает" от 10 до 40 мА, в зависимости от того "как остановится"..
Поскольку у батарейки АА "ёмкость" 500~1500 мАч , то "в среднем" её хватит на сутки, максимум- на трое суток..
Вам надо на "время ожидания" просто отключать питание сервы- время работы увеличится раз в 10~20, а то и больше..
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 39
Зарегистрирован: Пн окт 01, 2007 10:17:36
Откуда: Санкт-Петербург

Сообщение Silent »

Я же выложил код) Там видно, что питание сервы я отключаю. Т.е. она работает около 5с. в сутки.

P.S. Хочу измерить напряжение на Ардуине встроенными средствами. Какое макимальное напряжение я могу подать на АЦП? Оно работает от 0 до 5 вольт. В большую сторону измерять нет смысла и делитель делать, соответственно, тоже. Если на него 6в или 9 придет, он же просто единицу выдаст?
Ответить

Вернуться в «Цифровая техника»