Обсуждаем цифровые устройства...
Ответить

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

Пн июн 18, 2018 16:36:28

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

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

В общем, посоветуйте что-нибудь :-)

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

Пн июн 18, 2018 22:57:39

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

Добавлено after 32 minutes 21 second:
Ошибся, посчитал аналоговый значит в зависимости от напряжения на входе угол, а тут стандартный сигнал судя по даташиту. Тогда если на логике делать понадобится еще тестер серв

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

Пн июн 18, 2018 23:08:30

И вы хотите, чтобы серва постоянно под напряжением была?
(имхо) гораздо лучше- выкинуть из сервы всю электронику, и использовать только моторчик с редуктором..
Но, если вам выкидывать электронику не хочется, то можно сделать генератор на 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 раз(а).

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

Пн июн 18, 2018 23:23:45

Кстати да, можно фиксатор выломать и пусть по кругу крутится. На концевике размыкает цепь мотора. При кратковременном импульсе мотор начнет крутить и концевик замкнется пока редуктор круг не сделает

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

Вт июн 19, 2018 06:18:22

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

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

P.S. В чём схемы моделируете?)

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

Вт июн 19, 2018 08:22:36

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

дальше через транзистор питание кратковременно подается на двигатель
фиксатор выломать и пусть по кругу крутится. На концевике размыкает цепь мотора. При кратковременном импульсе мотор начнет крутить и концевик замкнется пока редуктор круг не сделает

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

Ср июн 20, 2018 19:44:41

Грубо говоря, устройство по-сути одноразовое, должно поднимать по расписанию картонку и тут же опускать.

Мишень для обучения снайперов? :shock: :facepalm: :dont_know:

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

Ср июн 20, 2018 21:03:05

что вы тут напридумывали...)) тестер серв на логике делать... На концевике размыкает цепь мотора... генератор на 555 таймере...
:facepalm:
Silent писал(а):Припаять пару контактов, приклеить - и готово

вы саме себе уже ответили выше...
Silent писал(а):(можно зашить в МК или куда-то там ещё).

SG90 - на любом радиорынке ~ 200 рублей.
программатор - на любом радиорынке ~ 200 рублей. Можно заказать ещё дешевле - https://ru.aliexpress.com/item/FREE-SHI ... autifyAB=0
ATmega8 - на любом радиорынке ~ 100 рублей.

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

Всё.

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

Ср июн 20, 2018 21:23:44

что вы тут напридумывали...))
Silent писал(а):(можно зашить в МК или куда-то там ещё).

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

Всё.

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


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

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

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

Чт июн 21, 2018 10:40:13

Тини13.. не достаточно. У неё 8-битный таймер. А программно делать ШИМ не круто.
Лучше мега48 и выше... У неёё 16-битный таймер - для сервы то что надо.))
Уже подробно обсуждали когда делали радиоуправление например тут - https://radiokot.ru:443/forum/viewtopic ... 5#p3402765
А написать прошивку.. 10 строчек не проблема)) Просто взять радиоуправление и выкинуть всё лишнее... если знать что TC хочет... ))

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

Чт июн 21, 2018 11:07:58

Написал же картонку поднимать. Кота кормить или в госдуме голосовать)))

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

Чт июн 21, 2018 11:50:15

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

Кто и как будет задавать время? Через меню? Кнопочками? C копьютера? Дистанционно (с помощью пульта)? по интернету...? ))

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

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

И т.д. и .т.п.))

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

Чт июн 21, 2018 13:05:07

не ну вдруг уснул слуга народа, а так картонка поднялась и проголосовала. силент, сколько ты говорил тебе картонок надо поднимать?

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

Вт июн 26, 2018 13:13:44

В общем, сделал девайс всё-таки на 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();
}

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

Вт июн 26, 2018 16:21:52

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


зы.. Теперь перенести кот :facepalm: КОД :))) в какую- нибудь тиньку подешевле- и всё.. :beer: :beer:

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

Вт июн 26, 2018 18:53:47

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

А что, по видео не понятно? :-)

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

Вт июн 26, 2018 19:54:37

[uquote="АлександрЛ",url="/forum/viewtopic.php?p=3408011#p3408011" для чего ОНО нужно?

по видео не понятно? :-)[/uquote]
"эффект присутствия"??? :dont_know:
Типа- на работе, входишь и выходишь..
Хорошая игрушка для создания алиби.. :facepalm:
:))) :))) :)))

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

Вт июн 26, 2018 21:01:03

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

Правда, батарейки быстро кушает, буду оптимизировать. Тут есть спецы по ардуино? В какой теме стоит постить соответствующие вопросы?

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

Вт июн 26, 2018 21:35:52

Правда, батарейки быстро кушает, буду оптимизировать. Тут есть спецы по ардуино?

Оптимизировать кот :facepalm: КОД в дураине- нет смысла, она "кушает" примерно тысячную долю того, что кушает серва-
Я не знаю, измеряли ли вы потребляемый ей ток- я измерил на похожей, только с поворотом на 90 градусов- она "кушает" от 10 до 40 мА, в зависимости от того "как остановится"..
Поскольку у батарейки АА "ёмкость" 500~1500 мАч , то "в среднем" её хватит на сутки, максимум- на трое суток..
Вам надо на "время ожидания" просто отключать питание сервы- время работы увеличится раз в 10~20, а то и больше..

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

Вт июн 26, 2018 21:51:13

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

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