Проблема совместной работы 4-х серв и Motor Shield

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем BIgor, 7 янв 2017.

  1. BIgor

    BIgor Нерд

    Добрый день. Кто сталкнулся с помехами работы сервоприводов и управления двигателями используя Motor Shield (2 канала, 2 А). Сервы подключил к пинам 10-13 в Troyka Shield. И некоторые, похоже, что друг другу мешают. Краткая цитата из кода:
    Код (Javascript):

    var Motor = require('@amperka/motor');
    var servo = require('@amperka/servo').connect(P10);
    var myMotor = Motor.connect(Motor.MotorShield.M2);
    myMotor.write(1);
    servo.write(90);
     
    и ... двигатель стоит и слегка гудит. Команда на серву останавливает его.
    Подскажите, пожалуйста, как разрулить?
     
  2. Jedi

    Jedi Гик

    А с питанием все нормально?
     
  3. BIgor

    BIgor Нерд

    Питание осуществляется либо от батареек АА 5х1,5В, либо от USB, результат одинаков.
    Возможно не уточнил главное - приводит к перекрестным проблемам именно процитированная часть, т.е.серво подключенная к пин 10 и мотор М2. Разве двигатели моторшилда (по умолчанию) подключены не к пинам 4,5 и 6,7?
     
  4. BIgor

    BIgor Нерд

    Добавил ограничение мин и максимального значений сервы, значение передаваемое серве так же менял (впрочем в проекте это значение, естественно менялось в некотором диаппазоне и мощность двигателя так же плавала). Подключение сервы к пин 10. Результат прежний - команда на серве влияет и на двигатель. Команда двигателю так же влияет на серву, но эффект не столь значительный
     
  5. Jedi

    Jedi Гик

    Ну в таком случае рискну предположить (если двигатель обычный коллекторный), что где-то замыкаются два ШИМа и двигатель не знает куда ему крутиться.
     
  6. BIgor

    BIgor Нерд

    возможно ли уточнить что это значит?
    Остаются вопросы: 1) нормально ли это, и 2) - как это обойти.
     
  7. BIgor

    BIgor Нерд

    Опытным путем выяснилось, что моторшилд пересекается с пинами P9 и P10. Переподключил серву на Р8, все стало работать норм. и При необходимости подключения еще хотя бы одной сервы, что делать, куда подключать?
    Но, не странно ли это?
     
  8. BIgor

    BIgor Нерд

    Мне то нравятся, но выяснилось, что сигналы на 9-й и 10-й пины конфликтуют с М2 моторшилда. Поэтому четыре сервы манипулятора пришлось подключать к 8-му и с 11-й по 13-й пины.
    Сейчас всё работает, но если потребуется ещё хотя бы одна серва, куда её подключить? 9-й и 10-й пины конфликтуют с моторшилд :(
     
  9. Oled

    Oled Нерд

    Пины не конфликтуют... Вы их дважды используете:
    1.Питание от АА (5шт) либо от USB достаточно (можно и 12В)!
    2. Пины для серво-двигателей можно использовать (в Вашем случае): 2, 3, 8, 9, 11 и 13 (все проверил, работают).
    3. Для серво-двигателей скетч надо написать, чтобы возвращать его в исходное состояние по циклу.

    Посмотрите о пинах:
    а) http://wiki.amperka.ru/js:iskra_js (Распиновка на "Искре");
    б) https://goo.gl/28IvLQ (Элементы платы и пины "Motor Shield");
    в) https://goo.gl/NiDf8h (Подключение и пины "Troyka Shield");
    г) https://goo.gl/DBl4NO (расписано о ШИМ)...

    Всё подробно о ШИМе здесь https://goo.gl/veZoEa
    Широтно-Импульсная Модуляция - это термин (а не объект)!
    Термин ШИМ - "не замыкается" (как было кем-то предположено).
    Надо отличать понятия "термин" от понятия "объект", чтобы не теряться в чужих заблуждениях...
    Как на любом форуме, словоблудием занимается большинство.

    (Скетч бросить?)

    ИскРаспиновка.JPG

    ВСЁ НАЧИНАЕТСЯ С ПРИКОСНОВЕНИЯ
    Интерфейс девайса делится на три части:
    1. Физический интерфейс (то, что мы трогаем: кнопки, ручки, тумблеры, датчики, которые реагируют на наш физический контакт).
    2. Программный интерфейс (команды посылаемые девайсу, чтобы вызвать его реакцию).
    3. Электрический интерфейс (состоящий из импульсов электрической энергии, пересылаемые от одного устройства к другому и несущее закодированную информацию).

    PS: решая проблему, стоит понять какой интерфейс дал сбой.
    В Вашем случае, сбой в "программном интерфейсе".
     
    Последнее редактирование: 8 янв 2017
    BIgor нравится это.
  10. Jedi

    Jedi Гик

    Человеческим языком - Разные Широтно-Импульсные Модуляторы (Генераторы) используют один общий пин, или используют два разных пина, но с разными характеристиками (скважностью или фазой), что вызывает у исполнительного устройства состояние неопределенности. Так понятнее? Или просто они схлестываются, перекрещиваются, найдите кучу синонимов :)
    Нормально или нет, если работают два шима на разные входы одного исполнительного устройства - зависит от задачи. Для шаговиков может быть вполне нормальным явлением.
    Как обойти - для начала понять как это возникло.
     
    BIgor нравится это.
  11. BIgor

    BIgor Нерд

    Благодарю за обстаятельные и подробные ответы. Однако часть вопросов осталась. Постараюсь поясниться подробно.
    1. Да.
    2. Пины 8,11 и 13 (и 12й) уже задействовал; 9-й конфликтует (реагирует как и пин 10 на команды подаваемые на двигатель через моторшилд. А 2 и 3, насколько я понимаю, обеспечивают питание 3,3В(?), при рекомендованных для серв 5В. Или при обьединенной линии питания (VIN3+5V) на пинах 2 и 3 то же будет 5В?
    3. Простите, не совсем понял когда и зачем "возвращать его в исходное состояние по циклу".
    О пинах посмотрел, однако там указано, что двигатели по умолчанию управляются пинами 4 - 7. Тогда изначально сигналы на двигатели не должны оказывать влияние на сервы, подключенные к пинам 9 и 10, и наоборот.
    Ваш PS, что называется "не в бровь ..." но, не уверен, что именно программная часть дала сбой.
    Если не сложно, попробуйте повторить ту маленькую часть, что описана кодом JS в топикстарт-сообщении. Для полноты "ощущения" серв можно подключить две - на 9 и 10 пины. Наиболее "эффектно" проблема демонстрируется приведенным кодом, когда сначала двигатель получает комманду на вращение, а следом отправляем серве команду повернуть ... двигатель тут же меняет свой режим.
    "(Скетч бросить?)" - возможно это было бы полезно для лучшего понимания нюансов. Спасибо.
     
    Последнее редактирование: 8 янв 2017
  12. BIgor

    BIgor Нерд

    А вот тут я откровенно не понял: "Разные ШИМ используют один общий пин" - да? А это: "используют два разных пина, но с разными характеристиками" - имеется ввиду два пина, предназначенные для совместного управления объектом (двигателем?), имеют несовместимые параметры? Ну, даже если было бы так, то почему управление сервами на пинах 9 и 10 оказывает влияние на двигатели, подключенные по умолчанию на моторшилде к пинам 4 - 7. Если быть более точным пин 6 - (скорость М2).
    "если работают два шима на разные входы одного исполнительного устройства" - так возможно?
     
  13. Jedi

    Jedi Гик

    Ну вот смотрите:
    Разные ШИМ используют общий пин.
    Разработчики тоже люди и могут в прошивке допустить ошибку, например, вбив адрес пина 9 в объект пин 10. А сам объект пин 10 объявили уже нормально.
    И получается, что Ваша программа (правильная) адресует пин 9, а по факту и прошивке железа адресуется пин 10. Другая команда Вашей программы адресует пин 10 и он адресуется правильно. Что в итоге? Конфликт.
    Далее - мотор в случае мотор-шилда подключается одним контактом на землю, другим на ШИМ. Предположим, что вместо земли у нас оказался сигнал с какого-то другого ШИМа. Что будет с моторчиком?
    У Вас он стоит и гудит. Значит какие-то импульсы или что-то там на него приходит.
    Был у меня случай, когда оборудование поменяли, прошивку поменяли, а вот вывод контроллера забыли поменять и пришло два шима на движок. Хорошо, что быстро сообразили ;)

    Насчет Вашей проблемы я вот что думаю: если исключить Вашу программу, то или где-то случайно замкнули пины или что-то еще, и получается, что замкнулись ноги контроллера; или, возможно, что в прошивке плат есть неточности с определением пинов (вылетело из головы это слово... Имя пина). Вот тут посмотрите http://wiki.amperka.ru/js:pin
    И что еще... Я бы снял motor shield (исключил бы его из схемы), взял бы пробник (логический), ну или на худой конец светодиоды, помигал бы ими, адресуя Ваши конфликтые пины. Если с пинами все нормально, то аналогичным образом посмотрел бы что происходит с мотор-шилдом.
     
    BIgor нравится это.
  14. BIgor

    BIgor Нерд

    "Что в итоге? Конфликт." Понятно, но это означает, что ситуация неправильная и Амперке есть что поправить?
    Да, конечно же,сначала все было без моторшилда и двигателей. Все было отлажено и четыре сервы работали штатно и корректно на пинах 10 - 13.
    По ссылочке статью видел. Но надо будет подробнее изучить, спасибо.
     
  15. Jedi

    Jedi Гик

    Я лишь предполагаю.
    Ваши сервы работали штатно и корректно на пинах 10-13. Пробовали Вы в это время подавать какой-то сигнал на другие пины (которые у Вас конфликтуют)?
     
    BIgor нравится это.
  16. BIgor

    BIgor Нерд

    Не, без моторшилда не было мысли писать в неподключенные пины. Да и наглядность проблемы достаточна в направлении сигнал -> на серву => двигатель -> "в ноль". Обратная процедура сигнал -> на двигатель => приводит к неожиданной реакции сервы при каких-то определенных значениях передаваемого параметра в М2.
     
  17. Jedi

    Jedi Гик

    Искра - плата? Плата. С контроллером. В ней может быть неисправность как по железу, так и по софту? Может быть
    Шилд - плата? Плата. С контроллером. В ней может быть неисправность по железу? Может.
    Какая из плат неисправна? Ответит диагностика :)
     
    BIgor нравится это.
  18. BIgor

    BIgor Нерд

    Понятно, надо будет завтра позвонить.
     
  19. Oled

    Oled Нерд

    ...по моему Вы просто "заблудились", и помочь Вам сложно, т.к. Вам предлагают две точки зрения (одна из которых 100% непрактичная вода).

    Что я сделал, чтобы проверить Ваш первый и основной вопрос...
    1. Поставил на свою "Iskra" "Motor Shield" и "Troyka Shield";
    2. Подключил два мотора на М1 и М2;
    3. Написал скетч работы трёх двигателей М1, М2 и Серво-Двигателя (на пин8 скетч надо написать, чтобы возвращать его в исходное состояние по циклу).

    А далее просто стал менять номер пина для Серво-Двигателя и выяснил, что пины №№2, 3, 8, 9, 11 и 13 работают нормально.
    Вывод: пины №№4, 5, 6, 7, 10 и 12 заняты и нет смысла их задействовать под Серво-Двигатели.
     
    Последнее редактирование: 9 янв 2017
    BIgor нравится это.
  20. BIgor

    BIgor Нерд

    Честно - хотелось бы оказаться в этой ситуации «заблудившимся» и найти выход :)
    «3. Написал скетч работы трёх двигателейМ1,М2 и Серво-Двигателя» сей скетч отличается от предложенного мной в начале?

    «пины №№4, 5, 6, 7, 10 и 12 заняты» - про 4-7 вопросов нет - управление двигателями, согласно описанию, да. А другие два - чем? Согласно описанию д.б. свободны и доступны к использованию. Кстати, странное несовпадение, у меня это - 9-й и 10-й