Простой цифровой вольтметр 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]



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


  • TM1650 драйвер LED семисегментного индикатораTM1650 драйвер LED семисегментного индикатора
    Views: 17850 Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd.  Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только …
  • Arduino LCD + STONE STVI056WT-01 + Strain gaugeArduino LCD + STONE STVI056WT-01 + Strain gauge
    Views: 460 Author li grey email: greyli1987@outlook.com The strain assessment instrument is used to assess the degree of corresponding muscle strain by obtaining the muscle surface action potential through silver …
  • Проект с использованием MCC часть 11Проект с использованием MCC часть 11
    Views: 863 Можно несколько облагородить программу вынести наши процедуры обработки нажатия кнопок в отдельные функции. Но вы должны понимать, что это хоть и не значительно, но будет тормозить общую скорость …
  • Мультимедийная сеть – AVC-LAN TOYOTAМультимедийная сеть – AVC-LAN TOYOTA
    Views: 5733 AVC LAN – протокол обмена данными мультимедийных систем автомобиля. Кодирование данных. При кодировании различаться три типа данных : преамбула – её назначение, это сообщение устройствам на шине, что начинается передача данных. …
  • Самый простой диммер для светодиодного освещенияСамый простой диммер для светодиодного освещения
    Views: 3035 Светодиоды все больше входят в нашу жизнь как источники освещения и как само собой разумеющееся, это вопрос регулировки яркости. Существует множество схемных решений, но в нашем варианте мы …
  • Униполярный шаговый двигательУниполярный шаговый двигатель
    Views: 2219     В приводах различных устройств часто применяются шаговые двигатели, Шаговый двигатели различают двух типов униполярные – когда обмотки коммутируются током текущим только в одну сторону, например при …
  • Счетчики посетителейСчетчики посетителей
    Views: 1270 Вас сосчитали!? или счетчики посетителей.   Для чего нужны счетчики посетителей? Какие они бывают? ТОРГОВЛЯ. Подсчитайте, сколько ваш магазин посещает человек за день. Кок много человек приходит утром, какое …
  • Самый простой индикатор уровня звукового сигналаСамый простой индикатор уровня звукового сигнала
    Views: 6321 Демонстрационный проект создания индикаторов уровня с использованием WS2812B. Изучив этот проект вы сможете  самостоятельно изготавливать и конструировать свои индикаторы уровня звукового сигнала. Дополнительно читайте статью Бегущие огни на …
  • Проект с использованием MCC часть 05Проект с использованием MCC часть 05
    Views: 1943 Эту часть назовем так как избавься от delay, там где а это реально не надо. Для это нам потребуется научиться использовать прерывания и работать с таймерами. Что такое …
  • REFERENCE CLOCK OUTPUT MODULEREFERENCE CLOCK OUTPUT MODULE
    Views: 506 REFERENCE CLOCK OUTPUT MODULE Модуль формирования опорного тактового сигнала Модуль опорного тактового сигнала обеспечивает возможность посылать сигнал синхронизации на тактовый опорный выходной контакт или контакты (CLKR) в зависимости от …



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

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

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

НазадДалее