Проект выходного дня или АмперВольтМетр для домашнего блока питания

Новая версия (в работе, ссылка для удобства)

ToDo

Идея

Собственно, идея этого девайса была почерпнута здесь: EK-1007Kit. Изначальная реализация порадовала минимумом деталей, что было весьма актуально, потому как:

  1. лениво паять сложный макет;
  2. лениво разводить сложную плату;
  3. внутри блока питания мало места, всего-то 60 на 50 на передней панели, и около 20мм в глубину.

Микроконтроллер был выбран тот же, ATtiny26, потому как внутри него есть АЦП и ОУ с управляемым коэффициентом усиления (x20). Кроме того, данный МК имеет встроенный генератор, корпус DIP и всего-то 20 ножек. В качестве индикатора используется МТ-10Т7-7, по причине описанной здесь.

Так как задачей было успеть опробовать девайс за выходные - для экспериментов использовалась монтажка типа breadboard (вообще не требующая пайки), печатная плата не разводилась. Конечный вид получился такой:

Плата

Индикатор

Разъем внутрисистемного программирования

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

Детали

В отличии от прототипа (EK-1007Kit) я использовал во входном делителе резисторы C2-23 1%, что должно:

  1. несколько упростить процесс калибровки;
  2. улучшить температурную стабильность (резисторы С1-4 гораздо сильнее подвержены влиянию температуры);

В качестве шунта используются резисторы KNP-200 2Вт, 5%, 0.1 Ом (что используется в исходной конструкции по фото разглядеть не удалось), которые хотя и имеют точность 5%, но, судя по информации ЧипаДипа являются проволочными, и, следовательно, также обеспечивают высокую температурную стабильность.

Схема

Схема в векторе формата sPlan 5.0.

Программа

Программа была написана на ассемблере. При написании использовались готовые куски как от моих предыдущих проектов, так и из Application Notes от Atmel. В итоге, за субботу я написал программу, а в воскресенье отладил её и залил в МК.

Собственно, исходный код. Предыдущие версии (ВНИМАНИЕ! ДРУГАЯ СХЕМА!): версия 0, версия 1.

Батник для прошивки. Батник содержит параметр -n, предполагающий хранение в МК счетчика стираний. При первой прошивке наверное имеет смысл поменять параметр на -n1. Так же в батнике производится чтение из МК значения OSCCAL, которое и записывается внутрь команды ldi (метка set_osccal). К сожалению, я так и не понял, почему в описании AVReAl предлагается брать значение из map файла и сразу подставлять его в батник. Мне пришлось умножить значение адреса команды на 2. Так же в батнике указано значение OSCCAL=4, которое предполагает, что МК будет работать от внутреннего калиброванного RC генератора, при частоте 8МГц.

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

Напряжение питания
Потребляемый ток18мА
Измеряемое напряжение0 - 25.5В
Измеряемый ток0 - 2.55А

Настройка

В программе имеется две калибровочные величины, которые в программе именуются как i_norm и u_norm (для тока и напряжения соответственно). Если в них поместить значение 0x80, то никакого преобразования производиться не будет. Однако, АЦП не всегда работает достаточно точно. Если значения на индикаторе будут несколько отличаться от желаемых, эту пару констант необходимо подобрать. Увеличение константы увеличивает значение на индикаторе :) Предполагается, что стоит установить значение в 0x80, зашить МК, сравнить видимое значение с реальным и подобрать константы (после чего прошить МК ещё раз).

Краткий итог

В данный момент устройство находится на стадии тестирования :)

(с) JustMoose, 2008.