Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Нужна помощь Помехозащищенность выносной кнопки

Тема в разделе "Железные вопросы по esp8266", создана пользователем hc2hunter, 23 мар 2018.

  1. hc2hunter

    hc2hunter Читатель

    Сообщения:
    143
    Симпатии:
    8
    Кода увы нет, использую как всегда прошивку готовую, от WiFi-IOT. :(
    Но тут я пробовал уже перебрать все возможные варианты сборок на разных SDK, и даже пробовал на базе RTOS. Глюк всегда одинаков. И больше похож на схемотехнический, нежели программный.

    Да, было с самого начала.
    Блок питания электроники использую на +5. Менял совершенно на другой, и другого типа, не помогло. На выходе него перед регулятором 3.3 поставил электролит на 1500 мкФ 16в, не отразилось на работе вообще никак.

    Честно говоря, что это именно глюк связанный с ADC я недавно обнаружил. Поначалу грешил на свою бешеную нагрузку в виде ТЭНа и насоса.
    Потом случайно наткнулся прямо "на столе", что глюк воспроизводим вовсе без нагрузки...

    Кстати, сами герконы подключены обычной UTP. Это не ошибка? Взял обычную витушку 8-ку и выделил в ней 3 пары под геркончики, ну и протянул до бака.
    Витуха примерно метр получилась.
     
  2. nikolz

    nikolz Гуру

    Сообщения:
    5.047
    Симпатии:
    461
    понимаю в чужой монастырь со своим уставом не ходят,
    но я бы измерил количество воды в бочке емкостным датчиком и не использовал ацп.
    ---------------
    АЦП используется в работе WiFi и возможно вы некорректно его используете.
    использую АЦП лишь для измерения напряжения питания, в самом начале программы.
     
  3. hc2hunter

    hc2hunter Читатель

    Сообщения:
    143
    Симпатии:
    8
    Да нет, отчего же не ходят... Я вполне лоялен к любой критике и советам, не являясь глубоким специалистом в микроэлектронике.
    Расскажите, пожалуйста, про емкостной датчик и что использовать тогда вместо АЦП? Несколько Gpio IN ?

    А как используется АЦП в работе WiFi и зачем так сделано?
    И как можно использовать АЦП некорректно? Я подобрал резисторы так, чтобы на нем ни при каких обстоятельствах не появлялось напряжение выше 0,92в, да и номиналы взял, чтобы токи были поменьше.
    В солнечной станции (другой проект) по аналогичному принципу у меня прекрасно работает АЦП и меряет напряжение на аккумуляторе 18650.

    Тут я допускаю, что какая-то статика попадает на АЦП. Но какая? И можно ли как-то предохраниться, поставив, скажем, какие-то доп. ёмкости на вход АЦП?


    Вообще, пока я решил проблему очень грубо и тупо...
    Взял и вставил проверку на значение АЦП=1024. Как только такая фигня случается - делаю reboot()
     
  4. nikolz

    nikolz Гуру

    Сообщения:
    5.047
    Симпатии:
    461
    некорректно используется АЦП не аппаратно а программно.
    Возможно у вас все нормально, программы же нет.
    Кроме того не понятно зачем у вас АЦП используется если измеряете три точки с помощью герконов
    т е схема дискретная почему бы не читать код герконов
     
    hc2hunter нравится это.
  5. hc2hunter

    hc2hunter Читатель

    Сообщения:
    143
    Симпатии:
    8
    Да, идея верная. Сходу наверное я просто не додумался до нее и теперь просто GPIO экономлю...
    Их ведь не так много, а смотрите что получается:
    gpio0 - датчик температуры воды
    gpio2 - лампочка-индикатор состояния/работы девайса
    gpio1,3 - под SPI отдан, на них висит BME280 и дисплей
    gpio4,5 - кнопки принудительного включения реле насоса и тэна
    gpio 12,13 - сами реле
    gpio 14,15 - логические gpio, используются во встроенном в прошивке интерпретаторе как статусные пины. Кроме того gpio15 он вообще как input не очень... Он же определяет тип загрузки девайса и обычно висит на земле через резистор.

    вот и остается только ADC...
    я могу, конечно, высвободить от кнопок gpio4,5 , а сами кнопки переделать как раз через ADC (аналоговые кнопки).
    и опять же где гарантия не нарваться на этот странный глюк?
     
  6. nikolz

    nikolz Гуру

    Сообщения:
    5.047
    Симпатии:
    461
    Вы посмотрите на форуме, я рассказывал как кучу кнопок подключить к одному пину.
    Можно и ваши герконы включить по такому же принципу.
    Прикиньте сколько пинов у вас освободится.
    Но придется делать прогу чтения кнопок и чтения герконов
     
    hc2hunter нравится это.
  7. nikolz

    nikolz Гуру

    Сообщения:
    5.047
    Симпатии:
    461
    относительно глюка.
    расскажите подробнее что и как и когда
    возможно будет понятно в чем проблема
     
  8. hc2hunter

    hc2hunter Читатель

    Сообщения:
    143
    Симпатии:
    8
    Да вот вообще никаких нюансов...
    Снимаю девайс, несу на стол. Включаю. Соответственно, к нему ничего не подключено вообще.
    Сбоку корпуса торчит колодочка 6 штырьков (на 3 датчика). Схемка выше. 3 пина - земля, 3 пина - датчики. Вон в положении MAX как раз черный джампер на фото.
    насос блок управления.jpg
    Просто замыкаю их отверточкой или пинцетом. На экране соответственно он у меня рисует сколько "воды в баке". Обрабатывает данные каждую секунду.

    И в один прекрасный момент опс... и он постоянно думает что у него ADC=1024 (максимум воды). В этот момент он перестает пинговаться. Хотя автономно работает по-прежнему прекрасно. Можно, например, включать кнопками реле. Дисплей тоже видно что отрисовывается. Меняется температура с датчиков, аптайм... Но на ADC (датчики уровня воды) уже не реагирует никак...

    -----

    Буду признателен, если ткнете носом с ссылочку, где вы подключали к одному GPIO несколько кнопок.
    Написать подпрограмму я в принципе тоже могу, т.к. в прошивке WiFi-IOT есть интересная фича - интерпретатор. Некий встроенный язык команд, чтобы можно было писать свои скрипты и запускать их с определенным интервалом. Именно через интерпретатор я обрабатываю датчики, отрисовываю на экран бачок с водой, и ребучу модуль если вдруг случается ADC=1024.
     
  9. nikolz

    nikolz Гуру

    Сообщения:
    5.047
    Симпатии:
    461
    про это будем думать.
    ------------------
    пока расскажу про емкостной датчик. Упрощенно
    ---------------------
    я делал датчик для измерения заполнения бутылки
    сам датчик элементарный
    два провода(пластины) изолированных.
    между ними промежуток
    это конденсатор
    между проводами у нас есть вещество с диэлектрическими свойствами
    для воздуха это 1 для воды это 81
    погружая в воду мы изменяем объем пространства между проводами заполненный воздухом
    в результате емкость меняется
    измеряем ее и получаем количество воды в бутылке, пластиковой бочке
    если бочка железная то надо один провод.
    Примерно так
     
  10. hc2hunter

    hc2hunter Читатель

    Сообщения:
    143
    Симпатии:
    8
    Эм... да. Все понятно. Но куда сгружать данные о емкости? Опять же ADC нужен?
    Или из нескольких GPIOIN городить дискретную шаговую логику типа 0,1,2,3 ?
     
  11. nikolz

    nikolz Гуру

    Сообщения:
    5.047
    Симпатии:
    461
    емкость измеряется через пин
    путем измерения либо периода либо частоты (зависит от реализации метода)
     
  12. nikolz

    nikolz Гуру

    Сообщения:
    5.047
    Симпатии:
    461
    относительно вашего глюка
    у вас ESP всегда активно?
    можете сделать прошивку с отключенным wifi заблокировать передачу и подключение.
    и повторить свой эксперимент с включением герконов
     
  13. hc2hunter

    hc2hunter Читатель

    Сообщения:
    143
    Симпатии:
    8
    Да, ESP работает пожизненно. Спящие режимы не используются.
    В принципе могу в самой прошивке сделать "WiFi disable". Тогда она останется наедине с собой )))

    Но и вернуть к жизни видимо придется уже только перепрошивкой... Или изобрести какую-нибудь фигню, чтобы WiFi включался как-то через нажатие какой-нибудь кнопки )
     
  14. hc2hunter

    hc2hunter Читатель

    Сообщения:
    143
    Симпатии:
    8
    Да, ESP работает пожизненно. Спящие режимы не используются.
    В принципе могу в самой прошивке сделать "WiFi disable". Тогда esp останется наедине с собой )))

    wifi.PNG

    Но и вернуть к жизни видимо придется уже только перепрошивкой... Или изобрести какую-нибудь фигню, чтобы WiFi включался как-то через нажатие какой-нибудь кнопки )

    В принципе, уже написал подробное письмо изобретателю прошивки МаксуMS. Может что-то ответит путное...
     
  15. hc2hunter

    hc2hunter Читатель

    Сообщения:
    143
    Симпатии:
    8
    В общем, ответил мне создатель прошивки WiFi-IOT.
    Пишет, что работа WiFi зависит от ADC программным образом (заложено в SDK), а ADC в свою очередь зависит от калибровки. Поэтому дополнительно при прошивке модуля рекомендуется зашивать калибровочную таблицу, цитирую из документации:
    Правда, по его мнению выскакивание ADC в 1024 это глюк контроллера, не должно такого быть. По поводу того, что на совершенно двух разных контроллерах глюк проявился - разводит руками.

    Скажу честно, не пробовал это делать, на старой схеме, где ADC использовал в качестве измерителя уровня воды. Т.к. схему уже переделал на битовую маску по GPIO4-5, а ADC теперь использую для кнопок управления. На столе пока все работает превосходно, сегодня попробую установить контроллер на насос.

    Вот схемка измерения воды. Датчики на герконах пришлось ориентировать кого куда - часть поплавками вверх, часть вниз, а то если делать все совсем красиво, то 2-мя gpio никак не отделаться...
    схема герконы форум.png
     
  16. =AK=

    =AK= Гуру

    Сообщения:
    1.231
    Симпатии:
    100
    Последовательно с входным пином (т.е. с пином АЦП) поставьте резистор, скажем, 1к. У вас наносекундные помехи отшибают процессору рога. Ситуация аналогичная той, что у вас былa раньше, но вы, похоже, так ничему и не научились.
     
    hc2hunter нравится это.
  17. hc2hunter

    hc2hunter Читатель

    Сообщения:
    143
    Симпатии:
    8
    Ну как не научился... Чему-то учусь постепенно... :(
    Но просто от ADC такого симптома не ожидал.

    А не просветите, какого рода именно возникновение этих помех в цепи ADC ? Откуда они там берутся. Ведь глюк происходит вовсе не в моменты работы насоса или тэна или щелканья релюшками. А просто так... при срабатывании герконов. Неужели их "дребезг" контактов может ADC доводить до суицида?
     
  18. =AK=

    =AK= Гуру

    Сообщения:
    1.231
    Симпатии:
    100
    Механические контакты дребезжат, будь то геркон или пинцет. Создают маломощные помехи очень крутыми фронтами.
     
    hc2hunter нравится это.
  19. nikolz

    nikolz Гуру

    Сообщения:
    5.047
    Симпатии:
    461
    можно сделать на герконах к одному пину.
    Рисовать схему лень.
    Нарисуйте сами,
    расскажу на пальцах,
    как я синтезирую такие схемы.
    ------------------------------------
    Итак начнем.
    Идея таких схем состоит в том, что мы коммутируем герконом или кнопкой RC цепочку к пину.
    Все герконы подключаются к одному пину, а второй конец каждого геркона через RC цепочку (R параллельно C) подключаем на землю.
    для вашего случая все RC цепочки одинаковые
    когда бочка заполняется герконы последовательно включаются снизу вверх и наоборот выключаются когда бочка опустошается
    В результате к пину подключаются: нет, одна или параллельно две или три или ...надцать RC цепей.
    ----------------------
    В программе мы реализуем следующий алгоритм
    Включаем пин на вывод и выводим импульс .
    Длительность зависит от величины C .
    Для начала хватит 10 мкс.
    После этого переключаем пин на ввод и измеряем время от High до Low на пине
    Измерять можно прерыванием, либо прямым измерением по циклу.
    Для различного числа включенных герконов получите различное время.
    можете и десять герконов поставить.
    -------------
    аналогично делается и с кнопками, но там другая логика так как кнопки включаются одиночно.
    Поэтому и схема будет другой, но пин будет один для надцать кнопок.
    ---------------
    Успехов
     
    hc2hunter нравится это.
  20. nikolz

    nikolz Гуру

    Сообщения:
    5.047
    Симпатии:
    461
    можно делать схемы в которых напряжение будет меняться в обратную сторону т е емкость будет заряжаться.
     

Поделиться этой страницей