Dps5005 инструкция на русском pdf

Технические характеристики

  • Модель: RuiDeng Riden RD-DPS5005-USB-BT
  • Вид преобразователя: понижающий, импульсный, неизолированный, асинхронный
  • Параметры входа
    • напряжение: 6.0 ~ 55 В DC
    • ток потребления: 0 ~ 10 А
  • Параметры выхода
    • напряжение: 0 ~ 50 В DC
    • ток нагрузки: 0 ~ 5.0 А
    • мощность: 0 ~ 250 Вт
  • Эффективность, КПД: до 95%
  • Частота преобразования: 50 кГц
  • Функции измерения:
    • напряжение (В), шаг 0.01
    • сила тока (А), шаг 0.001
    • мощность (Вт), шаг 0.01 (<10.0W), 0.1 (>10W)
  • Погрешность,макс.: ± 0.5%
  • Экран: 1.44″ цветной HD LCD
  • Подсветка дисплея: 6 уровней яркости
  • Управляющий контроллер: ARM Cortex-M3 STM32F100
  • Память: 10 ячеек для сохранения или загрузки профилей напряжения/тока, из них 2 ячейки с быстрым доступом
  • Защита:
    • превышение выходных параметров напряжения (OVP), силы тока (OCP), мощности (OPP)
    • ошибочная полярность источника электроэнергии на входе
  • Управление прибором: многофункциональные кнопки, поворотный энкодер
  • Дистанционная связь
    • беспроводная, Bluetooth 2.1+EDR 2.4ГГц (BK3432), APP-приложение RuiDeng DPS(H) Series
    • проводная, порт Micro-USB 2.0 (CH340G), программное приложение DPS5005 PC Software
  • Поддерживаемые языки: китайский, английский
  • Поддерживаемые платформы: Android™ 5.0+, Windows™ 7+
  • Интерфейсы подключения
    • источника питания и нагрузки: винтовые клеммы Ø2.5 мм
    • внешних модулей mUSB-TTL или BT2.1 к силовой плате: соединительный кабель 1 х 4 pin
  • Рабочая температура: -10°С ~ 45°C
  • Размеры: 79 х 43 х 48 мм
  • Вес: 120 гр

Комплектация изделия

  • Модуль питания Ruideng RIDEN DPS5005-USB-BT х 1 шт
  • Модуль Bluetooth (BK3424) х 1 шт
  • Модуль USB (CH340G) х 1 шт
  • Соединительный кабель 1х4pin х 1 шт
  • Вкладыш-инструкция х 1 шт

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

Представитель серии DPS, модель DPS5005-USB-BT олицетворяет уникальный вариант импульсного DC-DC преобразователя, представленного в подклассе маломощных понижающих источников питания от китайского разработчика Hangzhou Ruideng Technology. Устройство DPS5005 сочетает широкий спектр применения и современные аналогово-цифровые технологии. Объединяет высокую эффективность и компактные размеры изделия. Выделяется среди конкурентов простым удобным управлением, грамотным подбором компонентов, весьма достойным подходом к качеству сборки и комплектации продукта. Построенный по классической схеме понижающего DC-DC преобразователя, DPS5005 оборудован многоуровневой системой самоконтроля и защиты, может гарантировать индивидуальную надёжность, стабильность и долговечную работоспособность при соблюдением правил его технической эксплуатации.

Внутреннее устройство преобразователя RuiDeng DPS5005-USB-BT

Моноблочный преобразователь из серии DPS оснащяется большим 38-мм цветным TFT-дисплеем четырёхзначного вольтметра-амперметра-ваттметра, мягкой и плавной поворотной ручкой подстроечного энкодера с чётко ощущаемым шагом вращения, набором многофункциональных кнопок настройки параметров и переключения активных режимов прибора. Модель DPS5005-USB-BT дистанционно управляется по каналам беспроводной связи Bluetooth 2.1+EDR через APP-приложение, поддерживает интерфейс USB для обмена данными между прибором и программным обеспечением удалённого ПК по проприетарному протоколу. Собранный в едином компактном корпусе c интуитивно простым подключением, RD-DPS5005 легко интегрируется в состав любого промышленного или бытового оборудования. Может быть установлен в металлический корпус индивидуально конструируемого лабороторного источника питания, с обязательной системой контролирования температуры внутреннего пространства. DC-DC преобразователь RIDEN DPS5005 совместим с корпусами, специально разработанными производителем RuiDeng для серии DPS, придающих форму и внешний вид полноценного законченного устройства, имеющего двухсторонние наружные клеммы подключения первичного источника питания и нагрузки.

 

Импульсный DC-DC преобразователь допускает работу с любым видом нерегулируемых источников напряжения от 6.0В до 55В и постоянного тока до 10А. На выходе преобразователь DPS5005 вырабатывает регулируемое напряжение в диапазоне 0 ~ 50В, предельная сила нагрузочного тока ограничена значением 5.1А. Топология понижающего преобразователя характеризует необходимость подачи на вход более высокого напряжения относительно получаемого на выходе. Минимальная разница составляет 1В или 10%. В понижающем преобразователе уровень входного напряжения и тока определяет верхнюю границу доступных выходных параметров.

Встроенный мощный 32-разрядный процессор STM32F100 Cortex-M3 с архитектурой ARM обеспечивает максимальную производительность и точность вычислений. Погрешность измеряемых значений не превышает 0.05 единицы любого параметра. На программное обеспечение контроллера возложена обработка результатов измерения характеристик электроэнергии интегрированных вольтметра и амперметра, с выводом актуальных данных на экран устройства. Вложенными в процессор алгоритмами ведётся подсчёт величины суммарного значения мощности. Во внутренней памяти понижающего DC-DC преобразователя реализован банк с доступом к 10 адресуемым ячейкам М0-М9, вовлечённых в функцию быстрого сохранения и загрузки профилей с выбранными значениями напряжения/тока.

 

Эффективность преобразователя RIDEN DPS5005

Мощность потребления от источника первичного питания в универсальном преобразователе выше чем на выходе — сказываются затраты энергии, необходимые для нормальной работы силовой части преобразователя. Вычитаемые 10-11% именуются эффективностью преобразования или КПД преобразователя, образуются от деления значений выходной мощности на входную. Величина КПД не постоянна, и может увеличиваться в зависимости от условий использования устройства. Пиковая выходная мощность DC-DC преобразователя DPS5005-USB-BT составляет 250Вт, для достижения которой рекомендован внешний источник электроэнергии с выходом не менее 275Вт (например 55В и 5А).

Настройки и меню RuiDeng DPS5005-USB-BT

Программное меню RuiDeng DPS5005-USB-BT позволяет настраивать прибор в различные удобные для работы режимы. В списке содержатся настройки стартовых параметров напряжения и тока, максимально разрешённых значений напряжения, тока и мощности, регулировка яркости экрана, управление ячейками памяти для обычных или быстросохраняемых/быстрозагружаемых профилей, управление активацией клемм выхода на момент включении питания или при выборе одного из профилей. Скрытое меню выбора вида коммуникации и настройки параметров сетевого подключения, запускается сочетанием определённых клавиш, указанных в руководстве.

Функции защиты в DPS5005-USB-BT

Надёжность и стабильность работы DPS5005-USB-BT обеспечивается многоуровневой защитой прибора.

  • Ручное и программное управление включением/отключением подачи электроэнергии на клеммы выхода
  • Блокировка ручного управления в сессиях дистанционной проводной или беспроводной связи
  • Ручная/программная регулировка со стабилизацией пограничных параметров напряжения (OVP), тока (OCP), и мощности (OPP), с отключением клемм выхода для защиты устройства нагрузки

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

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

Дистанционное управление RIDEN DPS5005-USB-BT

Цифровой преобразователь DPS5005-USB-BT поддерживает дистанционное управление множеством параметров и функций. Удалённая коммуникация с прибором DC-DC регулятора RIDEN RuiDeng DPS5005-USB-BT осуществляется из приложения DPS3005 PC Software через проводное подключение к порту USB персонального компьютера на ОС Windows 7+. Или по радиочастотным каналам 2.4ГГц беспроводной связи Bluetooth стандарта 2.1+EDR со смартфонов или планшетных ПК под управлением ОС Android 5.0+ с загруженным приложением Ruideng DPS(H) Series. И мобильное приложение, и ПК-программа обладают дружественным интерфейсом, поддерживают английский и китайский языки, отображают текущие параметры электроэнергии в графиках и таблицах, могут вести журналы происходящих изменений с экспортом данных.

 

Физические размеры DPS5005-USB-BT

 

Программное обеспечение

  1. Программа DPS5005 PC Software для ПК ОС Windows 7+ (zip-архив)
  2. APP-приложение RuiDeng DPS(H) Series для Android 5.0+ (zip-архив)

Техническая документация

  1. Руководство пользователя преобразователя DPS3003/DPS3005/DPS5005/DPS8005 (англ., PDF)

Всем привет!
В обзоре импульсного регулируемого блока питания (БП) Wanptek GPS3010D в комментариях писали, что эти импульсные БП от лукавого и новичкам нужно собирать трансформаторный регулируемый БП. Тяжелый, надежный и все такое. Ну что же, сегодня этим и займемся.

DC-DC модули от Ruideng Technologies (RD) являются, пожалуй, самыми распиаренными на mysku.club
Обзоров на них вагон и маленькая тележка. Поэтому мой выбор был очевиден.

Покупка

Почему версия на 5 А? Она компактней и дешевле. У разновидностей DC-DC модулей RD на 10-15 А модуль разнесен на две части: дисплейную и сам преобразователь.

И я брал версию «no communication version», по себе заметил, не очень нужные мне прибамбасы (возможность подключаться по USB и по BT). Но кому нужно удаленное управление, за дополнительные деньги такая возможность имеется.
Можно конечно было купить просто плату для регулируемого БП (как например такую), но модуль от RD кажется мне законченным устройством с индикацией, возни с ним меньше.

Я акцентирую внимание не на самом модуле, а на сборке БП. Кому интересен более детальный обзор модуля, то вот он от lexus—08 (там версия с USB + Bluetooth).

Упаковка модуля надежная — пенопластовая коробочка:

Внутри пластиковая упаковка:

Технические параметры:
Входное напряжение: 6.00-55.00 В
Выходное напряжение: 0-50.00 В
Дискретность регулировки напряжения: 0.01 В
Точность измерения напряжения: ± (0.5% + 1 цифра)
Выходные пульсации: <100 мВ
Выходная мощность: 0.00-250.0 Вт

Выходной ток: 0-5.000 A
Дискретность регулировки тока: 0.001 A
Точность измерения тока: ± (0.5% + 2 цифры)
КПД преобразования: 90%
Размеры: 79*43*48 мм (Д*Ш*Г)
Паз под установку: 71х39 мм
Масса: примерно 113 г.

Внешний вид Step-Down модуля RD DPS5005 50V/5A:

Экран цветной, диагональ 1.44″. Энкодером и кнопками управлять вполне удобно.
Размеры:

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

Все просто: вход + и — и выход + и -. Входное напряжение должно быть не менее, чем в 1.1 раза больше выходного, но не более 55 В DC для этой модели.

Дисплей модуля DPS5005
Версия прошивки у меня:

Основной экран:

Подробнее

Настройки:

  • Установка выходного напряжения
  • Установка выходного тока
  • Установка предельного напряжения
  • Установка предельного тока
  • Установка предельной мощности
  • Регулировка яркости дисплея (5 значений яркости)
  • Память установок (10 шт. )

Переходим к сборке регулируемого линейного по питанию (трансформаторного, а не импульсного) БП.
Основа-источник питания. Трансформатор от Амфитона 75У-202С:

Солидный тор, в стальном кожухе, залит смолой. Вторичка около 26 В.
Остальные детальки для создания БП:

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

покупал ее давно на ebay, там два выхода на однополярное напряжение. Конденсаторов почти 10 тыс. мкФ в плечо.

Про большой пластиковый корпус для БП расскажу позже (он по п.18), пока изготавливаю для него стальные панели:

Да, я ленивый, мне проще написать программу для станка с ЧПУ, чем подравнивать напильником самодельные отверстия.
Проверяем БП:

Все работает.
Предварительная компоновка в корпусе:

Места достаточно.
Собираем (работы на 15 минут):

Можно, конечно, было пошаманить с питанием: поставить входной фильтр, помимо ферритового кольца от ЭМП.
Почти готовое изделие (остались только наклейки на панели):

Ближнее к модулю две клеммы регулируемое напряжение, дальние две — напрямую с выпрямителя 35 В.

Проверяем в деле. Максимальное напряжение:

Максимальный ток:

Проверим пульсации:

На половине напряжения (15 В):

На полную мощность:

У трансформаторных БП неплохо так проглядывается пульсации сети 50-100 Гц.
Второй выход БП (нерегулируемый 35 В 5,7 А):

Пригодится для питания усилителя 2160.

Получилось в этот раз солиднее, чем БП на LM317 12 В 0,5 А который я делал в 2015 году:

Выводы:
Для моих простых задач особой разницы между трансформаторным и импульсным блоком питания нет. Цена примерна похожа (с учетом, что импульсный на 10 А). Новый линейный блок получился габаритным и тяжелым. В плюсах, разве что, точное выставление параметров напряжения и тока и легкость сборки БП.
Модуль DPS5005 порекомендовать можно, а вот делать трансформаторные БП нет.

