РАБОТА НАД ОШИБКАМИ или ТЕРМОФЕН на LGT8F328 (стоимость ниже, функций больше)

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 ก.ย. 2024
  • Все мои самоделки до публикации видео проходят некоторое тестирование, так было и с термофеном, но ошибочки при работе стали вылезать уже после публикации и это побудило меня пересмотреть устройство в целом.
    ПРОГРАММНАЯ ЧАСТЬ:
    Улучшен алгоритм обработки срабатывания геркона, исключён всякий дребезг и ложные сработки из за наводок в кабеле.
    Улучшен алгоритм плавного снижения скорости вентилятора при постановке на базу. Добавлен режим максимальной скорости турбины в случае установки температуры на "0".
    Добавлена регулировка яркости индикатора через меню.
    Оптимизирована работа с памятью.
    Добавлена версия для работы в МК LGT8F328.
    Устранены мелкие недоработки.
    АППАРАТНАЯ ЧАСТЬ:
    Вместо ATmega 328 применён бюджетный микроконтроллер LGT8F328.
    Повысилась точность измерения за счёт АЦП. Вместо 10 бит (1024), в китайском микроконтроллере 12 бит (4096), правда и шумы немного прибавились...
    Применён один блок питания на 12 вольт (турбина заменена на такое же напряжение)
    Геркон включен с подтяжкой к +5 вольтам.
    Слегка доработаны схемы управления турбиной и снятия напряжения с термопары.
    Для снижения яркости индикатора, токогасящий SMD резистор R1 (установлен на тыльной стороне платы индикатора 10кОм) заменён на 75 кОм. Если Вы примените в своей самоделке затемняющее стекло, это делать необязательно, но если как у меня его нет, яркость индикатора очевидно избыточна.
    Программное обеспечение, схемы и фотографии процесса сборки новой версии устройства Вы как всегда найдёте на моей страничке:
    github.com/Ana...
    Посмотреть на предыдущую версию проекта можно:
    / lipidw4yk6y
    • Video

