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

Views: 2506


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]



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


  • Индикатор кода – RC-5 Protocol PhilipsИндикатор кода – RC-5 Protocol Philips
    Views: 989 Индикатор кода – RC-5 Protocol Philips При конструировании дистанционного управления на инфракрасных лучах для контроля удобно иметь индикатор кодов передаваемых пультом. Плата ch-c3000 позволяет изготавливать устройства с возможностью …
  • MPLAB® Harmony – или как это просто! Часть 4.MPLAB® Harmony – или как это просто! Часть 4.
    Views: 2023 Часть четвертая – это может показаться немного сложно. Структура проекта. Для облегчения конфигурирования проекты MPLAB Harmony обычно структурированы таким образом, чтобы изолировать код, необходимый для настройки «системы», от …
  • Проект с использованием MCC часть 11Проект с использованием MCC часть 11
    Views: 856 Можно несколько облагородить программу вынести наши процедуры обработки нажатия кнопок в отдельные функции. Но вы должны понимать, что это хоть и не значительно, но будет тормозить общую скорость …
  • TM1650 драйвер LED семисегментного индикатораTM1650 драйвер LED семисегментного индикатора
    Views: 17776 Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd.  Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только …
  • Altium Designer first projectAltium Designer first project
    Views: 265 Эта статья подразумевает, что у вас установлен и настроен Altium Designer как описано в статье  Altium Designer my setup system and project structure.  Обратите внимание! Библиотека постоянно обновляется, …
  • Проект с использованием MCC часть 16Проект с использованием MCC часть 16
    Views: 1080 Продолжим изучение EUSART. На этом этапе отработает передачи данных с ПК и получения эха. Для этого в основной цикл программы добавим код if(EUSART_DataReady) // проверим флаг готовности данных …
  • Система AT команд версии V2.0 для ESP8266 и ESP32Система AT команд версии V2.0 для ESP8266 и ESP32
    Views: 12684 Появление нового модуля на базе ESP32 заставило систематизировать систему AT команд, а так же систему обновления и для модулей на базе ESP8266. Начиная с версии v2.0 в ESP8266 …
  • Датчик контроля протечки воды ch-c0020Датчик контроля протечки воды ch-c0020
    Views: 1946 Как здорово летом под теплым дождем с тобою вдвоем оказаться. Как классно по лужам бежать босиком, с тобою играть и смеяться! Но совсем грустно оказаться под таким дождем, который течет с …
  • PIC18 – System ArbitrationPIC18 – System Arbitration
    Views: 566 Системный арбитр. Разрешает доступ к памяти между выборами уровнями системы (т.е. Main, Interrupt Service Routine) и выбором периферийных устройств (т.е. DMA и Scanner) на основе назначенных пользователем приоритетов. Каждый …
  • Униполярный шаговый двигательУниполярный шаговый двигатель
    Views: 2196     В приводах различных устройств часто применяются шаговые двигатели, Шаговый двигатели различают двух типов униполярные – когда обмотки коммутируются током текущим только в одну сторону, например при …



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

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

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

НазадДалее