Спасибо за просмотр. Удачных покупок!

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

Модули, обозначаемые у китайских производителей как DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015 — это готовые блоки преобразователей напряжения постоянного тока, с возможностью программирования и предназначенных для создания мощных блоков питания.

Модули представляют собой управляемые Step-Down конвертеры. Большинство из них моноблочные, и только у версий с выходным током 12 и 15 ампер силовая часть отнесена от управляющей на двух гибких шлейфах.

Стоимость на сайте Алиэкспресс в зависимости от модели — 2000-3000 рублей.

Общая информация о DP и DPS DC-DC преобразователях

Обрабатывает постоянное напряжение и постоянный ток, программируемое управление блока питания. Диапазон напряжений регулируется 0-50 В, шаг 0.01 В. Регулируется выходной ток в диапазоне 0-15A, шаг 0.01 A.

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

ЖК-дисплей модуля имеет функцию цифрового вольтметра и амперметра. На нём можно просмотреть заданное напряжение, входное напряжение, выходное напряжение, заданный ток, выходной ток, выходную мощность, и т. д. Также регулируется яркость ЖК-экрана.

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

Основные технические параметры

  • диапазон входного напряжения: 6-60 В
  • диапазон выходного напряжения: 0-50 В
  • выходной ток: 0-15 A
  • выходная мощность: 0-750 Вт
  • вес продукта: около 220 гр
  • размер модуля: 79*43*41 (мм) (L * W * H)
  • выходное напряжение с разрешением: 0.01 В
  • выходной ток меряет с разрешением: 0.01 A
  • точность выходного напряжения: ± (0.5% + 1 цифра)
  • выходной ток с точностью: ± (0.5% + 2 цифры)

Таблица модулей DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3005-C, DPS5005, DPS5005-C, DPS3012, DPS5015, DPH3

Старые версии — таблица на английском

Питание на них подаётся от импульсных БП на подходящую мощность.

Схема и описание подключения

  • IN +: положительный вход напряжения
  • IN-: отрицательный вход
  • OUT+: выход положительный
  • OUT-: выход отрицательный

Органы управления — функции кнопок

  • 1-установка напряжения/прокрутка вверх/извлечение M1 группы данных
  • 2-установка данных/извлечение указанных данных групп/сохранение в указанных данных группы
  • 3-установка тока/прокрутка вниз/извлечение М2 группы данных
  • 4-1.44″ цветной ЖК-экран
  • 5-потенциометр/регулировка данных/блокировка всех кнопок
  • 6-Включить или выключить

Обозначения на дисплее

  • 7- заданное значение выходного напряжения
  • 8- фактическое значение выходного напряжения
  • 9- фактическое значение выходного тока
  • 10- фактическое значение выходной мощности
  • 11- фактическое значение входного напряжения
  • 12- заданное значение выходного тока
  • 13- заблокировать или разблокировать строку
  • 14- подтвердить или сохранить
  • 15- статус тока или напряжения
  • 16- установка данных памяти
  • 17- включить-выключить
  • 18- установка выходного напряжения
  • 19- установка выходного тока
  • 20- установка защиты перенапряжения
  • 21- установка перегрузки по току
  • 22- установка перегрузки по мощности
  • 23- установка яркости экрана
  • 24- установка набора данных в памяти
  • 25- фактическое значение выходного напряжения и тока

Инструкция по эксплуатации

  1. Можно скачать цветную инструкцию на русском языке в PDF.

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

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

Данные про входное напряжение находятся в нижней части экрана.

Полезное:  Мини датчик движения

Установка защиты

Пронажимайте страницы вверх или вниз до страницы, чтобы высветилось S-OVP, S-OCP или S-OPP, это установка значения перенапряжения, перегрузки по току и перегрузки по мощности соответственно; кратковременно нажмите кодирование на потенциометре, чтобы войти в статус регулировки численного значения, которое вы хотите отрегулировать. Повернуть энкодер потенциометра для регулировки численного значения. Если хотите выйти из регулировки — коротко нажмите SET.

Регулировка яркости экрана

Пронажимайте страницы вверх или вниз до страницы, обозначенной B-LED, а затем кратковременно надо нажать энкодер потенциометра, чтобы войти в состояние настройки яркости экрана.

Поверните регулятор потенциометра для регулировки численного значения. Чтоб выйти из меню регулировки — коротко нажмите SET.

Тут есть 6 уровней яркости ЖК-экрана, уровень 0 является самым темным, а уровень 5 — самым ярким.

Как программировать память

Так же возле ячейки имеется изменяемый параметр ON/OFF. Он работает следующим образом: если при активированном выходе конвертера вызовите данные из ячейки памяти с значением ON — параметры сразу применятся, выход останется активным, если OFF — выход отключится. При деактивированном выходе разницы нет.

В новой версии конвертера есть дополнительный пункт меню, в котором можно задавать и включение/выключение выхода конвертера, при вызове данных из ячейки памяти. Для быстрого вызова данных в ячейках М1 и М2 — необходимо нажать соответствующую кнопку слева. Запись в остальные ячейки памяти — аналогично.

Выбираем ячейку, вносим изменения, сохраняем нажатием на SET — под пиктограммой CV загорается номер ячейки.

Отзывы про импульсные инверторы DPS3003 — DPS5015

Источник: https://2shemi.ru/bloki-pitaniya-na-modulyah-dp50v5a-dp30v5a-dps3003-dps3005-dps3012-i-dps5015/

DPS5005-C DC-DC программируемый источник питания 0-50V 5A с модулем связи

DP5005-С представляет собой программируемый источник питания с DC-DC преобразователем напряжения, ЖК-дисплеем и модулем связи.

Это новая версия модуля DPS5005 с новым программным и аппаратным обеспечением и интерфейсом связи с компьютером.

У старой версии модуля DPS5005 нет интерфейса связи, поэтому она не может использоваться вместе с USB или Bluetooth коммуникационной платой. В комплекте с модулем представлены два варианта интерфейса связи:

  1. USB интерфейсная плата – для связи с компьютером с помощью шнура через порт USB;
  2. Bluetooth модуль – для беспроводной связи модуля и компьютера с использованием Bluetooth модуля компьютера.

Модуль связи позволяет контролировать и управлять состоянием модуля с помощью компьютера, что очень удобно.

Программное обеспечение предназначено для установки на операционные системы Windows 7 и выше. Для нормальной работы Bluetooth модуля связи необходим не экранированный корпус для устройства.

Данное устройство DPS5005-С прекрасно подходит для самодельных блоков питания. Производитель так же заявляет поддержку заряда аккумуляторов.

Модулю DPS5005-С необходим источник питания, в комплектацию не входит.

Общая информация

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

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

вы можете посмотреть заданное напряжение, входное напряжение, выходное напряжение, заданный ток, выходной ток, выходная мощность, и т.

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

Модуль DPS5005-С имеет много преимуществ: малый размер, расширенные функционал, отличный внешний вид и хорошие углы обзора индикатора, возможность подключения к компьютеру, длительная работоспособность, высокая точность, широкое применение – может использоваться самостоятельно или встраиваться в готовые устройства.

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

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

Верхняя маленькая строка — установленные значения тока и напряжения, большие цифры — это измеренные значения на выходе, снизу — входное напряжение (минимальная разность между входом и выходом около вольта).

Пиктограммы справа показывают текущее состояние: блокировка, состояние, режим выхода (cc/cv) и состояние выхода — вкл/выкл. При включении выход выключен. Включение и выключение выхода — кнопкой под энкодером. Пиктограмма выкл — красным, вкл — зеленым.

Блокировка — длительным нажатием энкодера.

При нажатии кнопки Set, появляется возможность изменять текущие значения тока и напряжения. При этом, в верхней строчке, изменяемый разряд подсвечивается красным, разряды переключаются нажатием на энкодер. вращением энкодера — изменяется значение. при переходе с 9 на 0 — увеличивается старший разряд.

При повторном нажатии на Set — входим в меню «расширенных» настроек. При этом в верхней строчке, соответственно, начинают отображаться текущие параметры выхода — ток и напряжение.

Тут у нас есть выходное напряжение, выходной ток, напряжение/ток/мощность срабатывания защиты, яркость подсветки, и текущая ячейка памяти. Ячеек памяти всего 10. Ячейка М0 — это «ручной» режим, то есть то что мы устанавливаем в данный момент. Эти значения сохраняются и восстанавливаются при последующем включении.

Выбор параметра — кнопками вверх/вниз, далее нажимаем на энкодер и изменяем параметр, выход кнопкой Set.

Lля того чтобы сохранить значения в какую-то ячейку памяти, нужно вначале ее выбрать в нижнем пункте меню, потом изменить всё что нужно, а потом перейти в нижнем пункте меню на номер ячейки и подержать кнопку Set две секунды. Номер ячейки в которую сохранено — появится слева между пиктограммами.

Следующее нажатие кнопки Set переключает на «главный экран». Выбор ячейки памяти осуществляется либо удержанием кнопки вверх для выбора М1, либо кнопки вниз для выбора М2, либо кнопки Set — а далее энкодером выбираем номер ячейки.

Технические характеристики:

  • Входное напряжение: 6.00-55.00V;
  • Выходное напряжение: 0.00-50.00V (разрешение в 0.01V);
  • Выходной ток: 0.000-5.000A (разрешение в 0.001A);
  • Выходная мощность: 0.0-160.0W (разрешение в 0.1W);
  • Погрешность: 0,5% для тока (+2 цифры) и напряжения (+1 цифра);
  • Размеры: 79*43*48 (мм) (Д * Ш * В):
  • Внешний размер для встраивания: 71mmX39mm;
  • Вес: 113 гр.

Статическое электричество может повредить компоненты модуля.

Скачать программное обеспечения для ПК: DPS5005 PC Software V1.3(2017.06.08).zip

Источник: http://needful.co.ua/dps5005-c

Корпус для лабораторного источника питания от Ruideng Technologies

Нeбoльшoй oбзoр прибoрнoгo кoрпуca для прoгрaммируeмыx мoдулeй питaния RD типa DPS5005/DPS5015 Будeт cбoркa, нecкoлькo фoтoгрaфий тoгo, чтo пoлучилcь.

Нaкoнeц-тo пoлучил дoлгoждaнную пocылку c мeтaлличecким кoрпуcoм для мoeгo мoдуля-иcтoчникa питaния DPH3205 (или DPS5015).

Этo зaкaзaнный у Ruideng Technologies (RD) кoрпуc (co cкидкoй, кoтoрую прoдaвeц дaeт нa cлeдующий тoвaр зa oбзoр пoкупки нa ютубe).
Гaбaриты кoрпуca примeрнo 130x120x50 мм.

Кoрпуc пoдxoдит кaк для мoдулeй в видe oднoгo диcплeя, тaк и для мoдулeй c cилoвoй плaтoй. Тoлькo oбрaтитe внимaниe нa этo при зaкaзe (рaзныe кoмплeктaции, прoдaвeц дoклaдывaeт вo внутрь крeпeж для плaты и cвeрлит oтвeрcтия.

Мoжнo купить экoнoм вaриaнт и cдeлaть вce caмoму, нo рaзницa в $1 тoгo нe cтoит)Кoрпуc унивeрcaльный, мoжнo иcпoльзoвaть для DPS5005 вмecтe c мoщнoй Lipo бaтaрeeй

У прoдaвцa ecть eщe , чуть другиx рaзмeрoв и фoрмы.

Тaкжe мeтaлличecкий.

Дoпoлнитeльнaя инфoрмaция прo втoрoй прибoрный кoрпуc RD

Внeшний вид и рaзмeры
Оcнoвaниe кoрпуca чуть мeньшe, примeрнo 110×110 мм, нo и выcoтa зaднeй cтeнки пoчти 100 мм. Пaнeль пoд диcплeй нaклoнeнa, чтo мoжeт быть удoбнo, нo кoннeктoры для пoдключeния нaxoдятcя cзaди.

Нe oчeнь удaчнoe изoбрaжeниe внутрeннocтeй (из oпиcaния лoтa)Анaлoгичнo иcпoльзуютcя caлaзки для тoгo, чтoбы oткрыть-зaкрыть кoрпуcПриcутcтвуют «ништяки» в видe вeнтилятoрa c прeoбрaзoвaтeлeм

Внимaниe: этo прocтo кoрпуc, oн нe coдeржит никaкиx иcтoчникoв питaния внутри или мoдулeй, кaк нa фoтoгрaфияx прoдaвцa. Мoдули приoбрeтaлиcь oтдeльнo.

Сoбcтвeннo гoвoря, выбирaл изнaчaльнo кoрпуc для РЭА в чипидипe и пoдoбныx мaгaзинax. Этo cтaндaртный кoрпуc, для кoтoрoгo пoтрeбуeтcя либo выпилить кoмплeктную пaнeль пo рaзмeрaм мoдуля либo изгoтoвить caмocтoятeльнo.

Цeнa вoпрoca oкoлo 600 рублeй плюc дocтaвкa зa плacтикoвый типoвoй кoрпуc. А c учeтoм cкидки зa прoшлый зaкaз cтoимocть мoeгo ceрoгo мeтaлличecкoгo прибoрнoгo кoрпуca RD былa нe cильнo дoрoжe.

В кoнцe кoнцoв я eгo и выбрaл.

Итaк, кoрпуc пришeл в пeнoплacтoвoй кoрoбкe, зaвeрнутый в мягкую упaкoвку.

Внутри aккурaтнo упaкoвaнный прибoрный кoрпуc oт RD (плocкий, ceрый) c бecплaтными крoкoдилaми (нa пaкeтe нaпиcaнo GIFT)

Кoрпуc тяжeлый, плюc дocтaтoчнo бoльшoй кoмплeкт, прeднaзнaчeнный для мoнтaжa прoгрaммируeмыx мoдулeй DPS/DPH/DР. Вecит кoмплeкт чуть мeнee 450 гр.А вoт caм прoфиль кoрпуca бeз пaнeлeй вecит 290 гр. Учитывaйтe этo.

Тo ecть вeрcия иcтoчникa питaния бeз бaтaрeи, бeз внeшнeгo иcтoчникa питaния и нa мoдуляx типa DPS5005 будeт вecить oкoлo 300гр, нo вeрcия c DPS5015 ужe пoдбирaeтcя к 400 гр плюc внeшний иcтoчник.Кoрпуc прeдcтaвляeт coбoй прoфилирoвaнныe мeтaлличecкиe (aлюминиeвaя экcтрузия) пoлoвинки, кoтoрыe вcтaвляютcя oднa в другую пo cпeциaльнoму пaзу.

Пo тaкoй cxeмe дeлaют нeкoтoрыe прибoрныe кoрпуca для cилoвoй элeктрoники (нaпримeр, aвтoмoбильныe инвeртoры), гдe трeбуeтcя oxлaждeниe и кoрпуc oднoврeмeннo игрaeт рoль рaдиaтoрa. Приcутcтвуeт oрeбрeниe прoфиля для oтвoдa тeплa.А вoт чтo лeжaлo внутри кoрпуca.

Этo двe пaнeли, крoкoдилы, мoнтaжнaя пeчaтнaя плaтa, вeнтилятoр, тумблeр, гнeздa и прoчиe клeммы (вилoчныe нa 4 мм, 5 шт).Кoмплeкт пocтaвки кoрпуca. Еcть дaжe прoвoдa нужнoй длины (2,5 кв мм), cиликoнoвыe нoжки, пeрeключaтeль питaния.А вoт внeшний вид мeтaлличecкиx пaнeлeй.

Приcутcтвуют вce нeoбxoдимыe oтвeрcтия и ничeгo нe трeбуeтcя дoрaбaтывaтьПримeркa пaнeли DPS5005Плaтa прeoбрaзoвaтeля питaния дo 5В для вeнтилятoрa. Онa жe являeтcя мoнтaжнoй плaтoй для пoдключeния гнeзд питaния и прoвoдoв oт пeрeключaтeля Вкл-Выкл.Кoмплeктный вeнтилятoр 40×40, внимaниe, нa 5В. Дocтaтoчнo длинный шнур, я дaжe нe знaю зaчeм тaкoй.

Вoзмoжнo для втoрoгo кoрпуca (унивeрcaльнocть). Пo идee нужнo или oтрeзaть в рaзмeр, пo мecту, или впaивaть aнaлoгичнoe гнeздo в плaту.Сoбирaeм oбe пaнeли кoрпуca
Приклeивaeм cиликoнoвыe нoжки нa нижнюю пoлoвину кoрпуcaОтрeзaeм, зaчищaeм и oбжимaeм прoвoдa. Зaрaнee прoшу прoщeния зa глaмурный фoн для фoтo.

Уcтaнaвливaeм cилoвoй мoдуль (бoльшaя плaтa c кoнтрoллeрoм) для DPS5015 или DPH3205. Нa фoтo DPH3205Нa этoм фoтo «примeркa» DPS5015Сoбирaeм кoрпуc, вeрнee вдвигaeм пoлoвинки oднa в другую пo caлaзкaмДaлee нужнo уcтaнoвить oбe пaнeлиВoт фoтoгрaфия кoрпуca c мoдулeм в cбoрe
Вoт фoтoгрaфия включeннoгo мoдуляПaнeль крупным плaнoм

Ещe фoтoгрaфии кoрпуca

Фoтo в cбoрe
Вид cпeрeдиЕщe фoтoгрaфияСмoтритcя oчeнь нeплoxoНa зaднюю cтeнку нe cтaнoвитcя, тaк кaк мeшaют клeммы cзaди.

У прoдaвцa ecть пoдрoбнoe видeo o прoцecce уcтaнoвки мoдулeй в кoрпуc

Для пoдключeния внeшнeгo БП, a тaкжe нaгрузки я пoльзуюcь кoмплeктoм прoвoдoв c клeммaми типa «бaнaн».

Вмecтo вывoдoв.
Кoрпуc кaчecтвeнный, xoтя и дoрoгoвaт. Еcли cрaвнивaть c тeм жe GOPHERT CPS-3205, тo пocлeдний cтoит oкoлo $50, имeeт мeньшe рaзряднocть пo V и А, нeт прoгрaммируeмыx прeдуcтaнoвoк и пaмяти. Нo GOPHERT пoчти в двa рaзa кoмпaктнee. Внeшний DC блoк питaния GOPHERT нe трeбуeтcя, oн питaeтcя oт 220В.

В кaчecтвe плюca мoeй кoнcтрукции: этo унивeрcaльнocть, тaк кaк я мoгу пoдключить вooбщe любoй иcтoчник питaния из нaличия, a пocлe иcпoльзoвaния — oтключить и вeрнуть нa мecтo.

В cлучae c DPH3205 я мoгу иcпoльзoвaть иcтoчник питaния oт 6В для пoлучeния нaпряжeния дo 32В.

Ещe в пoльзу унивeрcaльнocти: зa $50 я мoгу иcпoльзoвaть мoдуль DPS5015, и пoлучить xaрaктeриcтики нa урoвнe Gophert CPS-6011, cрeдняя цeнa кoтoрoгo oкoлo $150. При cooтвeтcтвующeм иcтoчникe питaния.

P.s. У прoдaвцa пoявилиcь вeрcии кoнтрoллeрa DPS5005 c пoдключeниeм пo USB/BT к кoмпьютeру. Сoфт мoжнo cкaчaть тут. Внeшний вид плaт (фoтo из лoтa прoдaвцa). Прoдaвeц пишeт o нecoвмecтимыx прoшивкax, тo ecть зaдeшeвo дoкупить плaту и прoшить cтaрый нe пoлучитcя.

Скрин прoгрaммы удaлeннoгo упрaвлeния -DPS5005 Communication version

(c) 2017 Источник материала

Источник: http://musku.ru/korpus-dlya-laboratornogo-istochnika-pitaniya-ot-ruideng-technologies/

Программируемый источник питания 0-50В 0-5А с цветным ЖК-дисплеем DPS5005 купить цена 4415 – Модули DC-DC понижающие

DPS5005 – Программируемый источник питания с DC-DC преобразователем напряжения и ЖК-дисплеем позволяет обеспечивать постоянное напряжение и постоянный ток путем программируемого управления.

Дальнейшая модификация программируемого источника DP50V5A

Диапазон входного напряжения 6 – 55.0В; 

Диапазон выходного напряжения 0 – 50.0В, шаг за 0.01В; 

Диапазон регулировки тока 0 – 5.000А, шаг за 0.001A; 

Данная модель имеет 10 групп хранимых в памяти значений напряжения. 

По сравнению с традиционным аналоговым источником питания – в данной модели удобно быстро выводить показания напряжения или тока на цветной ЖК-дисплей. 

Есть функция цифрового вольтметра, амперметра и ваттметра.  

Вы можете просмотреть предустановки: напряжения, входного напряжения, выходного напряжения, заданного тока, выходного тока и выходной мощности и яркости ЖК-дисплея.

Входное напряжение: 6.0 – 55В, выходное напряжение – 0 – 50,0В

При превышении выходного тока свыше 5А или температуры выше 65°С – преобразователь отключается.

На входе источника питания рекомендуется ставить электролитический конденсатор емкостью не менее 4700мкФ на напряжение не менее 63В, при нестабильном входном напряжении – дополнительно ставить LC-фильтры на входе.

Характеристики:

Вес: 113 грамм (без упаковки) Размер: 79мм * 43мм * 48мм (Д * Ш * В)  Размер для установки: 71мм * 39мм Выходной ток: 0 – 5.000А Выходная мощность: Максимальная 250Вт  Частота DC-DC-преобразователя: 330 кГц 

Диапазон входного напряжения: 6,0В – 55 (55В является ограничивающим максимальное напряжение. Использование более высокого напряжения недопустимо!) 

Диапазон выходного напряжения: 0В – 50.0В (режим понижения напряжения, входное напряжение должно быть более 1В чем выходное), кнопки управления позволяют быстро составить 2 наборов данных.  Пульсация пика до пикового значения : 50мВ (типовое значение) 

Информация на дисплее:

U-IN — входное напряжение U-SET — установленное выходное напряжение U-OUT — текущее выходное напряжение I-SET — установленный выходной ток I-OUT — реальный выходной ток POWER — текущая мощность в Вт.M-PRE — предустановки (10 шт всего)

LED — уровень подсветки (не запоминает)

При включении загорается кнопка ON и в зависимости от режима светится зеленая точка CV (стабилизация напряжения) или СС (стабилизация тока).

Кнопка SET переводит в режим настройки (а также выход из настройки), кнопки “вверх” “вниз” — выбор параметров, кнопка энкодера — разряд параметра, вращением устанавливаем нужное значение. Шаг установки 0,01 В и 0,001 А.

Удержание кнопок вверх/вниз загружает предустановку значений из памяти.

1 – установка напряжения / страницы, выбор данных из памяти

2 – установка данных настройки / выбор значение указанных данных / группы значений

3 – текущая настройка / страница выбор данных из памяти

4 – 1.44 дюймовый ЖК-дисплей экран

5 – потенциометр / Регулировка данных / заблокировать все кнопки

6 – включение или выключения выхода

7 – заданное значения выходное напряжения

8 – актуальное значение выходного напряжения

9 – фактическое значение выходного тока

10 – актуальное значение выходной мощности

11 – актуальное значение входного напряжения

12 – заданноео значения выходного тока

13 – блокировка клавиатуры или разблокировка

14 – Выход нормальной или нет, состояние

15 – постоянное напряжение и постоянный ток, состояние

16 – набор данных, состояние

17 – открытый или закрытый выход, состояние

18 – предустановленное выходное напряжение

19 – предустановленное выходной ток

20 – предустановленное перенапряжения

21 – предустановленная перегрузка по току

22 – предварительная установка по мощности

23 – предустановка яркости экрана

24 – предустановленный набор данных

25 – актуальное значение выходного напряжения и выходного тока

Источник: http://avrobot.ru/product_info.php?products_id=4415

Источник питания на основе управляемого Step-down модуля RD DPS5005 50V/5A (версия c USB/BT)

  • Цена: $27.84 (c USB/BT $34.43)
  • Всем привет!Небольшой обзор управляемого модуля DPS5005 от Ruideng Technologies.И сборка аккумуляторного блока питания на его основе.Модуль обеспечивает выход до 50 В и до 5А (при условии достаточного питания).Отдельно выделю возможность подключения данного модуля к компьютеру через USB или Bluetooth, что особенно актуально при аккумуляторном питании.Пока не закончились праздники, выкладываю из черновиков старую задумку про портативный лабораторный блок питания (ЛБП). В качестве главного компонента использую программируемый модуль Ruideng Technologies DPS5005, который представляет собой Step-Down преобразователь с контролируемыми параметрами (V, A, W с точностью до 0.01 единицы). Последние версии модулей были доработаны, как в части схемотехники, так и прошивки. А также есть опция удаленного подключения по USB/BT для управления и контроля выходных параметров.Небольшая ремарка: информации и впечатлений много. Я разделю ее на два обзора. Следом идет обзор на похожий модуль DPH5005, но с функцией Buck-boost конвертера напряжения. Модуль DPH5005 обеспечивает выходные параметры до 50V 5A при питания от аккумулятора/источника от 6 Вольт (* есть ограничение, более подробно в самом обзоре).Что касается обновленного RD DPS5005-C, то сейчас есть три версии:– просто DPS5005 communication version (с возможностью подключения адаптера связи, но без адаптера в комплекте);– DPS5005 USB board, что означает наличие в комплекте адаптера USB communication board;– DPS5005 USB + Bluetooth, что означает наличие в комплекте обоих адаптеров USB communication board+ Bluetooth communication Board.Сразу выделю два важных момента: платы не подходят к старым модулям DPS5005 (которые не communication version), и платы работают только по отдельности. Нельзя одновременно подключаться по USB и по BT. На модуле присутствует только один разъем для подключения одного адаптера (!). При использовании нужно будет выбирать: или USB, или BT.Внешний вид модуля DPS5005 communication version. Справа на рисунке представлены два адаптера для связи по USB и Bluetooth.Характеристики:Бренд: Ruideng TechnologiesМодель: DPS5005-CДиапазон входного напряжения: 6.00В — 55.00 ВДиапазон выходного напряжения: 0.00В — 50.00 ВВыходной ток: 0-5.000AВыходная мощность в диапазоне: 0-250 ВтВыходные пульсации:

Источник: http://moe-r.ru/span-istochnik-pitaniya-na-osnove-upravlyaemogo-step-down-modulya-rd-dps5005-50v-5a-versiya-c-usb-bt-span.html

