РадиоКот :: Цифровое управление лабораторным источником (stm32f100c4)
Например TDA7294

РадиоКот >Схемы >Питание >Блоки питания >

Теги статьи: Добавить тег

Цифровое управление лабораторным источником (stm32f100c4)

Автор: Oleg Galizin
Опубликовано 18.06.2011
Создано при помощи КотоРед.

Вступление

Время движется вперед. На смену традиционным контроллерам спешат новые ARM Cortex. Обновленная atmega8a стоит 62 руб. (8 бит, 16 Мегагерц, 8к флеш, 1к ОЗУ, 512 байт EEPROM, 2 8 бит таймера, 1 16 бит таймер, 8 канальный АЦП 10 бит, USART, SPI, 23 I/O). Младшенький из ARM Cortex-M3 - stm32f100c4 стоит 37 рублей (32 бит, 24Мегагерц, 16к флеш, 4к ОЗУ, 6 таймеров 16 бит из которых 3 очень гибкие, 16 канальный АЦП 12 бит, 2 ЦАП 12 бит, USART, USART, I2C, SPI, 37 I/O). Экономическая выгода очевидна. Сдерживает широкое применение ARM несколько факторов. Прежде всего - это отсутствие документации на русском языке. Второй сдерживающий фактор - это корпус с 0,5 мм шагом. Третий - ограниченность знакомой с ними аудитории. Четвертый - устройства для программирования.

Данная статья является иллюстрацией, что со вторым фактором можно бороться, и применять эти контроллеры обычными радиолюбителями. Все, что было сделано - сделано дома с применением ЛУТ(никто не говорил, что получилось с первого раза).

Для программирования можно собрать простой преобразователь уровней RS232. Для прошивки этого хватит. Но для полноценнй отладки нужен хотя бы самый дешевый SWD программатор( ST32VLDISCOVERY стоит порядка 700 руб).  С другой стороны многие живут без внутрисхемной отладки - и ничего.

После прочтения статьи, я надеюсь, расширится аудитория заинтерисованная ARM. 

К статье приложены исходники, которые могут послужить служить иллюстрацией программирования этих контроллеров. Исходники расчитаны на arm-gcc или keil.

Идея

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

  1. само наличие подстроечного резистора, как одной из самых ненадежных деталей
  2. некоторые преобразователи (например ОУ) имеют постоянное напряжение смещение, которое вносит ошибку в измеряемое/устанавливаемое значение параметра
  3. фиксированный выходной и выходной диапазон требуют изменения программы

Если значение АЦП линейно зависит от величины входного сигнала, то значение измеренного параметра можно представить линейной зависимостью

y=ax+b

Здесь x – результат преобразования АЦП, y – отображаемое значение, a – коэффициент пропорциональности, b учитывает все постоянные смещения. Если будут известны a и b, то по значению x (результат АЦП), можно получить значение y (напряжение или ток).

То же самое можно сказать про ЦАП. Зная его коэффициенты, по необходимому выходному напряжению/току можно рассчитать значение, которое нужно передать на ЦАП.

Для получения значений коэффициентов a и b необходима процедура калибровки. Для этого получают значение y и x в двух точках, обычно в начале и конце диапазона. На основании значений в этих точках расчитываются коэффициенты. После расчета их можно сохранить в энергонезависимой памяти.

Наличие калибровки позволяет отказаться от применения подстроечных резисторов. Конечно, нельзя будет установить точное максимальное значение напряжения или тока. Но часто не важно, будет источник выдавать максимум 30 вольт или 30,5 вольт. Важно, что выходной параметр будет равен точно установленному, а измеренная величина параметра соответствовать реальной величине. Устраняется влияние смещения ОУ на измерение малых значений параметров. Одна и та же программа (схема) может быть применена для различных источников без доработок (с минимальными доработками). Поскольку все параметры настраиваются, то непринципиально, будет ли выходное напряжение меняться в диапазоне 0-30 вольт или это будет диапазон 0-1000 вольт. Изменение диапазона напряжений и токов потребует соответствующего изменения входных делителей и выходных усилителей.

Схема

Схема реализует управление током и напряжением на выходе лабораторного источника, а также их измерение. Результаты отображаются на графическом LCD от телефона nokia3310 с разрешающей способностью 4 знака. Все управление осуществляется при помощи системы меню энкодером с кнопкой. Предыдущие значения напряжения и тока сохраняются при отключении питания. Сохранение может быть выполнено как во встроенной flash памяти так и во встроенных, подпитываемых от батареи регистрах. Устройство позволяет настроить и использовать до 12 предустановленных значений напряжения или тока. Предустановленные значения выбираются из меню. Опционально устройство управления реализует также функцию часов с автоматическим расчетом подстройки хода.

