Часть 1
Часть 2
Часть 3

Пролог


Всем добрый день и это последняя часть цикла посвященная не силовой части устройства. Возможно вы подумаете, что я нарочно затягиваю силовые модули, но это не так. Просто мне хотелось бы сначала закончить со всеми побочными модулями, которые являются от части «декоративными», но без которых наш ИБП превращается в груду плохо работающего железа с непонятным назначением.
Поэтому в данном статье будет подробно рассмотрена реализация измерения напряжений, токов в узлах, а так же контроль температуры и защита от перегрева. И конечно же — индикация, куда нам без нее! Ведь без нее достаточно проблематично понять что творится с нашим прибором, насколько правильно он работает и работает ли вообще.
Еще несколько заявлений перед началом:

1) В промышленном варианте плата была разведена в 4-х слоях для реализации качественной трассировки платы, с гальванической развязкой и минимальными шумами, но в данной статье я приведу два вида трассировки и оба для «радиолюбителей»! Один вид — двухсторонняя плата, другой вариант — односторонний. Могу сразу отметить, что даже эти варианты обладают более чем достаточными шумовыми свойствами для надежной работы, а гальваническая развязка была убрана с целью удешевления изготовления, т.к. данный узел не является ответственным и в случае его неисправности прибор продолжит работать и сигнализировать о случившейся аварии.
Конечно же перед тем, как выложить их в статью я изготовил прототип, усиленно его погонял и оценил более чем пригодную живучесть. Так же проверил возможность изготовления данных плат с помощью ЛУТа и фоторезиста — шаг 0.3 мм достигается без проблем.

2) Всем кто захочет повторить данный блок или ИБП целиком я готов выслать запрограммированный микроконтроллер STM32, если его присутствие вас отпугнет. Цена будет: стоимость МК + пересылка, исключительно с целью помочь, а не заработать.

Некоторую ясность вроде бы внес, тогда поехали разбираться в схеме…

Общая схемотехника и описание функций модуля


И так общая схема модуля о котором сегодня пойдет речь, перечертил ее специально для этой статьи по модулям, чтобы новичкам было проще понять общий принцип работы и какой «кусок» за что отвечает в конечном функционале:

Рисунок 1 — Принципиальная схема блока индикации и управления на STM32F103RBT6

Теперь мы смотрим на схему и может примерное представить, что она умеет:

1) первым делом бросается в глаза «прямоугольник» с надписью ILI9341. Это цветной TFT экран с разрешением 240х320 точек и диагональю 2,4". Практически вся информация об измерениях будет выводиться именно на него.
2) так же видим надпись около одного из разъемов «Шунт», что думаю наводит на мысль об измерение тока с хорошей точностью. Это как раз и оправдывает использование токового шунта в данной схеме, а не трансформатора тока. Последние используются в силовых модулях для защиты от короткого замыкания (КЗ)
3) видим так же пару разъемов с надписями "+360V" и "+48V" — это контроль напряжения на DC шине (в том числе на АКБ) и измерение напряжения выхода. Просто для снижения постоянной времени цепи измерения проводить решил их в высоковольтной DC цепи, ибо напряжение на выходе (АС) линейно зависит от него, поэтому не составит труда пересчитать постоянку в переменное напряжение на выходе ИБП
4) те, кто работали с датчиком DS18B20 сразу обратят внимание на разъем J1, именно туда мы подключим наш термодатчик
5) датчик является цепью обратной связи для куллеров охлаждения, которые подключаются к разъему J8
6) есть магический разъем J3, который около себя имеет кучу одинаковых резисторов и надписи LED, наверное все догадались, что сюда подключается та самая светодиодная индикация, что вы могли наблюдать на лицевой панели ИБП

Общие возможности схемы вроде обговорили, тебе необходимо разобрать как работает каждый блок.

Принципы работы функциональных блоков и программное управление



1) Начнем с самого важно — с питания ведь режим питания нарушать нельзя. Если кто-то вдруг забыл предыдущую статью — дежурное питание у нас имеет напряжение 15В, нам необходимо запитать все наше добро от этого напряжения с учетом того, что микроконтроллер питается от 3,3В.

Рисунок 2 — Цепи стабилизации питания

Стабилизаторы все линейные, т.к. ток по цепи +3.3В у нас не будет превышать 0,25А. Есть один принципиальный момент — наличие вроде бы лишнего стабилизатора LM7805. На самом деле я как-то попал в такую ситуацию, что мой стабилизатор на AMS1117-3.3 горел как муха, а все потому, что я привык к 7805, 7815 и подобным — у них максимальное входное напряжение до 40В. У AMS1117 входное напряжение максимальное 12В. Поэтому если мы дадим 15В на него — сгорит, чтобы этого не произошло мы сначала снижаем наши 15В в 5В и затем 5В в 3.3В.
Вроде бы мелочь, а я из-за невнимательности и привычки как-то в одном проекте попал на убитый камень STM32F407VET и кучу SDRAM. Светодиод VD2 — просто сигнализирует нам о наличии в линии питания напряжения.

2) Теперь необходимо наше стабилизированное питание подать на МК — у нас будет использоваться доступный камень STM32F103RBT6. О причинах его выбора будет в следующем пункте. И так главное правило разводки — много конденсаторов в цепях питания не бывает. Как минимум должен быть 1 конденсатор 0,1 мкФ на каждую пару ног Vcc — Vss. Конечно цепь питания аналоговой части Vdda должна быть разведена иначе — должен быть отдельный электролит, дроссель… Это все классно, но для потребительских задач и при не особо высокой точности хватит и обычного конденсатора как в остальных цепях.
Идеальный вариант схемы питания можно глянуть в даташите на любой STM.

Рисунок 3 — Цепь питания микроконтроллера

Мы еще видим yогу Vbat — она служит для контроля питания в линии, при его снижение она может увести МК в спящий режим или режим экономии. В нашей задаче это не актуально, т.к. используется в системах, где батарейное питание, например в плеере или телефоне.
Для чего нужны конденсаторы в цепи — чтобы отфильтровать помехи и выбросы по питанию, исключить наводки. Особенно это актуально для цепи питания аналоговой части, ибо от этого будет зависеть точность измерения.

3) Тут я хотел бы объяснить почему именно STM32F103RBT6. Серия F10x очень похожа между собой, первый МК который я попробовал у ST был STM32F100RBT6, который стоит на отладочной плате STM32VL-Discovey. Он практически идентичен нашему и обкатывал работу с дисплеем я именно на нем, но есть один недостаток. Наш дисплей на ILI9341 работает через аппаратный SPI, а значит его скорость зависит от частоты МК. У F100 — это 24 МГц, достаточно солидно, учитывая стоимость на уровне ATmega8, но при такой частоте скорости SPI не хватало чтобы обновлять картинку на TFT с частотой незаметной человеческому глазу. Поэтому решил взять старшего товарища и выбор пал на STM32F103RBT6. Как я выше писал камни почти не отличаются, цоколевка ног у них совпадает, грубо говоря — полный аналог. Вот только тактовая частота у него уже 72 МГц! Запредельная для любой AVR-ки и так необходимая нам! На такой частоте время полного обновления экрана при «голом» SPI составляет 780 мс, что еще заметно глазу. Хотя если обновлять не весь экран, а надписи на нем — то ничего не заметно уже. Конечно нам больше и не надо, но т.к. проект будет открытый, то может кто-то решит добавить функцию просмотра порно разветвленного (древовидного) меню или еще чего с кучей графики. Поэтому было решено использовать очень классную часть переферии - DMA, работа связки SPI + DMA позволила уменьшить время обновления до 120 мс, чего достаточно для отличной работы с графическим меню и прочим.

Рисунок 4 — Общий вид микроконтроллера STM32F103RBT6 в корпусе LQFP-64

4) Так как наше устройство является силовым и в нем есть чему греться — необходимо реализовать функция контроля температуры. Она выполнена на легендарном датчике DS18B20, который работает на «разжеванном» в интернете и книгах интерфейсе 1-Wire. Чем он хорош? Он выполняет 2 наших требования: может измерять с точность +-0.5 оС и прост в использовании. В промышленном исполнение стоит все тот же датчик, просто их аж 3 штуки, но это избыточно для обывателей, хотя никто не запретит вам так же применить 3 штуки для каждого радиатора.

Рисунок 5 — Подключение датчика DS18B20 к микроконтроллеру по интерфейсу 1-Wire

Как видите — все до безумия просто! Никаких сложностей, сверх требований по разводки платы и прочее. Из схемы следует, что наш датчик подключается через разъем, т.к. сам он прикреплен к радиаторам — основному источнику тепла. Датчик сам в корпусе TO-92. Как с ним работать программно мы разберем дальше.

5) Интерфейс для программирования STM32 — это простейший Serial-Wire, интерфейс аж из 3-х проводов: земля + тактовая частота (CLK) + данные (DIO).

Рисунок 6 — Интерфейс программирования микроконтроллера

Я добавил вывод +3.3V чтобы при программирование не подавать основное питание, а использовать питание с отладочной платы STM32VL-Discovery. Думаю тут все понятно и ясно, на всякий случай приложу фото отладки:

Рисунок 7 — Общий вид отладочной платы STM32VL-Discovery с камнем STM32F100RBT6 и программатором ST-link v1.0 на борту

Если вы планируете дальше изучать мои проекты и схемы, а их будет много от сварочников до КВ трансиверов, то настоятельно советую купить вам отладочку плату, можно любую — по вашему бюджету. Если хотите крутых проектов и глубокого изучения — покупайте STM32F429-Disco. Эта плата покроет 95% ваших потребностей, правда цена около 2,5 — 3 тыс. руб.

6) Измерение рабочих напряжений реализовано на двух канал АЦП, у данной STM-ки таких каналов 16 штук, поэтому возможностей еще море. Нас же интересует 2 значение: низковольтной DC шины 48В и высоковольтной DC шины с 360-400В. Схемотехника простейшая: делитель напряжения на резисторах, один из которых подстроечный и им выполняется настройка напряжения, путем изменения коэф. деления.

Рисунок 8 — Входные цепи АЦП для измерения напряжений

Формула для расчета коэффициента деления:


Формула зависимости напряжения на АЦП от напряжения входа (измеряемого):


АЦП у STM может измерять напряжения от 0 до +3.3В, наша задача так подобрать коэф. деления, чтобы после делителя напряжения 400В и 48В попали в данный диапазон. Желательно, чтобы номинальное измеряемое напряжение попало примерно на уровень в 2В на АЦП, то есть чуть больше середины. Это позволит измерить и меньшие и больше напряжения.
Конденсатор шунтирующий — спасет нас от пульсаций и неправильного счета АЦП, а стабилитрон защитит вход АЦП МК от повышенного напряжения и пульсаций если таковые имеются.

7) Измерение тока реализовано с помощью стандартных шунтов с номинальным падением 75 мВ на 150А. Такое низкое напряжение АЦП измерить может, но точность и дискретизация будет низкая. Для решения данной проблемы необходимо применить операционный усилитель (ОУ). Он усилит нам наши 75 мВ в 20 раз и мы получим 1,5В при номинальной нагрузки. Запас «сверху» выбран для контроля пусковых и перегрузочных токов. Ведь у нас есть заявленная характеристика 200% перегруз в течение 20 минут, а это создаст на АЦП напряжение 3В.

Рисунок 9 — Реализация цепи измерения тока на ОУ LM358

Коэффициент усиления регулируется делителем на R13 и R15, путем его изменения (подстройкой R15) мы можем настроить показания значения тока. Схема включения ОУ в общем-то стандартная. Единственный критичный момент, который у меня возник — нестабильная работа от +3.3В. С чем это связано примерно понял, но в документации это как-то поверхностно упомянули, советую прочитать даташит. Поэтому было решено запитать ОУ от +15В, которые у нас имеются от дежурных источников.

8) Последний модуль — это управление системой охлаждения. Выполнена она на 2-х куллерах, обратная связь для их управления выполнена на упомянутом выше DS18B20. Управление нагрузкой осуществляется силовым полевиком IRLML0030. Хорош он тем, что может спокойно коммутировать ток в 3-4А, а буква «L» в маркировки означает возможность работы от низкого логического уровня, то есть от +3.3В. Это позволяет нам напрямую от МК управлять ключом. Управляется частота вращения куллеров с помощью ШИМ. Он в STM32 аппаратный, по 4 канала у каждого таймера, а таймеров там много… так что простор для творчества)
Я посадил оба куллера на один канал, т.к. это просто проще и в данном случае нет смысла реализации многоканального управления. Обратная связь «скважность — температура» позволяют поддерживать температуру нормальную для работы, а так же повысить (сохранить) ресурс работы куллеров.

Рисунок 10 — Схема силовой цепи управления куллером с помощью ШИМ

Резистор R17 выбирается в пределах 100 — 1000 Ом, хоть полевой транзистор и открывается напряжением и в идеале не потребляет ток, но все таки его затвор обладает емкостью. Она в свою очередь будет стремиться зарядиться бесконечно большим током за бесконечно малое время, это конечно все в идеальной модели. В реалиях емкость затвора будет заряжать достаточно большим током, а следовательно его надо ограничить, чтобы не убить МК. Вывод STM может отдать около 10-15 мА или 50-80 мА на весь порт, но камень у нас не силовой, а значит перегружать его не следует. Поэтому мы идем по самому простому пути — ставим токоограничивающий резистор.
Номинал его я описал выше, меньше 100 Ом лучше не ставить — резистор будет греться и ток потребляемый с МК будет большой. Больше 1 кОм ставить не желательно, т.к. ток будет сильно ограничен, затвор будет заряжаться долго и форма ШИМа исказится, а это не очень хорошо. Надеюсь этот момент я достаточно подробно объяснил.


Платы для модуля индикации


Вариант изготовления двухсторонней платы под ЛУТ:


Рисунок 11 — Верхний слой платы


Рисунок 12 — Нижний слой платы

Файл с PCB проектом

Общий вид платы в одностороннем исполнение


Это самый простой вариант платы, он для самых новичков, но работает не хуже остальных и свой функционал выполняет!


Рисунок 13 — Вид платы со стороны проводников (снизу)


Рисунок 14 — Вид сверху без TFT, тут спрятаны кварц, разъем программирования и подстроечные резисторы делителей


Рисунок 15 — Вид сверху с TFT экраном, все «крутилки» спрятаны и случайным образом вы не собьете настройки


Рисунок 16 — Вся часть данной статьи была посвящена именно этой индикации

Эпилог


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

Тут я хотел бы узнать мнение читателей: стоит ли разбирать код? Есть ли смысл выкладывать исходники и разбирать их? Возможно достаточно приложить готовую прошивку .hex и все? И самое главное — нужна ли статья по программной части? Я могу просто приложить исходник к данной статье для самостоятельного разбора, либо же разжевать в отдельной части, например «Часть 4.2»

Всем читателям спасибо, с нетерпением жду вашего мнения по поводу дальнейшего движения.
Часть 4.2

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


  1. amartology
    20.12.2015 19:45
    +1

    Один импульсный DC/DC на 300 мА и не выйдет дешевле и удобнее двух линейных регуляторов? Экономия сотри миллиампер вроде бы некритична, но сотня миллиампер тут, сотня миллиампер там…


    1. R4ABI
      20.12.2015 19:54

      Дешевле — не знаю, возможно… Но я бы тогда просто в дежурку добавил 3.3В или 5В линию. А так линейные стабы поставил из соображений упрощения схемы. Меньше элементов — проще понять.
      Если вы заметили у меня статьи описывают в основном общую картину и критичные моменты, с целью что кто-то может просто взять «план устройства» и сделать тот же функционал иначе. Ну вдруг кто-то захочет на ATmega сделать или датчик DS18b20 поменять на терморезистор и прочее.


      1. amartology
        20.12.2015 21:37
        +1

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


        1. R4ABI
          20.12.2015 22:20
          +2

          Если максимально хорошо, то один из вариантов:
          1) развязанный DC-DC преобразователь на плату
          2) готовый DC-DC на 200-300 мА, цены у них сейчас становятся приемлемы
          3) как сделано в наших промышленных вариантах — 3.3В имеется шина с блоков «дежурного» питания + дроссель групповой стабилизации. Так и гальваника обеспечена, и траты минимальны, и плата индикации более свободна для грамотной трассировки.

          Правда у нас есть более мощные варианты, там и TFT панелька 7-10" и прочие прелести — общие потребление по 3.3В вырастает до 3-4А и тогда только DC-DC на плату и никак иначе.


          1. legiar
            28.12.2015 19:20

            3-й вариант — самый нормальный, но! — тогда придеться усложнять «дежурку». А так, все блочно и «для простоты» понятно (и модульно).

            Да и для развития домашнего творчества (версия 1, 2, 3 и т.д.) место остаеться :)

            На LDO — самый простой и понятный вариант — с учетом что тут и так импульсников… много в общем :)


            1. R4ABI
              29.12.2015 13:14

              Оставить много места для творчества — одна из задач статей) Ведь не бывает идеального устройства, всегда есть что добавить. В домашних условиях появляется еще ограниченность ресурсов: у кого-то мешок КРЕНок, а у кого-то мешок готовых dc-dc и ничего больше. Поэтому я привожу готовый вариант, но стараюсь еще и подкидывать некоторые альтернативы + человек сам может для себя выбрать альтернативные варианты.
              Тут у меня один человек в личке консультировался, собирая данный проект, и в итоге поставил просто обычный транс 50 Гц на 50 Вт. И все это из соображений, что он у него под рукой есть и новый)) Поэтому как говорится на вкус и цвет фламастеры разные.


  1. vvzvlad
    20.12.2015 20:35
    +5

    Возможно достаточно приложить готовую прошивку .hex и все? И самое главное — нужна ли статья по программной части?

    Конечно надо! Алгоритмы очень важны для понимания работы.


    1. mattheus
      21.12.2015 15:52

      Конечно да, еще и потому, что алгоритм можно взять за основу и на его базе сделать какую-то модификацию (не у всех же найдется именно ваш дисплей, например, или другой диапазон напряжений/токов или чуть другой микроконтроллер и т.п.). Поэтому код однозначно выкладывать (можно с минимальными комментариями в самом коде), а со временем и статья с разбором кода будет очень полезна как начинающим embedded-программистам, так и тем, кто переходит на STM (например с Avr).


      1. R4ABI
        21.12.2015 16:20

        Хорошо, спасибо за развернутый совет) Если заметили статья с «Часть 4», перешла в «Часть 4.1». Будет 4.2 — посвященная исключительно коду. Код если успею переведу в SPL чтобы сильно повысить читаемость, т.к. начинающим регистры покажутся чем-то страшным))


  1. zirus
    20.12.2015 20:40
    +1

    И так главное правило разводки — много конденсаторов в цепях питания не бывает.

    Бывает. Приведу пример из секции absolute maximum ratings у линейного стабилизатора LM317:
    Input-Output Voltage Differential +40V, ?0.3V
    Это значит, что напряжение на выходе не должно быть больше напряжения на входе. Напряжение на выходе может быть из-за конденсаторов(которых много не бывает) при выключении питания. Для защиты от подобного положено ставить диод анодом к выходу, катодом ко входу. У вас этого нет.

    В daasheet на ваш LM1117, Figure 22 также показывает применение диода для защиты от подобной ситуации. Правда, ситуация происходит with an extremely large output capacitor (?1000 µF).


    1. R4ABI
      20.12.2015 21:11

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


  1. Mirn
    20.12.2015 21:02

    Параметров LM358 достаточно для работы?
    насколько помню он не rail to rail и даже в рабочем диапазоне у него весьма плавный переход к ограничению сверху и снизу, из-за чего в звуке наблюдаются нелинейные искажения более 10%.
    И этот ОУ лучше защитить по входам: он на практике часто сгорал именно по обратной связи.
    И как обстоят вообще дела с защитами внешних цепей? А то схема не похожа на производственную (разве что номиналы резистров сокращены и поэтому они раздублированы). И нет многих мелких деталей.


    1. R4ABI
      20.12.2015 21:16

      LM358 тут просто с лихвой. Звук с ОУ по току сравнивать несколько не корректно. У данного ОУ после 8 кГц сильный завал характеристики и использовать его можно если только в китайских схемах. У нас же 2-3 кГц достаточно для обеспечения скорости работы ОС «не менее 1/4 полупериода», то есть 2,5 мс и быстрее.
      Защита входа не нужна, т.к. вход гальванически развязан через трансформатор тока. Если где в схеме и нужна доп. защита, так это входы АЦП на которых измеряется напряжение.

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


  1. syrompe
    20.12.2015 22:00
    +2

    ИМХО нужно хорошо откомментированный код прошивки выложить…


    1. R4ABI
      20.12.2015 22:21
      +1

      Хорошо, наверное так и сделаю. Тем у кого останутся вопросы я как всегда будут готов в личку ответить)


      1. reactos
        23.12.2015 11:51

        На самом деле, выкладывайте любой, пусть даже совсем не комментированный.


        1. R4ABI
          23.12.2015 13:48
          +1

          Сегодня вечерком будет статья с разбором. Я за пару дней адаптировал читаемость кода, перевел на SPL и кокос (IAR почему-то пугает многих) и разбил на отдельные части. Конечно без фанатизма будет статья, но общие принципы я рассмотрю и как вообще работать с библиотеками.


          1. Mirn
            23.12.2015 13:52

            Просьба ещё выложить код для FPGA после разбора использования самой FPGA


            1. R4ABI
              23.12.2015 13:54

              ПЛИСка используется для формирования синуса, там будет разбор. Кстати варианта этого блока будет 2: на STM32 (по проще в плане характеристик и бюджету) и на MAX-е.


  1. click0
    21.12.2015 09:15

    Не увидел на устройстве последовательного порта (RS-232) для съема информации в системы мониторинга.
    Большинство используют ПО NUT.


    1. R4ABI
      21.12.2015 14:10

      Для этого на плате управления синуса есть ethernet и радиомодуль на NRF24L01


      1. click0
        21.12.2015 14:28

        И какой драйвер nut использовать? :)


  1. fortyseven
    21.12.2015 11:22

    А можно все исходники (ПО, схемы, разводка) выложить на github? Мне кажется, было бы полезно =)


    1. R4ABI
      21.12.2015 14:10

      По коду и ПО будет отдельная статья, народ в личку очень активно об этом просит. А мне и не сложно)


  1. GarryC
    21.12.2015 11:30
    +2

    Несколько вопросов (или замечаний).

    поэтому не составит труда пересчитать постоянку в переменное напряжение на выходе ИБП
    то есть мы ОС по нагрузке не замыкаем? Или это только для целей индикации?

    1) а обратные диоды поверх стабилизаторов больше не нужны?

    3) 72 МГЦ/10=7.2 миллиона байтов в секунду*0,78=5,16 Мбайт. У Вас действительно 5 мегабайт на экране? По внешнему виду не скажешь.

    6)«номинальное измеряемое напряжение попало примерно на уровень в 2В на АЦП» при этом мы жертвуем частью динамического диапазона и точностью. Не лучше ли установить напряжение делителя в напряжение опоры при максимальном входном?
    Конденсатор и стабилитрон — за это спасибо, многие про них забывают, но надо бы показать, как изменилась полоса пропускания и убедиться, что она достаточна.

    7)«ОУ усилит нам наши 75 мВ в 20 раз и мы получим 1,5В при номинальной нагрузки» — конечно, но надо бы показать, что мы учли шумы усилителя.

    Это все, конечно, придирки, в целом изложение весьма подробное, просто я смотрю на Ваш пост как на учебный материал.


    1. R4ABI
      21.12.2015 14:17

      1) для индикации, ОС по напруге в силовом модуле своя. Хотя они зависят линейно даже на индуктивной нагрузке.
      2) 72 МГц — тактовая частота. Вы видимо с STM не сталкивались, но там тактирование переферии идет не напрямую от тактовой частоты, а через PLL. И там частота делится на коэф. Еще есть ограничение по скорости приема у самой ILI9341. Так что в реалиях частота обмена около 10-12 МГц.
      3) Максимальное входное — это сколько? 400? А вдруг там окажется 450? Тогда устройство повиснет, вернее уйдет в режим неригулиремой ОС.
      4) Какие шумы? Нам не нужна точность 0.1А… +-1А на DC шине уже отлично, это относительная погрешность 1%, против 10-15 у китая или 0,75 у Шнайдера (АРС), а это еще надо помнить не пром. вариант. Не стоит слишком фанатично подходить к вопросу. Да и на 2-3 кГц у ОУ шумы ничтожны.

      Это и есть все учебное) А ваши комментарии позволяют раскрыть вопросы или недопонимания, которые я не смог показать — за что я думаю спасибо не только от меня)


  1. Immensus
    21.12.2015 12:38

    Тоже вставлю свои 5 копеек…
    1. нога Vbat используется для подачи резервного питания блоков BKP и RTC МК (от батарейки например, как на мат.плате компьютера) и никак не связана с основным источником питания. В случае, если в таком функционале нет необходимости — на Vbat подаётся основное питание
    2. при разводке многоканальных ОУ неиспользуемые секции отключаются (тут можно почитать например)


    1. R4ABI
      21.12.2015 14:20

      1. Резервное питание и все тонкости, типа ноги АЦП на ней — это совсем другая история и тут она пропущена за ненадобностью.
      2. При разводке многоканальных ОУ лишние ноги просто заземляют. Тут этого нету, т.к. частота в пару килогерц тут вообще не дает шумов и наводок внутри ОУ и на ноги.


      1. Immensus
        21.12.2015 15:09

        Собственно, про это:

        Мы еще видим yогу Vbat — она служит для контроля питания в линии, при его снижение она может увести МК в спящий режим или режим экономии.
        Это не основной функционал (честно говоря вообще не знал про измерение напряжения). Основное — это BKP и RTC. Про эту неточность в статье и хотел указать.
        Что касается ОУ, то вне зависимости от условий стоит делать как надо, считаю


        1. R4ABI
          21.12.2015 15:33

          Основное да, тут я даже не спорю) Но у этой ноги куча ништяков, особенно в F3. В дальнейших статьях (наверное не в этом цикле) я рассмотрю эту тему очень подробно.

          Тут есть 2 вариант:
          а) промышленный образец сделан как надо и в нем железа на 27 тыс.
          б) вариант для статьи сделан упрощенно и не сможет работать в промышленном цеху с кучей помех и прочим, зато сможет работать дома или в маленькой серверной. Этот образец для самоделкиных и при правильном подходе можно уложиться в 12-16 тыс. Доступность для повторения — тут не самый последний фактор.


  1. ToSHiC
    21.12.2015 12:48

    У выбранного вами STM32F103 есть аппаратный USB device, который так и просит, чтобы его вывели на разъём и через него отправляли диагностику в компьютер, который запитан через этот ИБП.


    1. R4ABI
      21.12.2015 14:22

      Это реализовано все дальше. Задача этого модуля вывести на экран происходящее и измерять температуру. Модуль диагностики и связи реализован как отдельное дополнение.Так что ожидайте) Тут не хотелось нагромождать функционал.


  1. Alexeyslav
    21.12.2015 12:58
    +1

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

    LM358 замечательный усилитель, но для измерения тока с шунта у него слишком большое начальное смещение нуля, которое еще и усиливается а компенсировать его довольно трудно, в отличие от ОУ со специальными выводами компенсации нуля.


    1. R4ABI
      21.12.2015 14:26

      1) вы правильно заметили, тут согласен, но это можно так же решить путем установки шустрого супрессора. Поставил диод, т.к. нелинейность в данном случае лишь у нижнего края диапазона, то есть до 10А. Но по DC шине это 500 Вт, онлайн ибп всегда у людей нагружен как минимум на половину. Поэтому тут я ввел данное упрощение. Тем более это не ОС по току, а показометр.
      2) Компенсация программная, все сводится к подбору коэф. в пересчете значения АЦП в амперы. Хотя ваш вариант тоже хороший, но цена таких ОУ уже несколько выше.


      1. Alexeyslav
        21.12.2015 14:37

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


  1. KbRadar
    21.12.2015 13:16

    1. Не перепутаны ли случайно на схеме прямой и инверсный вход лм358?
    2. При питании лм358 от 15 вольт не очень хорошо нельзя подключать её выход напрямую к процу который питается от 3.3 вольт: никто не гарантирует что на выходе лм358 никогда не станет больше чем 3.3 вольта, это может привести к преждевременному выжиганию ноги проца.
    3. Делитель напряжения с подстройкой с «холодной» стороны не есть хорошо, как и стабилитрон на 3.3 вольта в нём. Такие стабилитроны обладают довольно пологой ВАХ и при напряжении в пару вольт через них уже течёт приличный (для нарушения работы данной схемы, то есть 0.1-1 мА) ток. Такие цепи лучше делать исходя из того что контакт в подстроечном резисторе может быть временно нарушен в процессе подстройки. Идеальный вариант — фиксированный делитель, а к нему для подстройки в верхнее плечо подстроечник раз а 5 больше чем верхнее плечо фиксированного делителя с последовательным резистором такого же номинала. Ну и конечно же лучше заменить подстройку делителя калибровочной константой — стабильнее и деталей меньше.


    1. GarryC
      21.12.2015 13:23

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


    1. R4ABI
      21.12.2015 14:32
      +1

      1. Вроде все нормально было, хотя мог проглядеть, каюсь. Вечером дома проверю.
      2. Там больше 15В даже в случае КЗ не будет — проверено и замучено донельзя) Можно супрессор на выход или стабилитрон поставить, либо как в пром. варианте гальваноразвязка, но для дома это излишне.
      3. Калибровочная константа + стабильный коэф. деления лучший вариант, но далеко не все осилят программную настройку и подбор констант, а как показывает практика это еще и повод убить МК) Поэтому тут выбрал самый простой вариант, некая золотая середина.


      1. Alexeyslav
        21.12.2015 16:57
        +1

        А в случае обрыва шунта? или включат схему не подключив шунт… хотя у LM358 выходное сопротивление каких-то 2кОм, страшного ничего не случится — подумаешь чуток повысится напряжение питания через защитные диоды.

        Там на схеме получается триггер шмидта, ОС идёт на положительный вход… хотя по номерам выводов не проверял, может это только косяк в надписях.


        1. R4ABI
          21.12.2015 17:32

          С дуру можно и 6 кВ линию подать и сказать «забыл») Про питание от 3.3В как писал вышет — нестабильно работает LM358 от него. Кто хочет экспериментов — я ж только ЗА, питайте. Кто сделает лучше и при той же цене уже сам поделится опытом с нами)


          1. Alexeyslav
            21.12.2015 18:01

            А если банальный обрыв провода от шунта, обрыв резистора ОС? Операционник потенциально может подать на выход смертельные 15В, не в штатном режиме конечно но… может ведь! Как бы нехорошо, но в штатном режиме и 10 лет проработать может.


            1. R4ABI
              21.12.2015 18:07

              Может, согласен. Как и силовые ключи могут умереть и прочее. Отличие этого блока — его потеря не повлияет на работоспособность всего устройства.


          1. KbRadar
            21.12.2015 20:11

            LMC7101 при таком питании хорош. Лет 15+ его применяю.


            1. R4ABI
              21.12.2015 21:15

              Плюсую, на датчиках в обвязке ЧПУ у нас их ставят, еще его достоинство, что он одноканальный) Шумы минимальны. Хотя во время похода в местный магазин он был только под заказ, поэтому поставил попсовый 358-й. У кого есть желание я думаю поменяют на 7101 или что-то аналогичное в DIP-8.


            1. Alexeyslav
              22.12.2015 10:13

              Что-то он стоит нереальных денег… по сравнению с 358 — будто из золота сделан.


              1. R4ABI
                22.12.2015 11:04

                О чем и речь. Можно сделать идеально за мешок дененг, а можно сделать хорошо и по доступной цене. У кого есть мешок денег может купить готовый у нас или Шнайдер и спать спокойно, для остальных вариант из данной статьи)


  1. legiar
    28.12.2015 18:49

    По печаткам. Я бы предложил кондеры питания для stm32 ближе к углам микросхемы расположить, так как пару раз сталкивался с тем, что «очень много чего паразитного» появляеться в ADC/DAC (особенно в ADC но и не только там) при наводках по цепям питания.
    Не зря все промышленные платы с stm32 всегда имеют 4-ре кондера по углам.

    По питанию. Добавьте пару деталек для нормального питания VDDA — два кондера и дроссель (почти по даташиту) — потому как отсюда сразу наводки побегут а ADC/DAC.

    Конечно, все это особенно критично, когда ADC/DAC запускаюстся на пограничных к максимум параметрах, но я бы все таки рекомендовал их добавить, так как «шумящих» источников рядом будет очччень много.

    ЗЫ: Может в промышленном варианте у Вас это и есть, но я бы рекомендовал это и для «домашнего» варианта.


    1. legiar
      28.12.2015 19:13

      Простите, не увидел, что у Вас в статье про питание VDDA расписано.


      1. R4ABI
        29.12.2015 13:19

        В домашнем вариант я обычно советую плату с «кибирнетикой» накрывать алюминиевым экраном (коробкой) — самый просто вариант и позволяет не углубляться в трассировку.

        Не стал мудрить в Vdaa — т.к. частота АЦП у меня не более 50 кГц, а это мизер по сравнению с возможностями STMки. Ко всему еще плата расположена отдельно и поэтому трансы (главные мозговыносители) не оказывают запредельного влияния на платы.

        Камень же, который будет в плате чистого синуса расположен на силовой плате — там уже я не смог уйди от сложной трассировки и ФНЧ на питание АЦП.


        1. legiar
          29.12.2015 17:39

          Ну если в таком варианте — то да. Хотя я все ж таки придерживаюсь мнения, что по цепи питания vdda лучше все-таки ставить фильтр, чем не ставить.


          1. R4ABI
            29.12.2015 19:46

            Те, кто решит повторять могут сами добавить 3 элемента) У меня данный вариант обкатывается уже месяц, пока косяков не увидел. Была 2 продолжительных отключения по 16-18 часов — полет нормальный на номинальной мощи и с перегрузами


            1. Mirn
              29.12.2015 21:03

              У меня данный вариант обкатывается уже месяц, пока косяков не увидел.

              брррр, как мне не по себе от этой фразы…
              просто аж жуть…
              месяц…
              у нас изделия обкатываются по пол года и то потом через пару лет бывают мелкие проблемы казалось бы на самом ровном месте.
              Хорошо если проблемы вылавливают мои тесты. Но бывает и проходят. Не всё можно на стадии проектирования учесть, особенно сочетание факапов когда одновременно и качество компонентов из за кризиса упало, и сборщик поменялся, и новая версия gsm модулей пришла — а это закрытый ящик и никто знает что там… даже сами их разработчики (были случаи).
              А есть ещё особенность: ряд компонентов меняет со временем и температурой сильно свои параметры… раз в десять например у оптронов и кондёров.
              И после того как приносят адаптер выпуска середины 2000ых на ремонт, то после этого приходится опять подымать журнал разработки, доработок и тд 10 летней давности и думать как сделать чтоб этого не было у клиентов больше никогда даже если будет деградация хоть в 10-20 раз даже после 10 лет. И делаем, надеюсь успешно, через 10-20 лет узнаем.
              А Вы тут «месяц».
              Я не критикую. Просто мурашки по коже. Это профессиональное, извините не обращайте внимания пожалуйста.


              1. R4ABI
                29.12.2015 23:38

                Так разве речь о промышленном образце? :D На пром. образцы чтобы хотя бы получить право поучаствовать в тендере мы обычно отдаем от 1,5 млн. за каждый прототип, чтобы его потестили и оформили сертификат + разрешили писать на нем принадлежность к ГОСТ.

                Мелкие проблемы?) Если бы они у нас возникли — мы бы могли тут же закрываться, иначе: неустойки, суды, а если авария, то еще страшно представить. С одной стороны поставки на гос. объекты дело крайне выгодное, с другой стороны косяки не должны вылазить вообще никакие как минимум в течение гарантийного срока (10 лет). Для этого каждой наше устройство от 10 кВт через удаленный доступ нами же мониторится, если куллер помрет, то мы узнаем быстрее тех техников, которые его обслуживают)) Соответственно позвоним им и сообщим, что необходимо посмотреть и исправить.

                По поводу смены параметров… все оборудование на которое мы таки ставим приемку «5» или ГОСТ проходим испытание в климатической камере, поэтому все поправки на изменение ТКЕ учтены программно.

                Месяц же для кустарного образца по упрощенной схеме, который стоит у меня в подвале и держит пару серверов, 3 роутера и насос от скважины думаю более чем достаточно)
                Кто хочет 10 лет гарантию — может купить у нас фирмовый вариант, я буду лично рад.


          1. Mirn
            29.12.2015 20:53

            если нужно будет работать с звуком цепями АЦП и/или ЦАПа, то мы вообще ставим отдельный линейный стабилизатор с очень хорошим подавлением (-70дб и лучше) в области частот как минимум в 4 раза больше чем звук, досконально изучая даташит на предмет характера собственного шума, его стабильности, и тд.
            Не зря производители дают очень много параметров и даже их часто бывает недостаточно и порой вылазят очень нехорошие эффекты типа резонанса двух последовательно подключенных стабилизаторов (импульсный с 24В например до 5В, и линейный 1117 с 5 до 3.3В например). Вот тут то и вспоминаешь теорию устойчивости систем и грешить начинаешь на каждый резистор в этих и до и после этих веток.


            1. R4ABI
              29.12.2015 23:42

              Дело не в частоте АЦП, а в том работает ли он на предельных частотах или нет. В данном случае 50 кГц это рабочая частота в данной схеме, а предельная частота ST много выше, поэтому шумы минимальны будут при любом более менее адекватном питание, LDO достаточно. Главное замкнуть полигоны у Vdaa и входы АЦП и не давать шуметь друг на друга.

              С ЦАПом не знаю как у МК, я для таких целей обычно ПЛИСку использую из простеньких серий аля MAX, т.к. параметров F10x мне обычно мало, а ставить ради цапа F4xx уже жирно слишком для коммерции.


              1. legiar
                30.12.2015 00:55

                А можно поподробней про «замкнуть полигоны»? (я больше программист, чем радиоэлектронщик).

                А в силовой части по Вашим статьям будет ПЛИС или F10x?


                1. R4ABI
                  30.12.2015 01:37

                  1) если замкнуть полигон вокруг схемы, то он будет как плоски «конденсатор» для колебаний на большой частоте, поэтому будет выдавать помехи/ шумы. Поэтому вокруг платы полигон присоединяют на + или — питания, чтобы его потенциал был постоянный, а так же по периметру не замыкают, чтобы не создавать ту самую паразитную емкость («конденсатор»)

                  2) Будет версия на F1 и на ПЛИС, последняя будет обладать несколько лучшим сигналом, вернее меньшим числом гармоник, что в сочетание с ФНЧ даст пульсации +-1В, тогда как на F1 они будут +-3-5В в зависимости от качества сборки и настройки. Как бы в ГОСТовские +-8% оба варианта попадают, но мне больше нравится, когда у меня в сети 230В и точка)

                  P.S. код ПЛИСки не знаю буду разбирать или нет, будет зависеть от времени после Нового года. Я тут интернет магазин затеялся открыть с КИТ наборами, он времени много отбирает, поэтому статьи выдавать буду по мере возможности.