Простой цифровой вольтметр ch-c3200

Views: 2518


voltmetr-300x219В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип построения цифровых вольтметров, описание схемы, прошивки контроллеров, а также программа на Ассемблере с комментариями. Большой популярностью пользуются цифровые вольтметры среди автолюбителей для контроля напряжения бортовой сети автомобиля. Поэтому рассматриваемая конструкция, ориентирована на возможность питания от бортовой сети автомобиля (12-24 вольта) и для индикации и контроля питающего напряжения.

Для реализации этого проекта нам потребуется PIC-контроллер с аналого-цифровым преобразователем (АЦП). По монтажному месту нам подойдут из серии PIC16 – PIC16F819 или PIC16F88.

ВНИМАНИЕ! последняя версия прошивки, только под PIC16F88.


Схема

schem_volt_02

Позиционное обозначение элементов сохранено согласно монтажной схемы платы. Питание подается на контакты 1, 2 соединителя, контакты 3, 4 используются для подключения индикатора или исполнительного устройства. Подается контролируемое напряжение на контакт 9. Контролируемое напряжение не должно превышать 100 V.


Измерение напряжения

Для измерения напряжения будем использовать вход AN0. При помощи перемычек R20 и R18 сконфигурируем входную цепь. В качестве делителя входного напряжения будем использовать резисторы R1 и R2. Соотношение 20/1 позволит нам измерять постоянные напряжения до 100 V. В качестве опорного напряжения будем использовать напряжение стабилизатора питания контроллера.

schem_izm1

В выбранных нами контроллерах встроен десятиразрядный АЦП, это значит, что выбранный нами диапазон опорного напряжения 5.0 V он «разделит» на 1024 значения. Т.е. если на вход контроллера AN0 подавать напряжение от 0 до 5 V, то с регистров АЦП ADRESH и ADRESL сможем сосчитать значение от 0 до 1023.

Значит, в нашем случае весовое значение одного разряда АЦП составит 5/1024 = 0,0048828125 V.

Для вычисления напряжения необходимо полученное значение АЦП умножать на 0,0048828125.

Например, при измерении мы получили значение 359. Для вычисления напряжения нам необходимо 359*0,0048828125 = 1,7529296875. Или округленно 1,8 вольта.

Но как нам измерять напряжения выше 5 вольт? Для этого и используется входной делитель на резисторах R1 и R2. Выберем R2=10 кОм, почему 10, потому если входные цепи АЦП требуют, что бы источник имел сопротивление не ниже 10 кОм. А в целях уменьшения входного тока, возьмём максимальное значение. R1 выберем равное = 200 кОм  для обеспечения необходимого диапазона входного напряжения.

Коэффициент деления 200/10=20. Это значит, что напряжение, поступающее на вход делителя, будет уменьшено на его выходе в 20 раз. При максимальном входном напряжении на входе контроллера 5 V мы сможем измерять напряжения 5*20=100 V или для нашего случая 99,9 V. Такой диапазон достаточен для многих устройств, включая и автомобильную технику.

Итак, если мы выбрали для индикации минимального значения 0,1 вольт, то диапазон индицируемых значений составит от 0,1 до 99,9 вольт.

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


Питание вольтметра

Для питания контроллера используется стабилизатор 78L05 с максимальным входным напряжением до 35 V. Мы планируем применить вольтметр для контроля напряжения в бортовой сети автомобиля, для этого нам необходимо принять меры по защите стабилизатора от бросков напряжения и от импульсов обратной полярности. Для бортовой сети в 12 V напряжение в «нормальных» автомобилях не должно превышать 15 V. Для 24-x вольтовых – 30 V.

schem_pit

Для защиты применяется цепь из стабилитрона Z2, резистора R22 и диода D4. Диод защищает от отрицательного напряжения или от неправильного подключения. Резистор предназначен для гашения напряжения превышающего напряжение стабилизации стабилитрона Z2. Величина стабилизации стабилитрона для 12 вольтовой сети 24 V, для 24 вольтовой можно принять от 30 до 33 V.


Контроль напряжения и формирование управляющего сигнала

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


Программа

Для работы контролера необходима программа, которая будет выполнять все наши требования по работе устройства. Программа написана на Ассемблере с применением среды MPLAB IDE v8.83.

