HVLD модуль на примере PIC24FJ128GA204

Просмотров: 564


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

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

Модуль имеет один регистр управления HLVDCON. Назначение бит следующее:

HLVDCON: HIGH/LOW-VOLTAGE DETECT CONTROL REGISTER
R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0
HLVDEN LSIDL
bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8
R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
VDIR BGVST IRVST HLVDL3 HLVDL2 HLVDL1 HLVDL0
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 15 HLVDEN: бит включения питания модуля
1 = HLVD включен
0 = HLVD отключен

bit 14 Не реализовано: чтение дает ‘0’

bit 13 LIDL: бит работы модуля в режиме ожидания
1 = модуль отключен, когда устройство переходит в режим ожидания
0 = модуль продолжит работу в режиме ожидания

bit 12-8 Не реализовано: чтение дает ‘0’

bit 7 VDIR: Выбор направления изменения напряжения для формирования события
1 = Событие возникает, когда напряжение равно или превышает точку отключения (HLVDL <3: 0>)
0 = Событие возникает, когда напряжение равно или падает ниже точки отключения (HLVDL <3: 0>)

bit 6 BGVST: бит флага стабильности напряжения запрещенной зоны
1 = Указывает, что напряжение запрещенной зоны является стабильным
0 = Указывает, что напряжение запрещенной зоны является неустойчивым

bit 5 IRVST: бит флага стабильности внутренего источника опорного напряжения
1 = Внутреннее опорное напряжение является стабильным; логика High-Voltage Detect генерирует флаг прерывания на
заданный диапазон напряжения
0 = Внутреннее опорное напряжение неустойчиво; логика обнаружения высокого напряжения не приведет к прерыванию флаг в указанном диапазоне напряжений и прерывание HLVD не должно быть включено

bit 4 Не реализовано: чтение дает ‘0’

bit 3-0 HLVDL <3: 0>: бит ограничения обнаружения высокого / низкого напряжения
1111 = используется внешний аналоговый вход (вход поступает от выводов HLVDIN)
1110 = Точка отключения 1 (1)
1101 = точка отключения 2 (1)
*
*
*
1100 = точка срабатывания 3 (1)
0100 = Точка отключения 11 (1)
00xx = состояние не используется


HIGH/LOW-VOLTAGE DETECT CHARACTERISTICS
Symbol Characteristic Min Typ Max Units
VHLVD HLVD Voltage on VDD
Transition
HLVDL<3:0> = 0100 3.45 3.59 3.74 V
HLVDL<3:0> = 0101 3.33 3.45 3.58 V
HLVDL<3:0> = 0110 3.0 3.125 3.25 V
HLVDL<3:0> = 0111 2.8 2.92 3.04 V
HLVDL<3:0> = 1000 2.7 2.81 2.93 V
HLVDL<3:0> = 1001 2.50 2.6 2.70 V
HLVDL<3:0> = 1010 2.40 2.52 2.64 V
HLVDL<3:0> = 1011 2.30 2.40 2.50 V
HLVDL<3:0> = 1100 2.20 2.29 2.39 V
HLVDL<3:0> = 1101 2.10 2.19 2.28 V
HLVDL<3:0> = 1110 2.00 2.08 2.17 V
VTHL HLVD Voltage on
HLVDIN Pin Transition
HLVDL<3:0> = 1111 1.2 V

Настройка модуля для работы с внешним напряжение, для контроля понижение ниже порога в MCC, выглядит таким образом:

Добавим модуль в ресурсы проекта

Выполним настройку:

Включим модуль (Enable HLVD), активируем прерывания от модуля, в последствии в прерывания включим процедуру, в которой будет необходимо выполнить требуемые операции при пропадании напряжения питания. Выберем внешний вход  HLVD для контроля напряжения.

Настроим логику работы прерывания (Voltage Change Direction) Выбор направления изменения напряжения для формирования события:
Exceeds Trip Point – Событие возникает, когда напряжение равно или превышает точку отключения.
Falls Below Trip Point  – Событие возникает, когда напряжение равно или падает ниже точки отключения.

Нас интересует вариант когда напряжение упадет ниже значения на входе 1,2 вольта (та как мы используем контроль по внешнему входу). Для контроля более высокого порога нам необходимо применить делитель на резисторах.

Например, нам надо контролировать порог 25 вольт. В качестве резистора “на землю” выберем 10 кОм, рассчитаем “верхний” резистор. Вспоминаем закон Ома.

На резисторе 10 кОм мы должны получить напряжение 1,2 вольта когда входное  25 вольт. Находим ток в цепи:

I= U/R = 1.2 V /10000 Ohm =  0.00012 A.

Падение напряжение на вернем резисторе:

Vv = Vin – 1.2 V = 25 – 1.2 = 23.8 V.

Зная ток в цепи и напряжение на резисторе найдем его сопротивление:

R = U/I = 23.8 V / 0.00012 A = 198333 Ohm.

Это приблизительно 200 kOhm.

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

Проверим настройку входа для HLVD модуля:

Выберем Pin Module

и проверим настройку входа

Запустим генерацию файлов в MCC

По окончанию генерации MCC предоставит нам несколько функций:

void HLVD_Initialize (void) –  инициализация и настройка модуля под наши параметры, это функция будут включена в процедуру запуска микроконтроллера. Это мы можем убедиться просмотрев функцию void SYSTEM_Initialize (void) в файле systems.c

void SYSTEM_Initialize(void)
{
    PIN_MANAGER_Initialize();
    CLOCK_Initialize();
    INTERRUPT_Initialize();
    HLVD_Initialize();
    TMR3_Initialize();
}

bool HLVD_IsReferenceVoltageStable(void) – возвращает состояние стабильно или не стабильно опорное напряжение.

bool HLVD_IsBandGapVoltageStable(void) – возвращает состояние стабильно ли контролируемое напряжение.

void HLVD_Enable(void) – предоставляет возможность пользователю включать модуль в процессе работы программы.

void HLVD_Disable(void) – отключать модуль.

void HLVD_TripPointSetup(HLVD_TRIP_DIRECTION direction, HLVD_TRIP_POINTS trip_points) – изменять настройки контроля напряжения.

и сама функция выполнения прерывания от события:

void __attribute__ (( interrupt, no_auto_psv )) _ISR _LVDInterrupt( void )
{
    if(IFS4bits.HLVDIF)
    {
        /* TODO : Add interrupt handling code */
        IFS4bits.HLVDIF = 0;
    }
}

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

 



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


  • Сенсорный выключатель светаСенсорный выключатель света
    Просмотров: 7373 Хотя в настоящий момент актуальны системы управления освещением с передачей данных по электросети, но я думаю, что проекты такого рода тоже имеют право на жизнь. Анонс Три вида …
  • Обновление ESP8266 c ESPFlashDownloadTool_v3.6.3Обновление ESP8266 c ESPFlashDownloadTool_v3.6.3
    Просмотров: 3145 Технология обновления следующая: Загружаем программу со страницы espressif.com. Разархивируем. Где находятся файлы, для прошивки? Заходим в каталоги Подключаем по схеме в статье WiFi ESP8266 (замыкаем BT2, перемычка). Запускаем программу, …
  • MPLAB® Code Configurator and EncoderMPLAB® Code Configurator and Encoder
    Просмотров: 1249 Еще раз про энкодер… Для некоторых приложений очень удобно и экономически выгодно, для настройки и управления использовать энкодер. Такие энкодеры имеют строенную тактовую кнопку которую можно применить для выбора …
  • NS108-5050-16bit от NewstarNS108-5050-16bit от Newstar
    Просмотров: 456 Кто уже использует в своих проектах адресуемые светодиоды хорошо знакомы с такими как WS2812 и им подобные. Эти светодиоды для управления используют однопроводную шину. Из-за этого пропускная способность …
  • Индикатор температурыИндикатор температуры
    Просмотров: 2513 Проект для начинающих, на демо плате BB-2T3D-01. Простой индикатор температуры. Проект никак не задумывался, просто на витрину магазин Ворон нужна была демонстрационная модель на макетной плате, чего нибудь работающего. Остановились на индикаторе …
  • NeoPixel LED and PIC24NeoPixel LED and PIC24
    Просмотров: 419 Популярность однопроводной шины для управления светодиода типа WS2812 не ослабевает, а новые типы светодиодов в корпусах 3,5*3,5мм, 2,0*2,0мм становяться все больше привлекательными. Построение дисплеев для анимации требуют все …
  • Простой сенсорный регулятор светаПростой сенсорный регулятор света
    Просмотров: 2195 Простой сенсорный регулятор. Проект – 2007 года. Регулятор выполнена на микроконтроллере PIC12F683 и имеет минимальное количество элементов. Выполняет стандартные функции, включение выключение света, изменение яркости, запоминание последнего установленного уровня …
  • Инфракрасный датчик движения, PIR-sensorИнфракрасный датчик движения, PIR-sensor
    Просмотров: 2737 Домашняя автоматика предполагает наличие датчиков движения, которые способны контролировать движения человека. Самым простым и доступным устройством позволяющие контролировать изменения ИК-излучения, это ПИР-сенсоры. На текущий момент доступны не дорогие модели D203B, D204B, D205B. Все …
  • USB K-L-line адаптерUSB K-L-line адаптер
    Просмотров: 5683 USB K-L-line адаптер предназначен для связи персонального компьютера с диагностической шиной автомобиля – интерфейс ISO-9141. Этот проект предназначен для сборки недорого устройства с использованием специально для этой цели …
  • УКВ – радиоприем, часть 1УКВ – радиоприем, часть 1
    Просмотров: 8955 Музыкальная тема к статье, слушаем: Первый мой радиоприемник, выглядел так. Использовал исключительно в школе на уроках, держась за одно ухо и преданно смотря на училку и сладко улыбаясь. …



 

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

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.