Приветствую!
Представляю вашему вниманию очередную реализацию вольтметра. Что в этом интересного, спросите вы - ведь вольтметров на МК сделано уже предостаточно. Однако, есть в нём одна отличительная особенность – его размер и исполнение. Вольтметр умещается в корпус от стандартной щитовой лампочки под монтажное отверстие 22мм.
Вольтметр имеет следующие характеристики:
Диапазон измеряемого напряжения: 24…350+ VAC / VDC;
Точность ~1%, True RMS;
Яркий семисегментный экран;
Стоимость деталей с платой: около 200 рублей;
Питание от измеряемого напряжения.
Комментарии к схеме:
1. Дроссель берите такой: CDRH64BNP-102MC Sumida или SDR0805-102KL Bourns
2. Программирование осуществляется без резисторов R1, R2 на линиях TPI, т.к. семисегментник почему-то мешает.
3. Резистор на 1М по хорошему надо брать выводной ~0.25Вт, т.к. типоразмер 0603 работает до 50 вольт (я этого ещё не знал, когда делал плату, однако ж у меня 0603 вроде работает).
4. Семисегментный индикатор - стандатный с общим анодом или катодом (разница в прошивке). Я ставил Para Light A363SR.
5. На плате предусмотрено место под диодный мост B10S, но лучше ставить простой диод 1N4007 (на схеме - диод D3). Для этого плату доработать напильником.
6. По сборке - семисегментный индикатор немного не влезает в корпус лампы, поэтому доработать напильником нужно и его.
Комментарии к прошивке:
1. Сразу отмазываюсь - я не программист, за говнокод не ругайте. За скудность комментариев - тоже, писал для себя.
2. Fuse - стандартные, менять не надо.
3. Калибровка - в define.inc константа "div_c". Да, калибровать неудобно, знаю.
4. Для выбора типа индикатора (общий анод / общий катод) - откройте display.asm, в процедуре "anode_set" - измените маску бит (CC / CA), а в процедуре "seg_out" - там в комментариях написано, разберётесь. Если что, спрашивайте.
5. Краткий алгоритм работы:
5.1 Ждём перехода синусоиды через 0 (значение ацп - 511).
5.2 Если перехода долго нет - проводим измерения по таймеру (если DC). Этот момент не доработан, но вроде всё ok.
5.3 Если переход пойман - проводим серию из 255 измерений. Каждое измерение сразу возводится в квадрат и аккумулируется в памяти.
5.4 При окончании серии измерений - вычисляем квадратный корень из накопившихся данных. Затем делим на коэффициент "div_c".
5.5 Не забываем выводить значения на экран.
6. Я прошивал контроллер при помощи AVRISP2 и avrdude.
К сожалению, для дальнейшего развития и доработки вольтметра у меня нет ни времени ни желания. По сему - выкладываю в свободный доступ, может кому на что сгодится. Будут вопросы - пишите, отвечу. Благодарю за внимание.
Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов!
Подробно тут! Жалоба