Обзор модуля DPS5005-C

Обзор модуля DPS5005-C

DPS5005-C — Программируемый DC-DC Step Down преобразователь. Новенькая модель пришедшая на замену DPS5005 функционально фактически не поменялась, кроме способности подключения к ПК,

Модуль куплен на Алиэкспресс в официальном магазине производителя RD official store. Цены на момент покупки были: 31$ за версию с USB и 34$ за версию с USB и Блютуз модулями связи.

Мною был избран модуль с наибольшим выходным напряжением до 50В и током до 5А, также есть версия с максимальным выходным напряжением 30В и током до 5А (DPS3005-C) но разница в стоимости со старшей моделью всего 1$, 30$ и 33$ соответственно.

Главные характеристики DPS5005-C:

Производитель — Hangzhou Ruideng Technologies Co., Ltd; Экран — ЖК, 1.44 дюймов, 128×128 pixels; Выходное разрешение по напряжению — 0.01В; Выходное разрешение по току — 0.001А; Точность по напряжению — ± (0.

5% + 1d); Точность по току — ± (0.

5% + 2d); Входное напряжение — 6 — 55В; Выходное напряжение — 0 — 50В; Выходной ток — 0 — 5А; Выходная мощность — 0 — 250Вт; Размер — 79*43*48 мм; Размер места посадки — 71*39 мм; Возможность зарядки АКБ; Вес — 113г.

Пришла посылка за 14 дней, упаковано в пенопластовую коробку, все дошло в целости и сохранности.

В комплекте:

DC-DC модуль DPS5005-C; USB-UART конвертер; Соединительный кабель; Аннотация на Китайском и Британском.

Фото DPS5005-C:

USB-UART конвертер построен на очень известной микросхеме CH340G, в модуле реализовано гальваническую развязку на транзисторных оптопарах EL357N.

Размеры места посадки для установки в корпус:
Ширина — 71.4 мм

Высота — 39.05 мм

Внутренности:
Весь модуль состоит из 3х плат соединенных меж собой 8-пиновыми коннекторами:

Видимо конструкция не предугадывает разборки, так как 8-пиновые коннекторы припаяны:

К счастью в вебе нашлась фото платы модуля, которая прикрыта экраном:

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

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

Для питания всей логики модуля, использован DC-DC ШИМ конвертер XL7005A, наибольшее входное напряжение 65В, невзирая на заявленные свойства входного напряжения до 55В, производитель предугадал припас, в виде входных ёмкостей до 63В и конвертер до 65В, таким макаром на теоретическом уровне модуль можно питать от блока питания прямо до 59В, «Сильное заявление, инспектировать я его естественно не буду».

Около радиатора разместилась микросхема HY1106, по инфы из Китайских веб-сайтов, это N-канальных MOSFET на 60В, 11А.

На охлаждающем радиаторе разместился P-канальный MOSFET 2SJ652 60В, 28А.
Так же на радиаторе разместилась сборка из 2-ух диодов Шоттки MBR20100CT.

В качестве выходной ёмкости, использован твердотельный конденсатор на 50В 220 мкф.

Для подключения входных и выходных проводов, применяется съемная клеммная колодка под винт, что позволяет тихо подключить провода, не повредив сам модуль:

Для подключения модуля связи, употребляется 4-контактный разъем:

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

Модуль DPS5005 имеет 10 ячеек памяти в каких можно сохранить предустановки всех характеристик, таким макаром всего несколькими нажатиями можно поменять полностью все характеристики.

Так же ячейки памяти M1 и M2 доступны для резвого вызова, при помощи длинноватого удержания кнопки V/↑ и А/↓ соответственно.

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

ОПисание интерфейса:

(1) Кнопка резвой установки выходного напряжения/Кнопка навигации по дополнительном меню/Ярлычек резвого вызова ячейки памяти M1(Удержание 3 сек.

); (2) Кнопка вызова дополнительного меню/Сохранение выставленных характеристик; (3) Кнопка резвой установки выходного тока/Кнопка навигации по дополнительном меню/Ярлычек резвого вызова ячейки памяти M2(Удержание 3 сек.); (4) 1.

44 дюймов ЖК-дисплей; (5) Энкодер для установки характеристик/Кнопка переключения изменяемых разрядов/Блокировка всех кнопок(Удержание 3 сек.); (6) Включение/Выключение выхода.

(7) Данное значение выходного напряжения; (8) Текущее значение выходного напряжения; (9) Текущее значение выходного тока; (10) Текущее значение выходной мощности; (11) Текущее значение входного напряжения; (12) Данное значение выходного тока; (13) Напоминание состояния блокировки управления; (14) Напоминание состояния выхода (норма либо защиты по току/напряжению/мощности); (15) Напоминание в каком состоянии находится блок (стабилизация тока либо стабилизация напряжения); (16) Напоминание текущей ячейки памяти; (17) Напоминание состояния выхода (Включено либо Выключено); (18) Предустановленное выходное напряжение; (19) Предустановленный выходной ток; (20) Защита от завышенного выходного напряжения; (21) Защита от перегрузки по выходному току; (22) Защита от перегрузки по мощности; (23) Установка яркости монитора; (24) Выбор резвой ячейки памяти; (25) Текущее значение выходного тока и напряжения.

Испытания:

В режиме когда выход выключен, на выходе присутствует постоянная составляющая 0.0096 В. Это значение не находится в зависимости от установленного выходного напряжения, или от входного напряжения, предполагаю что это напряжение смещения управляющего операционного усилителя.

Такое напряжение не жутко, его не хватит даже для открытия p-n-перехода, но необходимо держать в голове, что на выходе нету реального 0, это может быть принципиально в неких ситуациях.

В том же режиме при маленьком замыкании, модуль выдает ток в 0.003 А.

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

Выходное напряжение:
Модуль отлично откалиброван, установленный уровень напряжения на сто процентов соответствует выходному, измерение выходного напряжения так же соответствуют заявленным чертам, погрешность измерений (± 1d).

Выходной ток:

При установленном выходном токе в 0А на выходе по прежнему 0.003А.

Смещение в 3мА находится прямо до 4А.

Ток вправду можно регулировать с разрешением 0.001А, уменьшив выходной ток на 0.003А таким макаром восполнить смещение:

В целом выходной и измеряемый ток вполне соответствует заявленным характеристикам ± 0.5% +2d.

КПД:
Тест 1
Входное напряжение 10В ток 1.09А (входная мощность 10.9Вт) Выходная мощность 10Вт, таким макаром 10/10.9=0.917.

КПД практически 92%

Тест 2

Входное напряжение 31В ток 3.3А (входная мощность 102.3Вт) Выходная мощность 100Вт, таким макаром 100/102.3=0.977. КПД практически 98%

Даже с учетом погрешностей измерений итог хороший!

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

Выходные пульсации; Разные переходные процессы(при включении, при выключении, при включении выхода и тд.); Скорость срабатывания стабилизации тока; Превышение тока при КЗ; Скорость срабатывания защиты по току; Скорость срабатывания защиты по напряжению. Устойчивость к стремительно изменяемой нагрузке.

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

Чтоб проверить собственные пульсации модуля DPS5005-C, для первых тестов я решил запитать его от АКБ.

Измерение выходных пульсаций:

Питание — АКБ; Выход без нагрузки; Пульсации — 0.5мВ. Питание — АКБ; Нагрузка 12.5Вт; Частота преобразователя 65кГц; Пульсации — 9.5мВ.

Питание — АКБ; Нагрузка 25Вт; Частота преобразователя 65кГц; Пульсации — 9.7мВ.

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

Питание — Импульсный БП; Выход без нагрузки; Пульсации — 2.8мВ.

Как видно шум от импульсного БП тихо проходит и картина кардинально изменяется.

Питание — Импульсный БП; Нагрузка 12.5Вт; Частота преобразователя 65кГц; Пульсации — 30мВ.
Питание — Импульсный БП; Нагрузка 25Вт; Частота преобразователя 65кГц; Пульсации — 32.6мВ.

Как видно на той же нагрузке, разница при питании от АКБ либо от Импульсного БП более чем в 3 раза.

Питание — Импульсный БП; Нагрузка 100Вт; Частота преобразователя 65кГц; Пульсации — 41.4мВ.

Невзирая на ухудшение результатов при питании от импульсного БП, пульсации 41мВ на нагрузке в 100Вт можно считать хорошим результатом.

Переходные процессы:

Впору включения питания, на выходе модуля не появляется сторонних выбросов.

Выходное напряжение 30В, включение выхода при помощи кнопки ON/OFF, нагрузка отсутствует.
Набор установленного напряжения плавный, без сторонних выбросов и перенапряжения.

Выходное напряжение 21В, включение выхода при помощи кнопки ON/OFF, нагрузка 80Вт.

Выходное напряжение 21В, выключение выхода при помощи кнопки ON/OFF, нагрузка 80Вт.

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

Режим стабилизации тока, включение выхода при помощи кнопки ON/OFF.

Как видно ток плавненько растет и стабилизируется на данном уровне.

Режим стабилизации тока, выход включен, выходное напряжение 30В, ограничение тока 1А.
Впору недлинного замыкания, краткосрочно ток подскакивает практически до 5А, плавненько падает за 4 мс после чего идет маленькое перерегулирование и стабилизация на данном уровне.

Увлекательный аспект, если прирастить восходящий фронт, впору КЗ краткосрочно выходной ток падает до 0, позже ворачивается до прежнего уровня и плавненько понижается до данного порога, дребезг контактов исключен, потому что замыкание выполнялось через N-канальный MOSFET, по всей видимости идет попадание в такт ШИМ модуляции, из-за чего выходная ёмкость успевает разрядится.

Режим стабилизации тока, выход включен, выходное напряжение 30В, ограничение тока 5А.
Пик тока краткосрочно добивается уровня около 7А, после этого понижается до 3.5А и стабилизируется на данном уровне.

Переход от режима стабилизации напряжения в режим стабилизации тока.
Выход включен, выходной ток 3.5А, КЗ вызывает ограничение тока на уровне 5А.

Как и в прошлом случае пик тока добивается уровня около 7А после этого плавненько спускается до данного уровня.

Переход от режима стабилизации напряжения в режим стабилизации тока и назад.
Выход включен, выходной ток 3.5А, КЗ вызывает ограничение тока на уровне 5А, спустя 45 мс КЗ пропадет и блок ворачивается в режим стабилизации напряжения.

Переход от режима стабилизации напряжения в режим стабилизации тока и назад с частотой 9Гц.

Режим (OCP — Overcurrent Protection) защита по току, в случае превышения данного уровня тока, выход стопроцентно отключается.

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

5А, КЗ вызывает бросок тока до 7А и следующее ограничение тока на уровне 5А, и спустя 350 мс сработала защита по току и отключила выход.

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

Режим (OCP — Overcurrent Protection) защита по току, включение выхода при помощи кнопки ON/OFF.
Как видно после включения, ток плавненько стабилизировался на данном уровне, и спустя 450 мс сработала защита по току и отключила выход.

После срабатывания защиты на мониторе отображается состояние, в этом случае (OCP), которое позволяет осознать, что конкретно вызвало защитное отключение.

Режим (OVP — Overcurrent Protection) защита от перенапряжения. включение выхода при помощи кнопки ON/OFF.
Установленное значение выходного напряжения 30В, защита от перенапряжения 9В.

Как видно после включения, напряжение плавненько стабилизировался на уровне ограничения(хотя выставлено 30В), и спустя 450 мс сработала защита и отключила выход.

Подключение к ПК:

Для подключения к ПК употребляется комплектный USB-UART конвертер.

Интерфейс программки:

Для установления соединения, необходимо избрать верный COM-порт и надавить кнопку Connect, после успешного установления связи, программка перекроет управление клавишами, все управление осуществляется через программку.

На главном меню а конкретно Basic function, мы лицезреем две виртуальные ручки для регулировки выходного тока и напряжения, регулировать можно как крутя ручку, так и вводя значение в нижнем окне.

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

Графики показывают текущее значение напряжения и тока во времени.

Вкладка Advanced function дает дополнительные способности для автоматизации.
Пункт (Data group operation) позволяет считывать данные из 10 ячеек памяти, редактировать характеристики и записывать их назад в память.

Функция Auto test позволяет автоматом изменять выходное напряжение и ток с данным интервалом, к огорчению доступно всего 10 шагов после этого выход выключается.

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

Функция Current позволяет автоматом изменять выходное напряжение с данным шагом и задержкой.

Принципиально! Потому что после подключения программки к ПК блокируется физическое управление модулем, перед закрытием программки, непременно нужно надавить кнопку Disconnect, по другому модуль будет оставаться в заблокированном состоянии, которое нельзя снять без перезагрузки модуля или повторного подключения-отключения программки.

Малость инфы от производителя:
Потому что модуль покупался в официальном магазине производителя, я задал несколько вопросов:

Можно ли вручную откалибровать устройство? У меня версия DPS5005-C, может быть, в дальнейшем появится возможность обновить прошивку устройства через ПК? Планируете ли вы выпускать версии с огромным размером экрана?

Ответы:

НЕТ, почему вы желаете откалибровать? Что случилось, не точность?; Пока таковой способности нет, но эта версия может быть; Да, мы проектируем, но четкое время выпуска не решено.

