Идеи

Цифровой вольтметр своими руками. Схемы самодельных цифровых вольтметра и амперметра (СА3162, КР514ИД2). Последовательность размещения и монтажа амперметра

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

25 лет назад у меня был кассетный плеер. Питал я его Ni-Cd аккумуляторами НКГЦ-0.45 ёмкостью 450мА/ч. Чтобы в дороге определять какие аккумуляторы уже сели, а какие ещё поработают было сделано простое устройство.


Батарейно-аккумуляторный диагностическо-измерительный комплекс.


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

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

Итак, схема проектируемого устройства.

Используемые детали:
1. OLED дисплей с диагональю 0.91 дюйм и разрешением 128x32 (около $3)
2. Микроконтроллер ATtiny85 в корпусе SOIC (около $1)
3. Boost DC/DC Converter LT1308 от компании Linear Technology. ($2.74 за 5 штук)
4. Конденсаторы керамические, выпаяны из неисправной видеокарты.
5. Индуктивность COILTRONICS CTX5-1 или COILCRAFT DO3316-472.
6. Диод Шоттки, я использовал MBR0520 (0.5A, 20V)

Преобразователь напряжения LT1308

Характеристики из описания LT1308:

Обещают 300мА 3.3В с одного элемента NiCd, нам подходит. Выходное напряжение устанавливается делителем, резисторы 330кОм и 120кОм, при указанных номиналах выходное напряжение преобразователя получается около 4.5В. Выходное напряжение выбиралось достаточным для питания контроллера и дисплея, чуть выше максимального измеряемого напряжения на литиевом аккумуляторе.

Для раскрытия всего потенциала преобразователя напряжения нужна индуктивность, которой у меня нет (см. пункт 5 выше), поэтому собираемый мной преобразователь имеет заведомо худшие параметры. Но и нагрузка у меня совсем небольшая. При подключении реальной нагрузки из микроконтроллера и OLED дисплея получается такая нагрузочная таблица.

Прекрасно, идём дальше.

Особенности измерения напряжения микроконтроллером

Микроконтроллер ATtiny85 имеет АЦП разрядностью 10 бит. Поэтому считываемый уровень лежит в диапазоне 0-1023 (2^10). Для перевода в напряжение используется код:
float Vcc = 5.0; int value = analogRead(4); / читаем показания с А2 float volt = (value / 1023.0) * Vcc;
Т.е. предполагается, что напряжение питания строго 5В. Если напряжение питания микроконтроллера изменится, то измеренное напряжение тоже изменится. Поэтому нам нужно узнать точное значение напряжения питания!
Многие чипы AVR включая серию ATmega и ATtiny обеспечивают средства для измерения внутреннего опорного напряжения. Путем измерения внутреннего опорного напряжения, мы можем определить значение Vcc. Вот как:
  • Установить источник опорного напряжения analogReference(INTERNAL).
  • Снять показания АЦП для внутреннего источника 1.1 В.
  • Расчитать значение Vcc основываясь на измерении 1.1 В по формуле:
Vcc * (Показания АЦП) / 1023 = 1.1 В
Из чего следует:
Vcc = 1.1 В * 1023 / (Показания АЦП)
На просторах интернета была найдена функция для измерения напряжения питания контроллера:

Функция readVcc()

long readVcc() { // Read 1.1V reference against AVcc // set the reference to Vcc and the measurement to the internal 1.1V reference #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) ADMUX = _BV(MUX5) | _BV(MUX0); #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) ADMUX = _BV(MUX3) | _BV(MUX2); #else ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif delay(75); // Wait for Vref to settle ADCSRA |= _BV(ADSC); // Start conversion while (bit_is_set(ADCSRA,ADSC)); // measuring uint8_t low = ADCL; // must read ADCL first - it then locks ADCH uint8_t high = ADCH; // unlocks both long result = (high<<8) | low; result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000 return result; // Vcc in millivolts }


Для вывода на экран используется библиотека Tiny4kOLED с включенным шрифтом 16х32. Из шрифта, для уменьшения размера библиотеки, удалены 2 не используемых символа (, и -) и нарисована отсутствующая буква «В». Код библиотеки соответственно изменен.
Так-же для стабилизации выводимых измерений использована функция с , спасибо автору dimax , работает хорошо.

Код я отлаживал на платке Digispark в среде arduino IDE. После чего ATtiny85 была выпаяна и припаяна на макетку. Собираем макетную плату, подстроечным резистором выставляем напряжение на выходе преобразователя (сначала я выставлял на выходе 5В, при этом ток на входе преобразователя был под 170мА, уменьшил напряжение до 4.5В, ток снизился до 100мА). Когда ATtiny85 припаяна на макетку код приходится заливать с помощью программатора, у меня обычный USBash ISP.


Код программы

// НАСТРОЙКА /* * Ставим #define NASTROYKA 1 * Компилируем, заливаем код, запускаем, запоминаем значение на дисплее, например 5741 * Измеряем мультиметром реальное напряжение на выходе преобразователя, например 4979 (это в мВ) * Считаем (4979/5741)*1.1=0.953997 * Считаем 0.953997*1023*1000 = 975939 * Записываем результат в строку 100 в виде result = 975939L * Ставим #define NASTROYKA 0 * Компилируем, заливаем код, запускаем, готово. */ #define NASTROYKA 0 #include #include long Vcc; float Vbat; // тонкая настройка алгоритма сглаживания shumodav() #define ts 5 // *table size* количество строк массива для хранения данных, для девиации ± 2 отсчёта оптимально 4 строки и одна в запас. #define ns 25 // *number samples*, от 10..до 50 максимальное количество выборок для анализа 1й части алгоритма #define ain A2 // какой аналоговый вход читать (А2 это P4) #define mw 50 // *max wait* от 15..до 200 ms ожидать повтора отсчёта для 2 части алгоритма unsigned int myArray, aread, firstsample, oldfirstsample, numbersamples, rezult; unsigned long prevmillis = 0; boolean waitbegin = false; //флаг включённого счётчика ожидания повтора отсчёта void setup() { oled.begin(); oled.clear(); oled.on(); oled.setFont(FONT16X32_sega); } void loop() { for (byte i = 0; i < 5; i++) { Vcc += readVcc(); } Vcc /= 5; shumodav(); Vbat = ((rezult / 1023.0) * Vcc) / 1000; if (Vbat >= 0.95) { oled.setCursor(16, 0);#if NASTROYKA oled.print(rezult); #else oled.print(Vbat, 2); oled.print("/"); #endif } Vcc = 0; } long readVcc() { // чтение реального напряжения питания // Read 1.1V reference against AVcc // set the reference to Vcc and the measurement to the internal 1.1V reference #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) ADMUX = _BV(MUX5) | _BV(MUX0); #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) ADMUX = _BV(MUX3) | _BV(MUX2); #else ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif delay(75); // Wait for Vref to settle ADCSRA |= _BV(ADSC); // Start conversion while (bit_is_set(ADCSRA, ADSC)); // measuring uint8_t low = ADCL; // must read ADCL first - it then locks ADCH uint8_t high = ADCH; // unlocks both long result = (high << 8) | low; // result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000 // индикатор показывал 4990, вольтметр 4576мВ (4576/4990)*1.1=1.008737 result = 1031938L / result; // Calculate Vcc (in mV); 1031938 = 1.008737*1023*1000 return result; // Vcc in millivolts } void shumodav() { // главная функция //заполнить таблицу нолями в начале цикла for (int s = 0; s < ts; s++) { for (int e = 0; e < 2; e++) { myArray[s][e] = 0; } } // основной цикл накопления данных for (numbersamples = 0; numbersamples < ns; numbersamples++) { #if NASTROYKA aread = readVcc(); #else aread = analogRead(ain); #endif // уходим работать с таблицей//// tablework(); } // заполнен массив, вычисляем максимально повторяющееся значение int max1 = 0; // временная переменная для хранения максимумов for (byte n = 0; n < ts ; n++) { if (myArray[n] > max1) { //перебор 2-х элементов строк max1 = myArray[n]; // запомним куда больше всего попало firstsample = myArray[n]; // его 1 элемент = промежуточный результат. } } //*****вторая фаза алгоритма *********///// // если старый отсчёт не равен новому, //и флага включения счёта времени небыло, то if (oldfirstsample != firstsample && waitbegin == false) { prevmillis = millis(); // скидываем счётчик времени на начало waitbegin = true; } // активируем флаг ожидания // если до истечения лимита времени отсчёт сравнялся //со старым, то снимаем флаг if (waitbegin == true && oldfirstsample == firstsample) { waitbegin = false; rezult = firstsample; } // если всё таки отсчёт не сравнялся, а время ожидания вышло if (waitbegin == true && millis() - prevmillis >= mw) { oldfirstsample = firstsample; waitbegin = false; rezult = firstsample; } //то признаём новый отсчёт конечным результатом функции. } // конец главной функции void tablework() { // функция внесения данных в таблицу // если в таблице совпадает отсчёт, то инкрименировать //его счётчик во втором элементе for (byte n = 0; n < ts; n++) { if (myArray[n] == aread) { myArray[n] ++; return; } } // перебираем ячейки что б записать значение aread в таблицу for (byte n = 0; n < ts; n++) { if (myArray[n] == 0) { //если есть пустая строка myArray[n] = aread; return; } } // если вдруг вся таблица заполнена раньше чем кончился цикл, numbersamples = ns; } // то счётчик циклов на максимум


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

* Ставим #define NASTROYKA 1
* Компилируем, заливаем код, запускаем, запоминаем значение на дисплее, например 5741
* Измеряем мультиметром реальное напряжение на выходе преобразователя, например 4979 (это в мВ)
* Считаем (4979/5741)*1.1=0.953997 - это реальное напряжение источника опорного напряжения
* Считаем 0.953997*1023*1000 = 975939
* Записываем результат в строку 100 в виде result = 975939L;
* Ставим #define NASTROYKA 0
* Компилируем, заливаем код, запускаем, готово.

В программе DipTrace разводим плату, размером с OLED дисплей 37х12мм


Полчаса нелюбимого занятия ЛУТом.


Найдите 10 отличий

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



Припаиваем. SMD индуктивность 4,7мкГн была мне любезно предоставлена , большое спасибо, Сергей.


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






Обзор понравился +126 +189

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

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

Вольтметр на основе микропроцессора

Выбор деталей

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

Анализ множества схемных решений показал, что для самостоятельного изготовления цифрового вольтметра целесообразнее всего воспользоваться программируемым микропроцессором типа РІС16F676. Тем, кто плохо знаком с техникой перепрограммирования этих чипов, желательно приобретать микросхему с уже готовой прошивкой под самодельный вольтметр.

Особое внимание при закупке деталей следует уделить выбору подходящего индикаторного элемента на светодиодных сегментах (вариант типового стрелочного амперметра в этом случае полностью исключён). При этом предпочтение следует отдать прибору с общим катодом, поскольку число компонентов схемы в этом случае заметно сокращается..

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

После приобретения всех необходимых деталей следует перейти к разводке схемы вольтметра (изготовлению его печатной платы).

Подготовка платы

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

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

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

Блок питания (БП)

Для того чтобы будущий вольтметр нормально функционировал, ему потребуется отдельный или встроенный блок питания постоянного тока. Этот модуль собирается по классической схеме и рассчитан на выходное напряжение 5 Вольт. Что касается токовой составляющей этого устройства, определяющей его расчетную мощность, то для питания вольтметра вполне достаточно половины ампера.

Исходя из этих данных, подготавливаем сами (или отдаём для изготовления в специализированную мастерскую) печатную плату под БП.

Обратите внимание! Рациональнее будет сразу подготовить обе платы (для самого вольтметра и для блока питания), не разнося эти процедуры по времени.

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

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

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

Сборка и настройка

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

Важно! Лишь после того, как есть полная уверенность в правильности установки самой ответственной детали, можно переходить к её запаиванию («посадке на припой»).

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

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

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

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

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

Видео

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

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

Используя микросхемы серии К176, а именно дешифраторы К176ИД2, имеющие на своих входах триггеры памяти можно построить вольтметр, показания которого будут столь же оперативно изменяться как и в приборах построенных на микросхемах К572ПВ2 или К572ПВ5.

Принципиальная схема трехразрядного вольтметра, измеряющего напряжение от нуля до 9,99В показана на рисунке 1. Основу прибора составляет трехразрядный счетчик на микросхемах D3-D5. На вход этого счетчика постоянно поступают импульсы частотой около 3 кГц от мультивибратора на элементах D1.1 и D1.2. Счетчик все время считает по кругу от нуля до 999, он не имеет никаких входов кроме информационного и не может устанавливаться в нуль какими-то внешними импульсами. На выходе счетчика кроме дешифраторов с семисегментными индикаторами включена резистивная матрица, состоящая из резисторов R5-R16.

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

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

В этот момент на выходе компаратора устанавливается логическая единица. Она запускает одновибратор на элементах D1.3, D1.4, который вырабатывает короткий импульс. Этот импульс поступает на входы "X" дешифраторов D6-D8 и записывает в их триггеры тот код, который был в этот момент на выходах счетчика. Это число отображается индикатором до тех пор пока не поступит следующий импульс от одновибратора.

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

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

Номиналы резисторов R5-R16 рассчитаны и их сопротивления не соответствуют номинальному ряду, поэтому некоторые из них нужно набирать из двух-трех. Класс точности должен быть не менее 4%, от него в первую очередь зависит точность показаний прибора. Удобно взять обычные резисторы сопротивлением на 5-20% меньшего сопротивления чем на схеме, например, вместо R11 на 90 кОм берем на 82 кОм, а затем контролируя сопротивление точным омметром при помощи мелкой шкурки стачиваем резистивный слой с одной стороны корпуса резистора до получения нужного сопротивления.

Рисунок 2
Установив сопротивления указанные на схеме можно получить класс точности прибора 4-6%. Более высокую точность с серией К176 получить трудно. Если требуется более высокая точность напряжение на каждый резистор следует подавать через пару ключей микросхемы К561КТ3 (рисунок 2). В этом случае можно получить класс точности 0,1-0,5%, но это сильно усложняет схему.

Существенно повысить класс точности (1-2%) можно если счетчики К176ИЕ2 заменить на К561ИЕ14. К тому же нужно разделить цепи питания счетчиков с компаратором и светодиодных индикаторов, поскольку индикаторы потребляют большой ток и могут оказывать дестабилизирующее действие на формирователь ступенчатого напряжения. Калибруют прибор подбором номинала R3. Точно установить прибор на нуль можно включением резистора сопротивлением в несколько мегаом между выводом 4 и 11 компаратора.

Скорость работы прибора можно существенно увеличить если поднять частоту мультивибратора, например до 10-15 кГц, но в этом случае нужно соответствующим образом сократить длительность импульса, вырабатываемого одновибратором на элементах D1.3 и D1.4, таким образом, чтобы длительность вырабатываемого им импульса была меньше периода импульсов на выходе мультивибратора.

Верхний предел измерения можно установить подбором номинала R3, например, если нужно измерять 0..,99,9В его сопротивление должно быть около 1 Мом (окончательно подбирается при калибровке).

Уже несколько лет занимаюсь радиоэлектроникой, но стыдно признаться, у меня все еще нет нормального блока питания. Запитываю собранные устройства тем, что попадется под руку. От всяких полудохлых батареек и трансформаторов с диодным мостом без какой либо стабилизации напряжения и ограничения выходного тока. Такие извращения довольно опасны для собранной конструкции. Наконец-то решился собрать нормальный блок питания. А начал сборку с . Надо конечно было начинать с другого, но как уже есть. Поскольку понемногу занимаюсь говнокодерством, то решил сам разработать показометр. В качестве экрана стоит дисплей от Nokia-1202. Наверно я уже всех задолбал с этим дисплеем, но он в 3 раза дешевле, чем 2x16 HD44780 (по крайней мере у нас). Вполне паябельный разъем и вообще неплохие характеристики. Короче - хороший вариант для измерителя напряжения и тока.

Электрическая схема цифрового ампервольтметра для БП

В первой и второй строчке отображается усредненное значение напряжения и тока из 300 замеров АЦП. Это сделано для большей точности измерения. В третьей строчке выводится сопротивление нагрузки, рассчитанное по закону Ома. Хотел сперва сделать, чтоб выводилась потребляемая мощность, но сделал сопротивление. Может позже переделаю на мощность. В четвертой строчке выводится температура измеряемая датчиком DS18B20 . Он запрограммирован измерять температуру от 0 до 99 градусов Цельсия. Его надо установить на радиатор выходного транзистора, или на какой нибудь другой элемент схемы, где есть сильный нагрев.


К микроконтроллеру можно так же подключить кулер для охлаждения радиатора транзистора. Он будет изменять свои обороты при изменении температуры измеряемой датчиком DS18B20 . На ножке PB3 присутствует ШИМ сигнал. Кулер подключается к этому выводу через силовой ключ. В качестве силового ключа лучше всего использовать MOSFET транзистор. При температуре в 90 градусов у вентилятора будут максимальные обороты. Датчик температуры можно и не устанавливать. В этом случае в четвертой строчке просто высветится надпись OFF . Кулер подключаем на прямую. На выходе PB3 будет 0.


В архиве есть два варианта прошивки. Одна на максимально измеряемый ток в 5 ампер, а вторая до 10 ампер. Максимально измеряемое напряжение – 30 вольт. Коэффициент усиления ОУ LM358 по расчетам выбран 10. Для разных прошивок нужно подобрать шунт. Не у всех есть возможность измерять сотые доли ома и прецизионные резисторы. Поэтому в схеме есть два подстроечных резистора. Ними можно подкорректировать показания измерений.

Там-же в архиве есть и печатная плата. Есть небольшие различия на фото - там она немножко подправленная. Удалена одна перемычка и размер меньше по высоте на 5 мм. Стабильность показаний ампервольтметра высокая. Иногда плавает только на сотые доли. Хотя сравнивал всего лишь с моим китайским тестером. Для меня этого вполне хватит.


Всем спасибо за внимание. Все вопросы задаем на форуме. Показометр сделал Бухарь .

Обсудить статью ЦИФРОВОЙ АМПЕРВОЛЬТМЕТР

Придумать все самому не получается – пока знаний программирования микропроцессоров не достаточно (только учусь), а отставать не хочется. Серфинг Интернета дал несколько разных вариантов как по сложности схемотехники и выполняемых функций, так и самих процессоров. Анализ ситуации на местных радиорынках и трезвый подход (покупать то что по карману; делать то, что реально сможешь, а процесс изготовления да время настройки не затянется на неограниченное время) остановил мой выбор на схеме вольтметра описанного на www.CoolCircuit.com.

Итак, нижеприведенная принципиальная схема уже исправлена . Прошивка осталась родная (main.HEX - приобщаю).

Те, кто процессоры «держит в руках часто» дальше могут не читать, а остальным, особенно кто в первый раз, расскажу, как все сделать хоть и не оптимально (да простят мне профессионалы стиль изложения), но в итоге правильно.
Итак, для справки: семейство процессоров РІC на 14 ножек имеют разную распиновку поэтому нужно проверить подходит ли имеющийся у Вас программатор с панельками под этот чип. Обратите внимание именно на 8-пиновую панельку, как правило, именно она и подходит, а крайние справа выводы просто висят. Я пользовался обычным программатором «PonyProg» .

Следует учесть при пограммировании РІС важно не затереть калибровочную константу внутреннего генератора чипа ибо внешний кварц здесь не используется. Она записана в последней ячейке (адресе) памяти процессора. Если использовать IcProg, выбрав тип МК, то в окне – «Адрес программного кода» в последней строке обозначенной адресом - 03F8 крайние справа четыре символа и есть указанная индивидуальная константа. (Если микросхема новая и ни разу не программированная то после кучи символов 3FFF – последним будет что то типа 3454 – это самое то).

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

Перед программированием МК, необходимо в IcProg сначала дать команду «Читать все» и посмотреть на вышеуказанную ячейку памяти – там будет значится индивидуальная константа этого чипа. Ее надо переписать на бумажку (в памяти не держать!- забудешь).
- загрузить программный файл прошивки МК – с расширением *.hex (в даном случае -"main.hex") и проверить какая константа записана в той же ячейке в данном программном продукте. Если она отличается – поставить курсор и ввести туда данные, ранее записанные на бумажке.
- нажимаем команду программировать - после появившегося вопроса типа: «использовать ли данные осцилятора из файла» – соглашаетесь. Ибо Вы уже проверили, что там то что надо.

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

Итак, если все этапы пройдены верно, – микросхема МК готова к использованию. Дальше дело техники.
От себя хочу добавить, что транзисторы здесь не критичные – подходят любые р-n-р структуры, в т.ч. советские, в пластмассовом корпусе. Я использовал выпаянные из импортной бытовой техники после проверки на соответствие структуры проводимости. В этом случае присущ еще один нюанс – расположение вывода базы транзистора может быть по середине корпуса или с краю. Для работы схемы это безразлично, нужно только соответственно формировать выводы при пайке. Постоянные резисторы для делителя напряжения – именно указанного номинала. Если найти импортный подстроечный резистор на 50 кОм не удастся, то советского производства желательно взять чуточку больше - 68 кОм, а 47 кОм брать не рекомендую ибо в случае одновременного совпадения пониженных номиналов - потеряется расчетное соотношение сопротивлений делителя напряжения, которое может быть трудно исправить подстоечником.

Как я уже писал у моего блока питания два плеча – поэтому сделал сразу два вольтметра на одной плате, а индикаторы вывел на отдельную плату для экономии места на лицевой панели. Развел под обычные элементы. Файлы с разводкой плат, исходник и hex прилагаются в архиве. У Вас - SMD, то переделать ее не трудно, если надо обращайтесь.

Для тех, кто захочет повторить этот вольтметр и имеет, как у меня, двухполярный блок питания с общей средней точкой - напоминаю о необходимости питания обоих вольтметров от двух отдельных (гальванически разделенных) источников. Скажем - отдельных обмоток сылового трансформатора или, как вариант – импульсный преобразователь, но обязательно с двумя обмотками по 7 Вольт (нестабилизированных). Для тех, кто будет делать «импульсник»: ток потребления вольтметра от 70 до 100 мА в зависимости от размера и цвета индикатора. Иначе никак ибо на порт МК нельзя подавать отрицательное напряжение.
Если кому понадобится и схема преобразователя, спрашивайте на форуме, я сейчас над этим вопросом работаю.

Архив с нужными даными и печатками в SLayout-5rus: