Электрификация

Справочник домашнего мастера

Вольтметр на atmega16

Вольтметр на семисегментных индикаторах (ATmega8)

Устройство собрано на микроконтроллере ATMEGA-8 и светодиодном индикаторе с общим катодом MT-30361, ниже в архиве имеются 2 варианта прошивок, для индикатора с ОК и ОА.
Технические характеристики:

  • Напряжение питания: 6..14 В
  • Потребляемый ток: 42 мА
  • Число разрядов индикатора: 3
  • Диапазон измерения: от 0 до 50 В
  • Шаг измерения: 0,1 В
  • Расчетная погрешность 0,4%

Особенности конструкции:

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

Входное напряжение питания ограничивается и стабилизируется на уровне 5В микросхемой DA1. Диод VD1 служит для защиты от перепутывания полярности напряжения питания. Стабилитрон VD2 защищает вход микроконтроллера от превышения напряжения и напряжения обратной полярности.
Измеряемое напряжение через делитель R1 R2 R3 поступает на вход АЦП микроконтроллера и преобразуется в цифровой код. Для сглаживания пульсаций код усредняется по 16 замерам. Конденсатор С4 подавляет помехи в источнике опорного напряжения АЦП. Измеренный код масштабируется и величина напряжения раскладывается на десятичные разряды (десятки, единицы и десятые доли вольт). Полученные величины поочередно выводятся в соответствующие разряды индикатора методом динамической индикации. Резисторы R5..R12 ограничивают ток сегментов индикатора до безопасных значений.
Детали и настройка.
Чип резисторы R1, R2 желательно применить полупрецизионные размера 0805 или 0603 с допуском 1%. Резистор R3 подстроечный импортный номиналом 1,5-2кОм типа 3329H или 3329H-1.
Чип резисторы R4-R12 размера 0805 с допуском ±5%. Чип конденсаторы С1 и С2 керамические размера 1206, С1 емкостью не менее 10 мкФ с рабочим напряжением от 25 до 50В. Конденсатор C2 не менее 10 мкФ с рабочим напряжением 10..16В. Также можно применить танталовые чип конденсаторы емкостью 10..22мкФ размера «A». Рабочее напряжение конденсатора С1 не менее 25В, а конденсатора С2 не менее 10В.
Чип конденсатор С3 керамический размера 0805, конденсатор С4 размера 0603. Диод VD1 любой подходящий по размерам с барьером Шоттки. Чип стабилитрон VD2 BZV55C5V1 в корпусе SOD-80. Стабилизатор DA1 типа L7805ABD2T в корпусе D2PAK или MC7805BDTG в корпусе DPAK.
Светодиодный индикатор с общим катодом МТ-30361 (E30361-L-G-8-w) зеленого или МТ-30361 (E30361-L-C-8-w) красного свечения. Заменив прошивку можно применить и индикаторы с общим анодом. Микроконтроллер DD1 любые из серии ATMEGA-8 в корпусе TQFP-32.
Для настройки устройства на его вход подают образцовое напряжение 25В и регулируя R3 добиваются совпадения показаний вольтметра с образцовым напряжением. После этого ось подстроечного резистора контрится каплей краски.
Несколько слов по поводу конденсатора С4. В большинстве случаев вольтметр нормально работает и без него, однако с некоторыми экземплярами микроконтроллера Atmega8A при отсутствии входного напряжения вольтметр может показывать не нулевое напряжение. Это происходит из-за влияния помех на источник опорного напряжения 2.56В. При подключении С4 помехи полностью устраняются.
Вид собранной платы

Программа написана на языке С для компилятора WinAVR-20090313. Заводские настройки фьюз-бит при программировании менять не требуется.

Код и прошивки выложен для варианта индикатора с общим катодом: .

C этой схемой также часто просматривают:

Вольтметр на светодиоде
Вольтметр с точностью 0,1 В
Стрелочный вольтметр с растянутой шкалой 10-15 В
ЦИФРОВОЙ ВОЛЬТМЕТР НА МИКРОСХЕМЕ С520
Автомобильные часы-термометр-вольтметр
Переносная колонка для MP-3 плеера на LM386
Упрощенный тестер LAN-кабеля на МК Atmega8
Автозапуск автомобиля — проще простого!
Модуль согласования уровней 3.3 и 5 вольт

Цифровой вольтметр на Atmega8.

Представленное здесь устройство пригодится, если у Вас есть блок питания с выходным напряжение 0-10 В. Именно такие пределы измерения «заложены» в схему представленную на рисунке. В ее основе — микроконтроллер Atmega8 (U1) в стандартном корпусе DIP. Он может показаться громоздким, но был выбран из-за широкой популярности, а также по причине того, что программаторы, для данного микроконтроллера очень распространены. Atmega8 используют большинство радиолюбителей и в Интернете можно найти немало схем с этим микроконтроллером. Поэтому, если Вам не понравится данный вольтметр, Atmega8 не останется лежать без дела.

Цифровой вольтметр на Atmega8. Схема принципиальная.

Показатели измерения вольтметра будут отображаться на цифровом семисегментном трехзначном индикаторе (DISP1). Дам немного информации по поводу него.

7-сегментный цифровой LED индикатор — это индикатор, состоящий из семи светодиодов, установленных в форме цифры 8. Зажигая или выключая соответствующие LED-ы (сегменты) можно отображать цифры от нуля до девяти, а так же некоторые буквы. Обычно используется несколько цифровых индикаторов, чтобы создать многозначные цифры — для этого индикаторы снабжены сегментом в виде запятой (точки) — dp. В итоге, у одного индикатора 8 сегментов, хотя называют их по числу цифровых сегментов 7-сегментным.

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

Устройство 7-сегментного индикатора.

В конструкции используется индикатор красного свечения GNT-2831BD-11 с общим анодом. Резисторы R1-R8 определяют ток в индикаторе и, следовательно, его яркость. Их сопротивление не должно превышать максимальный выходной ток (40 мА), даже когда все 8 светодиодов горят сразу. В схеме используется несимметричный 10-битный АЦП (аналого-цифровой преобразователь), находящийся в AVR. Диапазон выходного значения составляет 0-999. Когда будет достигнут предел этих значений, появится символ «—«.

На входе вольтметра (in) установлен делитель напряжения из резисторов R9, R10 и R11, обеспечивая диапазон измерения до 10 В с погрешностью 0,01 В. На выводе 23 микроконтроллера U1 делитель формирует напряжение, которое не должно превышать 2,5 В. Входное сопротивление вольтметра близко к 1мОм. Для калибровки вольтметра подайте на его вход точно известное напряжение и, перемещая подстроечный резистор R11, добейтесь на индикаторе таких же показаний.

Частота обновления вольтметра составляет около 4 Гц. Схема питается от стабилизированного источника напряжением 5 В. Потребляемый ток устройства составляет около 25 мА (большая часть потребления приходится на индикатор). Компоненты C1 и C2 расположите как можно ближе к микроконтроллеру.

Правильно выставленные биты представлены на рисунке ниже.

Конфигурационные биты вольтметра.

Если Вам необходимы пределы измерения до 100 В, измените значение R10 на 9,1мОм и R11 на 2,2 мОм. Тогда Вы получите желаемый диапазон измерения с погрешностью 0,1 В и входным сопротивлением около 10мОм. В этом случае придется изменить и место точки индикатора, чтобы она отображалась за двумя символами, а не за первым, как на схеме. Для этого вывод 28 микросхемы U1 оставьте свободным, а к общему проводу подключите вывод 27. Теперь вместо символов в виде 0.00 будут отображаться 00.0.

Прошивку можно скачать с нашего файлового архива: proshivka_voltmeter.zip

АЦП микроконтроллеров AVR. Делаем цифровой вольтметр 0 — 25V

Дата публикации: 25 мая 2011.

5 / 5

Продолжим изучать аналого-цифровой преобразователь микроконтроллеров AVR на примере цифрового вольтметра постоянного напряжения, с пределами измерения от 0 до 25V. Измеряемое напряжение будет отображаться на четырехразрядном семисегментном индикаторе с общим анодом. В этом примере применим динамическую индикацию о которой подробней рассказано на одном из предыдущих занятий, кусок кода возьмем от туда же. Микроконтроллер Atmega8 тактируется от внутреннего генератора частотой 8MHz.

Входом АЦП является вывод PC0(ADCO), установлен по умолчанию в регистре ADMUX. Так как вольтметр у нас должен измерять напряжение от 0 до 25V, а 25V для порта контроллера это очень много, в таких случаях используют делитель напряжения, на схеме это резисторы R1 и R2. Например, если напряжение на входе будет меняться от 0 до 25V, то на выходе оно будет меняться от 0 до 5V. Резистор R3 — подстроечный, служит для подстройки отображаемого на дисплее уровня напряжения, желательно многооборотный. Источником опорного напряжения будет вывод питания AVCC с внешним конденсатором на выводе AREF, режим активируется установкой бита REFS0 в регистре ADMUX. Для снижения влияния шумов на результат преобразования вывод AVCC необходимо связать с цифровым питанием VCC через LC-цепь.

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

Применим такую формулу, где: R1 = 100k, R2 = 25k, Uin = 5V,

Umax = Uin*(R1+R2)/R2
Umax = 5*125k/25k = 25V

Из этого мы знаем, что больше 25V на вход делителя напряжения подавать нельзя.

Результат преобразования в Вольтах вычисляется по формуле:

U = ADC*Uref*K/1024

где ADC — результат преобразования;
Uref опорное напряжение(V);
K — коэффициент делителя напряжения.
1024 — Разрядность АЦП 10 бит

Коэффициент делителя напряжения напряжения вычисляется по формуле:

K = (R1+R2)/R2
K = (100k + 25k)/25k = 5

В нашем примере максимальная разрешающая способность будет 10 разрядов, поэтому частота на входе схемы последовательного приближения должна быть в диапазоне 50…200 кГц. Установим ее впределах 125kHz, включим предделитель на 64 путем установки битов ADPS2 и ADPS1 в регистре ADCSRA.

В программе используем прерывание по окончании преобразования АЦП, для этого включим непрерывный режим работы АЦП путем установки бита ADFR и активируем прерывание битом ADIE в этом же регистре ADCSRA
В обработчике прерывания от АЦП 10-ти битный результат преобразования(ADC) после каждого измерения помещаем в буфер, а уже в основном цикле значение буфера делим на количество измерений для усреднения показаний. Далее, применив формулу, вычисляем результат преобразования, переводим результат вычисления в милливольты, путем умножения на 100, и выводим его на дисплей. Полный текст программы ниже.

// Использование АЦП. Цифровой вольтметр 0-25V #include <avr/io.h> #include <avr/interrupt.h> // Массив комбинаций сегментов unsigned char SEGMENTE = { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F // 9 }; volatile unsigned char seg_counter, adc_counter; volatile unsigned int display = 0; volatile unsigned long adc_buffer; // Прерывание по переполнению T2, динамическая индикация ISR (TIMER2_OVF_vect) { PORTD = 0xFF; // Гасим все сегменты PORTB = (1 << seg_counter); // Последовательно зажигаем общие аноды switch(seg_counter) { case 0: PORTD = ~(SEGMENTE); // Выводим первый разряд break; case 1: PORTD = ~((SEGMENTE)|0x80); // добавляем десятичную точку break; case 2: PORTD = ~(SEGMENTE); // Выводим третий разряд break; case 3: PORTD = ~(SEGMENTE); // Выводим четвертый разряд break; } if (seg_counter++ > 2) seg_counter = 0; } // Прерывание по окончанию преобразования АЦП ISR(ADC_vect) { adc_buffer += ADC; // Накапливаем в буфер значения АЦП adc_counter++; // Увеличиваем счетчик измерений } // Главная функция int main (void) { // Настройка портов ввода/вывода DDRB = 0xFF; // Выходы на общие аноды PORTB = 0x00; // Ноль на выходе DDRD = 0xFF; // Выходы на сегменты PORTD = 0x00; // Ноль на выходе // Настройка Т2 TIMSK |= (1 << TOIE2); // Разрешение прерывания по таймеру2 TCCR2 |= (1 << CS21); // Предделитель на 8 // Настройка АЦП ADMUX |= (1 << REFS0); // ИОН — AVCC с внешним конденсатором на выводе AREF, вход ADC0 ADCSRA |= (1 << ADEN) // Разрешение АЦП |(1 << ADSC) // Запуск преобразования |(1 << ADFR) // Непрерывный режим работы АЦП |(1 << ADPS2)|(1 << ADPS1) // Предделитель на 64 (частота АЦП 125kHz) |(1 << ADIE); // Разрешение прерывания от АЦП sei(); // Глобально разрешаем прерывания // Главный цикл while(1) { if(adc_counter == 250) // Если количество измерений равно 250 { display = ((adc_buffer*5*5*100)/1024)/adc_counter; // Вычисляем среднее значение АЦП adc_counter = 0; // Обнуляем счетчик измерений adc_buffer = 0; // Обнуляем буфер АЦП } } }

При программировании установить такие Fuse — биты:

Схема цифрового амперметра 0-10А на микроконтроллере ATtiny13

Принципиальная схема и описание самодельного цифрового амперметра, выполненного на микроконтроллере ATtiny13, программа и печатная плата.

Как-то раз в руки к автору этих строк попало весьма интересное устройство,рожденное в СССР, в далеком 1976 году -его просто отдали за ненадобностью. Звали это устройство АДЗ-101У2, и оно представляло собой типичный образчик советского конструктивизма: тяжелый двадцатикилограммовый «чемодан», с ручкой для переноски в верхней части и мощным однофазным трансформатором внутри.

Но самое интересное, что у этого «чемодана» напрочь отсутствовала задняя панель — и вовсе не потому, что прибор успел ее «посеять», нет. А дело здесь было в том, что обе его панели являлись… передними! С одной своей стороны «чемодан» представлял собой сварочный аппарат, а с другой — зарядное устройство для автомобильных аккумуляторов.

И если как «сварочник» он особых эмоций не вызвал — еще бы, ведь всего-то 50 А переменного тока; то вот «зарядник» — вещь в хозяйстве, безусловно, нужная. Испытания прибора подтвердили его полную боеспособность (даже сварка работала!), но без недостатков, разумеется, не обошлось.

Суть проблемы состояла в том, что штатный амперметр «зарядника» скрылся в неизвестном направлении, и предыдущий владелец аппарата подыскал ему вполне «равноценную» замену — автомобильный амперметр, скрученный с какого-то военного грузовика, и имеющий очень «информативную» шкалу в ±30 А!

Понятно, что следить за зарядом аккумулятора (а ток зарядки — всего лишь 3-6 А!) при помощи такого вот прибора, мягко говоря, проблематично — как будто и нет его вовсе…

Поэтому решено было заменить «грузовиковый показометр» на какой-либо более или менее адекватный прибор, с внятной шкалой на 0-10 А. Идеальным кандидатом на эту роль представлялся стрелочный щитовой амперметр со встроенным шунтом — один из тех, которые раньше использовались практически во всех «зарядниках» советского производства, да и много где еще.

Однако, первая же прогулка по электромагазинам и «развалам» принесла разочарование: оказывается, ничего, хотя бы отдаленно напоминающего искомый прибор, уже давным-давно в продаже нет…

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

Таблица 1. Характеристики устройства.

Параметр Значение
Измеряемый ток 0-9,9 А
Цена деления 100 мА
Погрешность 50 мА
Начало индикации 200 мА
Напряжение питания 10-16 В

Принципиальная схема

Для вывода результатов измерения в данном амперметре решено было использовать пару 7-сегментых LED-индикаторов. Такие индикаторы, несмотря на некоторую свою архаичность по сравнению с новомодными LCD-модулями типа 16хх, обладают также и рядом неоспоримых преимуществ: они гораздо надежнее и прочнее; не портятся и не мутнеют от контакта с нефтепродуктами (а замасленные руки в гараже — дело обычное, цифры на LED-индикаторах ярче и гораздо «читабельнее» — особенно издали; и к тому же, никакой холод в гараже светодиодам не страшен — в отличие от ЖК, который на морозе попросту «слепнет».

Ну а последним доводом в пользу светодиодной матрицы — в контексте данной разработки — стал тот факт, что длинный 1602 просто-напросто не вписывался по размерам в штатное отверстие для амперметра (круглое и очень небольшое!) на корпусе ЗУ. Определившись с типом индикатора, встал другой вопрос — какой же микроконтроллер использовать в качестве основы для данного устройства.

В том, что эту схему нужно строить именно на МК, сомнений никаких не возникало -делая амперметр на «КМОП-россыпи», можно повредиться рассудком. На первый взгляд, самым очевидным решением является «рабочая лошадка» ATtiny2313 -этот МК имеет достаточно развитую архитектуру, и вполне подходящее для подключения LED-матрицы количество линий ввода-вывода.

Однако, здесь все оказалось не так уж и просто — ведь для измерения тока в состав МК обязательно должен входить аналогово-цифровой преобразователь, но инженеры фирмы Atmel почему-то не оснастили «2313-й» данной функцией… Другое дело семейство Меда: эти чипы обязательно имеют «на борту» модуль АЦП.

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

Под «классическим подходом к проектированию» здесь подразумевается так называемый «принцип необходимого минимума» (горячим приверженцем которого, в пику новомодным «Ардуинам», является и автор этих строк), согласно которому любую систему следует проектировать с использованием минимально возможного количества ресурсов; а окончательный результат должен содержать в себе как можно меньше незадействованных элементов. Поэтому, в соответствии с этим принципом — простому прибору -простой микроконтроллер, и никак иначе!

Правда, и не все простые МК подойдут для поставленной задачи. Взять, к примеру, ATtinyl3 — в нем есть АЦП, он прост и недорог; да вот только линий ввода-вывода — для подключения матрицы из двух «семисегментников» — у него явно маловато…

Хотя, если немного пофантазировать, то такая проблема вполне разрешима — при помощи копеечного счетчика К176ИЕ4 и несложного алгоритма, этим счетчиком управляющего.

Вдобавок, у такого подхода есть даже положительные стороны — во-первых, отпадает необходимость «навешивать» на каждый сегмент индикатора по токоограничительному резистору (генераторы тока уже имеются в выходных каскадах счетчика); а во-вторых, в данной схеме можно использовать индикатор как с общим катодом, так и с общим анодом — для перехода на «общий анод» нужно изменить подключение транзисторов VT1 и VT2, выв. 6 DD2 подключить к линии +9 В через резистор 1 кОм, а левый вывод R3 соединить с «землей».

Рис. 1. Принципиальная схема самодельного амперметра (до 10А) на микроконтроллере ATtiny13.

Для того, чтобы управлять счетчиком при помощи МК, нужно задействовать всего две линии: одну — для сигнала счета (С), а другую -для сигнала сброса (R).

Причем, в ходе испытания устройства выяснилось, что КМОП-микросхема К176ИЕ4, будучи подключенной напрямую к линиям МК, вполне надежно работает с его ТТЛ-уровнями — без какого-либо дополнительного согласования.

А еще две линии МК управляют ключами VТ1-VТ2, создавая динамическую индикацию. Фрагмент исходного кода, где реализована процедура управления счетчиком DD2, приведен в листинге:

Рис. 2. Процедура управления К176ИЕ4.

Процедура написана на низкоуровневом языке AVR-Assembler; однако, она легко может быть переведена и на любой язык высокого уровня. В регистре Temp процедура получает число, которое необходимо отправить в счетчик К176ИЕ4 для отображения на индикаторе; линия 1 порта В микроконтроллера подключена ко входу сброса счетчика (R), а линия 2 — к его счетному входу (С).

Чтобы избежать мерцания чисел в момент переключения счетчика, перед вызовом данной процедуры необходимо погасить оба разряда, закрыв транзисторы VT1 и VT2 подачей лог.О на линии 0 и 4 порта В МК; ну а после того, как процедура отработает, уже можно зажигать тот или иной разряд индикатора. Кстати, благодаря счетчику К176ИЕ4, к любому МК можно подключить индикаторную матрицу 7×4, задействовав для этого только 6 линий ввода-вывода (две — для управления счетчиком, и еще четыре — для динамического переключения разрядов).

А если в «напарники» к К176ИЕ4 добавить еще один счетчик -декадный К176ИЕ8 — чтобы использовать его для «сканирования» разрядов; то появится возможность подключить к МК индикаторную матрицу величиной до 10 знакомест, выделив для этого всего лишь 5 линий ввода-вывода (две — для управления К176ИЕ8; две — для К176ИЕ4; и еще одна — для гашения индикатора в момент счета К176ИЕ4)!

В подобном случае алгоритм динамической индикации будет сводиться к управлению счетчиком К176ИЕ8, что во многом аналогично алгоритму передачи цифры в счетчик К176ИЕ4, приведенному в листинге выше.

К недостаткам же такого подключения индикаторной матрицы — помимо использования «лишней» микросхемы — можно отнести необходимость введения в схему дополнительного питания +9 В, т.к. попытки запитать КМОП-счетчики от +5 В, увы, не увенчались успехом…

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

В авторском варианте индикаторное «табло» и вовсе было собранно на отрезке макетной платы-«решета», из двух «древних» одноразрядных АЛС321…

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

И если все делать «по уму», то неплохо было бы выделить — для динамического управления этой самой запятой — еще одну ножку МК (т.к. в К176ИЕ4 никаких средств для управления запятыми не предусмотрено) — чтобы на нее «повесить» вывод индикатора, отвечающий за запятые.

Но, поскольку все линии ввода-вывода МК уже были заняты, то бороться с этой проблемой пришлось отнюдь не самым изящным способом: обе запятые решено было оставить постоянно зажженными, запитав соответствующий вывод индикаторной «матрицы» от линии +9 В через токоограничительный резистор R3 (подбирая его сопротивление, можно выровнять яркость свечения запятой относительно остальных сегментов); а лишнюю запятую в младшем разряде (крайнюю правую) просто замазать каплей черной нитрокраски.

С технической точки зрения такое решение сложно назвать идеальным; но в глаза «загримированная» подобным образом запятая совершенно никак не бросается…

В качестве датчика тока используются два параллельно соединенных резистора R1 и R2, мощностью по 5 Вт каждый. Вместо пары R1 и R2 вполне можно установить и один резистор сопротивлением 0,05 Ом — в таком случае его мощность должна быть не менее 7 Вт.

Более того, в «прошивке» микроконтроллера предусмотрена возможность выбора сопротивления измерительного шунта — в данной схеме может быть применен как 0,05-омный, так и 0,1-омный датчик тока.

Для того, чтобы задать микроконтроллеру сопротивление шунта, использующегося в конкретном случае, необходимо записать определенное значение в ячейку памяти EEPROM, расположенную по адресу 0x00 — для сопротивления 0,1 Ом это может быть любое число меньше 128 (в таком случае МК, будет делить результат измерений на 2); а при использовании шунта сопротивлением 0,05 Ом в эту ячейку, соответственно, следует записать число больше 128.

И если планируется эксплуатировать устройство с приведенным на схеме 0,05-омным шунтом, то о записи указанной ячейки можно и вовсе не беспокоиться, т.к. у нового (или «стертого в ноль») МК во всех ячейках памяти итак будет число 255 (0xFF).

Питать прибор можно как от отдельного источника — напряжением не менее 12 В, так и от силового трансформатора самого зарядного устройства. Если питание будет производиться от трансформатора ЗУ, то желательно задействовать для этого отдельную обмотку, никак не связанную с зарядной цепью; однако, допускается питать амперметр и от одной из зарядных обмоток.

В этом случае напряжение питания нужно брать до выпрямительного моста «зарядника» (т.е., непосредственно с обмотки), а в разрыв обоих проводов питания амперметра включить по резистору 75 Ом/1 Вт. Резисторы необходимы для зашиты «отрицательных» диодов моста VD1-4 от прохождения через них части зарядного тока.

Дело в том, что если подключить прибор к зарядной обмотке, не установив этих резисторов то, учитывая общую «землю» у моста VD1-4 и диодного моста зарядного устройства, около половины зарядного тока аккумулятора будет возвращаться в обмотку не через мощные диоды выпрямителя ЗУ, а через «отрицательное» плечо моста VD1-4, вызывая сильный нагрев маломощных 1N4007.

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

Печатная плата для данного амперметра разрабатывалась под конкретные посадочные места в корпусе конкретного ЗУ; ее чертеж приведен на рис.3.

Индикаторная матрица устанавливается отдельно — на небольшой платке (отрезке «макетки» 30×40), которая крепится к основной плате болтами М2,5 через дистанционные втулки, со стороны монтажа; и соединяется с ней 10-жильным шлейфом.

Еще одной частью получившегося «бутерброда» является декоративная передняя панель из оргстекла, покрашенная с обратной стороны нитрокраской из баллончика (незакрашенным должен остаться только небольшой прямоугольник — «окошко» для индикатора).

Передняя панель также крепится к основной плате со стороны монтажа (болтами М3 с дистанционными втулками — ими же прибор крепится и к корпусу ЗУ). Печатные дорожки сильноточной цепи, идущие к резисторам R1 и R2, следует выполнить как можно более широкими, и припаять к ним выводы резисторов на всю длину, заодно усилив монтаж толстым слоем припоя.

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

Рис. 3. Печатная плата для схемы цифрового амперметра на микроконтроллере.

Программа

При записи «прошивки» в МК его необходимо настроить для работы на частоте 1,2 МГц, от внутреннего тактового генератора. Для этого частоту тактирования следует выбрать равной 9,6 МГц, и включить внутренний делитель такта на 8.

Для увеличения надежности работы также желательно активировать внутренний супервайзор питания (модуль BOD), настроив его на сброс МК при «просадке» питающего напряжения ниже 2,7 В.

Все настройки производятся при помощи записи соответствующих значений в конфигурационные Fuse-ячейки: SUT1=1, SUT0=0, CKDIV8=0, BODLEVEL1 =0, BODLEVELO=1, WDTON=1. Остальные «фъюзы» можно оставить по умолчанию.

Прошивка для микроконтроллера и печатная плата формата Sprint Layout — .

Рис. 3. Плата амперметра на Attiny13 в сборе.

Рис. 4. Плата амперметра на Attiny13 в сборе (вид с обратной стороны).

Матин А. РК-11-17.

Простой амперметр на AVR на 3 и 0.3А

Это продолжение статьи об универсальном измерительном приборе на микроконтроллере. В ней речь пойдет о том, как на нашей универсальной плате сделать простой амперметр с пределом либо на 3А, либо на 300мА.

Схема

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

Схема амперметра на AVR

… и печатная плата

Печатная плата амперметра

Проект платы в формате Sprint-Layout 5.0 можно скачать по .

Амперметр на 3А

Для сборки версии с пределом измерения от 0 до 3А вам потребуется установить на плату:

  1. C2 — танталовый конденсатор, 22мкФ, 16В T491C226K016AT, 1шт.
  2. C1,C3,C4 — конденсаторы на 0,1мкФ в корпусе 0805, 3шт.
  3. DA1 — стабилизатор L7805 в корпусе D2PAK, 1шт.
  4. DA2 — операционный усилитель L358N в корпусе SO8, 1шт.
  5. DD1 — микроконтроллер Atmega8a-au, 1шт.
  6. J1 — чип-резистор 1206 с сопротивлением 0 Ом, 1шт. (перемычка)
  7. HL1 — сегментный индикатор BA56-12YWA, 1шт. (желательно устанавливать через колодку)
  8. R1 — резистор с сопротивлением 0,1 Ом мощностью 1Вт, 1шт.
  9. R4 — чип-резистор 0805 на 1кОм, 1шт.
  10. R5 — подстроечный резистор CA6V на 25кОм, 1шт
  11. R6-R8, R12 — чип-резисторы 0805 на 1кОм, 4шт.
  12. R9-R11 — чип-резисторы 0805 на 56Ом, 3шт. (можно взять с меньшим сопротивлением для увеличения яркости)
  13. VT1-VT3 — транзисторы BC807-40, 3шт.
  14. Гребенка PLS-контактов

При токе через шунт R1 3А, падение напряжения на нем составит 0,3В. Резисторами R4, R5 задается коэффициент усиления этого сигнала по напряжению примерно в 10 раз. Усиленное напряжение поступает на АЦП микроконтроллера. На шунте при этом будет выделяться мощность 0,9Вт, что близко к максимально допустимой мощности. Если вы планируете часто его использовать на пределе измерения, то поставьте резистор R1 с большей мощностью.
Собранный амперметр выглядит следующим образом:

Амперметр на МК с лицевой стороны

Амперметр на МК с обратной стороны

Прошивку амперметра можно скачать . Фьюз-биты без изменения.
На видео подробно показан процесс работы амперметра. К сожалению, у нас не было источника тока на 3А, поэтому нельзя было показать, что при токе больше 3А вольтметр выводит сообщение о переполнении.

Амперметр на 300мА

Отличие амперметра на 300мА от предыдущей версии исключительно в том, что необходимо поставить шунтирующее сопротивление R1 на 1Ом-1Вт и загрузить в память микроконтроллера другую прошивку.

Предосторожности

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

Сначала набросал в Протеусе схемку, как все должно выглядеть. Схема не представляет из себя чего то сложного. Напряжение меряется с помощью делителя напряжения. Он подбирается так, что бы максимальное напряжение на выходе делителя не превышало 5 вольт. Я взял с запасом и рассчитал на 28 вольт. Для измерения тока используется широко распространенный операционный усилитель LM358. Тут следует сказать, что вся схема будет питаться от одного и того же напряжения 5 вольт. Поэтому максимальное напряжение на выходе операционника составит около 3.51 вольт (см. даташит). Для повышения точности показаний тока нам нужно пересчитать максимальное битовое значение, подаваемое на ножку меги. Это легко можно сделать пропорцией 3,51*1023/5=718,146.

Перейдем к коду

Принцип работы весьма прост. Сначала микроконтроллер опрашивает контакты напряжения и тока 400 раз и вычисляет текущее значение. Затем суммирует эти значение и по прошествии 400 циклов вычисляет среднее арифметическое. Получаем более верные показатели и избавляемся от «скачков» цифр. И последним шагом является обнуление всех показателей и запуск цикла снова.

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

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

Схема пока не была собрана, но прошла удачное испытание в Протеусе. Шунт можно брать практически любой. Тогда нужно будет немного подкорректировать код. Если планируете запитывать схему от напряжения 8 и выше вольт, то лучшим вариантом будет поставить линейный стабилизатор 7805 с обвязкой «по умолчанию».

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

Исходники

Более подробно на сайте

Жду критики и советов по оптимизации кода и схемы

Всем привет . Хочу показать вам универсальную разработку вольтметр+амперметр (можно использовать как два вольтметра ).Измеритель собран на светодиодных индикаторах,имеет два канала (индикатора)с плавающей точкой .Выводы 23и24 используются как входы ,расчет производится по стандартной формуле расчета напряжения (в обоих каналах одинаково.)Изюминка прошивки — можно использовать индикаторы как с общим анодом так и с катодом (переключения типа производится впаиванием или удалением перемычек с выводов 27и 28),можно использовать как четырех так и трех разрядные индикаторы (при использовании четырех разрядных в правых разрядах будет высвечиваться U .и A соответственно .
Контроллер производит 30 замеров после чего вычисляет среднее значение — что практически убирает дерганье показаний.В собранном варианте использовались трех разрядные индикаторы зеленого свечения( C. A .) — при их использовании резисторы по сегментам имеют нулевое значение — мега не греется,при использовании индикаторов красного свечения в цепях сегментов необходимы сопротивления от 100 до 300 ом . На плате предусмотрено место под две кренки включенных последовательно ,это для того -если входное напряжение велико для 5 вольтовой кренки ,рядом есть перемычка — которой можно выставить питание lm258(с пяти либо8-12 вольтовой кренки ),при данном питании lm258 (только плюсовым питанием )действительно заметно -не реагирует на малые токи (до 0-100 милиампер )мне такие токи не нужны ,(иначе придется добавлять отрицательное питание lm258.)
Индикаторы типа RL-F5610 ,операционник типа lm258 , мега8 в большем корпусе (фузы 4 мгц внутренний).Шунт-кусок нагревателя с теплового реле на 25а (подойдет и с тестера ).
Предел измерений 25,6 вольт и 25,6 ампер .

АРХИВ:

Простой вольтметр на AVR на 50, 5 и 0.3В

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

Схема измерительного прибора

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

Схема измерительного прибора

Делитель напряжения R2, R3 позволяет измерять напряжения больше 5ти вольт. Для измерения малых напряжений входной сигнал пропускается через операционный усилитель DA2 с регулируемым коэффициентом усиления. Его коэффициент усиления задается резисторами R4, R5. Для измерения тока на входе прибора должен быть установлен шунт R1.
Основой схемы служит микроконтроллер Atmega8. После преобразования уровня сигнала он поступает на вход АЦП, встроенного в микроконтроллер. Микроконтроллер выводит полученное значение на трехразрядном сегментном индикаторе с общим анодом. Напряжение на аноды разрядов поступает через транзисторы. Резисторы в эмиттерах R9, R10, R11 задают яркость индикатора. Способ индикации — динамический.
Питание можно подавать напрямую от источника напряжения 5В, либо через стабилизатор. Обратите внимание, что минус питания и минус измерительного входа соединены друг с другом.

Печатная плата

Плата измерительного прибора

Плата односторонняя и содержит все элементы измерительного прибора. Резистор R1 (шунт амперметра) имеет несколько посадочных мест для корпусов разной мощности. Файл с платой, нарисованной в формате Sprint-Layout 5.0 можно скачать по .

При включении устройства в течении двух секунд на индикатор выводится приветствие «HI», после чего начинается работа прибора. В AVR-микроконтроллерах используется 10-ти разрядный АЦП. В нашем проекте мы используем только девять разрядов. Эта разрядность позволяет получить конечную приборную точность 1%. Для большей стабильности и плавности изменения показаний берется выборка из ста отсчетов и на дисплей выводится наибольший из них. Если входное напряжение превышает диапазон измеряемых значений на индикатор выводится сообщение: -0. Третий разряд не включается, если он не используется.
HEX-фал для каждой версии свой. Мы будем их прикладывать к каждой версии отдельно. Фьюз-биты всегда должны оставаться заводскими. Прошивка загружается через стандартный 6ти-пиновый разъем ISP-программирования.

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

  • напряжение питания, 5В либо 7-12В
  • потребляемый ток, не более 60мА
  • частота обновления индикатора, 56Гц
  • пределы измерения, 0.5В, 5В, 50В
  • входное сопротивление, не менее 10кОм
  • точность, не менее, 10%

Вольтметр на 50В

Для сборки вольтметра с пределом измерения 50В нужно установить все элементы, кроме R1, R4, R5, DA2. Если вы не планируете использовать нестабилизированное питание, то можно не устанавливать также конденсатор C1 и стабилизатор DA1.

Плата вольтметра на 50В

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

Вольтметр на 50В. Лицевая сторона

…и с обратной стороны:

Вольтметр на 50В. Обратная сторона

Элементы схемы на предел 50В:

  1. C2 — танталовый конденсатор, 22мкФ, 16В T491C226K016AT, 1шт.
  2. C1,C3,C4 — конденсаторы на 0,1мкФ в корпусе 0805
  3. DA1 — стабилизатор L7805 в корпусе D2PAK, 1шт.
  4. DD1 — микроконтроллер Atmega8a-au, 1шт.
  5. J1 — чип-резистор 1206 с сопротивлением 0 Ом, 1шт. (перемычка)
  6. HL1 — сегментный индикатор BA56-12YWA, 1шт. (желательно устанавливать через колодку)
  7. R2 — подстроечный резистор CA6V на 2,5кОм, 1шт
  8. R3 — чип-резистор 0805 на 10кОм, 1шт.
  9. R6-R8, R12 — чип-резисторы 0805 на 1кОм, 4шт.
  10. R9-R11 — чип-резисторы 0805 на 56Ом, 3шт. (можно взять с меньшим сопротивлением для увеличения яркости)
  11. VT1-VT3 — транзисторы BC807-40, 3шт.
  12. Гребенка PLS-контактов

Прошивку для версии с пределом измерения на 50В можно скачать . Фьюз-биты оставляем без изменения.
Если все правильно собрано, то работать должно примерно так:

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

Вольтметр на 5В

На плату необходимо установить следующие элементы:

  1. C2 — танталовый конденсатор, 22мкФ, 16В T491C226K016AT, 1шт.
  2. C1,C3,C4 — конденсаторы на 0,1мкФ в корпусе 0805
  3. DA1 — стабилизатор L7805 в корпусе D2PAK, 1шт.
  4. DD1 — микроконтроллер Atmega8a-au, 1шт.
  5. J1 — чип-резистор 1206 с сопротивлением 0 Ом, 1шт. (перемычка)
  6. HL1 — сегментный индикатор BA56-12YWA, 1шт. (желательно устанавливать через колодку)
  7. R2 — подстроечный резистор CA6V на 25кОм, 1шт
  8. R3 — чип-резистор 0805 на 1кОм, 1шт.
  9. R6-R8, R12 — чип-резисторы 0805 на 1кОм, 4шт.
  10. R9-R11 — чип-резисторы 0805 на 56Ом, 3шт. (можно взять с меньшим сопротивлением для увеличения яркости)
  11. VT1-VT3 — транзисторы BC807-40, 3шт.
  12. Гребенка PLS-контактов

Фактически отличаются только сопротивления резисторов в делителе напряжения R2, R3.
Прошивку для версии вольтметра на 5В можно скачать . Фьюз-биты оставляем без изменения. Отличие этой прошивки от предыдущей только в положении разрядной точки.
Видео работы вольтметра на 5В:

Вольтметр на 300мВ

Для работы с пределом измерения от 0 до 300мВ потребуется дополнительный каскад на микросхеме LM358N. Принципиальная схема при этом принимает следующий вид:

Схема вольтметра на 300мВ

Резисторы R4, R5 задают коэффициент усиления усилителя. R1 необходим для того, чтобы в отсутствии входного сигнала вольтметр показывал 0В.
Элементы платы:

  1. C2 — танталовый конденсатор, 22мкФ, 16В T491C226K016AT, 1шт.
  2. C1,C3,C4 — конденсаторы на 0,1мкФ в корпусе 0805
  3. DA1 — стабилизатор L7805 в корпусе D2PAK, 1шт.
  4. DA2 — операционный усилитель L358N в корпусе SO8, 1шт.
  5. DD1 — микроконтроллер Atmega8a-au, 1шт.
  6. J1 — чип-резистор 1206 с сопротивлением 0 Ом, 1шт. (перемычка)
  7. HL1 — сегментный индикатор BA56-12YWA, 1шт. (желательно устанавливать через колодку)
  8. R1 — чип-резистор 0805 на 10кОм, 1шт.
  9. R4 — чип-резистор 0805 на 1кОм, 1шт.
  10. R5 — подстроечный резистор CA6V на 25кОм, 1шт
  11. R6-R8, R12 — чип-резисторы 0805 на 1кОм, 4шт.
  12. R9-R11 — чип-резисторы 0805 на 56Ом, 3шт. (можно взять с меньшим сопротивлением для увеличения яркости)
  13. VT1-VT3 — транзисторы BC807-40, 3шт.
  14. Гребенка PLS-контактов

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

Предосторожности в работе и особенности эксплуатации

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

  1. Вольтметр рассчитан только для измерения постоянного напряжения
  2. У вольтметра нет встроенной защиты от смены полярности входного напряжения
  3. Измерения производятся относительно напряжения питания. Другими словами стабильность питающего напряжения определяет точность показаний вольметра.
  4. У вольтметра нет защиты по входу. Не стоит подавать на него напряжения больше предельного
  5. Вход вольметра не имеет гальванической развязки. Если вы питаете основную схему и предложенный вольтметр от одного и того же источника питания измерения можно производить только относительно общего провода. В случае, когда необходимо измерить разность потенциалов между двумя точками на которых есть напряжение, необходимо использовать для питания вольтметра отдельный источник питания с гальванической развязкой через трансформатор. И при этом обязательно подключать минус вольтметра к точке с меньшим напряжением!
  6. Если необходимо увеличить яркость индикатора, можно уменьшить сопротивление резисторов R9-R11. Однако не стоит ставить сопротивление меньше 20Ом
  7. Если вы планируете использовать вольтметр для индикации бортового напряжения в автомобиле вам потребует подключить только два провода: минус автомобиля к «GND» вольтметра, а плюсовой провод к выводам разъема «7-12V» и «+»

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

Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.

Вольтметр и амперметр с ЖК дисплеем

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

  • Микроконтроллер ATmega8 в качестве основы прибора
  • Дисплей на контроллере HD44780
  • Диапазон измеряемого напряжения 0-30В
  • Точность измерения напряжения 10 мВ
  • Точность измерения тока 10 мА
  • Оносторонняя печатная плата
  • Совместимость с другими LCD-дисплеями на контроллере HD44780

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

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

После того, как на плату запаяете все детали, необходимо:
— поставить 2 перемычки на плате
— поставить перемычку вместо L1
— посадить на радиатор элемент U2
— обратить внимание на полярность элементов D1 и D2

Список элементов

Элемент Значение Корпус Примечание
R1 100k 1206
R2 100k 1206
R3 10k Потенциометр
R4 30k 1206
R5 10k 1206
R6 10k 1206
R7 7k5 1206
R8 7k5 1206
R9 500R Потенциометр
R10 500R Потенциометр
R11 5k1 1206
C1 100n 1206
C2 100n 1206
C3 100n 1206
C4 100n 1206 Не используется
C5 100n 1206 Не используется
C6 100n 1206 Не используется
C7 100n 1206 Не используется
C8 100n 1206 Не используется
C9 100n 1206 Не используется
C10 22u/6V SMD A
C11 10n 1206 Опциональный элемент — защищает Q1 против скачка напряжения после выключения вентилятора.
C12 10u/50V
L1 47u 1210 Не используется — закоротите на плате
D1 диод SMD A Опциональный элемент — защищает Q1 против скачка напряжения после выключения вентилятора.
D2 диод SMD A например SK310A
U1 7805 TO-252 Стабилизатор напряжения +5V, например LM7805
U2 7812 TO220 Стабилизатор напряжения +12V, например LM7812
U3 ATMEGA8 TQFP32
LCD GOLDPIN 1×16
J1 GOLDPIN 1×2 FAN_CON — разъем для вентилятора
J2 GOLDPIN 1×1 +12V_CON — опциональный +12V разъем
J3 GOLDPIN 1×1 +35V_CON — главный разъем питания
J4 GOLDPIN 1×3
S1 выключ.
Q1 MOSFET N SOT-23 e.g. BSS-138 (вентилятор менее 200мА)

Прошивка

При использовании микроконтроллера в TQFP корпусе, его проще прошить после монтажа на плату. Я сделал так, что микроконтроллер можно прошить через разъем для подключения ЖК дисплея. В качестве кабеля для прошивки микроконтроллера я использую кабель от старого жесткого диска. Помните, что при прошивке на схему необходимо подавать +5V питания. В зависимости от конструкции вашего программатора, он сам подаст это напряжение, или его придется брать с дополнительного блока питания.

После подключения к микроконтроллеру программатора, проверьте, распознает – ли программатор микроконтроллер. Если все в порядке, вы можете прошивать микроконтроллер. FUSE-биты необходимо выставить на работу микроконтроллера от встроенного RC генератора с частотой 1 МГц. Если микроконтроллер новый, этого делать не требуется. Поле прошивки микроконтроллера вы можете подключать ЖК-дисплей. Рекомендуется подключать его при помощи разъёма, для возможности обновления прошивки в будущем.

Подключение

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

R9 – настройка точности в точном поддиапазоне измерений
Чтобы уменьшить ошибки АЦП ошибки, диапазон измерения разделен на два поддиапазона 0-10V и 10-30V. Для подбора точного значения резистора подключите вольтметр к выходу блока питания с напряжением 9V, и меняйте значение резистора до тех пор, пока показания вольтметра и прибора будут равны.

R10 – настройка точности в грубом поддиапазоне измерений
Примерно тоже самое что R9, но для диапазона измерений 10-30V. На выходе блока питания необходимо напряжение около 19V.

R3 – настройка контрастности ЖК-дисплея
Проворачивайте потенциометр до тех пор, пока на ЖК-дисплее не появится четкое изображение.

J1 – подключение вентилятора
Прикрепите + вентилятора к 1 выводу разъема, — ко второму.

J2 – +12V
Если у вас в блоке питания есть постоянная линия +12 В, подключите её эти к контактам. В этом случае вы не должны монтировать U2 на печатной плате. Это хорошо, т.к. вы убираете лишний источник тепла. Если у вас нет постоянной линии +12 В, то оставьте контакты неподключенными.

J3 – +35V
Напряжение с диодного моста, которое идет на U2. Возможно, на этот контакт нужно подавать меньшее напряжение – всё зависит от типа использованной вами U2. Этот вывод должен быть подключен, даже если +12V уже подключено к J2.

J4 – сигнал для измерения напряжения и тока
Прибор предназначен для измерения тока и напряжения в блоке питания. Значение тока вычисляется из падения напряжения на шунтирующем резисторе.

Контакт 1 — измерение напряжения — подключается к + блока питания.
Контакт 2 — измерение тока – подключается к — блока питания.
Контакт 3 — GND – подключается к выводу шунтирующего резистора, противоположному подключенному к блоку питания.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 Линейный регулятор LM7805 1 TO-252 Поиск в Utsource В блокнот
U2 Линейный регулятор LM7812 1 TO-220 Поиск в Utsource В блокнот
U3 МК AVR 8-бит ATmega8 1 TQFP32 Поиск в Utsource В блокнот
Q1 MOSFET-транзистор BSS138 1 SOT-23 Поиск в Utsource В блокнот
D1, D2 Диод Шоттки SK310A 2 SMD A Поиск в Utsource В блокнот
С1-С9 Конденсатор 100 нФ 9 1206 Поиск в Utsource В блокнот
С10 Электролитический конденсатор 22 мкФ 6В 1 SMD A Поиск в Utsource В блокнот
С11 Конденсатор 10 нФ 1 1206 Поиск в Utsource В блокнот
С12 Электролитический конденсатор 10 мкФ 50В 1 Поиск в Utsource В блокнот
R1, R2 Резистор 100 кОм 2 1206 Поиск в Utsource В блокнот
R3 Подстроечный резистор 10 кОм 1 Поиск в Utsource В блокнот
R4 Резистор 30 кОм 1 1206 Поиск в Utsource В блокнот
R5, R6 Резистор 10 кОм 2 1206 Поиск в Utsource В блокнот
R7, R8 Резистор 7.5 кОм 2 1206 Поиск в Utsource В блокнот
R9, R10 Подстроечный резистор 500 Ом 2 Поиск в Utsource В блокнот
R11 Резистор 5.1 кОм 1 1206 Поиск в Utsource В блокнот
S1 Выключатель 1 Поиск в Utsource В блокнот
L1 Катушка индуктивности 47мкГн 1 Поиск в Utsource В блокнот
LCD LCD-дисплей 1*16 1 Поиск в Utsource В блокнот
Добавить все

Оригинал статьи

Прикрепленные файлы:

РадиоКот >Схемы >Цифровые устройства >Измерительная техника >

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

Простой миниатюрный встраиваемый цифровой вольтметр для БП (0…19,99В/0…39,99В)

SSMix
Опубликовано 17.09.2013
Создано при помощи КотоРед.

В статье описывается простой встраиваемый 4-х разрядный цифровой вольтметр, разработанный для установки в домашний лабораторный БП с выходным напряжением 0…15В, как более дешевая и миниатюрная альтернатива китайским 3-х разрядным поделкам. Вольтметр может быть также использован для контроля напряжения в бортовой сети автомобиля.

Изменением номиналов резисторов делителя и варианта программы прошивки можно выбрать предел измерения 0…19,99 В или 0…39,99 В. Для универсальности предусмотрены прошивки для установки светодиодных индикаторов с ОА и ОК.

Вот фото вольтметра в работе:

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

Диапазон измерения, В……………………..0…19,99 (0…39,99);

Дискретность измерения, мВ…………….10;

Точность во всём диапазоне, мВ……….±10;

Напряжение питания, В……………………..7…20*;

Потребляемый ток, мА………………………≤40**;

Габаритные размеры, мм……………………43х20х11.

Индикация…………………………………………4-х разрядный 7-сегментный с ОА или ОК.

* — при использовании DA1 78L05A

** — зависит от сопротивлений R4…R11

Схема электрическая вольтметра:

Входное измеряемое напряжение поступает на делитель R1, R2, R3, R13 с коэффициентом деления 1:8, а с него на вход PC4 АЦП микроконтроллера DD1. Конденсатор C2 – помехоподавляющий.

Микроконтроллер выбран широко распространённый ATmega8A в малогабаритном корпусе TQFP-32.

В качестве источника опорного напряжения (ИОН) для АЦП использован внутренний напряжением Vref=2.56В. При этом максимальное измеряемое напряжение на входе делителя составляет 2,56•8=20,48В.

Если применить входной делитель с коэффициентом деления 1:16, максимальное измеряемое напряжение можно увеличить до 2,56•16=40,96В.

В программе МК предусмотрены оба варианта делителя. Максимальный предел измерения программно ограничивается величиной 19,99В (39,99В). При превышении предела на индикатор выводится “1 -. — -“ (как в старой доброй КР572ПВ2) или “3 -. — -”.

При 10-ти разрядном АЦП его диапазон измерения составляет 0…1023, что дает дискретность измерения непосредственно на входе АЦП: 2560мВ/1024=2,5мВ. С учётом входного делителя напряжения получается дискретность измерения 2,5мВ•8=20мВ (для предела 0…20В) или 2,5мВ•16=40мВ (для предела 0…40В). Для получения необходимой дискретности 10 мВ использован приём многократных выборок АЦП с усреднением результата. На официальном сайте Atmel есть интересный pdf-документ под названием “AVR121. Enhancing ADC resolution by oversampling” (Расширение разрешающей способности АЦП, используя передескритезацию).

На 8-й странице этого документа в таблице 3-1 (правда для Vref=5В) показано, как растёт разрешающая способность 10-разрядного АЦП при увеличении числа выборок. При 4-х выборках с усреднением результата наш АЦП “превращается” в 11-разрядный (0…2047), при 16-ти выборках – в 12-разрядный (0…4095), при 64-х выборках – в 13-разрядный (0…8191) и т.д.

Общая формула для вычисления необходимого количества выборок для прибавки к разрешению АЦП дополнительных n бит: sf = 2n.

В данном случае для полного использования переменной накопления результата АЦП типа unsigned int (0…65535) оказалось удобным применить 64 выборки. При этом даже при максимальном коде АЦП 1023 переменная накопления результата никогда не переполнится (1023•64=65472), а разрешающая способность вольтметра для случая (0…40В) улучшится в 8 раз и составит 5 мВ, что вполне подходит.

Для компенсации разброса сопротивлений резистивного делителя и начального напряжения ИОН служит подстроечный резистор R3. Подбором сопротивления резистора R13 можно подстроить точность показаний вольтметра более грубо.

Для варианта (0…19,99)В соотношение сопротивлений верхнего плеча делителя к нижнему должно быть 7:1, а для варианта (0…39,99)В – 15:1, т.е. во втором случае сопротивление резистора R1 нужно будет увеличить до 510кОм, и возможно подобрать R13.

Светодиодный 4-х разрядный индикатор HL1 KW4-361AGB (с общим анодом) подключен к МК без дополнительных ключевых транзисторов, учитывая небольшой ток потребления. Резисторы R4…R11 определяют яркость свечения индикатора. Можно применить также индикатор с общим катодом, зашив МК соответствующим вариантом hex-файла прошивки. Схема включения при этом остаётся прежней.

Питание микроконтроллера производится через линейный стабилизатор DA1 78L05A, для которого по DataSheet типовая разность между входом и выходом составляет не менее 1,7 В. Практически минимальное напряжение питания схемы составляет около 7 В. Максимальное – не более 30 В. Если необходимо запитать схему от меньшего напряжения, то следует заменить стабилизатор DA1 на другой тип. Выходное напряжение стабилизатора может находиться в пределах от 3 до 5 В. При питании схемы от большего напряжения, чем 20В, последовательно с цепью питания желательно включить стабилитрон для гашения избыточного напряжения с целью снижения мощности рассеивания на DA1.

Программа для микроконтроллера написана на языке Си в хорошо зарекомендовавшей себя среде WinAVR-20060125. Вот вкраце рабочий вариант программы для индикатора с ОА и пределом измерения 19.99В.

Начинается программа традиционно, с подключения библиотек:

#include <avr/io.h> //Подключение системной библиотеки

#include <avr/interrupt.h> //Подключение библиотеки обработки прерываний

#include <avr/pgmspace.h> //Подключение библиотеки массивов

#include <util/delay.h> //Подключение библиотеки задержек

Определяем константы в flash-памяти микроконтроллера::

//Знакогенератор сегментов светодиодного индикатора с ОА:

static unsigned char __attribute__ ((progmem)) SEGMENTE =

{0x03,0xDB,0x85,0x91,0x59,0x31,0x21,0x9B,0x01,0x11,0xFE,0xFF,0xFD};

//0—-1—-2—-3——4—-5—-6—-7—-8—-9-(точка)(пусто)(-)

Это байты, которые будут выводиться в порт D микроконтроллера для получения различных символов в разряде индикатора. Сегменты индикатора a, b, c, d, e, f, g, h, соответствуют линиям порта D следующим образом:

a — PD6

b — PD5

c — PD2

d — PD3

e — PD4

f — PD7

g — PD1

h — PD0

Так оказалось проще разводить печатную плату.

Для коммутации разрядов для порта B также используется табличный массив в flash-памяти:

//Таблица динамической коммутации разрядов индикатора

static unsigned char __attribute__ ((progmem)) RAZR =

{0b00001000, 0b00000001, 0b00000010, 0b00000100};

//4 разр. 3 разр. 2 разр. 1 разр.

Далее определяем глобальные переменные:

volatile unsigned char segcounter = 0; //Счётчик разрядов индикатора (0-младший справа, 3-старший слева)

volatile unsigned char p_count=0; //Счётчик прерываний (каждые 0,256мс)

Буфер mass_ind будет использоваться для хранения индицируемых цифр каждого разряда. Заноситься информация в него будет после каждого суммарного замера АЦП и преобразования результата в формат ХХ.ХХ В. Считывание информации будет производиться в прерывании по переполнению таймера-счётчика 2 (каждые 0,256мс) для динамической индикации. Первоначально в mass_ind заносим данные для вывода на индикатор при включении питания значков “- -. — -«.

В прерывании выставляем лог.1 на аноде текущего разряда в соответствии с состоянием счётчика segcounter, выводим в порт D байт данных из массива mass_ind и увеличиваем на 1 переменную segcounter (с проверкой на переполнение и ограничением до 3). Также инкрементируем счетчик прерываний p_count для отсчёта интервалов времени в 0,256мс. Т.о. в каждом прерывании выводится цифра одного из разрядов через каждые 0,256мс. Для 2-го разряда дополнительно добавляется разделительная точка.

//Прерывание по переполнению T2 (), динамическая индикация

ISR (TIMER2_OVF_vect)

{ PORTD = 0xFF; //Гашение индикатора

PORTB = (PORTB & 0b11110000) | pgm_read_byte(RAZR+segcounter);//Активация текущего разряда индикатора

PORTD = pgm_read_byte(SEGMENTE+mass_ind);//Вывод сегментов текущего разряда

if (segcounter==2) //Если 2-й разряд с точкой

PORTD = PIND & pgm_read_byte(SEGMENTE+10); //Добавка десятичной точки

segcounter++; //Инкремент разрядов индикатора

if (segcounter>3) segcounter=0; //Ограничение счетчика

p_count++; //Инкремент счётчика прерываний

}

Никаких сложных вычислений в прерывании специально не делается, чтобы обеспечить минимальное время выполнения. Благодаря этому скорость переключения разрядов индикатора составляет 1/0,256мс=3906,25 Гц, а каждый из четырёх разрядов мигает с частотой 3906,25 Гц/4=976,5625 Гц. Частота довольно высокая, так что никакого мерцания индикатора не заметно.

Далее следует основная функция программы, начинающаяся с конфигурации портов, таймера-счетчика 2 и АЦП:

int main (void)

{ unsigned int value=0; //Переменная для накопления результата преобразования АЦП

unsigned char adc_counter=0; //Счётчик замеров АЦП

unsigned int display = 0; //Выводимое напряжение ХХХХ В

DDRD = 0b11111111;

DDRC = 0b00000000;

PORTD = 0x00;

PORTC = 0b11101111;

DDRB = 0b00001111;

PORTB = 0b11110000;

//Инициализация таймера-сч.2

TIMSK |= (1 << TOIE2); //Разрешение прерывания по переполнению таймера 2

//Инициализация АЦП

ADMUX = (1 << REFS1)|(1 << REFS0) //Внутренний ИОН 2,56V

|(0 << ADLAR) //Правое выравнивание результата

|(0 << MUX3)|(1 << MUX2)|(0 << MUX1)|(0 << MUX0);//Вход АЦП — PC4

_delay_ms(50); //Задержка времени на 50 мс

sei(); //Глобальное разрешение прерываний

В следующем бесконечном цикле при помощи счетчика p_count отсчитываем 15 прерываний по 0,256мс, в результате чего получаем интервал 3,84мс и запускаем одиночное преобразование АЦП. Одновременно увеличиваем на 1 счетчик замеров adc_counter. Результат накапливаем в переменной value.

while(1)

{ if (p_count>=15) //Если прошло 15*0,256мс=3.84мс; общее время замеров 64*3.84=245.76мс (4 замера в сек)

{ while (bit_is_set(ADCSRA, ADSC));//Ожидание завершения предыдущего преобразования

ADCSRA=0b11000011; //Пуск АЦП (Кдел=8, f=125 кГц, однократн.)

while (bit_is_set(ADCSRA, ADSC));//Ожидание завершения преобразования

value = value + ADC; //Чтение и накопление результата преобразования

adc_counter++; //Инкремент счётчика замеров

p_count=0;

}

После 64 замеров вычисляем напряжение в мВ*10:

/* ACD=1024*(U/Кдел)/Vref

Vref=2.56 В

Кдел=8

Измеренное напряжение для N замеров:

U=(ACD/N)*Vref*Кдел/1024

Вычисление мВ:

mVolt=((value/N)*Vref*Kдел)/1024=((value/N)*2560*8)/1024)=20*value/N=

=value/3,2 (N=64)

Для отображения 4-х разрядов в формате ХX.ХХ В результат делится на 10 с округлением (прибавляется 5 перед делением)

mVolt=(value+5)/32 (N=64, Кдел=8)

*/

if (adc_counter >= 64) //Если прошло 64 замера АЦП

{ display = (value+5)/32;

При общем количестве замеров 64 получается суммарное время измерения 3,84мс*64=245,76 мс, т.е. примерно 4 измерения в секунду. Чаще делать нет смысла, иначе показания индикатора будут меняться слишком быстро.

Ну и наконец, заполняем буфер mass_ind для вывода из него информации в прерывании.

//Заполнение массива mass_ind для вывода индикации

if (display > 1999) //Если напряжение больше 19,99В

{ mass_ind = 12; //Вывод «-» (справа)

mass_ind = 12; //Вывод «-» в 1-м разряде

mass_ind = 12; //Вывод «-» во 2-м разряде

mass_ind = 1; //Вывод «1» в старший разряд (слева)

}

{ mass_ind = display % 10; //Младший разряд (справа)

mass_ind = (display/10)%10; //1-й разряд

mass_ind = (display/100)%10; //2-й разряд

mass_ind = display/1000; //Старший разряд (слева)

if (mass_ind==0) mass_ind=11; //Если в старшем разряде «0» — гашение старшего разряда

}

adc_counter = 0;

value = 0;

}

}

}

Скриншот симуляции работы программы в Протеусе:

Схема вольтметра собрана на плате из одностороннего фольгированного стеклотекстолита размерами 43х20 мм по лазерно-утюжной технологии:

Перечень элементов:

C1 = 10,0х20В (Танталовый, корпус B)

C2, С4…C6 = 0,47 (0603)

C3 = 22,0х6,3В (Танталовый, корпус A)

DA1 = MC78L05A (SOIC-8)

DD1 = ATmega8A-AU (TQFP-32) или ATmega8

HL1 = KW4-361AGB (4 сегмента, общий анод)

L1, L2 = 22uH (0805)

R1 = 240к или 510к (0805)

R2 = 30к (0805)

R3 = 1к (Подстроечный SMD CV-035, EVM (3×3мм))

R4, R5, R7…R12 = 270* (0603)

R6 = 270* (1206)

R13 = 3,6к* (0805)

Для подключения программатора на плате предусмотрены соответствующие контактные площадки MOSI, MISO, SCK, RESET, GND, +Vcc:

После прошивки программы следует запрограммировать следующие фьюзы («0»-галочки установлены):

CKSEL3…0=0001 (Внутр.RC-генератор 1 МГц),

CKOPT=1,

BODEN=1 (схема BOD выключена),

SUT10=10 (16 CK, 65 ms, Slowly rising power),

(«0»-галочки установлены).

Подключение вольтметра производится тремя проводниками: +Uизмер., +Uпит. и Общий. Если измеряемое напряжение не опускается ниже минимального входного напряжения питания стабилизатора DA1, цепи +Uизмер. и +Uпит. соединяются вместе.

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

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

Испытания вольтметра совместно с образцовым мультиметром показали, что погрешность измерения не превышает единицы младшего разряда (±10 мВ) во всём диапазоне 0…19.99 В.

Файлы:
Файлы проекта

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

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

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

31 0 2
7 1 0

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх