Ацп вольтметр своими руками

Вольтметр на ICL7135 (+-20000 отсчетов)

(Melted_Metal написал вопрос в письме, но думаю, интересно будет и кому-нибудь еще.)

ICL7135 — АЦП двойного интегрирования.

Вкратце, принцип работы такой: подается clock примерно постоянной частоты (достаточно простейшего RC-генератора). Далее, т.н. секвенсор подключает измерительный вход через резистор к входу интегратора на некоторое точно отмеренное время (например, 20000 импульсов clock). Далее через тот же резистор подключается источник опорного напряжения, но в полярности, разряжающей конденсатор интегратора, при этом считаются импульсы до прохода напряжением конденсатора нуля. Количество импульсов и будет значением напряжения на входе.

В реальных схемах есть еще схема определения знака напряжения, схема компенсации offset’ов и т.п.
По такой схеме построены практически все цифровые тестеры-клоны D830 и многие другие измерительные приборы. Правда, классикой считаются ICL7106 (для ЖК) и ICL7107 (для LED), имеющие диапазон +-2000, чего для многих целей достаточно.
Преимущество данного АЦП(http://edu.dvgups.ru/METDOC/GDTRAN/YAT/TELECOMM/ELEKTRONIKA/METOD/STAFEEV1/frame/5_1.htm) — простота компенсации помех 50 Гц (для этого надо, чтобы время интегрирования сигнала было кратно 1/50 с) и неплохая линейность.

ICL7135 используется как АЦП в RLC-2, например. Микросхема удобная; до повсеместного применения MCU это был самый простой и удобный способ сделать неплохой измеритель.
На плате видны транзисторы КТ315 (олдскул) для управления (катодами?). (Анодами?) управляет КР514ИД2 (тоже олдскул 🙂 — ICL7135 выдает двоично-десятичный код. Далее, на плате имеются LM7805 (+7-12В -> +5В), ICL7660(+5 -> -5В), 74HC04, индикаторы.
С другой стороны платы ИОН REF3125 (подстроечник подключен к нему) и интегрирующий конденсатор C_int типа К71-7 ёмкостью 0.374 мкФ 250В 0.5%. Емкость и ее допуск не важны, напряжение — с громадным запасом, но вот тип конденсатора очень важен. К71-7 — конденсаторы с полистирольным диэлектриком. Их очень любят всякие аудиофилы, но конденсаторы на самом деле замечательные (правда, их уже не выпускают)
(http://musatoffcv.narod.ru/Libs/Capacitors/Film/K71-7.pdf www.elmer.ru/skz/k71-7.html www.electroclub.info/other/conders2.htm). В ПЭ надо идти за ними на Готвальда, соответственно, минимум — 12 штук (по 3.60).
главное в данном случае свойство полистирола — коэффициент диэлектрической абсорбции. Он должен быть как можно меньше.
Из импортных подходят с буквами KMPA (у меня он, видимо, из ЭЛТ-монитора, из кадровой развертки, которая тоже должна быть сильно линейной). Подходят фторопластовые конденсаторы (но с такой емкостью я их не видел).

Конденсаторы C_az и C_ref менее критичны. Просто пленочных достаточно. C_ref можно даже керамику.

В окончательном варианте макет мумифицирован малярным скотчем 🙂

Что не понравилось:
(1) знак пришлось выводить отдельным светодиодом,
(2) десятичные точки — это вообще тихий ужас (надо ставить отдельную микросхему 4*ИЛИ-НЕ вроде)
(3) вычесть 10000 отсчетов для режима омметра невозможно.

Однако у ICL7135 есть выводы коммуникации с микроконтроллером. Там, правда, не регистры, а выход знака и счетный выход. Тактировать можно также от MCU, соответственно, пропадает необходимость в отдельном RC-генераторе. В паре с ATMEGA48 работают замечательно. Встроенный секвенсор работает хорошо.

Читайте также:  Как ровно класть блоки своими руками

Для переделки В7-16 я перешел на TC500А. Она работает на том же принципе, но не имеет секвенсора. Линейность у нее хорошая, пишут даже, что обеспечит 16-17 бит. Однако в ней отсутствует секвенсор, и всем приходится управлять микроконтроллеру. Все бы ничего, но от точности таймингов очень сильно зависит точность преобразования. Для TC500 есть микросхема-компаньон TC520, которая содержит секвенсор, но в ПЭ ее нет. Можно было сделать секвенсор на ПЛИС, но до них как-то еще руки не дошли. В итоге оно (как-то) работает с контроллером, но я подозреваю, что прерывания могут сбивать тайминги, из-за этого появляется ощутимый «шум» в младших знаках (ICL7135 шумит меньше)

В процессе работы одну микросхему ICL7135 попортил; когда ее выпаивал — попортил плату (надо было выкусывать). Но результатом доволен. Надо будет вставить ее в корпус от горелого тестера и заэкранировать 🙂

Источник

Урок 10. АЦП в AVR микроконтроллерах. Простой вольтметр на AVR.

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

Первое о чем нужно сказать — АЦП микроконтроллера умеет измерять только напряжение. Чтобы произвести измерение других физических величин, их нужно вначале преобразовать в напряжение. Сигнал всегда измеряется относительно точки называемой опорное напряжение, эта же точка является максимумом который можно измерить. В качестве источника опорного напряжения (ИОН), рекомендуется выбирать высокостабильный источник напряжения, иначе все измерения будут плясать вместе с опорным.

Одной из важнейших характеристик является разрешающая способность, которая влияет на точность измерения. Весь диапазон измерения разбивается на части. Минимум ноль, максимум напряжение ИОН. Для 8 битного АЦП это 2^8=256 значений, для 10 битного 2^10=1024 значения. Таким образом, чем выше разрядность тем точнее можно измерять сигнал.

Допустим вы измеряете сигнал от 0 до 10В. Микроконтроллер используем Atmega8, с 10 битным АЦП. Это значит что диапазон 10В будет разделен на 1024 значений. 10В/1024=0,0097В — с таким шагом мы сможем измерять напряжение. Но учтите, что микроконтроллер будет считать, величину 0.0097, 0.0098, 0.0099… одинаковыми.

Тем не менее шаг в 0,01 это достаточно неплохо. Однако, есть несколько рекомендаций, без которых эта точность не будет соблюдена, например для измерения с точностью 10бит, частота на которой работает АЦП должна быть 50-200 кГц. Первое преобразование занимает 25 циклов и 13 циклов далее. Таким образом, при частоте 200кГц мы сможем максимум выжать
200 000/13 = 15 384 измерений.

В качестве источника опорного напряжения можно использовать внутренний источник и внешний. Напряжение внутреннего источника (2,3-2,7В) не рекомендуется использовать, по причине низкой стабильности. Внешний источник подключается к ножке AVCC или Aref, в зависимости от настроек программы.

При использовании АЦП ножка AVCC должна быть подключена. Напряжение AVCC не должно отличаться от напряжения питания микроконтроллера более чем на 0,3В. Как было сказано, максимальное измеряемое напряжение равно опорному напряжению(Vref), находится оно в диапазоне 2В-AVCC. Таким образом, микроконтроллер не может измерить более 5В.

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

Читайте также:  Алюминиевая антенна сделанная своими руками

Формула для расчета делителя выглядит так:

Подставим наши значения в формулу:

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

Следовательно, когда мы измеряем напряжение через делитель, нужно полученное значение АЦП умножить на коэффициент=Uвых/Uвх.

Полная формула вычисления измеряемого напряжения будет выглядеть так:
U=(опорное напряжение*значение АЦП*коэффициент делителя)/число разрядов АЦП

Пример: опорное 5В, измеренное значение АЦП = 512, коэффициент делителя =2, АЦП 10разрядный.

(5*512*2)/1024=5В — реальное измеренное значение напряжения.

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

Перейдем к программной реализации. Создаем проект с указанными параметрами. Также подключим дисплей на порт D для отображения информации.

Измерение будет производиться в автоматическом режиме, обработка кода в прерывании, опорное напряжение подключаем к ножке AVCC. По сути нам нужно только обрабатывать получаемые данные. Измеренные данные хранятся в переменной adc_data[0]. Если нужно опрашивать несколько каналов, то выбираем какие каналы сканировать, а данные будут для ножки 0 в adc_data[0], для ножки 1 в adc_data[1] и т.д.

В основном цикле добавим строки:

result=((5.00*adc_data[0])/1024.00); //пересчитываем значение АЦП в вольты
sprintf(lcd_buffer,»U=%.2fV»,result); //помещаем во временную переменную результат
lcd_puts(lcd_buffer); //выводим на экран

Небольшое замечание, чтобы использовать числа с плавающей точкой, нужно в настройках проекта изменить (s)printf Features: int, width на float, width, precision. Если этого не сделать десятые и сотые мы не увидим.

Таким образом, мы всего лишь перевели значение АЦП в вольты и вывели на дисплей. Результат в протеусе выглядит так:

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

Файл протеуса и прошивка:

Update:
Измерение тока:

257 комментариев: Урок 10. АЦП в AVR микроконтроллерах. Простой вольтметр на AVR.

Уважаемый админ пожалуйста приведите пример таблицы напряжения, последние цыфры на дисплее прыгают и не понятно какая цыфра отображается
спасибо Вам за уроки, помощь и подсказки…

Большое спасибо за урок! Больше 20 сайтов перерыл, 2 вечера времени впустую, пока не нашел ваш. Сразу все заработало!

Добрый день! А как реализовать дифференциальный режим измерения с выводом минуса (если такой появляется)?

возьмите инструментальный усилитель и не мучайтесь

Админ почему нигде не расписали погрешности при измерениях например 500 v,стоило бы рассписать как делитель зависит от этих погрешностей и что к чему.

Добрый день.
Уважаемый Админ, подскажите пожалуйста, как можно вывести покозания, если АЦП=512 должно отображать «0», АЦП=1023-30?
Покажите пример…
Спасбо

проверяете значение АЦП если ниже 512 то обнуляете, если больше, то отнимаете 512. ну а дальше пропорцией пересчитываете

Доброе утро админ. Как я понял, получается так?
….
read_adc(0);
for(i=0;i … 5 6 7

Источник

Перезаряжаемый цифровой вольтметр с использованием АЦП ICL7107

В этом уроке расскажем как сделать простой цифровой вольтметр, который может измерять напряжения от 20 мВ до 200 В. Этот проект не будет использовать Ардуино или какой-либо другой микроконтроллер. Вместо этого будет использоваться АЦП, то есть ICL7107 с некоторыми пассивными компонентами. Вольтметр будет работать от литий-ионной батареи, которая может работать с этим вольтметром в течение 12 часов. Как только в нем кончится заряд, можно будет зарядить его, используя micro-USB кабель.

Читайте также:  Как сделать ботиночки для куклы своими руками

Шаг 1. Собираем необходимые компоненты

Для создания вольтметра без Ардуино вам понадобятся следующие детали (без указания количества означает — в единственном экземпляре):

  • ICL7107 IC, 40-контактная база IC
  • TL7660 IC, 8-контактная база IC
  • 7-сегментный дисплей с общим анодом x 4
  • 10 К Потенциометр
  • Клеммная колодка
  • Header-коннекторы «мама»
  • Header-коннекторы «папа»
  • Конденсаторы 10 мкФ х 2
  • Резистор 330E x 5
  • 2 х 100 кОм, 2 х 10 кОм, 1 х 1 кОм резистор
  • 1 х 1 м, 1 х 22 кОм, 1 х 47 кОм резистор
  • 0,22 мкФ, 0,47 мкФ конденсаторы
  • 2 х 100 нФ, 1 х 100 пФ
  • Ползунковый переключатель для включения / выключения
  • Мультиметровые зонды
  • Литий-ионный аккумулятор
  • Литий-ионное зарядное устройство на основе TP4056
  • Усилитель 3,7-4,2 В до 5 В

Соберите все эти компоненты, а затем переходите к разработке схемы.

Шаг 2. Рисуем принципиальную схему

Мы использовали EasyEDA, чтобы нарисовать всю эту схему. EasyEDA — отличный портал для проектирования больших и сложных схем. Это делает жизнь намного легче впоследствии. Вы можете скачать схему в формате PDF ниже для справки:

Шаг 3. Делаем модуль питания

В модуле питания есть в основном 3 компонента. Литий-ионный аккумулятор, одно Li-Po зарядное устройство TP4056 и усилитель напряжения, который увеличит напряжение, поступающее от аккумулятора, до 5 В. Мы использовали литий-ионный аккумулятор емкостью 1000 мАч, но вы можете использовать батарею меньшей емкости.

Шаг 4. Дизайн печатной платы

Как только схема для вольтметра нарисована, пришло время проектировать печатную плату. Можно использовать для этого разные инструменты, а можно портал проектирования печатных плат от EasyEDA. Для начинающих это больше подходит, чем Eagle или любое другое программное обеспечение CAD. После того, как PCB (печатная плата) спроектирована, мы загружаем файл gerber в JLCPCB и набираем необходимые параметры. JLCPCB является одним из лучших производителей печатных плат за последнее время, и цены также довольно разумные. Мы рекомендуем использовать их сервис, если вы думаете о создании прототипа вашего проекта. Таким образом, после оформления заказа мы получил товар в течение 14 дней. Ниже вы можете скачать необходимые файлы:

Шаг 5. Пайка компонентов и подключение источника питания

Как только вы получили печатные платы, пришло время спаять компоненты на ней. Следуйте электрической схеме и правильно расположите компоненты на месте. После пайки подключите положительный VCC (то есть 5 В) и GND (земля) к контактной площадке VCC и GND соответственно на нижней стороне печатной платы. Это не должно быть сложно, так как соединения довольно простые.

Шаг 6. Калибруем вольтметр

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

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

Источник

Оцените статью