чтобы серво оставался в текущем положении, когда я вызывают `attach()`
- Войдите на сайт для отправки комментариев
Сб, 01/02/2020 - 14:16
У меня есть серво *SG90*.
Когда я вызываю `attach()` он перемещается в положение по умолчанию (93) или куда его поставлю перед этим с помощью `write()`.
Я бы хотел, чтобы серво оставался в текущем положении, когда я вызывают `attach()` в `setup()`.
Как бы этого добиться?
Ну - это сложно! Но если Вы представите программу и схему подключения это станет малость попроще.
Как бы этого добиться?
Я так понимаю, Вы используете библиотеку Servo. Боюсь, что с помощью этой библиотеки вы не сможете добиться желаемого эффекта. При вызове метода attach(), серво перейдет в среднее положение. Ну или, как Вы сказали, в то положение, которые задали перед этим. Но, к сожалению, вы не знаете где на самом деле стоит серво, пока не будет вызван attach или write.
У меня есть серво *SG90*.
Когда я вызываю `attach()` он перемещается в положение по умолчанию (93) или куда его поставлю перед этим с помощью `write()`.
Я бы хотел, чтобы серво оставался в текущем положении, когда я вызывают `attach()` в `setup()`.
Как бы этого добиться?
Для этого надо подпаяться к центральному выводу потенциометра внутри сервы и вывести провод на А0 Ардуины.
Для этого надо подпаяться к центральному выводу потенциометра внутри сервы и вывести провод на А0 Ардуины.
Вы предлагаете разобрать серво? :-O
А при чем здесь A0? :/
Объясните, пожалуйста, подробней
Объясните, пожалуйста, подробней
В сервоприводе качалка и вал потенциометра жестко связаны. Напряжение снимаемое с потенциометра на А0 (например) даст Ардуино "знание" где качалка сейчас, а потом Ардуина выставит качалку на известный ей угол, т.е. оставит качалку на месте исходном. Как раз балуюсь этой затеей, могу скинуть схемку, фотки, скетч для имитатора механического таймера на SG90.
leks, любопытно! Прямо хакерство какое-то. )) Так у Вас получилось или пока только пробуете? )
А то ведь эти серво - просто беда какая-то. Жужжания, лаги вские победил резиками и кондёрами. А вот стартовый скачок - никак, перерыл кучу форумов...
Вот так прицепил провод зелёный. Сколько серв дешевых использовал, ни разу никаких закидонов с качалками не было.
Вот тестовый скетч.
Такие результаты по углам выставляемым и вычисляемым по потенциометру.
Круто, буду втыкать! Разберу один...
Круто, буду втыкать! Разберу один...
Если начальное положение не важно, а нужно что бы просто не дергалось при включении, то можно обойтись и без разбирания. Просто вызывайте attach() не в начале, а когда уже потребуется повернуть серву на нужный угол.
Круто, буду втыкать! Разберу один...
Если начальное положение не важно, а нужно что бы просто не дергалось при включении, то можно обойтись и без разбирания. Просто вызывайте attach() не в начале, а когда уже потребуется повернуть серву на нужный угол.
В смысле? Он же все равно метнется туда из текущего положения на максимальной скорости. Не вижу разницы.
Но метнётся он в нужный момент.
Но метнётся он в нужный момент.
Это понятно. attach/detach можно делать когда нужно.
Но мне нельзя, чтобы он метался. Скорость должна быть вполне конкретной и плавной.
Про "конкретно и плавно" ничего написано не было.
Ну, я ведь тоже не спрашивал, как сделать чтобы серво метался в нужном направлении «в нужный момент», верно? ;-)
С этим мне все понятно.
Мне нужно то, что я спросил - чтобы серво оставался в текущем положении, когда вызывается attach.
Но правда Ваша, если я бы смог заставить его двигаться в исходную позицию с нужной мне скоростью, то меня бы это устроило. Мне главное чтобы он не *дергался* при включении.
Поставить на серву механический возвращатель в нулевую позицию. В простейшем случае - резиночку. Тогда при отключении она всегда будет в одном и том же состоянии и не будет дергаться при включении
Пришла другая идея. Ловить процесс обесточивания, выкрадывать несколько микросекунд на запись последнего положения в ПЗУ, которое применять при следующему запуске непосредственно перед .attach.
Пришла другая идея. Ловить процесс обесточивания, выкрадывать несколько микросекунд на запись последнего положения в ПЗУ, которое применять при следующему запуске непосредственно перед .attach.
Ну тогда проще подключить небольшую FRAM и записывать туда положение каждый раз как меняется. И при запуске оттуда считывать последнее положение.
Кроме FRAM и EERAM еще можно.
Кроме FRAM и EERAM еще можно.
В малых размерах FRAM, вроде, заметно дешевле будет.
А чем EEPROM на самой ардуине не подойдет?
Сложней контроль.
Сложней контроль.
Контроль чего?...
Того, чего собрались ловить - падения напряжения.
А чем EEPROM на самой ардуине не подойдет?
EEPROM имеет хоть и большое, но ограниченное количество циклов перезаписи. Поэтому решение - ловить пропадание питания и писать в этот момент, вполне разумное, но относительно сложно реализуемое.
Можно подключить внешнюю микросхему с FRAM памятью, которая имеет практически неограниченный рессурс по перезаписи и сохраняет данные после выключения питания. Плюс она еще и быстрее чем EEPROM. Тогда в нее можно писать каждый раз как мы меняем положение сервы и не парится насчет отлова пропадания питания.