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

Visits: 2482


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-c3200Простой цифровой вольтметр ch-c3200
    Visits: 2482 В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип …
  • MCC PIC24 – модуль REAL-TIME CLOCK AND CALENDAR (RTCC)MCC PIC24 – модуль REAL-TIME CLOCK AND CALENDAR (RTCC)
    Visits: 454 RTCC предоставляет пользователю часы реального времени и функция календаря (RTCC), точность “хода” может быть откалибрована. Основные особенности модуля RTCC: • Работает в режиме глубокого сна. • Возможность выбора источника …
  • OLED RET012864E/REX012864JOLED RET012864E/REX012864J
    Visits: 1445 RET012864E/REX012864J ОЛЕД индикатор производитель Raystar-Optronics приобретался в http://www.microchip.ua/ к сожалению никакой информации на сайте поставщика нет. Поэтому решил работу с этой версией индикатора на драйвере SSD1305 предоставить на своем сайте. Так как …
  • NeoPixel LED and PIC24NeoPixel LED and PIC24
    Visits: 612 Популярность однопроводной шины для управления светодиода типа WS2812 не ослабевает, а новые типы светодиодов в корпусах 3,5*3,5мм, 2,0*2,0мм становяться все больше привлекательными. Построение дисплеев для анимации требуют все …
  • Датчик контроля протечки воды ch-c0020Датчик контроля протечки воды ch-c0020
    Visits: 1936 Как здорово летом под теплым дождем с тобою вдвоем оказаться. Как классно по лужам бежать босиком, с тобою играть и смеяться! Но совсем грустно оказаться под таким дождем, который течет с …
  • Инфракрасный датчик движения, PIR-sensorИнфракрасный датчик движения, PIR-sensor
    Visits: 3063 Домашняя автоматика предполагает наличие датчиков движения, которые способны контролировать движения человека. Самым простым и доступным устройством позволяющие контролировать изменения ИК-излучения, это ПИР-сенсоры. На текущий момент доступны не дорогие модели D203B, D204B, D205B. Все …
  • LCD драйвер – UC1601sLCD драйвер – UC1601s
    Visits: 1566 http://svetomuzyka.narod.ru/project/UC1601s.html Читайте обновление на http://catcatcat.d-lan.dp.ua/?page_id=178 В данный момент можно приобрести в ООО “Гамма” несколько типов индикаторов на драйвере UC1601s. RDX0048-GC, RDX0077-GS, RDX0154-GC и RDX0120-GC выполнены по технологии COG.
  • Проект с использованием MCC часть 10Проект с использованием MCC часть 10
    Visits: 797 Алгоритм управления освещением от нажатия кнопки. Обработка удержания кнопки: Мы должны проверить кнопка в настоящий момент нажата и флаг удержания установлен, если да Проверить таймер удержания “отработал” – …
  • Самый простой диммер для светодиодного освещенияСамый простой диммер для светодиодного освещения
    Visits: 2973 Светодиоды все больше входят в нашу жизнь как источники освещения и как само собой разумеющееся, это вопрос регулировки яркости. Существует множество схемных решений, но в нашем варианте мы …
  • PIC18 – System ArbitrationPIC18 – System Arbitration
    Visits: 554 Системный арбитр. Разрешает доступ к памяти между выборами уровнями системы (т.е. Main, Interrupt Service Routine) и выбором периферийных устройств (т.е. DMA и Scanner) на основе назначенных пользователем приоритетов. Каждый …



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

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

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

НазадДалее