Проблемы с сервой tower pro sg90

Stafi
Offline
Зарегистрирован: 06.10.2015

Собрал китайский кит: платформа с двумя мотор редукторами, uno r3 клон, дальномер ультразвуковой. Простой скетч объезда препятствия работает. Подключил сервы, поменял алгоритм на сбор расстояний с разных сторон (серва крутит дальномер) - приходят неверные данные о расстоянии. Питание организовано раздельное - 9 в на моторы и плату, 4.5 вольта на серву, дальномер питается от платы. Земля общая.

Когда продаю питание только на серву,на плате загорается светодиод как будто серва замыкает. Почему так происходит?

vvadim
Offline
Зарегистрирован: 23.05.2012

вероятно серва просаживает напряжение на мк

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Stafi пишет:
Когда продаю питание только на серву, ...
Почём? Наверняка, дело в цене! :)

Stafi
Offline
Зарегистрирован: 06.10.2015

vvadim пишет:

вероятно серва просаживает напряжение на мк

каким образом? у нее свое питание ведь.

ЕвгенийП пишет:

дело в цене! :)

да-да, в телефоне есть "умная" автозамена, а кнопка редактирования недоступна

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Скорее мотор-редукторы просаживают питание платы. Но, ещё вероятнее - неверная оценка результата датчика. У него очень широкий лепесток направленности - плюс-минус градусов 15. И боковые отростки - очень даже нехилые. Как-бы есть три направления, с которых он активно ловит отраженный сигнал. Для улучшения наденьте на приемную часть цилиндрик из чего-то звукопоглощающего (войлок, фетр и т.д. картон, бумага - значительно хуже) удлиняющий приемник примерно на 1-1.5 см. Должно сильно помочь. Я пользовал "фетровый картон" .. нечто среднее промеж картона и фетра. Ну и измерять надо 5-7 раз "подряд" с усреднением и отбрасыванием заведомо дебильных значений и ограничением времени замера на 30мсек (5метров). Дальше он все равно не стреляет, проверено.

Stafi
Offline
Зарегистрирован: 06.10.2015

При отключенной серве датчик показывает правильные результаты, а при включенной 30% результатов - в 2-3 раза заниженные показатели.

Но я вот не пойму - почему на ардуине загорается светодиод питания, если я не подавал на нее питание, а подал лишь на серву. Ведь так не должно быть. Получается что серва коротит?

И есть ли какие-то выводы на ардуино, которые нельзя использовать совместно* для двигателй использую разъемы 2-7 (насколько я помню), для ультрасоника - A0, A1, а для сервы - 10 (пробовал также 9)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Stafi пишет:

При отключенной серве датчик показывает правильные результаты, а при включенной 30% результатов - в 2-3 раза заниженные показатели.

Но я вот не пойму - почему на ардуине загорается светодиод питания, если я не подавал на нее питание, а подал лишь на серву. Ведь так не должно быть. Получается что серва коротит?

И есть ли какие-то выводы на ардуино, которые нельзя использовать совместно* для двигателй использую разъемы 2-7 (насколько я помню), для ультрасоника - A0, A1, а для сервы - 10 (пробовал также 9)

Из особенностей ног Ардуины, у Меги на 13-й ноге воткнут встроенный светодиод, так что использовать её "на вход" не удастся никак. Про остальное, вроде проблем нет.

Показывайте схему соединений, тип ардуино и что там за плата .. так непонятно что у вас происходит.

Stafi
Offline
Зарегистрирован: 06.10.2015

Плата, как я сказал в самом начале - клон UNO R3.

Motor shield (l298n) подключен к следующим пинам:

#define R_EN 9
#define R_IN1 7
#define R_IN2 6
#define L_IN2 5
#define L_IN1 4
#define L_EN 3

Первая проблема, с которой я столкнулся: подключение сервы на любой из портов (1,2,8,10,11,12) приводит к тому, что один из двигателей (помеченный префиксом R) перестает работать.
Замена R_IN1 с 7 на 8 решает проблему. (почему так?)

Питание - 9В на ардуину. Дальномер питается от платы ардуино.

Еще один истояник - 9,6В акк - на моторшилд.

Минусы обоих источников соединены и подключены к потребителям через общий выключатель.

Теперь подключаем также через выключатель еще один источник - 4.5 В - к серве.

Выключатель выключен.

И тут загораются лампочки на моторшилде и на ардуине. Это так не должно ведь быть?

При выключенном выключателе.

Код тут - http://collabedit.com/9rr4e

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Могу ошибаться, но насколько помню servo.h организует программную эмуляцию ШИМ на заданной ноге, используя таймер 0. Соответственно, этой библиотеке должно быть все равно какую ногу вы используете под серву.

А вот ваш скетч с использованием аппаратного ШИМ да ещё и с его инициализацией при каждом вызове из analogWrite() вполне может конфликтовать с чем-то. Смотрите распиновку УНЫ какой счетчик конкретно рулит какми ногами и каналами .. скорее всего конфликт ног где-то тут. Заменяя ногу, вы тем самым "разводите" используемые счетчики для сервы и ШИМ через analogWrite(). К сожалению, вы пользуетесь плохо спроектированными библиотеками и помочь тут - я не знаю как. Попробуйте разобраться в Cyberlib.h и работать с регистрами и счетчиками напрямую .. да и делай - выбросите заодно.

По описанию подключений - мало что понял, рисуйте схему. Да, и проверьте снята ли перемычка с моторшилда по питаниям, раз у вас раздельное питание. Да, и не забудьте подать +5в от платы куда надо .. перемычка разъединяет питание.

В целом "так быть не должно". рисуйте схему.

Stafi
Offline
Зарегистрирован: 06.10.2015

Разобрался с первым вопросом: "На платах, отличных от Mega, использование библиотеки отключает возможность использования analogWrite() (PWM) на пинах 9 и 10 (вне зависимости подключены к этим пинам сервы или нет).". Источник - http://robocraft.ru/blog/arduino/245.html

Библиотека MegaServo на самом деле плохо спроектированная? Она ведь с 2009 года в составе IDE идет.

Нарисовал схему. Перемчка на моторшилде стоит "12В", т.к. 5 В я не подаю, логику питает стабилизатор который на моторшилде.

Еще на ардуине стоит Sensor Shield V.5.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

То есть вы общим выключателем отрубаете всем .. землю?!? Круто. Не, может оно так и можно .. но мне кажется что в таком разе удивляться не стоит...

Да, и ещё. Снимите перемычку с мотор-шилда и подайте +5в на L298N как положено с самой ардуины. Так правильнее, (имхо).

Stafi
Offline
Зарегистрирован: 06.10.2015

Arhat109-2 пишет:

То есть вы общим выключателем отрубаете всем .. землю?!? Круто. Не, может оно так и можно .. но мне кажется что в таком разе удивляться не стоит...

 

Спасибо. Действительно нельзя общим выключателем отрубать всем землю. Отказался от этой идеи - проблема исчезла.

Дальше разбираюсь с неверными показаниями дальномера.