Так как мой предыдущий мод на ардуине имел много ограничений, а также в плане самообразования — я решил сделать новую версию на STM32F373C8T6. Это мой первый проект на STM32, в нем довольно много недоработок. Надеюсь, кого-нибудь еще заинтересует, и мы сможем сделать его лучше!

Проект на github-е




Характеристики получившегося устройства:

39x40x7 двухслойная плата (надо бы сделать 4-слойный вариант, меньшего размера, и с элементами на одной стороне, чтобы можно было обратную сторону использовать для сенсорных площадок, что позволит просто приклеивать плату к обратной стороне лицевой панели)

Использует 2S (две ячейки последовательно) литиевые аккумуляторы, что безопаснее, проще намотка спиралей и легче найти маленькие легкие батареи среди тех, которые предназначены для RC-моделей

Встроенный boost-регулятор для зарядки от USB (с балансным портом, для гарантии неперезарядки одной из ячеек)

Сенсорные кнопки (не нужно делать дырки в корпусе, достаточно наклеить кусочки фольги с обратной стороны и надпись/рифленую поверхность с лицевой)

Дешевые компоненты — всего один чип STM32F373C8T6 (стоит от $3 за штуку) и несколько недорогих MOSFET-ов

100+ ватт мощность (теоретическая — ближе даже к 200, но не испытывал)

128x64 0.96" OLED экран (хорошо видно на свету, всего $4)

Фонарик на двух 70mA белых светодиодах (реально полезная опция в устройстве, которое всегда под рукой)

Софт поддерживает:

Титан, никель (ni200), NiFE30, нержавейку 316L и 304 для спиралей с термоконтролем

Режим ограничения мощности («variwatt»), от 0.5 ватта до максимальной (с коррекцией относительно напряжения батареи)

Режим медленного старта для предотвращения «стрельбы» и пережигания тонких спиралей

Почти все важные параметры изменяются через меню настройки (с сохранением во flash-памяти)

Текущие проблемы/планы:

Сделать поддержку варианта схемы с дросселем спирали (настоящая стабилизация тока спирали и повышенная частота термоконтроля)

Исправить режим сна (не смог разобраться окончательно), пока что жрет 3-4 миллиампера, что разрядит 500 мАч батарею за несколько дней

PID-регулятор вышел у меня какой-то кривой и плохо настроенный (из-за проблем с отладкой по USB не смог нормально подобрать коэффициенты)

Плату надо переделать чуток, поменьше и с обратной стороной только для сенсоров

Поддержку маленьких дисплеев

Оптимизировать размер firmware (уже упирается в лимит 60 килобайт) :(

Разобраться с отладкой по USB (STM-овские библиотеки до ужаса кривые и оно часто глючит)






Комментарии (27)


  1. HerrDirektor
    16.04.2016 17:12

    Bypass еще нужно, для экстремальных намоток на дрипки :)


    1. vasimv
      16.04.2016 17:15

      В смысле — полную мощность на спираль? В режиме никеля на любых других спиралях оно примерно так и будет работать.


    1. vasimv
      16.04.2016 18:20

      А, что я несу-то… Достаточно в режиме variwatt выставить мощность больше чем текущая мощность спирали. Оно же повышать не умеет, будет полную на спираль подавать (ну, почти, минус десятые процента, для циклов контроля сопротивления). :)


      1. HerrDirektor
        16.04.2016 18:32

        ИМХО проще выделить это в отдельный пункт меню, как у джоек сделано — BYPASS и наваливаешь на дрипке :)
        А вообще интересный агрегат, спасибо, очень любопытно было ознакомиться :)


  1. Tomasina
    16.04.2016 22:49
    +3

    Вряд ли кто-то 10 лет назад подозревал, что в будущем мы будем программировать сигареты…


    1. Karma555
      17.04.2016 13:57
      +3

      Только сейчас до меня дошло, что это электронная сигарета, блин…


  1. edd_k
    17.04.2016 02:30

    А куда эти 100 ватт деваются? Неужели почти все в корпус уходят, а не в горло?


    1. vasimv
      17.04.2016 08:17

      Большая часть — на испарение жидкости, разумеется.


      1. edd_k
        17.04.2016 08:53

        Действительно, что-то я затупил


    1. Andy_Big
      17.04.2016 08:34

      В испарение жидкости в основном. Часть — в корпус :)


  1. Sworfly
    17.04.2016 21:58
    +2

    Каждый раз, когда кто-то использует ярлыки к пинам вместо нормальных соединений(там где это возможно), на земле умирает котёнок :'(


    1. vasimv
      17.04.2016 22:07

      Да я обычно котят экономлю. Но тут уж больно страшная сеть получилась бы.


  1. hdg_79
    18.04.2016 08:25
    +1

    Вы бы хоть написали в начале статьи — ЧТО ЭТО ЭЛЕКТОРННАЯ СИГАРЕТА. Я тоже понял это только из коментариев.


  1. nafikovr
    18.04.2016 08:32
    +1

    Однако, основной недостаток в виде «импульсного» режима парения остался. Так что планы на развитие правильные.


    1. vasimv
      18.04.2016 13:46

      Это спорный момент. Габариты серьезно увеличивает (на плате с дросселем и диодом шоттки — оно занимает почти четверть платы), а смысл очень спорный. Все-таки температурная инерция спирали довольно высокая, при частоте импульсов больше килогерца — особой разницы не будет. Спираль же все равно прогревается неравномерно, внутренние слои будут запасать энергию (аналогично дросселю, фактически) и постепенно отдавать на охлаждаемую жидкостью поверхность. Но попробую, конечно, чисто из-за возможности держать частоту опроса под 10 килогерц.


      1. nafikovr
        18.04.2016 14:01

        на голый пвм выведенный на спираль очень много жалоб со стороны вейперов. не знаю конечно на сколько они обоснованы, но осмелюсь предложить свои доводы.
        1 — инерция спирали все же недостаточна на относительно низких частотах и происходит плавание мощности/температуры в ощутимых пределах (возможно достаточных для легких гариков). особенно ощутимо будет на материалах применяемых для ТК.
        2 — «линейная» стабилизация (имею в виду нету, которая действительно линейная, а импульсную, на выходе которой что то близкое к постоянке) позволит производить корректные измерения во время нагрева, что опять же положительно скажется на контроле как мощности, так и температуры.
        3 — как раз таки из-за неравномерности прогрева спирали загоняя заведомо большую мощность короткими импульсами теоретически мы можем усугубить локальный перегрев спирали.
        4 — добавление дросселя позволит сделать повышающе-понижающий преобразователь и запитаться от одного традиционного элемента питания. ИМХО это самый важный момент. даже если не будет желания отказаться от 2s батареи, такой преобразователь снизит пиковые токи на малых сопротивлениях


  1. AVKinc
    18.04.2016 09:23

    А есть еще подобные проекты открытые?
    Ставить STM как-то не комильфо под такие задачи.


    1. vasimv
      18.04.2016 10:02

      Я не видел. Есть мой же проект на ардуине — https://geektimes.ru/post/268872/, но там точности АЦП не хватает. Учитывая, что в современных вейпинг-модах уже давно cortex-m0/m4 применяют, стм-ки — нормальный выбор. Ну и мне давно хотелось его изучить, так что выбор был очевиден. :)


    1. nafikovr
      18.04.2016 10:40

      F3 может и не комильфо, но я бы F0-F1 поставил не задумываясь. А что предложите вы?


  1. alexover
    18.04.2016 10:24

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


    1. vasimv
      18.04.2016 10:50

      Теоретическая — примерно две тысячных ома (16-битный АЦП с vref=1.8, 15 ом второе плечо делителя). Приборов соответствующих нет, к сожалению, чтобы проверить. На практике, при частоте единичных измерений в несколько сотен герц — больше сотой ома не получить, там слишком много факторов (вплоть до помех от touch sense-контроллера и уплывания из нагрева ключа и «эталонного» резистора в цепи делителя, которым меряем). Можно, конечно, добавить подсчет среднего арифметического из нескольких измерений, но тогда будут проблемы для регулятора температуры из-за возрастающей инерционности.


      1. vasimv
        18.04.2016 11:01

        Упс, что-то совсем плохой стал, ровно на порядок больше точность. :)


      1. alexover
        18.04.2016 11:20

        А, вот оно что «16-битный АЦП с vref=1.8», я то на меге восьмой пробовал замерять. И там просто сделать делитель, пустить 5в, да замерить падение не проходило.


        1. vasimv
          18.04.2016 12:09

          Oversampling можно делать (делаем n^2 измерений, потом делим сумму на n — получаем n дополнительных разрядов). Медленно, зато точно. Но для вейпинга это совершенно не подходит, так как меняется слишком быстро.


          1. alexover
            18.04.2016 12:46

            Спасибо за наводку, почитаю. Я за термокотролем не гнался, а для обычного вариватта возможно этот метод подойдет.


            1. vasimv
              18.04.2016 13:15

              Как обычно, налажал с математикой — https://en.wikipedia.org/wiki/Oversampling. 2^(2*n) измерений и делить на 2^n (сдвигать вправо на n разрядов). Шумы в аналоговой части, разумеется, должны быть меньше того чего хотим получить в итоге.


  1. freevoid
    18.04.2016 12:05

    Класс!