Так же производитель не советует, для питания модуля использовать дешевенькие Китайские AC-DC блоки питания, коих много на Алиекспресс, видимо были прецеденты когда такие блоки питания повреждали сами модули.

Для тех кому не много выходного тока 5А, не так давно производитель выпустил новые версии DPS5015-C и DPS5020-C на 15 и 20А соответственно.

Мой отзыв:

Модуль DPS5005-C непременно хороший продукт, который удачно впишется в лабораторию хоть какого радиолюбителя, схожий функционал доступен только в ЛБП ценового спектра 200$+.
Минусы:

Броски тока при срабатывании стабилизации тока (Большая выходная емкость, хотя в дешевеньких китайских ЛБП выходная емкость еще более); Достаточно большая задержка срабатывания защит по току/напряжению/мощности; Нет способности, откалибровать измерение тока и напряжения.

Плюсы:

Хорошее качество монитора (Углы обзора); Высококачественные составляющие; Высочайший КПД прямо до 98% Низкие пульсации; Высочайшая точность установки выходных характеристик; Высочайшая точность измерения выходных характеристик; Возможность подключения к ПК; Возможность зарядки АКБ; Функционал; Ячейки памяти; Резвый вызов предустановленных характеристик.

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

Блок питания DC/DC преобразователь LCD

Источник: http://bloggoda.ru/2017/10/04/obzor-modulya-dps5005-c/

Применительно к модулю DPS5005 определение реверс-инжиниринга можно описать как изучение работы «железа» (аппаратной части STM32) и написание программного обеспечения для управления этим «железом».

Я, собственно, — разработчик. Это есть моя основная работа. У меня всегда находятся «под рукой» как принципиальные схемы устройств, так и их прототипы. Но на этот раз у меня не было ничего. Это сильно осложняло мою задачу.

Блин! С чего начинать?

Рассматривая печатную плату я нашёл контакты последовательного порта.

Контакты SWD-порта и под ними — контакты последовательного порта

Но порт был «глухим», совершенно безмолвным. Фейковый картонный порт! Позже я выяснил, что фирменное ПО даже не пыталось инициализировать этот порт.

Конструкция модуля такова, что TFT-дисплей находится над микроконтроллером STM32 и закрывает к нему доступ. До кучи, дисплей подключается не через разъём к плате процессора, а припаян к ней с помощью восьми пинов.

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

Да, ладно! Всё равно с чего-то надо было начинать. А с другой стороны, имея открытый доступ к STM32 я быстро определил в верхней части платы пять контактов для подключения SWD-программатора и порт трассировки SWO (см. фото выше).

Но, вот, вопрос — а не залочил ли производитель доступ к SWO-порту? К счастью, оказалось, что — нет. Ну так всё хорошо, ребята! Живём!

Подключение программатора STLink к SWD-порту

После подпайки разъёма и подключения его к дешевому китайскому клону STLink я запустил OpenOCD со следующими конфигурационными файлами:

% openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg

GNU ARM Eclipse 64-bits Open On-Chip Debugger 0.10.0-dev-00498-gbbfb673 (2016-10-28-19:13)
 Licensed under GNU GPL v2
 For bug reports, read
 http://openocd.org/doc/doxygen/bugs.html
 Info : auto-selecting first available session transport "hla_swd". To override use 'transport select '.
 Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
 adapter speed: 1000 kHz
 adapter_nsrst_delay: 100
 none separate
 Info : Unable to match requested speed 1000 kHz, using 950 kHz
 Info : Unable to match requested speed 1000 kHz, using 950 kHz
 Info : clock speed 950 kHz
 Info : STLINK v2 JTAG v17 API v2 SWIM v4 VID 0x0483 PID 0x3748
 Info : using stlink api v2
 Info : Target voltage: 3.245093
 Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints

Й-йес!!!

Следующим шагом, чтобы протестировать модуль, я подключится к OpenOCD:

% telnet localhost 4444
> halt
> stm32f1x options_read 0

Option Byte: 0x3fffffe
Readout Protection On
Software Watchdog
Stop: No reset generated
Standby: No reset generated
User Option0: 0xff
User Option1: 0xff

Однако, оказалось, что у STM32 была включена «защита от чтения». «Защита от чтения» означает, что вы не сможете прочитать залитое в микроконтроллер ПО.

Ну-у, в моём случае это не большая проблема. Меня больше интересовала не сама прошивка, а то, чем она управляет.

Итак, что мне нужно знать, чтобы написать свое ПО для проекта OpenDPS?

Мне нужно знать:

  • распределение выводов GPIO-портов — куда подключены кнопки управления, куда дисплей и т.д.
  • какие драйверы периферийных устройств STM32 задействованы
  • как регулируется выходное напряжение (с помощью ЦАП?)
  • как осуществляется ограничение тока (может быть с помощью АЦП?)
  • как определяется значения входного и выходного напряжений (определённо с помощью АЦП)
  • как задается яркость подсветки дисплея (в этом нет необходимости, но всё же!)
  • тип драйвера TFT-дисплея.

Чтобы облегчить себе работу я написал прогу на Питоне ocd-client.py. Прога подключается к OpenOCD и производит распечатку регистров периферийных устройств STM32.

(На всякий случай я здесь продублирую полностью весь исходник, — А.Ж.)

#!/usr/bin/python

import socket
import sys

prompt = "> "

ocd_sock = False

def ocd_exchange(str = ""):
    output = ""
    line = ""
    got_prompt = False
    if len(str) > 0:
        ocd_sock.send(str)
    while 1:
        try:
            ch = ocd_sock.recv(1)
#            print "'%s' [%02x]" % (ch, ord(ch))
            if len(ch) > 0:
                if ch == '\d':
                    pass
                elif ch == '\n':
 #                   print "--------------------------"
 #                   print line
                    if "%s\n" % line != str:
                        output += "%s\n" % line
                    line = ""
                elif ord(ch) >= 32 and ord(ch) <= 126: line += ch # print "[%s]" % line if line == prompt: # print "===========================" # print line got_prompt = True break else: break except socket.timeout, e: break # print line # print ">>>>>>>>>>>>>>>>>>"
#    print output
#    print "<<<<<<<<<<<<<<<<<<"
#    if got_prompt:
    return output.strip()
#    else:
#        return False

def ocd_sync():
    return ocd_exchange()

def ocd_read(address):
    response = ocd_exchange("mdw 0x%08x 1\n" % (address))
    parts = response.split(":")
    if len(parts) != 2:
        print ("Parsing error: %s" % response)
        return False
    temp_address = int(parts[0].strip(), 16)
    value = int(parts[1].strip(), 16)
    if temp_address != address:
        print ("Address error: %s" % response)
        return False
    return value

def ocd_write(address, value):
    response = ocd_exchange("mww 0x%08x 0x%08x\n" % (address, value))

known_pins = {
    "PA0"  : ["", "U7 "],
    "PA1"  : ["M2 button", ""],
    "PA2"  : ["SEL button", ""],
    "PA3"  : ["M1 button", ""],
    "PA4"  : ["DAC1_OUT", "PWM.2 (1IN-)"],
    "PA5"  : ["DAC2_OUT", "PWM.15 (2IN-)"],
    "PA7"  : ["ADC1_IN7", "R30-U2.7:V_OUT-B (measures Vout)"],
    "PA8"  : ["TFT.7", "(not used by TFT)"],
    "PA14" : ["", "SWDCLK"],
    "PA15" : ["", "R41-PWM.16 (PWM 2IN+)"],
    "PB0"  : ["ADC1_IN8", "R7/R2-R14-D4 (measures Vin)"],
    "PB1"  : ["ADC1_IN9", "R33-U2.1:V_OUT-A (probably measures Iout)"],
    "PB3"  : ["", "R11-R17-R25-U2.5 (V_inB+)"],
    "PB4"  : ["PWR button", ""],
    "PB5"  : ["Rotary press", ""],
    "PB6"  : ["", "NC?"],
    "PB7"  : ["TIM4_CH2", ""],
    "PB8"  : ["Rotary enc", ""],
    "PB9"  : ["Rotary enc", ""],
    "PB11" : ["nPwrEnable", "R29-TFT.2 (TFT_VCC)"],
    "PB12" : ["SPI2_NSS", "TFT_RESET"],
    "PB13" : ["SPI2_SCK", ""],
    "PB14" : ["SPI2_MISO", "TFT_A0"],
    "PB15" : ["SPI2_MOSI", ""],
    "PD1"  : ["", "U7"],
}

ADC1_BASE  = 0x40012400
AFIO_BASE  = 0x40010000
DAC_BASE   = 0x40007400
DMA1_BASE  = 0x40020000
EXTI_BASE  = 0x40010400
GPIOA_BASE = 0x40010800
GPIOB_BASE = 0x40010c00
GPIOC_BASE = 0x40011000
GPIOD_BASE = 0x40011400
GPIOE_BASE = 0x40011800
GPIOF_BASE = 0x40011C00
GPIOG_BASE = 0x40012000
RCC_BASE   = 0x40021000
SPI1_BASE  = 0x40013000 
SPI2_BASE  = 0x40003800 
TIM1_BASE  = 0x40012C00
TIM2_BASE  = 0x40000000
TIM3_BASE  = 0x40000400
TIM4_BASE  = 0x40000800
TIM6_BASE  = 0x40001000
TIM7_BASE  = 0x40001400
TIM15_BASE = 0x40014000
TIM16_BASE = 0x40014400
TIM17_BASE = 0x40014800

# SPI1 registers
SPI_CR1 = 0x00
SPI_CR2 = 0x04
SPI_SR = 0x08
SPI_DR = 0x0C
SPI_CRCPR = 0x10
SPI_RXCRCR = 0x14
SPI_TXCRCR = 0x18


# TIM2 to TIM5 registers (checked)
TIMx_CR1   = 0x00
TIMx_CR2   = 0x04
TIMx_SMC   = 0x08
TIMx_DIER  = 0x0c
TIMx_SR    = 0x10
TIMx_EGR   = 0x14
TIMx_CCMR1 = 0x18
TIMx_CCMR2 = 0x1c
TIMx_CCER  = 0x20
TIMx_CNT   = 0x24
TIMx_PSC   = 0x28
TIMx_ARR   = 0x2c
TIMx_RCR   = 0x30
TIMx_CCR1  = 0x34
TIMx_CCR2  = 0x38
TIMx_CCR3  = 0x3c
TIMx_CCR4  = 0x40
TIMx_BDTR  = 0x44
TIMx_DCR   = 0x48
TIMx_DMAR  = 0x4c


# ADC registers (checked)
ADC_SR    = 0x00
ADC_CR1   = 0x04
ADC_CR2   = 0x08
ADC_SMPR1 = 0x0C
ADC_SMPR2 = 0x10
ADC_JOFR1 = 0x14
ADC_JOFR2 = 0x18
ADC_JOFR3 = 0x1C
ADC_JOFR4 = 0x20
ADC_HTR   = 0x24
ADC_LTR   = 0x28
ADC_SQR1  = 0x2C
ADC_SQR2  = 0x30
ADC_SQR3  = 0x34
ADC_JSQR  = 0x38
ADC_JDR1  = 0x3C
ADC_JDR2  = 0x40
ADC_JDR3  = 0x44
ADC_JDR4  = 0x48
ADC_DR    = 0x4C

# DAC registers (checked)
DAC_CR      = 0x00
DAC_SWTRIGR = 0x04
DAC_DHR12R1 = 0x08
DAC_DHR12L1 = 0x0C
DAC_DHR8R1  = 0x10
DAC_DHR12R2 = 0x14
DAC_DHR12L2 = 0x18
DAC_DHR8R2  = 0x1c
DAC_DHR12RD = 0x20
DAC_DHR12LD = 0x24
DAC_DHR8RD  = 0x28
DAC_DOR1    = 0x2C
DAC_DOR2    = 0x30
DAC_SR      = 0x34

# GPIO registers (checked)
GPIOx_CRL    = 0x00
GPIOx_CRH    = 0x04
GPIOx_IDR    = 0x08
GPIOx_ODR    = 0x0c
GPIOx_BSRR   = 0x10
GPIOx_BRR    = 0x14
GPIOx_LCKR   = 0x18

# EXTI registers (checked)
EXTI_IMR     = 0x00
EXTI_EMR     = 0x04
EXTI_RTSR    = 0x08
EXTI_FTSR    = 0x0c
EXTI_SWIER   = 0x10
EXTI_PR      = 0x14

# AFIO registers (checked)
AFIO_EVCR    = 0x00
AFIO_MAPR    = 0x04
AFIO_EXTICR1 = 0x08
AFIO_EXTICR2 = 0x0c
AFIO_EXTICR3 = 0x10
AFIO_EXTICR4 = 0x14
AFIO_MAPR2   = 0x18

# RCC registers (checked)
RCC_CR       = 0x00
RCC_CFGR     = 0x04
RCC_CIR      = 0x08
RCC_APB2RSTR = 0x0c
RCC_APB1RSTR = 0x10
RCC_AHBENR   = 0x14
RCC_APB2ENR  = 0x18
RCC_APB1ENR  = 0x1c
RCC_BDCR     = 0x20
RCC_CSR      = 0x24
RCC_CFGR2    = 0x2c

# DMA registers (checked)
DMA_ISR      = 0x00
DMA_IFCR     = 0x04
DMA_CCR1     = 0x08
DMA_CNDTR    = 0x0C
DMA_CPAR1    = 0x10
DMA_CMAR1    = 0x14
#             0x18
DMA_CCR2     = 0x1C
DMA_CNDTR    = 0x20
DMA_CPAR2    = 0x24
DMA_CMAR2    = 0x28
#              0x2C
DMA_CCR3     = 0x30
DMA_CNDTR    = 0x34
DMA_CPAR3    = 0x38
DMA_CMAR3    = 0x3C
#              0x40
DMA_CCR4     = 0x44
DMA_CNDTR    = 0x48
DMA_CPAR4    = 0x4C
DMA_CMAR4    = 0x50
#              0x54
DMA_CCR5     = 0x58
DMA_CNDTR    = 0x5C
DMA_CPAR5    = 0x60
DMA_CMAR5    = 0x64
#              0x68
DMA_CCR6     = 0x6C
DMA_CNDTR    = 0x70
DMA_CPAR6    = 0x74
DMA_CMAR6    = 0x78
#              0x7C
DMA_CCR7     = 0x80
DMA_CNDTR    = 0x84
DMA_CPAR7    = 0x88



register_map = [
  [0x40023000, 0x400233FF, "CRC"], 
  [0x40022000, 0x400223FF, "Flash memory interface"], 
  [0x40021000, 0x400213FF, "Reset and clock control RCC"], 
  [0x40020000, 0x400203FF, "DMA1"], 
  [0x40014800, 0x40014BFF, "TIM17 timer"], 
  [0x40014400, 0x400147FF, "TIM16 timer"], 
  [0x40014000, 0x400143FF, "TIM15 timer"], 
  [0x40013800, 0x40013BFF, "USART1"], 
  [0x40013000, 0x400133FF, "SPI1"], 
  [0x40012C00, 0x40012FFF, "TIM1 timer"], 
  [0x40012400, 0x400127FF, "ADC1"], 
  [0x40011800, 0x40011BFF, "GPIO Port E"], 
  [0x40011400, 0x400117FF, "GPIO Port D"], 
  [0x40011000, 0x400113FF, "GPIO Port C"], 
  [0x40010C00, 0x40010FFF, "GPIO Port B"], 
  [0x40010800, 0x40010BFF, "GPIO Port A"], 
  [0x40010400, 0x400107FF, "EXTI"], 
  [0x40010000, 0x400103FF, "AFIO"], 
  [0x40007800, 0x40007BFF, "CEC"], 
  [0x40007400, 0x400077FF, "DAC"], 
  [0x40007000, 0x400073FF, "Power control PWR"], 
  [0x40006C00, 0x40006FFF, "Backup registers (BKP)"], 
  [0x40005800, 0x40005BFF, "I2C2"], 
  [0x40005400, 0x400057FF, "I2C1"], 
  [0x40004800, 0x40004BFF, "USART3"], 
  [0x40004400, 0x400047FF, "USART2"], 
  [0x40003800, 0x40003BFF, "SPI2"], 
  [0x40003000, 0x400033FF, "Independent watchdog (IWDG)"], 
  [0x40002C00, 0x40002FFF, "Window watchdog (WWDG)"], 
  [0x40002800, 0x40002BFF, "RTC"], 
  [0x40001400, 0x400017FF, "TIM7 timer"], 
  [0x40001000, 0x400013FF, "TIM6 timer"], 
  [0x40000800, 0x40000BFF, "TIM4 timer"], 
  [0x40000400, 0x400007FF, "TIM3 timer"], 
  [0x40000000, 0x400003FF, "TIM2 timer"]
]


port_addresses = [GPIOA_BASE, GPIOB_BASE, GPIOC_BASE, GPIOD_BASE, GPIOE_BASE, GPIOF_BASE, GPIOG_BASE]

CRL_CNF_IN = ["An", "Flt", "PuPd", "RFU"]
CRL_CNF_IN_ANALOG = 0
CRL_CNF_IN_FLOAT = 1
CRL_CNF_IN_PUPD = 2
CRL_CNF_IN_RFU = 3

CRL_CNF_OUT = ["PP", "OD", "AF-PP", "AF-OD"]
CRL_CNF_OUT_PP = 0
CRL_CNF_OUT_OD = 1
CRL_CNF_OUT_AF_PP = 2
CRL_CNF_OUT_AF_OD = 3

CRL_MODE = [0, 10, 2, 50]
CRL_MODE_IN = 0
CRL_MODE_OUT_10MHZ = 1
CRL_MODE_OUT_2MHZ = 2
CRL_MODE_OUT_50MHZ = 3

def print_gpio_pin(port_nbr, pin, cnf, mode, level):
    cnf_i = ["GPIO_CNF_INPUT_ANALOG", "GPIO_CNF_INPUT_FLOAT", "GPIO_CNF_INPUT_PULL_UPDOWN", "##### RESERVED #####"]
    cnf_o = ["GPIO_CNF_OUTPUT_PUSHPULL", "GPIO_CNF_OUTPUT_OPENDRAIN", "GPIO_CNF_OUTPUT_ALTFN_PUSHPULL", "GPIO_CNF_OUTPUT_ALTFN_OPENDRAIN"]
    modes = ["GPIO_MODE_INPUT", "GPIO_MODE_OUTPUT_10_MHZ", "GPIO_MODE_OUTPUT_2_MHZ", "GPIO_MODE_OUTPUT_50_MHZ"]

    if mode == 0:
        cnfs = cnf_i
    else:
        cnfs = cnf_o
    a = "gpio_set_mode(GPIO%c, %s, %s, GPIO%d);\n" % (ord('A')+port_nbr, modes[mode], cnfs[cnf], pin)
    if mode == 0 and cnf == 2:
        if level == 0:
            a += "gpio_clear(GPIO%c, GPIO%d);\n" % (ord('A')+port_nbr, pin)
        elif level == 1:
            a += "gpio_set(GPIO%c, GPIO%d);\n" % (ord('A')+port_nbr, pin)
        else:
            a += "rusk!!!!!!!!"
    return a


def dump_port_settings(port_nbr):
#    print("Checking GPIO%c" % (ord('A') + port_nbr))
    crl = ocd_read(port_addresses[port_nbr] + GPIOx_CRL)
    crh = ocd_read(port_addresses[port_nbr] + GPIOx_CRH)
    idr = ocd_read(port_addresses[port_nbr] + GPIOx_IDR)
    odr = ocd_read(port_addresses[port_nbr] + GPIOx_ODR)
    for pin in range(0, 16):
        if pin < 8: mode = (crl >> (4*pin)) & 3
            cnf = (crl >> (4*pin+2)) & 3
        else:
            mode = (crh >> (4*(pin-8))) & 3
            cnf = (crh >> (4*(pin-8)+2)) & 3
        pin_s = "P%c%d" % (ord('A')+port_nbr, pin)
        if mode == CRL_MODE_IN:
            level = (idr >> pin) & 1
            info = "%-4s I %d %-5s" % (pin_s, level, CRL_CNF_IN[cnf])
        else:
            level = (odr >> pin) & 1
            info = "%-4s O %d %-5s  (%d Mhz)" % (pin_s, level, CRL_CNF_OUT[cnf], CRL_MODE[mode])
        if pin_s in known_pins:
            desc = known_pins[pin_s]
        else:
            desc = ["", ""]
        setting = print_gpio_pin(port_nbr, pin, cnf, mode, level)
        print("// %-30s %-15s %s" % (info, desc[0], desc[1]))
        print("%s" % (setting))



def dump_gpio_port_settings():
    for port in range(0, 4):
        dump_port_settings(port)


def dump_reg(name, address):
    value = ocd_read(address)
    print("%-8s : 0x%08x  [0x%08x]" % (name, value, address))


"""
CR1      : 0x00000081  [00] ARPE=1 CEN=1
CR2      : 0x00000000  [04] 
SMCR     : 0x00000000  [08] 
DIER     : 0x00000000  [0c] 
SR       : 0x0000001f  [10] CC4IF=1 CC3IF=1 CC2IF=1 CC1IF=1 UIF=1
EGR      : 0x00000000  [14] 
CCMR1    : 0x00006800  [18] OC2M=2 OC2PE=1 
CCMR2    : 0x00000000  [1c] 
CCER     : 0x00000010  [20] CC2P=1
CNT      : 0x000056ed  [24] <counter>
PSC      : 0x00000000  [28] 
ARR      : 0x00005dbf  [2c] <auto reload>
CCR1     : 0x00000000  [34]
CCR2     : 0x00005dc0  [38] <TIM2 compare register 2>
CCR3     : 0x00000000  [3c]
CCR4     : 0x00000000  [40]
DCR      : 0x00000000  [48]
DMAR     : 0x00000081  [4c] DMA address

U           ARR         CCR2
1.00        0x00005dbf  0x00005dc0

"""

def dump_tim_settings(name, base_addr):
    print("%s settings" % (name))
    dump_reg("CR1",   base_addr + TIMx_CR1)
    dump_reg("CR2",   base_addr + TIMx_CR2)
    dump_reg("SMC",   base_addr + TIMx_SMC)
    dump_reg("DIER",  base_addr + TIMx_DIER)
    dump_reg("SR",    base_addr + TIMx_SR)
    dump_reg("EGR",   base_addr + TIMx_EGR)
    dump_reg("CCMR1", base_addr + TIMx_CCMR1)
    dump_reg("CCMR2", base_addr + TIMx_CCMR2)
    dump_reg("CCER",  base_addr + TIMx_CCER)
    dump_reg("CNT",   base_addr + TIMx_CNT)
    dump_reg("PSC",   base_addr + TIMx_PSC)
    dump_reg("ARR",   base_addr + TIMx_ARR)
    dump_reg("RCR",   base_addr + TIMx_RCR)
    dump_reg("CCR1",  base_addr + TIMx_CCR1)
    dump_reg("CCR2",  base_addr + TIMx_CCR2)
    dump_reg("CCR3",  base_addr + TIMx_CCR3)
    dump_reg("CCR4",  base_addr + TIMx_CCR4)
    dump_reg("BDTR",  base_addr + TIMx_BDTR)
    dump_reg("DCR",   base_addr + TIMx_DCR)
    dump_reg("DMAR",  base_addr + TIMx_DMAR)
"""
    TIM4 settings

    CR1      : 0x00000081  [0x40000800]
    CR2      : 0x00000000  [0x40000804]
    SMC      : 0x00000000  [0x40000808]
    DIER     : 0x00000000  [0x4000080c]
    SR       : 0x0000001f  [0x40000810]
    EGR      : 0x00000000  [0x40000814]
    CCMR1    : 0x00006800  [0x40000818]
    CCMR2    : 0x00000000  [0x4000081c]
    CCER     : 0x00000010  [0x40000820]
    CNT      : 0x00000ebb  [0x40000824]
    PSC      : 0x00000000  [0x40000828]
    ARR      : 0x00005dbf  [0x4000082c]
    RCR      : 0x00000000  [0x40000830]
    CCR1     : 0x00000000  [0x40000834]
    CCR2     : 0x00001f40  [0x40000838]
    CCR3     : 0x00000000  [0x4000083c]
    CCR4     : 0x00000000  [0x40000840]
    BDTR     : 0x00000000  [0x40000844]
    DCR      : 0x00000000  [0x40000848]
    DMAR     : 0x00000081  [0x4000084c]
"""
def dump_tim4_settings():
    dump_tim_settings("TIM4", TIM4_BASE) # TFT backlight intensity


def dump_dac_settings():
    print("DAC settings")
    dump_reg("CR",      DAC_BASE + DAC_CR)
    dump_reg("SWTRIGR", DAC_BASE + DAC_SWTRIGR)
    dump_reg("DHR12R1", DAC_BASE + DAC_DHR12R1)
    dump_reg("DHR12L1", DAC_BASE + DAC_DHR12L1)
    dump_reg("DHR8R1",  DAC_BASE + DAC_DHR8R1)
    dump_reg("DHR12R2", DAC_BASE + DAC_DHR12R2)
    dump_reg("DHR12L2", DAC_BASE + DAC_DHR12L2)
    dump_reg("DHR8R2",  DAC_BASE + DAC_DHR8R2)
    dump_reg("DHR12RD", DAC_BASE + DAC_DHR12RD)
    dump_reg("DHR12LD", DAC_BASE + DAC_DHR12LD)
    dump_reg("DHR8RD",  DAC_BASE + DAC_DHR8RD)
    dump_reg("DOR1",    DAC_BASE + DAC_DOR1)
    dump_reg("DOR2",    DAC_BASE + DAC_DOR2)
    dump_reg("SR",      DAC_BASE + DAC_SR)
"""
    DAC settings

    CR       : 0x00030003  [0x40007400]
    SWTRIGR  : 0x00000000  [0x40007404]
    DHR12R1  : 0x00000003  [0x40007408]
    DHR12L1  : 0x00000030  [0x4000740c]
    DHR8R1   : 0x00000000  [0x40007410]
    DHR12R2  : 0x0000008c  [0x40007414]
    DHR12L2  : 0x000008c0  [0x40007418]
    DHR8R2   : 0x00000008  [0x4000741c]
    DHR12RD  : 0x008c0003  [0x40007420]
    DHR12LD  : 0x08c00030  [0x40007424]
    DHR8RD   : 0x00000800  [0x40007428]
    DOR1     : 0x00000003  [0x4000742c]
    DOR2     : 0x0000008c  [0x40007430]
    SR       : 0x00000000  [0x40007434]
"""

def dump_adc1_settings():
    print("ADC1 settings")
    dump_reg("SR",      ADC1_BASE + ADC_SR)
    dump_reg("CR1",     ADC1_BASE + ADC_CR1)
    dump_reg("CR2",     ADC1_BASE + ADC_CR2)
    dump_reg("SMPR1",   ADC1_BASE + ADC_SMPR1)
    dump_reg("SMPR2",   ADC1_BASE + ADC_SMPR2)
    dump_reg("JOFR1",   ADC1_BASE + ADC_JOFR1)
    dump_reg("JOFR2",   ADC1_BASE + ADC_JOFR2)
    dump_reg("JOFR3",   ADC1_BASE + ADC_JOFR3)
    dump_reg("JOFR4",   ADC1_BASE + ADC_JOFR4)
    dump_reg("HTR",     ADC1_BASE + ADC_HTR)
    dump_reg("LTR",     ADC1_BASE + ADC_LTR)
    dump_reg("SQR1",    ADC1_BASE + ADC_SQR1)
    dump_reg("SQR2",    ADC1_BASE + ADC_SQR2)
    dump_reg("SQR3",    ADC1_BASE + ADC_SQR3)
    dump_reg("JSQR",    ADC1_BASE + ADC_JSQR)
    dump_reg("JDR1",    ADC1_BASE + ADC_JDR1)
    dump_reg("JDR2",    ADC1_BASE + ADC_JDR2)
    dump_reg("JDR3",    ADC1_BASE + ADC_JDR3)
    dump_reg("JDR4",    ADC1_BASE + ADC_JDR4)
    dump_reg("DR",      ADC1_BASE + ADC_DR)
"""
    ADC1 settings

    SR       : 0x00000010  [0x40012400]
    CR1      : 0x00000000  [0x40012404]
    CR2      : 0x009e0001  [0x40012408] # TSVREF:1, EXTTRIG:1, EXTSEL:111 (SWSTART) ADON:1
    SMPR1    : 0x00000000  [0x4001240c]
    SMPR2    : 0x36c00000  [0x40012410]
    JOFR1    : 0x00000000  [0x40012414]
    JOFR2    : 0x00000000  [0x40012418]
    JOFR3    : 0x00000000  [0x4001241c]
    JOFR4    : 0x00000000  [0x40012420]
    HTR      : 0x00000fff  [0x40012424]
    LTR      : 0x00000000  [0x40012428]
    SQR1     : 0x00000000  [0x4001242c]
    SQR2     : 0x00000000  [0x40012430]
    SQR3     : 0x00000008  [0x40012434]
    SQR4     : 0x00000000  [0x40012438]
    JDR1     : 0x00000000  [0x4001243c]
    JDR2     : 0x00000000  [0x40012440]
    JDR3     : 0x00000000  [0x40012444]
    JDR4     : 0x00000000  [0x40012448]
    DR       : 0x000001cc  [0x4001244c]

    DR: 12c     300     5.0
        168     360     6.0
        19f     415     7.0
        1da     474     8.0
        21a     538     9.0
        254     596     10.0
        2ce     718     12.0

    Linear (tested with https://plot.ly/create/)
"""

def dump_afio_settings():
    print("AFIO settings")
    dump_reg("EVCR",     AFIO_BASE + AFIO_EVCR)
    dump_reg("MAPR",     AFIO_BASE + AFIO_MAPR)
    dump_reg("EXTICR1",  AFIO_BASE + AFIO_EXTICR1)
    dump_reg("EXTICR2",  AFIO_BASE + AFIO_EXTICR2)
    dump_reg("EXTICR3",  AFIO_BASE + AFIO_EXTICR3)
    dump_reg("EXTICR4",  AFIO_BASE + AFIO_EXTICR4)
    dump_reg("MAPR2",    AFIO_BASE + AFIO_MAPR2)
"""
    AFIO settings

    EVCR     : 0x00000000  [0x40010000]
    MAPR     : 0x02008000  [0x40010004]
    EXTICR1  : 0x00000000  [0x40010008]
    EXTICR2  : 0x00000011  [0x4001000c]
    EXTICR3  : 0x00000011  [0x40010010]
    EXTICR4  : 0x00000000  [0x40010014]
    MAPR2    : 0x00000000  [0x40010018]
"""

def dump_exti_settings():
    print("EXTI settings")
    dump_reg("IMR",    EXTI_BASE + EXTI_IMR)
    dump_reg("EMR",    EXTI_BASE + EXTI_EMR)
    dump_reg("RTSR",   EXTI_BASE + EXTI_RTSR)
    dump_reg("FTSR",   EXTI_BASE + EXTI_FTSR)
    dump_reg("SWIER",  EXTI_BASE + EXTI_SWIER)
    dump_reg("PR",     EXTI_BASE + EXTI_PR)
"""
    EXTI settings

    IMR      : 0x0000033e  [0x40010400]
    EMR      : 0x00000000  [0x40010404]
    RTSR     : 0x00000300  [0x40010408]
    FTSR     : 0x0000033e  [0x4001040c]
    SWIER    : 0x00000000  [0x40010410]
    PR       : 0x00000000  [0x40010414]
"""

def dump_rcc_settings():
    print("RCC settings")
    dump_reg("CR",       RCC_BASE + RCC_CR)
    dump_reg("CFGR",     RCC_BASE + RCC_CFGR)
    dump_reg("CIR",      RCC_BASE + RCC_CIR)
    dump_reg("APB2RSTR", RCC_BASE + RCC_APB2RSTR)
    dump_reg("APB1RSTR", RCC_BASE + RCC_APB1RSTR)
    dump_reg("AHBENR",   RCC_BASE + RCC_AHBENR)
    dump_reg("APB2ENR",  RCC_BASE + RCC_APB2ENR)
    dump_reg("APB1ENR",  RCC_BASE + RCC_APB1ENR)
    dump_reg("BDCR",     RCC_BASE + RCC_BDCR)
    dump_reg("CSR",      RCC_BASE + RCC_CSR)
    dump_reg("CFGR2",    RCC_BASE + RCC_CFGR2)

def dump_spi_settings(name, base_addr):
    print("%s settings" % (name))
    dump_reg("CR2",      base_addr + SPI_CR1)
    dump_reg("CR1",      base_addr + SPI_CR2)
    dump_reg("SR",       base_addr + SPI_SR)
    dump_reg("DR",       base_addr + SPI_DR)
    dump_reg("CRCPR",    base_addr + SPI_CRCPR)
    dump_reg("RXCRCR",   base_addr + SPI_RXCRCR)
    dump_reg("TXCRCR",   base_addr + SPI_TXCRCR)

def dump_spi1_settings():
    dump_spi_settings("SPI1", SPI1_BASE)

def dump_spi2_settings():
    dump_spi_settings("SPI2", SPI2_BASE)

def dump_gpio_settings(name, base_addr):
    print("%s settings" % (name))
    dump_reg("CRL",      base_addr + GPIOx_CRL)
    dump_reg("CRH",      base_addr + GPIOx_CRH)
    dump_reg("IDR",      base_addr + GPIOx_IDR)
    dump_reg("ODR",      base_addr + GPIOx_ODR)
    dump_reg("BSRR",     base_addr + GPIOx_BSRR)
    dump_reg("BRR",      base_addr + GPIOx_BRR)
    dump_reg("LCKR",     base_addr + GPIOx_LCKR)

def dump_gpioa_settings():
    dump_gpio_settings("GPIOA", GPIOA_BASE)

def dump_gpiob_settings():
    dump_gpio_settings("GPIOB", GPIOB_BASE)

def dump_gpioc_settings():
    dump_gpio_settings("GPIOC", GPIOC_BASE)

def dump_gpiod_settings():
    dump_gpio_settings("GPIOD", GPIOD_BASE)


"""

DAC settings @ 5V :

CR       : 0x00030003  [00] CH 1/2 output buffer disable,  CH 1/2 enable TSEL=000
SWTRIGR  : 0x00000000  [04] 
DHR12R1  : 0x00000169  [08] DAC channel1 12-bit right-aligned data holding register
DHR12L1  : 0x00001690  [0c] DAC channel1 12-bit left aligned data holding register
DHR8R1   : 0x00000016  [10] DAC channel1 8-bit right aligned data holding register
DHR12R2  : 0x000001d6  [14] DAC channel2 12-bit right aligned data holding register
DHR12L2  : 0x00001d60  [18] DAC channel2 12-bit left aligned data holding register
DHR8R2   : 0x0000001d  [1c] DAC channel2 8-bit right-aligned data holding register
DHR12RD  : 0x01d60169  [20] Dual DAC 12-bit right-aligned data holding register
DHR12LD  : 0x1d601690  [24] DUAL DAC 12-bit left aligned data holding register
DHR8RD   : 0x00001d16  [28] DUAL DAC 8-bit right aligned data holding register
DOR1     : 0x00000169  [2c] DAC channel1 data output register
DOR2     : 0x000001d6  [30] DAC channel2 data output register
SR       : 0x00000000  [34] 


# 470/V

# 0V
mww 0x40007424 0x1d600000

# 1V
mww 0x40007424 0x1d6004D0

# 2V 
mww 0x40007424 0x1d600940

# 3V
mww 0x40007424 0x1d600DB0

# 4V
mww 0x40007424 0x1d601220

# 5V
mww 0x40007424 0x1d601690

# 6V
mww 0x40007424 0x1d601B00

# Full swing (Vin - 1V)
mww 0x40007424 0x1d601f40

# 7.10V @ 7.70V matning
mww 0x40007424 0x1d601fff

"""

def dump_dma_settings():
    print("DMA settings")
    dump_reg("ISR",    DMA1_BASE + DMA_ISR)
    dump_reg("IFCR",   DMA1_BASE + DMA_IFCR)
    dump_reg("CCR1",   DMA1_BASE + DMA_CCR1)
    dump_reg("CNDTR",  DMA1_BASE + DMA_CNDTR)
    dump_reg("CPAR1",  DMA1_BASE + DMA_CPAR1)
    dump_reg("CMAR1",  DMA1_BASE + DMA_CMAR1)
    dump_reg("CCR2",   DMA1_BASE + DMA_CCR2)
    dump_reg("CNDTR",  DMA1_BASE + DMA_CNDTR)
    dump_reg("CPAR2",  DMA1_BASE + DMA_CPAR2)
    dump_reg("CMAR2",  DMA1_BASE + DMA_CMAR2)
    dump_reg("CCR3",   DMA1_BASE + DMA_CCR3)
    dump_reg("CNDTR",  DMA1_BASE + DMA_CNDTR)
    dump_reg("CPAR3",  DMA1_BASE + DMA_CPAR3)
    dump_reg("CMAR3",  DMA1_BASE + DMA_CMAR3)
    dump_reg("CCR4",   DMA1_BASE + DMA_CCR4)
    dump_reg("CNDTR",  DMA1_BASE + DMA_CNDTR)
    dump_reg("CPAR4",  DMA1_BASE + DMA_CPAR4)
    dump_reg("CMAR4",  DMA1_BASE + DMA_CMAR4)
    dump_reg("CCR5",   DMA1_BASE + DMA_CCR5)
    dump_reg("CNDTR",  DMA1_BASE + DMA_CNDTR)
    dump_reg("CPAR5",  DMA1_BASE + DMA_CPAR5)
    dump_reg("CMAR5",  DMA1_BASE + DMA_CMAR5)
    dump_reg("CCR6",   DMA1_BASE + DMA_CCR6)
    dump_reg("CNDTR",  DMA1_BASE + DMA_CNDTR)
    dump_reg("CPAR6",  DMA1_BASE + DMA_CPAR6)
    dump_reg("CMAR6",  DMA1_BASE + DMA_CMAR6)
    dump_reg("CCR7",   DMA1_BASE + DMA_CCR7)
    dump_reg("CNDTR",  DMA1_BASE + DMA_CNDTR)
    dump_reg("CPAR7",  DMA1_BASE + DMA_CPAR7)

def dump_register_map():
    global register_map
    for reg in register_map:
        address = reg[0]
        end = reg[1]
        name = reg[2]
        print("\n# %s (0x%08x..0x%08x)" % (name, address, end))
        while address < end:
            value = ocd_read(address)
            print("[0x%08x] = 0x%08x" % (address, value))
            address += 4

def write_mem():
    if len(sys.argv) != 4:
        print("%s 


<address> <value>" % (sys.argv[0]))
    else:
        address = int(sys.argv[2], 16)
        value = int(sys.argv[3], 16)
        ocd_write(address, value)

def read_mem():
    if len(sys.argv) < 3:
        print("%s 


<address> [<length>]" % (sys.argv[0]))
    else:
        length = 1
        address = int(sys.argv[2], 16)
        if len(sys.argv) == 4:
            length = int(sys.argv[3], 16)
        while length > 0:
            value = ocd_read(address)
            print("[0x%08x] = 0x%08x" % (address, value))
            address += 4
            length -= 1

def print_help():
    global commands
    print("Available commands:")
    for cmd in commands:
        print("   %s" % (cmd))

def dump_all():
    global commands
    for cmd in commands:
        if cmd != "reg" and cmd != "all":
            commands[cmd]()
            print

def parse_mem_dump(data):
    lines = data.split('\n')
    for l in lines:
        parts = l.split(":")
        if len(parts) != 2:
            print ("Parsing error: %s" % l)
            return
        address = int(parts[0].strip(), 16)
        parts[1] = parts[1].strip()
        data = parts[1].split(" ")
        for (i, item) in enumerate(data):
            decode_mem(address+4*i, int(item, 16))
#            data[i] = int(item, 16)
#            print i, item
#        print "0x%08x" % address
#        for d in data:
#           print "   0x%08x" % d


try:
    ocd_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    ocd_sock.connect(('localhost', 4444))
    ocd_sock.settimeout(1.0)
except socket.error:
    print("Failed connect to Open OCD")
    sys.exit(1)

if not ocd_sync():
    print("Failed to sync with Open OCD")
    sys.exit(1)

commands = {
    "adc1"  : dump_adc1_settings,
    "afio"  : dump_afio_settings,
    "dac"   : dump_dac_settings,
    "dma"   : dump_dma_settings,
    "exti"  : dump_exti_settings,
    "gpio"  : dump_gpio_port_settings,
    "gpioa" : dump_gpioa_settings,
    "gpiob" : dump_gpiob_settings,
    "gpioc" : dump_gpioc_settings,
    "gpiod" : dump_gpiod_settings,
    "reg"   : dump_register_map,
    "rcc"   : dump_rcc_settings,
    "spi1"  : dump_spi1_settings,
    "spi2"  : dump_spi2_settings,
    "tim4"  : dump_tim4_settings,
    "w"     : write_mem,
    "r"     : read_mem,
    "help"  : print_help,
    "all"   : dump_all,
}

if len(sys.argv) >= 2:
    if sys.argv[1] in commands:
        commands[sys.argv[1]]()
    else:
        print_help();
else:
    print_help();

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

Что это дает? Например, получив полную распечатку всех регистров ЦАП-а я могу определить как используется ЦАП. Нажимая и отпуская кнопки и получая распечатки GPIO регистров ввода, я могу узнать, к каким линиям портов эти кнопки подключены.

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

Совсем необязательно сразу писать прошивку для микроконтроллера. Эта питоновская прога, работающая на компе, способна полностью управлять портами GPIO. Её нужно только слегка изменять под свои требования. И в самом деле — какая разница для регистров периферийных устройств МК, кто ими управляет — родной код, зашитый во флеш-память МК, или же какой-то код какой-то внешней разумной программы, которая передает команды через отладчик? Скорость исполнения кода будет, конечно, разная. Но для отладки и реверс-инжиниринга — какая разница?

Таким образом, я узнал, что выходное напряжение модуля DPS5005 реально задается с помощью ЦАП-а. Я также узнал, что подсветка дисплея осуществляется от таймера TIM4, а значения входного напряжения, выходного напряжения и максимального выходного тока измеряются с помощью ADC1 на каналах 7, 8 и 9.

Что же касается самого дисплейчика, то в основе этого полутора-дюймового дисплея лежит микросхема ILI9163C. Таким образом, для создания своей прошивки, я воспользовался готовым драйвером из проекта TFT_ILI9163C от SumoToy.

В схеме подключения дисплея есть ещё пара интересных моментов. Вывод разрешения работы дисплея подключен к «земле». Это разумное решение: в модуле DPS5005 никаких других устройств, сидящих на шине SPI, кроме дисплея нет, то, соответственно, нет и необходимости использования сигнала выбора. Второй момент состоит в том, что цепь MISO у дисплея тоже не используется.

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

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

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

Перед тем как стереть фирменную прошивку DPS5005, я создал простенькое приложенице на базе libopencm3 и потренировался на «Голубой таблетке«:

Blue Pill

Затем я снова подключился через порт 4444 порт отладчика к модулю DPS5005:

> reset halt
> flash erase_address unlock 0x08000000 0x10000
Device Security Bit Set
stm32f1x.cpu: target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000003a msp: 0x20000800
stm32x device protected
failed erasing sectors 0 to 63

Хм… Однако! Почему-то случился облом.

А давате-ка передёрнем питание и по новой запустим OpenOCD, а потом попытаемся ещё раз:

> flash erase_address unlock 0x08000000 0x10000
device id = 0x10016420
flash size = 64kbytes
erased address 0x08000000 (length 65536) in 0.094533s (677.012 KiB/s)

Ну, вот! Сейчас уже намного лучше!

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

Затем я выполнил команду «make flash» и залил в STM32 тестовую прошивку, которая должна была установить выходное напряжение 5.0 В. Обратное считывание регистров АЦП и мультиметр показали, что всё идёт по плану — выходное напряжение действительно было 5.0 В.

ОК! Миссия частично выполнена. Теперь я могу перепрошить DPS5005 и управлять выходом напряжения .

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

Модули, обозначаемые у китайских производителей как DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015 – это готовые блоки преобразователей напряжения постоянного тока, с возможностью программирования и предназначенных для создания мощных блоков питания. Модули представляют собой управляемые Step-Down конвертеры. Большинство из них моноблочные, и только у версий с выходным током 12 и 15 ампер силовая часть отнесена от управляющей на двух гибких шлейфах. Стоимость на сайте Алиэкспресс в зависимости от модели – 2000-3000 рублей.

Общая информация о DP и DPS DC-DC преобразователях

Обрабатывает постоянное напряжение и постоянный ток, программируемое управление блока питания. Диапазон напряжений регулируется 0-50 В, шаг 0.01 В. Регулируется выходной ток в диапазоне 0-15A, шаг 0.01 A. Модуль при отключении питания сохраняет 10 групп заданного значения. По сравнению с традиционными аналоговыми источниками питания, это более удобно, можно быстро установить нужный уровень напряжения или тока.

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

ЖК-дисплей модуля имеет функцию цифрового вольтметра и амперметра. На нём можно просмотреть заданное напряжение, входное напряжение, выходное напряжение, заданный ток, выходной ток, выходную мощность, и т. д. Также регулируется яркость ЖК-экрана.

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

Основные технические параметры

  • диапазон входного напряжения: 6-60 В
  • диапазон выходного напряжения: 0-50 В
  • выходной ток: 0-15 A
  • выходная мощность: 0-750 Вт
  • вес продукта: около 220 гр
  • размер модуля: 79*43*41 (мм) (L * W * H)
  • выходное напряжение с разрешением: 0.01 В
  • выходной ток меряет с разрешением: 0.01 A
  • точность выходного напряжения: ± (0.5% + 1 цифра)
  • выходной ток с точностью: ± (0.5% + 2 цифры)

Таблица модулей DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3005-C, DPS5005, DPS5005-C, DPS3012, DPS5015, DPH3

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

Старые версии – таблица на английском

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

Питание на них подаётся от импульсных БП на подходящую мощность.

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

Обратите внимание: входное напряжение должно быть минимум в 1.1 раза выше, чем выходное напряжение. Когда ток больше, чем 10 А или температура превышает 45С – вентилятор начнет работать. При перегреве более 65С, модуль будет автоматически отключен.

Схема и описание подключения

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

  • IN +: положительный вход напряжения
  • IN-: отрицательный вход
  • OUT+: выход положительный
  • OUT-: выход отрицательный

Диапазон постоянного входного напряжения 6-60 В и 60 В – это предел, который запрещено превышать, иначе блок будет сожжен. И не вздумайте подавать на вход AC 220 В, иначе будет большой фейерверк!

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

Органы управления – функции кнопок

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

  • 1-установка напряжения/прокрутка вверх/извлечение M1 группы данных
  • 2-установка данных/извлечение указанных данных групп/сохранение в указанных данных группы
  • 3-установка тока/прокрутка вниз/извлечение М2 группы данных
  • 4-1.44″ цветной ЖК-экран
  • 5-потенциометр/регулировка данных/блокировка всех кнопок
  • 6-Включить или выключить

Обозначения на дисплее

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

  • 7- заданное значение выходного напряжения
  • 8- фактическое значение выходного напряжения
  • 9- фактическое значение выходного тока
  • 10- фактическое значение выходной мощности
  • 11- фактическое значение входного напряжения
  • 12- заданное значение выходного тока
  • 13- заблокировать или разблокировать строку
  • 14- подтвердить или сохранить
  • 15- статус тока или напряжения
  • 16- установка данных памяти
  • 17- включить-выключить
  • 18- установка выходного напряжения
  • 19- установка выходного тока
  • 20- установка защиты перенапряжения
  • 21- установка перегрузки по току
  • 22- установка перегрузки по мощности
  • 23- установка яркости экрана
  • 24- установка набора данных в памяти
  • 25- фактическое значение выходного напряжения и тока

Инструкция по эксплуатации

  1. Можно скачать цветную инструкцию на русском языке в PDF.

При подключении источника питания, экран показывает заставку “добро пожаловать”, а затем переходит в основной интерфейс. В главном интерфейсе, значения напряжения и выходного тока, можно установить текущее значение – находится в верхней части экрана. На левой части – текущее реальное выходное напряжение, реальный выходной ток и реальная выходная мощность. Данные про входное напряжение находятся в нижней части экрана.

Установка защиты

Пронажимайте страницы вверх или вниз до страницы, чтобы высветилось S-OVP, S-OCP или S-OPP, это установка значения перенапряжения, перегрузки по току и перегрузки по мощности соответственно; кратковременно нажмите кодирование на потенциометре, чтобы войти в статус регулировки численного значения, которое вы хотите отрегулировать. Повернуть энкодер потенциометра для регулировки численного значения. Если хотите выйти из регулировки – коротко нажмите SET.

Регулировка яркости экрана

Пронажимайте страницы вверх или вниз до страницы, обозначенной B-LED, а затем кратковременно надо нажать энкодер потенциометра, чтобы войти в состояние настройки яркости экрана. Поверните регулятор потенциометра для регулировки численного значения. Чтоб выйти из меню регулировки – коротко нажмите SET. Тут есть 6 уровней яркости ЖК-экрана, уровень 0 является самым темным, а уровень 5 – самым ярким.

Как программировать память

Так же возле ячейки имеется изменяемый параметр ON/OFF. Он работает следующим образом: если при активированном выходе конвертера вызовите данные из ячейки памяти с значением ON — параметры сразу применятся, выход останется активным, если OFF — выход отключится. При деактивированном выходе разницы нет. В новой версии конвертера есть дополнительный пункт меню, в котором можно задавать и включение/выключение выхода конвертера, при вызове данных из ячейки памяти. Для быстрого вызова данных в ячейках М1 и М2 — необходимо нажать соответствующую кнопку слева. Запись в остальные ячейки памяти — аналогично. Выбираем ячейку, вносим изменения, сохраняем нажатием на SET — под пиктограммой CV загорается номер ячейки.

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

… Очень миниатюрная вещь, думал она размером побольше. Проверил – вроде работает. На плате ни где не нашёл надпись с номером модели, надеюсь та что я заказывал – 5015.

… Прибор изготовлен аккуратно. Проверил от блока питания в 48В 10А, все работает. Планирую использовать при сборке лабораторного блока питания. Показания по напряжению при <10В расходятся с мультиметром примерно на 0.1В, при более высоких на 0.2В. По току точность выше. Для моих задач этого достаточно.

… Заказал два блока, оба работают без нареканий. Подавал на вход 53В случайно перепутав полярность – работает (есть защита от переполюсовки питания). В качестве источника использую серверный блок питания Emerson HD4825-3. У него на выходе 53,5В 25А. Идеально подходит под это устройство!

… Заметил изменения на плате. Это уже как минимум 3 ревизия платы. Производитель всё время улучшает изделие. Вот и в этот раз, заметил измененную разводку порта Jtag или USB, возле микропроцессора. Второе, что бросилось в глаза, это изменённый узел выходной части конвертера. Добавлен диод, наверное для возможности заряда АКБ или может какая то дополнительная защита, от переполюсовки?

… Есть, конечно, потребность в экране побольше, так как приходится всматриваться в настройки… Это чтобы придраться к чему-нибудь. А вообще, в таком ценовом диапазоне, трудно найти что-то более подходящее для организации лабораторного блока питания на все требуемые напряжения. Сразу же проверил от имеющегося блока питания 24V. Запитал 3V компрессор. Удобно! Мало того, что параметры можно выставить в настройках, и он их сохранит до следующего включения, так ещё и на ходу можно точно и быстро поправить значения тока и напряжения. Защита по току работает. Индикация вполне шустрая. У коллеги ранее заказанный DPS5015 немного отличается от моего экземпляра.

… Неправильно разведен делитель измерения входного напряжения. При входном токе 8А показывает на 1,5В меньше, чем на самом деле. Исправить можно подключив земляной вывод резистора R7 к конденсатору C18(перебив дорожку к 4-му выводу U03 XL7005)”. На моём устройстве уже другая разводка и стабилизатор magi-technology 7133h (аналог НТ7133-1) по другому распаян. Производитель выпускает новые версии платы?

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

Видео обзор

Подведём итог

Модули БП DP50V5A, DP30V5A, DPS3003, DPS3005, DPS3012 и DPS5015

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

Понравилась статья? Поделить с друзьями:

Это тоже интересно:

  • Dr theiss сироп от кашля инструкция
  • Dpd no 1 rapid инструкция
  • Dr hd 1000 combo инструкция на русском языке
  • Dpd 5 датчик перепада давления инструкция
  • Dr gazex симетикон капсулы инструкция

  • Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии