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



Не стоит пугаться... На монтажке торчит сдвиговый регистр и кнопки. Это осталось от предыдущих экспериментов. Просто не было сил вынимать это всё, да и времени не было.
В отличии от прототипа (EK-1007Kit) я использовал во входном делителе резисторы C2-23 1%, что должно:
В качестве шунта используются резисторы 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МГц.
| Напряжение питания | 5В |
| Потребляемый ток | 18мА |
| Измеряемое напряжение | 0 - 25.5В |
| Измеряемый ток | 0 - 2.55А |
В программе имеется две калибровочные величины, которые в программе именуются как i_norm и u_norm (для тока и напряжения соответственно). Если в них поместить значение 0x80, то никакого преобразования производиться не будет. Однако, АЦП не всегда работает достаточно точно. Если значения на индикаторе будут несколько отличаться от желаемых, эту пару констант необходимо подобрать. Увеличение константы увеличивает значение на индикаторе :) Предполагается, что стоит установить значение в 0x80, зашить МК, сравнить видимое значение с реальным и подобрать константы (после чего прошить МК ещё раз).
В данный момент устройство находится на стадии тестирования :)
(с) JustMoose, 2008.