ความคิดเห็น • 16

  • @safocl9768
    @safocl9768 11 หลายเดือนก่อน

    в коде используются конструкции вроде такой -- "int16_t raw[samples];" -- при этом samples это обычная переменная. Однако такая запись представляет собой vla, который поддерживается только расширениями компиляторов. При этом в стандартной библиотеке lgt8f имется хедер new.h -- в котором имеются функции new() и delete() -- что значит поддержку new и delete операторов из языка с++. Таким образом будет лучше использовать вместо vla выделение памяти через new и освобождение через delete.

    • @Nevzoroff_
      @Nevzoroff_  11 หลายเดือนก่อน

      Спасибо!
      Я так глубоко не копал...

  • @safocl9768
    @safocl9768 11 หลายเดือนก่อน

    если нужны нули -- надо делать либо через "=", либо через "{}" -- второе если тут нормально поддерживается стандарт си++ .
    ну и от себя (да и от бесчисленного числа разработчиков) могу рекомендовать не создавать переменные сразу вначале чего либо -- а создавать их по месту необходимого использования.

    • @Nevzoroff_
      @Nevzoroff_  11 หลายเดือนก่อน

      Настоящим программистам я говорю, что некогда мне программировать, потому, что
      сверлю, паяю, разъёмы вставляю, а по настоящему рукастым ребятам, рассказываю, что главное код написать, а паять и сверлить не главное...
      😁
      Читал где-то, что глобальные переменные надо вне loop() размещать, да и другие так делают.
      Мне бы что-то толковое и фундаментальное на русском почитать, а то учу язык по форумам и чужим скетчам. Может подскажете чего.
      Спасибо за подписку!

  • @ШерлокАндрей
    @ШерлокАндрей ปีที่แล้ว

    Добрый день, а почему прерывание детектора нуля в коде определено на RISING. По идеи пин подтягивается к земле и надо FALLING. Там конечно период его подтяжки маленький, но все же?

    • @Nevzoroff_
      @Nevzoroff_  ปีที่แล้ว

      В видео я не стал углубляться в работу схемы кросс-детектора, но если на пальцах, то большую часть времени светодиод внутри оптопары открыт (светиться) и только в момент перехода синусоиды через 0 он гаснет, так как транзистор 2N2222 закрывается (в остальное время его открывает то одна то другая полуволна) и транзистор внутри оптопары прекращает замыкать вывод D2 Ардуино на землю (LOW) и на него через резистор 10к кратковременно поступает +5в (HIGH), что собственно и отслеживает attachInterrupt(0,tracking,RISING);
      Как вы правильно указали при параметре RISING прерывание вызывается только при смене значения на порту с LOW на HIGH.
      В режиме Power Off термофен обесточивает в том числе схему кросс-детектора и за ресурс компонентов можно не переживать :-))
      Удачи!

    • @ШерлокАндрей
      @ШерлокАндрей ปีที่แล้ว

      @@Nevzoroff_Добрый день. А вы меряли осциллографом D2, у меня на нем меандр, где большая часть времени 5v и закрытая оптопара. И только при переходе через 0 оптопара временно открывается и пин подтягивается на землю. В онлайн эмуляторе тоже самое. Хотел картинку приложить, но сообщение удалилось.

    • @Nevzoroff_
      @Nevzoroff_  ปีที่แล้ว

      @@ШерлокАндрей
      Осциллографа я лишился, на новый денег нет...
      Проверял только трассировкой функции через порт, при подаче напряжение функция отрабатывала прерывание без проблем, углубляться не стал, может у меня элементы схемы бракованные или перемаркированные, с китайскими комплектующими любых чудес можно ждать. :-))
      Попробуйте использовать FALLING, напишите на почту что получилось, а я со своей стороны проверю и если это ошибка заменю код на странице проекта.

    • @ШерлокАндрей
      @ШерлокАндрей ปีที่แล้ว

      @@Nevzoroff_ Я на сайте falstad забивал вашу схему, скрин отправил вам в личку. На самом деле судя по графикам там не сильно принципиально как делать. (Мой осциллограф показывает такую же картинку)

  • @amanomadov3189
    @amanomadov3189 2 ปีที่แล้ว

    спасибо за видео !! жду новых паяльных самодельных станций))
    у меня есть вопрос по поводу управления нагревателем термофена , если использовать детектор нуля в оптосимисторе насколько существенна разница? заранее спсибо.

    • @Nevzoroff_
      @Nevzoroff_  2 ปีที่แล้ว

      Для общего включения термофена используется оптосимистор серии МОС306Х внутри которого уже есть детектор 0 и в какой момент времени будет подано на него напряжение неважно, включение силового симистора произойдет только при переходе полуволны через 0.
      Непосредственно ТЭНом управляет МК, функция управляемая прерыванием ждёт результаты работы ПИД и если надо включить на N количество полуволн делает это через оптосимистор серии МОС302Х которому неважно что там с 0 он просто открывает силовой симистор, даже если 0 уже пройден.
      В принципе можно не обременять МК отслеживанием прерывания, а выводить результат работы ПИД сразу на оптосимистор с отслеживанием 0, он и сам знает когда можно включаться, но при этом будет теряться много полуволн т.к. работа МК и МОС306Х будут не согласованы. Работать в целом, особенно учитывая инерционность ТЭН, такая схема будет наверняка.

    • @amanomadov3189
      @amanomadov3189 2 ปีที่แล้ว

      @@Nevzoroff_ спасибо за ответ. еще вопрос ,может ли из за того что у меня детектор нуля только в оптосимисторе из за этого прыгать температура на 20 градусов вниз , то есть если ставлю 350 то набирает 355 и падает на 20 градусов вниз, или у меня с феном проблема))

    • @Nevzoroff_
      @Nevzoroff_  2 ปีที่แล้ว

      @@amanomadov3189
      Если вы используете ПИД регулятор то необходима его подстройка под конкретные условия (пропуск полуволн оптопарой в том числе может влиять на работу системы в целом).
      Посмотрите фрагмент видео относительно настройки ПИД
      th-cam.com/video/liPiDW4yK6Y/w-d-xo.html
      Если настройками никак не получится уравновесить систему на требуемом уровне, вероятно есть проблема на уровне железа, надо смотреть конкретную реализацию.

    • @amanomadov3189
      @amanomadov3189 2 ปีที่แล้ว

      @@Nevzoroff_ спасибо.сейчас посмотрю

    • @ШерлокАндрей
      @ШерлокАндрей ปีที่แล้ว

      @@amanomadov3189 У меня тоже разброс примерно 20 градусов. Видимо потому, что у меня датчик температуры на MAX6675 сделан, а его чаще 4 раз в секунду не получается опрашивать. Наверно ПИД и не успевает это корректировать.