Автором устройство было применено для управления силовой частью источника питания 0-30 вольт 0-0,5 ампер https://radiokot.ru/circuit/power/supply/21

Земли силовой части и аналоговая земля схемы управления должны быть соединены вместе (клемма AGND). Питание +-6 вольт подается с силовой схемы на клеммы PWR+ и PWR- . Из PWR+ стабилизатором LP2950 формируется напряжение питание контроллера 3,3 вольта. Поскольку в данной схеме принципиальна стабильность именно аналогового питания, которое служит опорой для ЦАП и АЦП стабилизатор подключен напрямую именно к аналогому выводу питания микроконтроллера. Цифровое питание подается через дроссель L1. Цифровое питание используется для контроллера и индикатора. Источник также имеет раздельную цифровую и аналоговую землю. Они должны быть соединены вблизи вывода аналоговой земли микроконтроллера.

Сердцем схемы является самый младший из семейства ARM микроконтроллеров фирмы ST microelectronics: STM32F100C4. К нему подключаются входной и выходной преобразователь уровней, индикатор, энкодер. Микроконтроллер имеет встроенные ЦАП и АЦП.

С выходов ЦАП (14 и 15 ноги) задающие напряжения, имеющие диапазон изменения от 0 до 3,3 вольт, поступают на выходной преобразователь уровней, выполненный на операционных усилителях DA3.1, DA3.2. В данном случае задающий сигнал напряжения проходит через повторитель, а задающий сигнал тока ослабляется примерно в 6 раз (до максимального значения 0,5 вольта). Задающие напряжения снимаются с клемм VOUT и IOUT и подаются на силовую часть источника питания. Задающие напряжения используются вместо переменных резисторов и подаются на силовую часть в точку, куда ранее подключались скользящие контакты переменных резисторов. На схеме точки подключения подписаны и указаны стрелочками. Всего 5 точек + 2 точки питания.


    

Узел выходного преобразования уровней может быть переработан под требования управления другой силовой частью. В этом случае необходимо обеспечить высокое входное сопротивление преобразователя уровней. Это исключит нагрузку на АЦП, работающий без буферного усилителя.

Входное напряжение с отрицательной клеммы источника подается на клемму VIN управляющей схемы. Операционный усилитель DA2.1 в инвертирующем включении преобразует диапазон напряжения 0 - -30 вольт в 0-3 вольта. Напряжение с шунта подается на неинвертирующий усилитель на ОУ DA2.2. Усилитель преобразует диапазон сигнала токового датчика (шунта) от 0-0,5 вольта до 0-3 вольта. Преобразованные сигналы измеряются двумя каналами АЦП контроллера. При разработке собственных входных преобразователей нужно обеспечить изменение напряжения на входе АЦП от 0 до 3-3,2 вольт в полном диапазоне токов и напряжений.

Делитель R11, R17 служит для измерения входного напряжения питания. Контроллер начинает работу только в случае, если напряжение делителя превышает 1 вольт. Это напряжение постоянно измеряется. В случае, если оно падает ниже значения 1 вольт, схема управления считает, что питание отключено, отключает выходное напряжение и сохраняет текущие заданные значения токов и напряжений. Эти значения считываются при следующем включении источника.

К клеммам ENCODER1, ENCODER2, ENCODERBUTTON подключается собственно энкодер и его кнопка. Резисторы и конденсаторы возле этих клемм служат для подавления дребезга. С помощью энкодера с кнопкой осуществляется  управление источником. Дополнительных элементов управления не предусмотрено.

К клеммам, начинающимся с LCD, подключен графический индикатор от телефона nokia 3310.

Опционально к клемме BATTERY может быть подключена батарея напряжением 3 вольта, которая подпитывает часы и регистры памяти. Если батарея не используется, данная клемма должна соединяться с цифровым питанием контроллера. При отсутствии батареи в качестве энергонезависимой памяти используется специальным образом организованная flash память. 

Если функционал часов не предполагается использовать, кварцевый резонатор не обязателен.

Клеммы USART…, SWD… и перемычка j1 используются при программировании контроллера.

 

Описание работы

Непосредственно после первого включения устройство переходит в режим калибровки. Калибровка осуществляется по 4 токам: 2 для тока и 2 для напряжения. После установки желаемой величины должны быть введены измеренные значения тока или напряжения. По результатам измерения рассчитываются коэффициенты линейной зависимости и сохраняются в flash память.

При следующих включениях источник готов к работе сразу. Вращением ручки энкодера устанавливается необходимое значение тока или напряжения или выбор одного из предустановленных значений. Для обеспечения одновременно и быстрой и точной установки параметров применено динамическое изменение величины шага энкодера. При медленном вращении обеспечивается максимальная точность подстройки(1 разряд ЦАП - 1/4096 часть максимального значения). При относительно высокой скорости вращения на один шаг энкодера приходится уже несколько разрядов ЦАП. Причем величина шага при высокой скорости вращения энкодера увеличивается, при медленной - снижается. Таким образом достигается также и высокая скорость изменения параметра: весь диапазон может быть пройден за 2-3 оборота ручки энкодера.

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

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

Если ни один из параметров не изменялся, то долгое нажатие на кнопку приводит к временному отключению выходного напряжения. Значения ЦАП тока и напряжения устанавливаются при этом в 0. Повторное долгое нажатие приводит к включению ранее установленных значений выходного напряжения и тока.

Непосредственно после включения выход источника отключен как после долгого нажатия. Подача установленного до выключения напряжения и тока осуществляется по долгому нажатию кнопки.

На индикаторе в обычном режиме отображаются актуальные и установленные значения тока и напряжения, а также часы (если включены). Обновление результатов измерения производится 5 раз в секунду.

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

 

Конструкция и детали

В качестве микроконтроллера применен самый дешевый из контроллеров семейства, но может быть использован любой из серии STM32F100C. Их отличие - большие объемы памяти. Можно также использовать более дорогой контроллер в 64 или 100 выводном корпусе (STM32F100R STM32F100V) с изменением схемы.

Все резисторы и керамические конденсаторы типоразмера 0805, электролитические конденсаторы – алюминиевые или танталовые. Дроссель – покупной индуктивностью 100uH. Операционный усилитель может быть заменен на практически любой сдвоенный (например TL082, TL072, LM358). Стабилизатор также может быть применен практически любой на 3,3 вольта. Необходимо только учитывать, что от его стабильности зависит стабильность источника в целом. Энкодер применен с 20 шагами на оборот и совмещеной кнопкой. Батарея - литиевая или 2 соляные или 2 щелочные любого типа, главное, что бы ее напряжение составляло порядка 3 вольт.

Индикатор от телефона nokia 3310. При покупке необходимо обращать внимание на выводы. Выпускают 2 типа индикаторов – с контактами на стекле под прижим и с приклеенной печатной платой с контактами. Второй вариант предпочтительнее, так как позволяет припаять проводники. Распиновка индикатора показана на рисунке.

Особое внимание необходимо уделить кварцевому резонатору. Он должен быть с емкостью 6 пикофарад. 12 пикофарадные резонаторы не подходят!!! С этими резонаторами часы либо совсем не заводятся, либо работают очень нестабильно.

Устройство управления собрано на двусторонней печатной плате, сделанной по ЛУТ. Плата имеет порядка 20 межслойных перемычек, часть из которых размещается под SMD элементами. Перемычки выполняются проводом диаметром примерно 0,4мм. После вставки провода в отверстие, он надрезается ножом, так что бы длина провода была на несколько десятых миллиметра больше толщины платы, и обламывается. После вставки всех перемычек, они расплющиваются молотком для фиксации в отверстии. Здесь важно, что бы провод входил в отверстие с некоторым усилием, иначе при ударах молотка могут вылететь соседние перемычки. Если провод входит слишком туго – можно обработать наждачной бумагой провод для уменьшения его толщины.

На печатной плате имеются следующие неточности и изменения:

  1. Добавлен резистор-перемычка, соединяющий цифровую и аналоговую землю.
  2. Отсутствует конденсатор C14. Впоследствии smd конденсатор на 10 вольт был припаян прямо на проводники.
  3. Отсутствует конденсатор C15. Предполагалось, что можно будет использовать керамический емкостью 2,2 микрофарады, напаянный непосредственно на индикатор. Но это оказалось неосуществимо. Конденсатор припаян на земляной полигон и соединен проводником с индикатором.
  4. Вывод индикатора CS соединен с землей прямо на индикаторе.
  5. Конденсаторы C1 и C10 оставлены на длинных выводах, что бы их можно было пропаять с двух сторон.
  6. R19 не впаян.

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

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

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

При первом включении снова проверяются питания контроллера и операционных усилителей, наличие напряжения примерно 1,2 – 1,5 вольта на делителе R17,R11. В случае необходимости выполняется подбор резисторов делителя.

Подключение индикатора необходимо производить после программирования.

 

Программирование

Программирование выполняется с использованием программатора ST-LINK. Это может быть либо отдельный программатор, либо STM32VLDISCOVERY. Из софта применяется ST-Link Utility, либо среда программирования. В последнем случае программирование выполняется автоматически при активизации отладки. Для программирования используются клеммы SWD

Программирование может быть осуществлено также через USART. Для этих целей должен быть собран преобразователь уровней из 3,3 вольт в RS232 (st3232, max3232). Первую свою программу автор записывал именно таким образом. Данный проект с размером кода порядка 16к записать без ошибок уже не удалось. Возможно, влияет излишняя длина проводников, или преобразователь уровней вышел из строя, или интерфейс в компьютере испортился. Для тех, кто будет использовать данный, метод далее приводится описание процедуры программирования полностью.

Выход USART подключается к входу преобразователя уровней и наоборот. В данном корпусе выход USART – это вывод 30, вход – вывод 31 (согласно Table 4 datasheet на stm32f100c4). Питание на преобразователь можно подавать как отдельно, так и с платы. Загрузчик активизируется путем подтяжки Boot1 (вывод 20) к земле, а Boot0 (вывод 44) - к питанию (замыкание J1) перед подачей питания.

Для программирования используется утилита STMFlashLoader (документ UM0462), консольная версия. В каталоге map данной утилиты создается файл с именем STM32_Low-density-value_16K.Stmap как копия файла STM32_Low-density_16K.Stmap. Заголовок этого файла замещается на следующий:

[Product]

Name=STM32_Low-density-value_16K

PID=0420

FlashSize=0010

RAMSize=0004

PacketSize=FF

ACKVAL=79

MAPNAME=Pages

PagesPerSector = 4

family = 1;

Возможно, что к этому времени утилита загрузки поддерживает STM32F100C4, но полгода назад (начало 2011) это было не так.

Программирование выполняется командой

STMFlashLoader.exe -c --br 9600 -i STM32_Low-density-value_16K -d --fn D:PATHTOHEXmain.hex –v

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

Перед перепрограммированием память должна быть очищена. Стирается прошивка командой

STMFlashLoader.exe -c --br 9600 -i STM32_Low-density-value_16K -eall

   

Калибровка

После программирования снимается перемычка J1, подключается индикатор, и при включении питания начинает работать программа. Сразу же после включения прибор переходит в режим установки контрастности. После установки контрастности выполняется калибровка в 2 точках по напряжению и в 2 точках по току. Результаты калибровки сохраняются в flash памяти, после этого можно устанавливать требуемые выходные напряжения и токи. Калибровке посвящен отдельный документ (User guide).

После калибровки могут быть проверены диапазоны изменения выходных и входных напряжений. Выходной диапазон может быть изменен подбором усиления (R19, R16) или ослабления (R20, R21), либо соответствующей настройкой силовой части.

Максимальный сигнал, поступающий на АЦП после преобразования входных сигналов, должен быть порядка 2,9-3,2 вольта. В случае необходимости также может быть осуществлена подборка соответствующих сопротивлений (R2, R4 для тока, R9,R14 для напряжения). При любом изменении сопротивлений резисторов необходима повторная калибровка.

Фото

На фото виден микроконтроллер, перемычка для программирования, дроссель, конденсаторы с длинными выводами, кварцевый резонатор, вверху – ножки от конденсатора высокого напряжения индикатора.

Индикатор показывает, что установлено напряжение 15 вольт, на выводах – 15,01 вольта, ограничение тока – 100 мА, ток в нагрузке – 15,1 мА, время – 21:44. Ручка энкодера служит для управления источником. Красная кнопка включает триггерную защиту. Светодиод индицирует включение. В режиме ограничения тока он горит красным цветом. К выходным клеммам подключена нагрузка.

Файлы:
Прошивка и исходники
Юзергад по настройке и использованию (6Мб)
Печатная плата и чего-то еще


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

47 4 1
2 1 0