Синдром дефицита ног

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем OldKryptos, 7 июн 2023.

  1. OldKryptos

    OldKryptos Гик

    В жизни ардуинофила однажды случается синдром дефицита ног. Это вовсе не болезнь какая-то. С ардуинщиком, как раз, может быть всё в порядке. Как правило, он имеет две ноги, которых вполне достаточно для функций, определенных для нижних конечностей матерью-эволюцией. А вот с контроллером… Ног (портов) у него конечно много. У моей любимой Ардуинки про-мини, их больше двадцати. Но, однажды, захотелось странного. Нет, вовсе не карманный электроорганчик собрать с клавишами в семь октав (хотя, тоже тема), а другая блаж посетила – собрать навороченный плавающий ракетодром на радиоуправлении. Да, чтобы, и управлялся, и мачта поднималась, и ракета взлетала, и кран подъемный… А, для управления этого бестиария нужно много управляющих кнопок и потенциометров (переменных резисторов). Каждый/ая из них норовит отхватить себе ногу у Ардуино. В общем, ноги кончились.

    Тут для тех, кто не в танке, поясню, что для управления с кнопок контроллер использует цифровые входы (0-кнопка отжата, 1-нажата), а крутилки-потенциометры вешаются на аналоговые входы, с которых снимается сигнал в диапазоне 0-1023. Ног обоих типов по восемь штук.

    Так вот, в моем случае, были заняты все цифровые входы, но оставались аналоговые. Как приспособить аналог для кнопок, идея пришла довольно быстро. Страшно был рад своей догадливости (немного расстроился, когда узнал, что этот способ уже известен Интернету). Я сделал подключение кнопок, используя схему резистивного делителя напряжения. Благодаря этой схеме можно было подключить даже не одну, а несколько кнопок на одну аналоговую ногу. Практически, схема из школьной физики. Итак, на один аналоговый вход, были подключены две кнопки настройки прямого хода корабля, на другой еще две. Они управляли сервомотором поворота подъемного крана влево-вправо. По такой же схеме были подключены концевики подъёмника мачты ракеты.
    В следующем проекте я уже использовал управление кнопками через аналоговые входы гораздо смелее. На одной из ног назначил аж семь кнопок (см.рис ниже).

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


    upload_2023-6-7_11-46-4.png


    Пример кода для кнопок (S2 на схеме) –
    Значения в условиях сравнения индивидуальны – подбираются экспериментально. Для этого по очереди снимаются показания кнопок (записаны в комментарии справа), затем рассчитываются средние значения между ними, и они уже вносятся в условия.

    upload_2023-6-7_11-47-24.png

    Все бы ничего, жить – да не тужить. Но есть один недостаток в такой схеме подключения. Одномоментно можно нажать только одну кнопку, иначе контроллер сработает неправильно. Поэтому клавиатуру органа на аналоговый вход не прицепишь и аккорд не сыграешь, а если попытаешься, то не музыка будет, а сплошная постмодернистская фигня, да ещё одноголосная. Впрочем, о вкусах не спорят.

    Пришлось для аналогичного случая освоить выходной* регистр. Это микросхема такая. К ней можно подключить восемь кнопок, например. А если один выход и еще две управляющие ноги подключить к цифровым ногам контроллера, то он (контроллер) сможет различать эти кнопки. Хоть все нажми, хоть две – он их различит и поймет, что с ними делать. То, что нужно для подключения три ноги, конечно, не приятно, но это компенсируется возможностью подключить последовательно несколько регистров, и таким образом навесить всю клавиатуру пианино в семь октав на три входа процессора. В моём случае было достаточно одной микросхемы, потому что, кнопок было восемь.

    Схему и код нашел в сети (https://3d-diy.ru/wiki/components/sdvigovye-registry/), но код оказался с браком. Терялся один бит (одну из кнопок контроллер не видел). Уж я и схему проверил, и плату промыл, поменял микросхему – нет бита. Стал копать код, мануал… Разобрался, что он - не теряется на самом деле. Просто чтобы его считать не нужно использовать функцию shiftIn(), а сразу, после дергания заглушкой брать бит непосредственно. Затем, можно брать остальные семь битов. А уж после этого полученные биты свести в правильный корректный байт.

    Вряд-ли автор сделал код с багом из злого умысла. Скорее всего просто не проверил его на всех режимах.

    Пример схемы с выходным регистром SN74HC165D и его подключение к контроллеру –
    upload_2023-6-7_11-49-1.png

    Изначальный код из сети, в котором терялся младший бит –
    upload_2023-6-7_11-51-26.png

    Работающий код -
    [​IMG]

    *Примечания: "выходной" - исправляем на "входной" ( ошибку нашел - parovoZZ)
     
    Последнее редактирование: 8 июн 2023
  2. DetSimen

    DetSimen Гуру

    Да ты просто чюдо чюдесное. Взял бы PCF8574 - смог бы 64/128 цифровые кнопки подключить. А с CD4051 - 8 аналоговых каналов свести к одному аналоговому входу. Резистивные кнопки это, канеш, хорошо но уж больно оне от питания зависят.
     
    OldKryptos нравится это.
  3. OldKryptos

    OldKryptos Гик

    Если бы не схема не работала, то я бы её не выкладывал. Не понимаю, зачем делать схему для 128 кнопок, когда нужно восемь? Вы весь вагон оплачиваете, когда едете на поезде, или только места для своей семьи?
     
  4. DetSimen

    DetSimen Гуру

    ты не понял, с 8574 можно и восемь кнопок подключить и 128, по трём проводам. надо 8 кнопок - ставь 1 корпус, надо 16 - ставь два, и т.д., управление всеми по I2C.
     
  5. Unixon

    Unixon Оракул Модератор

    А еще можно взять контроллер чуть чуть пожирнее и не наваливать такие нагромождения обвязки.
     
    Airbus нравится это.
  6. OldKryptos

    OldKryptos Гик

    Да, конечно. Это первая мысль, которая пришла мне при разработке радиоуправляемой платформы. Но в этой идее есть три минуса, из-за которых я пошел другим путём. Путём развития периферии, её масштабирования.
    1. Во первых. Не была до конца ясна полная функциональность проекта. Он развивался постепенно, обрастая подробностями, и не было гарантии, что ближе к финалу "жирный" контроллер окажется действительно жирным.
    2. Во вторых. Чем жирней контроллер, тем больше проводов. Выше вероятность ошибок разного рода с этим связанных (да, да, я запросто могу спалить электронику).
    3. В третьих. Корабль типа - катамаран, он имеет две секции. Логично разнести части электроники по разным корпусам и обеспечить между ними связь разумным количеством проводов.
    Сейчас на платформе два концевика мачты 1-пин, геркон-предохранитель - 1, адресные светодиоды - 1-пин, радиомодуль - 5, 12 шим устройств, 2 маршевых движка - 4 пина. То есть нужно для этого 24пина цифры и 1 аналог.
    Реально, весь ШИМ зверинец я подключил к модулю PCA9685, засунул всё это в соседний корпус и обеспечил связь с контроллером по двум проводам SKL, SDA (тот самый i2c, только никому не говори)) ).
    По итогам. Мне вполне хватило Ардуино про-мини на пульте и Искра-мини на платформе за глаза.
    upload_2023-6-7_18-57-13.png
     
    Последнее редактирование: 7 июн 2023
  7. Airbus

    Airbus Радиохулиган Модератор

    Идея конечно не моя—Alex666 использовал ее для управления интернет радиоприемником. Да и я использовал на esp8266-01 где всего четыре ноги. Идея проста как апельсин. Покупаем у Бичей на блошином рынке пульт от телевизора за 50 рублей. Читаем коды. Вписываем их в скетч. И упрвляем 20—40 устройствами (по числу кнопок на пульте)используя всего 1 ногу! А еще есть Ардуино Мега. Или Ваниль. Впрочем об этом уже сказали
     
    Последнее редактирование: 7 июн 2023
  8. OldKryptos

    OldKryptos Гик

    Гм... Креативно, спору нет. Ну тут есть два момента, которые мне не нравятся.
    1. Среднестатистический ик-пульт эргономически чуть более удобен для радиоуправления динамическими rc-моделями, чем способ надевания трусов через голову.
    2. Я использую ик-пульт в преднастройках контроллеров некоторых ракет перед запуском, и вижу, что взаимодействие контроллера с пультом довольно медленное (ну может я использую медленную библиотеку).
    В сухом остатке, мы имеем тормозной неудобный пульт, который нужно, как-то скручивать с коробкой в которой будет находиться остальная схема.
    По поводу многоножечных контроллеров я расписал чуть выше отвечая Unixon.
     
  9. parovoZZ

    parovoZZ Гуру

    только не выходной, а входной.

    Очень странно. Обслуживание сдвигового регистра - это 4 строчки кода. К чему там библиотека....да ещё и кривая?

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

    сдвиговый регистр также стекируется до бесконечности. Что входной, что выходной, что двунаправленный. Про скорость опроса промолчу. Сколько у I2C? 400кГц? Это какие-то слёзы. У самого дохлого регистра 4 МГц вот прямо с ходу.

    дохлый контроллер + сдвиговый регистр всегда дешевле, чем жирный контроллер.
     
    Vovka, Ariadna-on-Line и OldKryptos нравится это.
  10. OldKryptos

    OldKryptos Гик

    Вот это мнение эксперта. Без хамства, менторства и всё по полочкам.

    Про библиотеку не понял, может не туда смотрю?
     
  11. Airbus

    Airbus Радиохулиган Модератор

    Ничего не перепутал? С каких пор PCF8574 стал диковиной? Или может пока я в Турции власть поменялась? Это сдвиговый регистр еще поискать надо. Даже у меня в Гараже его нет. Хотя ИМХО оба решения имеют право на жизнь. Согласен что лучше 4 строчки кода чем непонятную библиотеку.
    А Вы хотите сказать что управление радиопультом более удобное? Не сказал бы. Если только машину открыть—закрыть. Ну только 2.4 гГц на nrf но это те же яйца только сбоку. Впрочем Вам виднее спорить не буду
     
    DetSimen нравится это.
  12. Un_ka

    Un_ka Гуру

    Там сам протокол такой. Я как-то делал систему дистанционного управления, с передачей сигнала по ик, где вместо отдельных команд, соответствующих кнопкам пульта, длиной в 4..6..8 байт, формировалась одна команда. Пульт тоже был самодельный. И получались довольно не дурные результаты.
    Я тогда почему-то не по битам, а по десяткам информацию кодировал. Давно дело было.
     
    OldKryptos нравится это.
  13. OldKryptos

    OldKryptos Гик

    Конечно удобней. Удобней на порядки. Даже мой "франкеншнейн" в разы удобней. Например. Правой рукой я через потенциометры орудую сегментами подъёмного крана а левым стиком, одновременно, делаю маневры платформой, чтобы приблизится к грузу. Это я могу проделывать не глядя на пульт.
    На ик-пульте от телевизора... Ну это очень большим любителем кнопочек нужно быть.

    [​IMG]
     
  14. Airbus

    Airbus Радиохулиган Модератор

    Ну данные передавать можно как по радиоканалу так и по IR правда? И Вашего Франкенштейна можно перевести на IR управление? Суть не в этом. Я просто хотел сказать что по одному пину можно передать много информации. Пульт был взят просто для наглядности. У меня дома есть Франкенштейн который работает и по IR и по радиоканалу и по Телеграмму. На выходе—управляет устройствами в квартире и открывает/закрывает шлагбаумы во дворе. Может сигнализировать открытие двери или протечку. Пушит через Телеграмм и sms.ru
     
  15. OldKryptos

    OldKryptos Гик

    Что касается самого ик-управления - это для домашних игрушек за глаза. Для игрушек на открытых пространствах нужны более дальнобойные варианты.
     
  16. Airbus

    Airbus Радиохулиган Модератор

    Полностью с Вами согласен! Опять же IR управление приводилось для примера. Но имейте ввиду—то что у ParovoZZa просто на словах то у нас с Вами непросто в железе. Он единственный в мире человек обладающий Знанием которое нам с Вами недоступно и которым он с нами никогда не поделиться.
     
  17. OldKryptos

    OldKryptos Гик

    Да, для квартиры, в самый раз.
     
  18. Airbus

    Airbus Радиохулиган Модератор

    Дак а в чем проблема? Вы сделали у Вас все работает—Вы Молодец! А то что можно было сделать по другому таки пусть делают кто хочет. Наблюдаю с интересом за Вашими пусками ракет на Форуме. Сам хотел бы попробовать но нету времени. Буду на пенсии обязательно попробую тем более что в Кирове бываю регулярно.
    Надо валить! Когда БАМ достроишь куда свалишь?
     
  19. OldKryptos

    OldKryptos Гик

    Спасибо за похвалу, здесь это нечасто услышишь. В Кирове серьёзная команда по малым ракетам, на их движках летаю. По поводу пенсии - есть грустная история, почти притча. Был свояк у меня, покупал книжки по восточной философии, но не читал. Ссылался на занятость. Говорил, что будет на пенсии штудировать. Не получилось до пенсии. Умер сильно преждевременно. Как-то так. В общем, с тех пор сильно не откладываю. Мало ли что, маразм, например )).
    В планах выложить, недели через две, полёты с новым rc-стартовым пультом. Штучка куда более продвинутая, чем просто батарейка с кнопкой.
    Еще на очереди, новый движитель для "Земли Санникова". Вместо китайского катерка будет винторулевая колонка. Корпус уже распечатан, ждет своей очереди.
     
  20. Unixon

    Unixon Оракул Модератор

    Ну так в этом случае его можно обратно заменить на более тощий.
    Расширители портов это всегда еще больше проводов и точек отказа.
    Вот, а это уже существенный пункт ТЗ, который почти что сразу отменяет дилемму по двум предыдущим.

    Правда, есть контр-аргумент, что всю электронику можно разместить в одном компактном гермоблоке, а наружу выставить только соединения до исполнительных механизмов и датчиков, что вероятно, было бы более надежно. Ну это так, просто к слову. :)
     
    DetSimen нравится это.