Полтергейст в работе сервы
- Войдите на сайт для отправки комментариев
Долго не мог понять, почему у меня не работает вместе библиотека Servo и Motor shield с шимом на 9 и 10 ноге после того как я Шилд снял с Ардуинки и не разместил отдельно, кинув на него все необходимые провода. Шим взял с 3 и 5 пина, чтоб не конфликтовать с либой сервы.
Наконец понял, что серва перестает работать как я втыкаю ИК дальномер Шарп на разъем Тройка Шилда в аналоговый порт.
Взял простой пример Sweep:
#include <Servo.h> Servo myservo; int pos = 0; // variable to store the servo position void setup() { myservo.attach(A1, 900, 2100); // attaches the servo on pin 9 to the servo object } void loop() { for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } }
Серва работает отлично! Потом просто втыкаю дальномер в Тройку на любой свободный разъем аналогового порта. Обращаю внимание, что с дальномером в коде нет вообще никаких действий.
Серва начинает судорожно дергаться, истерить (по другому и не скажешь), как будто ей быстро меняют углы, а время на отработку не дают. Немного подергавшись, поворачивается на отметку 180 градусов и притворяется не живой.
Выдергиваю дальномер - оживает.
Дальномер рабочий, в другом скече расстояние определяет верно.
Серва - FS12MG - http://www.servodatabase.com/servo/feetech/fs12mg
Дальномер - SHARP GP2Y0A21 - http://amperka.ru/collection/proximity-sensors/product/infrared-range-me...
Что за хрень-то?
опять же, скорее всего недостаток питания.
4 ДПТ на акк. с другим скетчем работают хорошо, не может же дальномер с сервой потреблять больше.
На всякий случай сменил акк., но замена ничего не дала.
Дальномер потребляет 30 мА, на серву не нашел тока, но она оч. маленькая - микро. Больше оборудования в скетче не используется. Дунька должна тянуть....
именно очень маленькая серва у меня например с питанием от usb!!!от компа вполне себе глючилась и вешала ардуину, пока не воткнул внешний 9 вольт. так что всякое бывает.
Надо транспарант написать - серву питать от отдельного источника и общая земля. Об этом уже сто раз писали. Читайте форум http://arduino.ru/forum/obshchii/prezhde-chem-sprosit-pro-servomashinku-servo-posmotri-tut
Надо транспарант написать - серву питать от отдельного источника и общая земля.
Я тоже так думал до недавнего времени... Но недавно пришлось вот эту серву
http://www.ebay.com/itm/Nx-3-7g-Mini-Micro-Servo-for-RC-Helicopter-Car-B...
подключать к ПРО МИНИ , задача была двигать тумблер туда-сюда инфраредом , нагрузки почти никакой,
на всякий случай поставил BODLEVEL на 2.7 Вольта и ничего, полгода обе коробки работают, питаются с компа по полутораметровому USB принтерному кабелю.
Так что 3.7 граммовые можно. Главное их в упоры не загонять. И не грузить сильно.
Продавец пишет:
Микросервопривод FS12MG может быть подключен непосредственно к микроконтроллеру, без силового драйвера. Для этого от него идёт шлейф из трёх проводов. http://amperka.ru/collection/servo/product/servo-fs12mg
Пусть даже он потребляет 200мА, в чем я очень сомневаюсь, плюс дальномер - 30мА, Ардуинка может выдать пусть не 500, но 400мА.
Я, конечно, попробую запитать серву отдельно, чтоб уже не было сомнений.
Отпишусь.
Как и предполагалось, отдельное питание на серву ничего не дало!
4 аккумулятора АА по 2700мА, общая земля. Свежезаряжены, без нагрузки показывают 5,35В + С нагрузкой сервой - 5,3 В
Серва работает, а как только втыкаю дальномер - дергается.
Более того, залил полный скетч с дальномером, сервой, езда на 4-х ДПТ, светодиодная иллюминация (от 4 до 8 диодов одновременно с усилением на ULN 2003). Все работает пока физически не подключаю дальномер. Вся цепь и серва при этом работает от Ардуинки. На мотор шилд отдельное питание 7,2В. (Так же пробовал и тут серве дать отдельное питание).
Хрена ей надо? Уже псих разбирает...
Может ей кондер по питанию поставить, какой только? Хотя тоже сомневаюсь, питание-то отдельно подавал.
Может чего с дальномером? Хоть сам и работает, но может как-то влияет на цепь?
Не работают вместе серва именно с дальномером. По отдельности вся схема работает.
Я разбирал серву, думал гикнулась. Обратил внимание, что ограничитель в крайних положениях (при управлении 900-2100мкс) даже не касается упоров. То есть теоритически управлением видимо можно расширить угол более чем на 120 паспортных градусов. Но я к этому не прибегаю.
Так что в упоры она не упирается, а нагружена по оси только дальномером, а это копейки для ее момента 1,8 кг×см при 6 В
Проверил через монитор порта какое управление подается на серву при сбоях:
0
18
36
54
72
90
108
126
144
162
180
0
18
36
54
72
90
108
126
144
162
180
Первый цикл - без дальномера, второй - когда глючит с дальномером. То есть программа выдает нормальное управление.
Народ! Вообще ничего не понимаю!
Решил на отдельное питание посадить Дальномер. Включаю - серва дергается. Это я ожидал. НО!!!
Беру и с разъема дальномера выдергиваю питание от акк. Дергается! Ниче не понимаю, выдергиваю сигнальный провод - ДЕРГАЕТСЯ!!!! На одной земле! Проверял несколько раз, в разные разъемы.
От дальномера идет в схему ТОЛЬКО земля и вносит помехи. Как такое может быть???? Где искать барабашку?
Только сигнальный провод дальномера не портит работу, будучи оставленным одним в разъеме.
И земля и питание вместе и по-одиночке сбоят серву.
От дальномера идет в схему ТОЛЬКО земля и вносит помехи. Как такое может быть???? Где искать барабашку?
уникальное явление - народ паяльник в соседнюю розетку втыкает и нихрена не понимает, почему...
Клапауций, согласен, но делать-то чё?
Использую расширитель Тройка-шилд, на него уже подумал, но потом вспомнил, одна серва-то работает. А дальномер - так вообще, всегда работает и сервой и без нее. Потом обнаружил фокус с землей...
Клапауций, согласен, но делать-то чё?
Использую расширитель Тройка-шилд, на него уже подумал, но потом вспомнил, одна серва-то работает. А дальномер - так вообще, всегда работает и сервой и без нее. Потом обнаружил фокус с землей...
мне эти названия - "съужитель/расширитель" ничего не говорят.
нужно смотреть электрическую схему халабуды и выяснять, каким образом помеха при наличии блокировочных конденсаторов, дросселей попадает в контроллер.
*при правильной разводке питания такого быть не должно, так же нужно обратить внимание на фьюз контроллера BODLEVEL, BODEN - установлен, не установлен, на какое напряжение установлен.
а как посмотреть?
а как посмотреть?
я так смотрю - внешним программатором, в строке всё понятно - дуде, контроллер, программатор, считается в текстовые файлы.
avrdude -p ATtiny2313 -c stk500v2 -U lfuse:r:lfuse.txt:h -U hfuse:r:hfuse.txt:h
организацию правильного питания здесь можно почитать http://www.myrobot.ru/articles/mc_stab.php
*мне вот это интересно - питаем халабуду нестабилизированным напряжением?
>4 аккумулятора АА по 2700мА, общая земля. Свежезаряжены, без нагрузки показывают 5,35В + С нагрузкой сервой - 5,3 В
Тройка шилд - http://amperka.ru/collection/troyka/product/arduino-troyka-shield
Просто разводка портов с землей и питанием для удобства подключения датчиков. Садится сверху ардуинки
питание акк. 7,2В 2600мА Подаю параллельно на вход дуни и мотор шилда.У них же свои стабилизаторы есть. Мотор шилд стоит отдельно, а не сверху.
В файле boards.txt, что в каталоге Ардуины нашел:
##############################################################
atmega328.name=Arduino Duemilanove w/ ATmega328
atmega328.upload.protocol=arduino
atmega328.upload.maximum_size=30720
atmega328.upload.speed=57600
atmega328.bootloader.low_fuses=0xFF
atmega328.bootloader.high_fuses=0xDA
atmega328.bootloader.extended_fuses=0x05
atmega328.bootloader.path=atmega
atmega328.bootloader.file=ATmegaBOOT_168_atmega328.hex
atmega328.bootloader.unlock_bits=0x3F
atmega328.bootloader.lock_bits=0x0F
atmega328.build.mcu=atmega328p
atmega328.build.f_cpu=16000000L
atmega328.build.core=arduino
atmega328.build.variant=standard
Это не то?
Клапауций, посмотрел ссылку по питанию, вопрос - это актуально при автономном использовании контроллеров с самостоятельным обвесом? На плате Ардуино же есть стабилизация и подавать питание через штырьковый разъем на плате рекомендуют в пределах 7-12 В.
Вроде так и сделал...
А по USB разве не сбалилизированное питание идет? В этом случае тоже сбоит.
А по USB разве не сбалилизированное питание идет? В этом случае тоже сбоит.
по USB идёт стабилизированное 5V.
получается так, что тебе достаточно дотронуться отвёрткой к земле дуино, что бы вызвать странное?
Отверткой дотрагиваюсь - все нормально, а "землей" дальномера - вызывается странное. При том, что два других вывода дальномера висят в воздухе.
Сейчас вообще все снял с дуньки, серву включил на порт А1, питание с дуино. Тыкаю землей дальномера - все повторяется...
То есть осталось Ардуино УНО (328Р) и серва.
Отверткой дотрагиваюсь - все нормально, а "землей" дальномера - вызывается странное. При том, что два других вывода дальномера висят в воздухе.
дальномер можно продавать отдельным шильдом - "убийца дуино".
хорошо, а если электролит на примерно 20мкФ и керамику на 0,1 мкФ на питание дальномера навесить?
Сейчас вообще все снял с дуньки, серву включил на порт А1, питание с дуино. Тыкаю землей дальномера - все повторяется...
То есть осталось Ардуино УНО (328Р) и серва.
на питание сервы керамику 0,1 мкф.
так питания-то как такового нет у него. Один же провод?
так питания-то как такового нет у него. Один же провод?
да пофиг - может оно как детекторный приёмник работает и черпает энергию из твоего вайфая или элекромагнитную составляющую электрической сети 220 вольт.
конденсаторы по питанию должны присутсвовать на всех блоках халабуды.
сделал. Блин серва подергалась и рванула в крайнее положение 180 гр. и похоже, стопором своим заклинила об шестерню...
Теперь включаю питание, гудит, но не выходит из этого положения
действительно, закусился стопор. - со щелчком рукой вывернул.
Поосторожней с советами ))))
действительно, закусился стопор. - со щелчком рукой вывернул.
Поосторожней с советами ))))
я советовал блокировочные конденсаторы на питание установить - это более чем безопасно.
Я понял, что фраза: "хорошо, а если электролит на примерно 20мкФ и керамику на 0,1 мкФ на питание дальномера навесить?" означает, что надо кондеры пряно на входе питания дальномера поставить.
Поэтому и написал, что у него питания как такового нет.
Так куда надо поставить - на аккумулятор?
мне надоели эти препирательства - читаем ссылку о питании до полного просветления.
да я и не препирался, объяснил почему не так понял.
Все равно спасибо. Вечером поставлю на акк. и серву, посмотрю как будет себя вести.
Попробовал поставить кондеры электролит 22мФ и керамический 0,1мФ в параллель на аккумулятор, потом прямо на разъемы питания сервы и дальномера. Уносил поделку в подземный гараж, где не ловят сотовые, нет вай-фая, а из электричества - одна лампа накаливания 200Вт; попробовал перецепить серву на цифровой шим-порт 3.
Ничего не помогает. Есть у кого-нибудь идеи? Просто уже выхода не вижу...
Просто уже выхода не вижу...
да ладно - нет никакой проблемы, не то и не втуда втыкаете, проверяйте схему подключения, желательно схему сюда публикуйте...
*про детекторный приёмник - это шутка была.
Да я уже у той черты, когда стирается грань между шуткой и реальностью, уже готов поверить в сглаз или порчу )))))
Я и сам в антенну не верил, просто проверять уже нечего.
А схемы уже никакой и нет. Есть литиевый аккумулятор 7,2В на 2600мА в разъеме внешнего питания контроллера, Ардуино УНО и серва с дальномером.
Серва подключена на порт А1, загружен пример Sweep из среды Ардуино ИДЕ.
Вот и всё. Работает. Соединяю ждампером землю из разъема дальномера с любой землей Ардуино, или целиком фтыкаю разъем дальномера в любой аналоговый порт, всё - жопа.
Дальномер отдельно и со взбешенной сервой показывает правильные расстояния.
Сейчас взял другую плату Ардуино УНО (попросил на время) - поведение аналогичное. Вообще на столе проводил опыт отдельно от бота, питал по USB.
Да я уже у той черты, когда стирается грань между шуткой и реальностью, уже готов поверить в сглаз или порчу )))))
Я и сам в антенну не верил, просто проверять уже нечего.
А схемы уже никакой и нет. Есть литиевый аккумулятор 7,2В на 2600мА в разъеме внешнего питания контроллера, Ардуино УНО и серва с дальномером.
Серва подключена на порт А1, загружен пример Sweep из среды Ардуино ИДЕ.
Вот и всё. Работает. Соединяю ждампером землю из разъема дальномера с любой землей Ардуино, или целиком фтыкаю разъем дальномера в любой аналоговый порт, всё - жопа.
Дальномер отдельно и со взбешенной сервой показывает правильные расстояния.
если не будет схемы - записывайте явление в разряд чудес и, тогда, к батюшке - возможно божественное вмешательство.
как сюда вставить рисунок? Раньше пробовал - не получилось, пришлось ссылку давать.
как сюда вставить рисунок? Раньше пробовал - не получилось, пришлось ссылку давать.
"Отправить комментарий", иконка редактора комментариев "Изображение"
Че то мне яндекс диск не дает прямую ссылку на файл.
Можно посмотреть тут http://yadi.sk/d/MVGwEZwjHrbyu
перерисуй схему из "принципиально-сферической в вакууме" в монтажную - с разводкой питания, подробным указанием номеров пинов - какой провод к чему конкретно подключен(номер пина платы)
*не понятно - что от чего питается.
А у вас на А1 шим?
Может пора всё нормально подключить и залить нормальный код. И за 40 комментов уже можно было бы опубликовать и вашу схему (ПОЛНУЮ) и залитый код. Удивляюсь выдержке Клапауция.
Кстати, в библе Servo по умолчанию myservo.attach(9);
А у вас на А1 шим?
Может пора всё нормально подключить и залить нормальный код. И за 40 комментов уже можно было бы опубликовать и вашу схему (ПОЛНУЮ) и залитый код. Удивляюсь выдержке Клапауция.
Кстати, в библе Servo по умолчанию myservo.attach(9);
это не выдержка - даже в мыслях не было проверить, якобы рабочее подключение сервы к аналоговому пину.
А у вас на А1 шим?
Может пора всё нормально подключить и залить нормальный код. И за 40 комментов уже можно было бы опубликовать и вашу схему (ПОЛНУЮ) и залитый код. Удивляюсь выдержке Клапауция.
Кстати, в библе Servo по умолчанию myservo.attach(9);
Какой ШИМ для серво?
В библиотеке Servo никакого умолчания нет, 9 порт используется в примере Sweep этой библиотеки, поскольку допускает инструкцию analogWrite. С этим же успехом можно пользоваться и аналоговым портом. Но я пробовал на 3 порту, он тоже с ШИМом, поскольку 9-й у меня был тогда занят. Что касается исходного кода, то я уже писал, что использую стандартный пример Sweep
Схему сейчас доработаю. (Как, кстати, с яндекс диска получить ссылку не на страницу с файлом, а на сам файл?)
Упёртость - это как подвиг! Вперёд и с песней!
А http://arduino.ru/forum/obshchii/prezhde-chem-sprosit-pro-servomashinku-servo-posmotri-tut наверное принципиально не читал.
Упёртость - это как подвиг! Вперёд и с песней!
Сейчас попробовал на другой ардуинке на порту 9. Ничего не поменялось - опять одна серва работает, при приземлении дальномера дергается.
На что ещё стоит обратить внимание, так это на путаницу в терминологии. Часто способ управления сервоприводами называют PWM/ШИМ (Pulse Width Modulation) или PPM (Pulse Position Modulation). Это не так, и использование этих способов может даже повредить привод. Корректный термин — PDM (Pulse Duration Modulation). В нём крайне важна длина импульсов и не так важна частота их появления. 50 Гц — это норма, но сервопривод будет работать корректно и при 40, и при 60 Гц.
Сейчас попробовал на другой ардуинке на порту 9. Ничего не поменялось - опять одна серва работает, при приземлении дальномера дергается.
"заземление дальномера" - это что значит?
берём девайс и подключаем одним проводом(земляным) к дуино? и, откуда дуино по одному проводу узнаёт, что это дальномер, что бы заглючить?
*ну, что за?..
Сейчас попробовал на другой ардуинке на порту 9. Ничего не поменялось - опять одна серва работает, при приземлении дальномера дергается.
"заземление дальномера" - это что значит?
берём девайс и подключаем одним проводом(земляным) к дуино? и, откуда дуино по одному проводу узнаёт, что это дальномер, что бы заглючить?
*ну, что за?..
Все началось того, что я выяснил, постепенно отключая переферию, что глючит серва из-за дальномера (когда они остались вдвоем). Подключаю дальномер - глючит, отключаю - не глючит (при этом в коде дальномера уже не было). Я его переключал на другие пины. Потом отключил у него джампер с +5. все равно глючит. Потом выяснил, что даже одна землю дает помеху.
Вы еще пошутили насчет антенны. При чем если коснуться земли отверткой или воткнуть один джампер на землю - ничего не происходит.
Если дальномер подключить на любой аналоговый порт, подать нитание и землю ему на разъем с ардуинки - ничего не меняется - глючит.
То есть глючит и полностью подключенный и частично. Только подключенные сигнальный провод не дает помех. Питание или земля или все вместе - да.
Поправил схему http://yadi.sk/d/DJrdjDZhHrthN