Наша программа кроме измерения напряжения и вывода его значения на индикатор будет выполнять и необходимые функции по контролю напряжения. Так как параметры по контролю напряжения необходимо задавать во время эксплуатации устройства, то добавим к нашему устройству кнопки управления. Кнопки управления подключаются к порту “B” микроконтроллера и используются для ввода параметров работы и калибровочных констант. Для сохранения параметров в отключенном состоянии используется EEPROM контроллера. Запоминание происходить при выходе из режима настройки.

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

Для этого введем два параметра  u1  – верхний аварийный уровень контроля напряжения и  u2 – нижний аварийный уровень контроля напряжения. Этими параметрами мы сможем контролировать отклонение напряжения от заданного значения. Т.е. определяем минимальное и максимальное допустимое значение.

ur_con

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

Обозначаться она будет на индикаторе как reg  – функция выбора режимов работы, будет иметь три режима:

  • reg – индикатор напряжения,
  • u3 – индикатор напряжения с функцией сигнализации- “уровень напряжения в норме“,
  • u4 – индикатор напряжения с функцией сигнализации – “уровень напряжения не в норме“.

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

Что это за параметры?

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

Параметр aou – предназначен для формирования минимальной длительности сигнала аварии (или управления). Если появился сигнал “Авария”, но по какой-то причине напряжение моментально вернулось в норму, то маленький импульс может «не достучаться» до человека, или быть им просто не замечен. Поэтому этот параметр предназначен для задания времени длительности аварийного сигнала, если длительность аварийных состояний очень короткая.

Точность измерения напряжения

Точность измерения зависит от источника опорного напряжения. Но так как мы в качестве опорного напряжения (для снижения стоимости) используем напряжение питания контроллера Vdd, а если еще учитывать погрешность резисторов используемых в делителе напряжения, то, естественно, после сборки устройства, показания нашего вольтметра могут незначительно отличаться от идеала. На практике после сборки вольтметра отклонение составляло не более 0,5 V, а точность после калибровки составляет ± 0,1 V. Для устранения этого недостатка введем функцию калибровки cal. Эта функция предназначена для настройки точности показаний вольтметра после сборки. Эта процедура выполняется один раз и в процессе эксплуатации больше не используется.

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


 Режимы работы

Работа вольтметра будет разделена на два режима.

  • Основной режима работы. В этом режиме на индикаторе показывается измеряемое напряжение, а если активизирована одна из функций контроля напряжения, то при измерении напряжения вне зоны уровней контроля на индикаторе будет попеременно индицироваться напряжение и бегущая строка failure.
  • Режим задания параметров. В этом режиме задаются все необходимые параметры контроля напряжения, временные длительности управляющего сигнала и основной режим работы.

Для понимания того,  как осуществляется доступ к параметрам настройки вольтметра назовём кнопки управления.

klava

Кнопки управления слева направо:

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

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

funkc-1024x537

Войти в режим настройки можно нажатием любой из трех первых кнопок.

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

При нажатии на кнопку Два или Три будет переход в режим настройки и на индикаторе появиться первая функция меню reg. Если при этом нажимать кнопку Два или Три, то можно путешествовать по функциям выбирая необходимую.

Назначение функций:

  1. reg – функция настройки режима работы.
  2. u1 – функция задания верхнего аварийного уровня.
  3. u2 – функция задания нижнего аварийного уровня.
  4. ain – функция задания времени задержки подачи сигнала управления (в сек).
  5. aou – функция задания времени минимальной длительности сигнала управления (в сек).
  6. cal – функция калибровки вольтметра.
  7. rin – режим индикации.
  8. tel – телефон изготовителя (для консультаций).

Для более подробного описания по работе функций и калибровки вольтметра смотрите в описании.

Рассмотрим некоторые места программы, которые могут быть интересны.

Марка и номер ПО изделия, где и как изменить.

Семисегменный индикатор предназначен для вывода числовой информации, но используя наше воображение на нем можно закодировать и некоторые символы. Кодируются символы в описание #define со строки 282. А сам текст, который выводиться при включении вольтметра в режиме бегущей строки, смотрим текст программы начиная со 466 строки. С вашими предпочтениями необходимо изменить значение констант в командах retlw которые начинаются с символа “с”.

;**************************************************************************************************

text_1  addwf PCL,f ; тип устройства (счет строк с 0)
                       retlw .12    ; количество (символов) в сообщении
                       retlw cc                      ; c
                       retlw ch                      ; h
                       retlw cM                      ; "-"
                       retlw c3                      ; 3
                       retlw c2                      ; 2
                       retlw c0                      ; 0
                       retlw c0                      ; 0
                       retlw cM                      ; "-"
                       retlw c0                      ; 0
                       retlw c2                      ; 2
                       retlw cC                      ; С

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

        retlw b'11111110' ; "8"
                       retlw b'10000000' ; "-"
                       retlw b'01111110' ; "0"
                       retlw b'11011010' ; "5"
                       retlw b'11111010' ; "6"
                       retlw b'10000000' ; "-"
                       retlw b'10011110' ; 3-3
                       retlw b'00001110' ; 7-7
                       retlw b'11001100' ; "4"
                       retlw b'10000000' ; "-"
                       retlw b'01111110' ; "0"
                       retlw b'11001100' ; "4"
                       retlw b'10000000' ; "-"
                       retlw b'01111110' ; "0"
                       retlw b'11011010' ; "5"

Замените двоичные константы в командах retlw на символы цифр например, цифра один записывается как c1, 2 – c2, 3 – c3 …


Выбор PIC-контроллера

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


Комплектующие для самостоятельной сборки

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

Наименование Типоразмер Тип Количество Примечание
Стабилизатор SOIC-8 78L05 1 ST1
PIC-контроллер soic-18 PIC16F88 1 PIC1
Транзистор sot23 BC847C 1 V2
Диод SOD80 LS4148 1 D2
Диод SMD
SM4007
1 D4
Стабилитрон SOD80 BZV55-C33V 1 Z2
Тактовая кнопка  6×6
TACT 6×6-13.0
4 PB2,PB3,PB4,PB5
LED дисплей 3 разрядный22.5×14 (катод)  E30561-L-0-8-W 1 HL1
Конденсатор 0805 0,22х50v (0,1) 4 C4,C7,C2,C5
Эл.конденсатор E 220х25v (12V)47x50v (24v) 1 C8
Эл.конденсатор C 100х16v 1 C6
Резистор 1206 22 Ом 1 R22
Резистор 1206 0 Ом 1 R23
Резистор 0805 1,0 кОм 4 R10,R11,R13,R14
Резистор 0805 510 Ом (680-910) 8 R31,R32,R33,R34,R35,R36,R38,R39
Резистор 0805 10 кОм 3 R17,R2,R4
Резистор 0805 200 кОм 1 R1
Резистор 0805 0 Ом 5 R20,R18,R24,R26,R28
Соединитель 4 пин, 2,54
WH-04
1 CON2*
Соединитель 2 пин, 2,54
WH-02
1 CON2*
Гнездо 4 пин, 2,54 HU-04 (без контактов) 1 CON2*
Гнездо 2 пин, 2,54 HU-02 (без контактов) 1 CON2*
Контакты
Контакты для HU
6
Печатная плата ch-c0030pcb  1

Сборочный чертеж верхняя сторона платы

c3200_sb_top

Сборочный чертеж нижняя сторона.

c3200_sb_bot


Рекомендуемый порядок сборки

Сборку вольтметра начинайте с распайки PIC-контроллера. После этого проверьте на просвет отсутствие возможных замыканий. Далее запаяйте стабилизатор, затем резисторы, конденсаторы, транзистор, диод и стабилитроны. Т.е. все “низкорослые” элементы. После этого запаяйте тактовые кнопки. Затем индикатор и на последок соединители и электролитические конденсаторы.

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

c3200_vid_bot

c3200_vid_top


Программирование контроллера

Программирование PIC-контроллера можно выполнить непосредственно на плате, для этого можно использовать любой программатор, позволяющий выполнять внутрисхемное программирование. Рекомендуем для этого использовать внутрисхемный отладчик09974-_03  MPLAB ICD3 или программатор-отладчик pickit3_simple PICkit 3 .

c3200_prog программирование PIC- контроллера вольтметра.


Демонстрация доступа к функциям настройки параметров работы вольтметра

 


Демонстрация калибровки вольтметра

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

1. Калибруем по максимальному значению измеряемого диапазона.

Что это значит? Если вы планируете измерять диапазон напряжений, например, от 0 до 30 V, то необходимо выставить 30 V и по этому уровню калибровать вольтметр.

2. Калибруем по прибору более высокого класса.

Если вы желаете получить точность +/- 0,1 V, то нужно выставить значение с точностью до сотых – 30,00. Реально это сделать из того, что есть под руками сложно, поэтому надо попытаться установить максимально точно.

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

Как это делать посмотрите видеоролик. На ролике мы калибруем вольтметр по уровню напряжения 20 V.

 


[box title=”Файлы для загрузки” color=”#521BDE”]Схема Вольтметра[wpdm_file id=112]Описание Вольтметр[wpdm_file id=113]Сборочный Чертеж Платы[wpdm_file id=114]Прошивка для контроллера PIC16F88 (V19, обновлено 03/03/12)[wpdm_file id=115]Программа (ассемблер, MPLAB — V8.76) PIC16F88 (V19, обновлено 03/03/12)[wpdm_file id=116]Прошивка V19.1[wpdm_file id=117]Рукописи – все файлы проекта[wpdm_file id=324][/box]



Это может быть интересно


  • Простой оптический сенсор приближенияПростой оптический сенсор приближения
    Оптический сенсор, назначение оптический концевик, для автоматики, бесконтактный выключатель с функцией автоматического отключения...
  • ch-4050 – дифференциальный терморегуляторch-4050 – дифференциальный терморегулятор
    Views: 1881 ch-4050 – это не новая модель, это расширенная версия универсального терморегулятора ch-4000. Различия коснулись в появлении новой функции дифференциального регулирования. Это вид регулирования по разности температур измеренного двумя …
  • Сенсорный выключатель светаСенсорный выключатель света
    Views: 12242 Хотя в настоящий момент актуальны системы управления освещением с передачей данных по электросети, но я думаю, что проекты такого рода тоже имеют право на жизнь. Анонс Три вида …
  • Мультизоновый индикатор-терморегулятор ch-c3010Мультизоновый индикатор-терморегулятор ch-c3010
    Views: 1173 Часто возникает необходимость получить информацию по температуре с множества точек контроля. Вам необходимо знать температуру в комнате, в коридоре,  температуру на улице, а в погребе (или на балконе) …
  • CCP модуль для декодирования ИК-кодов пультов ДУCCP модуль для декодирования ИК-кодов пультов ДУ
    Views: 1049 Множество изготовителей для своих пультов дистанционного управления на ИК лучах используют принцип широтно-импульсной модуляции. В таких кодах бит единицы представляется импульсом большой длительности, а ноль импульсом короткой длительности. …
  • LATINO – открытый проект ch-светомузыкиLATINO – открытый проект ch-светомузыки
    Views: 1660   Проект построенный на некоторых принципах ch-светомузыка. Проект ознакомительный предназначен, для самостоятельного построения простого и эффективного светосинтезатора. Вывод осуществляется на ВОУ собранной на драйверах HL1606. Для этого была …
  • Moving average – скользящее среднееMoving average – скользящее среднее
    Views: 2249 Скользящая средняя, скользящее среднее (англ. moving average, MA) — общее название для семейства функций, значения которых в каждой точке определения равны среднему значению исходной функции за предыдущий период. Скользящие средние обычно используются с данными временных рядов для сглаживания …
  • Trimax – кодирование и декодирование ИК-командTrimax – кодирование и декодирование ИК-команд
    Views: 2217 Первое, что надо понять назначение кнопок клавиш пульта, а также, что за кодирование реализовано в ИК- пульте. Для назначения клавиш обратимся к описанию, а для взлома кодирования воспользуемся …
  • MCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналовMCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналов
    Views: 619 При проектировании простых устройств автоматики, часто необходимо иметь механизм звукового оповещения. Самый верхний уровень, это формирование голосовых сообщений, но об этом, как то по позже… В самом примитивном …
  • ch-светомузыка и AK4113ch-светомузыка и AK4113
    Views: 1286 Пришло время вернуться к светомузыке. На сегодня использование аналогового входа стало непрактичным, на сегодня необходимо использовать S/PDIF и Toslink. С этим надо было как то разобрать, что это …



Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее