Вы находитесь на странице: 1из 9

2-2/24.

Технические характеристики модуля для блоков


питания.
Количество команд программы: 2901.
Программа работает на двух страницах памяти программ.
Программа оптимизирована (командная оптимизация).
Количество "однострочных" надписей: 46.
Основные составные части устройства.
Используется м/контроллер PIC16F873А -I/SP.
Элемент индикации: ЖК-модуль компании МЭЛТ MT-16S2D-2YLG (7-я версия).
Термодатчик: DS1820/18S20 фирмы Dallas.
Кварц: 20 Мгц (1 м.ц. = 0,2 мкс.).
Коммутации нагрузки, которая подключена к блоку питания, осуществляются с
помощью полевого транзистора IRFZN44N, который, в открытом состоянии, имеет
очень малое сопротивление.
Токовый шунт: 0,01 ом. (от мультиметра M-830В/DT-830B).
Буферно-усилительный элемент: сдвоенный ОУ LM358N (или ему подобный).
Элемент охлаждения: компьютерный (или иной) вентиллятор.
"Пищалка": пъезоизлучатель, обеспечивающий приемлемую громкость.
Виды нагрузок: активная и активо-емкостная.
Величина интервала времени "мягкого" включения нагрузки: задается
пользователем.
Напряжения питания.
- для PIC16F873А -I/SP, ЖК-модуля и термодатчика à 5,12 в. (стабилизированное),
- для м/схемы LM358N à 9 в. (стабилизированное),
- для вентиллятора à 12 … 14 в. (стабилизированное или нестабилизированное).
Потребляемый ток.
- по цепи +9 в.: около 1 ма.
- по цепи +5,12 в.: около 30 ма. (зависит от величины тока подсветки ЖК-модуля.
В данном случае, это ток около 20 ма.),
- по цепи +12 … 14 в. à зависит от применяемого вентиллятора.
Наихудшие и наилучшие инерционности срабатывания защит.
Наихудшее время срабатывания защиты по превышению порогов U/I (в
комплексе), равно 90 мкс. (округлено в сторону увеличения).
Наилучшее время срабатывания защиты по превышению порга тока, равно 43
мкс. (округлено в сторону увеличения).
Таким образом, в диапазоне от 43 до 90 мкс., в зависимости от момента
возникновения факта превышения порога тока, инерционность срабатывания защиты
по току может быть различной (шаг 0,2 мкс.), но она не выйдет за пределы этого
диапазона по причине того, что весь рабочий цикл режима ЗАЩИТА ВКЛЮЧЕНА
находится в "зоне" разрешения прерываний, ("провалы" отсутствуют).
Наихудшее время срабатывания защиты от короткого замыкания, равно 650 мкс.
(округлено в сторону увеличения).
Наилучшее время срабатывания защиты от короткого замыкания, равно 43 мкс.
(округлено в сторону увеличения).
Таким образом, в диапазоне от 43 до 650 мкс., в зависимости от момента
возникновения факта короткого замыкания, инерционность срабатывания КЗ-защиты
может быть различной, но она не выйдет за пределы этого диапазона.
Инерционность срабатывания термозащиты зависит от инерционности нагрева
того, температура чего контролируется.
Наименьшая инерционность срабатывания термозащиты будет достигнута в случае
наличия надежного и качественного теплового контакта термодатчика (желательно
применение теплопроводной пасты) с непосредственным источником нагрева.
Диапазоны.
Диапазон измерения напряжения: от 0,1 в. до 99,9 в., с шагом 0,1 в.
1
Показания выше 99,9 в. блокируются нулями.
Диапазон измерения тока: от 0,01 а. до 9,99 а., с шагом 0,01 а.
Показания выше 9,99 а. блокируются нулями.
Диапазон изменения значений порога U: от 0 в. до 99,2 в., с шагом 0,4 в.
Диапазон изменения значений порога I: от 0 а. до 9,92 а., с шагом 0,04 а.
После достижения нулевых значений порогов, все действия, направленные на
дальнейшее их уменьшение, блокируются.
После достижения максимальных значений порогов, происходит работа по кольцу.
Диапазон изменения значений нижнего температурного порога: от 30 градусов
до 90 градусов, с шагом 1 градус.
Диапазон изменения значений верхнего температурного порога: от 35 градусов
до 95 градусов, с шагом 1 градус.
Все значения верхнего температурного порога, которые превышают значения нижнего
температурного порога менее чем на 5 градусов, автоматически ("принудительно")
фиксируются на уровне Тв. = (Тн. + 5) градусов.
То есть, превышения Tв. над Тн., менее чем на 5 градусов, технически невозможны.
Более - можно.
После достижения минимального значения порогов, все действия, направленные на
дальнейшее их уменьшение, блокируются.
После достижения максимального значения порогов, все действия, направленные на
дальнейшее их увеличение, блокируются.
Диапазон изменения значений КЗ-порога: от 1,0 а. до 9,9 а., с шагом 0,1 а.
После достижения минимального значения КЗ-порога, все действия, направленные на
дальнейшее его уменьшение, блокируются.
После достижения максимального значения КЗ-порога, все действия, направленные
на дальнейшее его увеличение, блокируются.
Функциональность.
Любое изменение функциональности сопровождается надписями, которые отражают
это изменение, а также и подсказками.
После каждого включения питания, производится тест термодатчика на предмет
наличия или отсутствия его электрического подключения.
В зависимости от результатов этого теста, программные процедуры, связанные с
работой термодатчика, либо исполняются (термозащита работает), либо не
исполняются (термозащита не работает).
После окончания теста термодатчика, устройство может работать в одном из двух
основных режимов (ЗАЩИТА ВЫКЛЮЧЕНА и ЗАЩИТА ВКЛЮЧЕНА), с
возможностью "ручного" перехода в меню установки порогов.
В режиме ЗАЩИТА ВЫКЛЮЧЕНА, осуществляются:
- визуальный контроль текущих значений напряжения,
- визуальный контроль текущих значений тока,
- визуальный контроль текущих значений температуры,
- ШИМ-регулирование количества оборотов вентиллятора (в зависимости от
температуры),
- защита от перегрева,
- защита от короткого замыкания.
За 3 градуса до срабатывания термозащиты, выдается предупреждение, с визуально-
слуховым указанием количества градусов, оставшихся до срабатывания термозащиты.
После срабатывания термозащиты, на индикацию выводятся текущие значения
температуры и значения обеих термопорогов.
Если, в интервале времени менее 5-ти минут, текущая температура опустится ниже
нижнего температурного порога, происходит авторазблокировка и возврат в режим
ЗАЩИТА ВЫКЛЮЧЕНА.
Блок питания выключается (если используется устройство аварийного отключения БП):
- если сработала защита от короткого замыкания,
- если после срабатывания термозащиты, в течение примерно 5-ти минут,
температура не опустится ниже нижнего температурного порога,
- если после срабатывания термозащиты, температура поднимется более чем
на 3 градуса.
2
В режиме ЗАЩИТА ВКЛЮЧЕНА, осуществляются:
- визуальный контроль текущих значений напряжения,
- визуальный контроль текущих значений тока,
- защита от превышения порога напряжения,
- защита от превышения порога тока.
После срабатывания защиты по превышению порогов U/I, на индикацию выводится
числовое значение этого превышения с шагом:
- для U: 0,4 вольта,
- для I : 0,04 ампера.
Информирующие звуковые сигналы формируются после
- необнаружения электрического или программного подключения
термодатчика,
- срабатывания любого типа защиты,
- приближения к порогу срабатывания термозащиты от 3-х градусов и
менее,
- в случаях изменений числовых значений порогов, задаваемых в первых
трех пунктах меню установки порогов,
Устройство энергонезависимо запоминает:
- текущий режим работы,
- значения текущих порогов напряжения и тока,
- значения нижнего и верхнего температурных порогов,
- значение тока короткого замыкания,
- признак программного включения или выключения термодатчика.
После включения питания устройства, эти параметры выставляются автоматически.
После "прошивки" PIC16F873А -I/SP, по умолчанию, выставляются:
- режим ЗАЩИТА ВЫКЛЮЧЕНА,
- порог U = 10,0 в., порог I = 1,00 а.,
- нижний Т-порог = 60 градусов, верхний Т-порог = 80 градусов,
- ток короткого замыкания = 9,9 ампера,
- термодатчик программно включен.
Энергонезависимое запоминание текущего режима работы происходит при каждом
переходе из режима в режим.
Значения остальных параметров пользователь может изменить в меню установки
порогов. При этом, они автоматически запоминаются.
В меню установки порогов осуществляются:
- задание значений порогов U/I (защита по превышению порогов U/I),
- задание значений нижнего и верхнего термопорогов (термозащита),
- задание значения КЗ-порога (защита от короткого замыкания),
- программное включение или выключение термодатчика ( если он
электрически подключен),
- возврат из меню в тот основной режим, из которого вызвано меню.
Внутри рабочих циклов обеих основных режимов, пользователь может вручную
отключить нагрузку от блока питания или подключить ее к нему.
Это происходит по "принципу RS-триггера".
Вентиллятор.
Имеет место быть ШИМ-регулирование количества оборотов.
После включения питания устройства, вентиллятор "разгоняется" до максимального
количества оборотов.
Если термодатчик электрически или программно отключен, то в дальнейшем,
количество оборотов не изменится и будет максимальным (в программе, можно
задать другое их количество).
Если термодатчик электрически и программно подключен, то после "разгона"
вентиллятора, количество оборотов уменьшается до значения, определяемого первым
замером температуры.
Этот замер происходит непосредственно перед "влётом" в рабочий цикл любого из
режимов.
В рабочем цикле режима ЗАЩИТА ВЫКЛЮЧЕНА, количество оборотов и останется
таковым в течении всего времени слежения.
В рабочем цикле режима ЗАЩИТА ВКЛЮЧЕНА, количество оборотов вентиллятора
3
будет прямо пропорционально зависеть от текущих значений температуры, которая
периодически замеряется.
В случае срабатывания термозащиты (превышен верхний температурный порог),
вентиллятор переводится на максимальное количество оборотов (интенсивное
охлаждение).
В случае, если в интервале времени менее 5-ти минут, температура опустится ниже
нижнего температурного порога, происходит авторазблокировка, и количество
оборотов вентиллятора снова будет зависеть от текущих значений температуры.
Если термодатчик электрически и программно подключен, то в случае срабатывания
защиты от короткого замыкания, количество оборотов зафиксируется на том уровне,
который имел место быть на момент срабатывания этой защиты.

1. Пояснения по поводу этого:


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

2. Пояснения по поводу этого:


Наихудшее время срабатывания защиты от короткого замыкания, равно 650 мкс.
В части касающейся разрешения/запрета прерываний, рабочий цикл режима ЗАЩИТА
ВЫКЛЮЧЕНА представляет собой "набор кусков".
Часть из них отрабатывается в "зонах" разрешения прерываний, а все остальные
"куски" отрабатываются в "зонах" запрета прерываний.
Для того чтобы выяснить наихудшее время срабатывания защиты от короткого
замыкания, нужно выяснить, какой именно из "кусков" этого цикла, находящийся в
"зоне" запрета прерываний, отрабатывается дольше, чем любой из остальных
"собратьев".
Это ПП WIRE.
Она отрабатывается за 560 мкс. (округлил в сторону увеличения).
Это можно проверить в симуляторе.
А так как, в данном случае, речь идет не об одной-разъединственной "зоне"
разрешения прерываний (как в рабочем цикле режима ЗАЩИТА ВКЛЮЧЕНА), а о
"Ноевом ковчеге", то к 560 мкс. нужно приплюсовать один период ухода в прерывание
(90 мкс.).
Не более одного потому, что любая из остальных "зон" запрета прерываний
отрабатывается за время, меньшее, чем 90 мкс.
Вот и получилось 650 мкс.

По ходу "безжалостных терзаний своей многострадальной железяки" (жалко, но истина


требует жертв), выяснилась одна принеприятнейшая и наигнуснейшая особенность (в
части касающейся защиты от короткого замыкания).
Не всегда, но иногда, вместо срабатывания защиты от короткого замыкания,
срабатывает защита от перегрева.
В программе BP_17.asm, такой "бяки" нет, а в программах BP_18.asm и BP_MOD.asm,
такая "бяка" есть.
Одно из различий между этими программами состоит в том, что в программе
BP_17.asm, задержки ПП DQ_INIT отрабатываются в "зоне" запрета прерываний, а в
программах BP_18.asm и BP_MOD.asm, задержки ПП DQ_INIT отрабатываются в "зоне"
разрешения прерываний.
Для проверок фактов срабатывания защиты от КЗ, я просто повышал Кус. ОУ путем
"кручения-верчения" подстроечного резистора (см. принципиальную схему).
4
Так как имеет место быть механический контакт ползунка с дорожкой, то в процессе
подобного рода "кручения-верчения", любой подстроечный резистор является
источником "дребезга" той или иной интенсивности и продолжительности во времени.
Наличие "дребезга" приводит к тому, что не всегда, но в некоторых случаях
(случайное событие), защита от КЗ сработает до начала отработки ПП DQ_INIT.
После этого, процедура 1-го АЦП будет обходиться.
То есть, ПП прерывания будет отрабатываться примерно в 2 раза быстрее.
Следовательно, задержки ПП DQ_INIT, находящиеся в "зоне" разрешения прерываний,
будут отрабатываться в течение коротких интервалов времени.
Для "штатной" инициализации термодатчика, этого не достаточно.
А раз это так, то термодатчик просто не будет работать.
В этом случае, он "выдает на гора" такое значение температуры, которое выше
верхнего Т-порога, и поэтому не удивительно, что после превышения КЗ-порога, в
некоторых случаях, срабатывает не защита от КЗ, а термозащита.
Еще раз низкий ей (термозащите) поклон.
Эта "бякозасекалка" просто классная "выясняльщица истины" (я ей очень доволен).
"Службу тащит" бдительно (смерть врагам!), и если что нехорошее случится, то тут же
и докладывает.
Еще раз капитально выручила.
Ну а если все понятно, то и "подрихтовать" можно. Диалектика …
Было:

;================================================================================
; ПП задержек, использующихся в процедуре инициализации термодатчика.
;================================================================================
PAUSE_3 bsf IntCon,7 ; РАЗРЕШЕНИЕ ПРЕРЫВАНИЙ.
movlw .36 ; 500 -> 22,2 х 5 = 111 мц .36
movwf Reg_1 ; K=4/90=0,0444
goto $+4
PAUSE_4 bsf IntCon,7 ; РАЗРЕШЕНИЕ ПРЕРЫВАНИЙ.
movlw .18 ; 250 -> 11 x 5 = 55 мц .18
movwf Reg_1

movlw .109 ; Обеспечение ухода в прерывание


movwf TMR2 ; в начале отработки задержки.
decfsz Reg_1,F
goto $-1
bcf IntCon,7 ; ЗАПРЕТ ПРЕРЫВАНИЙ.
return ; Возврат по стеку.
;================================================================================

Стало (вариант №1):

;================================================================================
; ПП задержек, использующихся в процедуре инициализации термодатчика.
;================================================================================
PAUSE_3 bsf IntCon,7 ; РАЗРЕШЕНИЕ ПРЕРЫВАНИЙ.
movlw .200 ;
movwf Reg_1 ;
goto $+4
PAUSE_4 bsf IntCon,7 ; РАЗРЕШЕНИЕ ПРЕРЫВАНИЙ.
movlw .200 ;
movwf Reg_1

movlw .109 ; Обеспечение ухода в прерывание


movwf TMR2 ; в начале отработки задержки.
decfsz Reg_1,F
goto $-1
bcf IntCon,7 ; ЗАПРЕТ ПРЕРЫВАНИЙ.
return ; Возврат по стеку.
;================================================================================

5
ПП инициализации термодатчика выглядит так:

;################################################################################
; НИЖНЯЯ "ОБСЛУГА" 2-й СТРАНИЦЫ.
;################################################################################
; ПП инициализации термодатчика.
;================================================================================
; Установка на линии DQ 1.
;-----------------------------------
DQ_INIT call PIN_HI ; Установка вывода в высокоимпедансное
; состояние: за счет подтягивающего резистора,
; на линии устанавливается 1.
;-----------------------------------
; Установка на линии DQ 0.
;-----------------------------------
call PIN_LO ; Установка на линии DQ нуля.
;-----------------------------------
; Задержка.
;-----------------------------------
bcf PCLATH,3 ; Выбор 1-й страницы.
call PAUSE_3 ; Переход в ПП задержки.
call PAUSE_3 ; Переход в ПП задержки.
call PAUSE_3 ; Переход в ПП задержки.
call PAUSE_3 ; Переход в ПП задержки.
bsf PCLATH,3 ; Выбор 2-й страницы.
;-----------------------------------
; Установка на линии DQ 1.
;-----------------------------------
call PIN_HI ; Установка вывода в высокоимпедансное
; состояние: за счет подтягивающего резистора,
; на линии устанавливается 1.
;-----------------------------------
; Задержка 70 мкс.
;-----------------------------------
movlw .116 ;
call PAUSE_X1 ; Задержка.
;--------------------------------------------------------------------------------
; Определение наличия (или нет) отклика на импульс сброса.
;--------------------------------------------------------------------------------
btfsc PortC,DQ ; На линии DQ 0 или 1 (отклик есть или нет)?
bsf Flag,1 ; Если отклика нет (1), то флаг наличия
; термодатчика поднимается.
; Если отклик есть (0), то флаг наличия
; термодатчика остается опущенным и программа
; исполняется далее.
;-----------------------------------
; Задержка.
;-----------------------------------
bcf PCLATH,3 ; Выбор 1-й страницы.
call PAUSE_4 ; Переход в ПП задержки.
call PAUSE_4 ; Переход в ПП задержки.
bsf PCLATH,3 ; Выбор 2-й страницы.
return ; Возврат по стеку.
;WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

Красным цветом выделены дополнительные команды.


Значение констант, записываемой в регистр Reg_1, значительно увеличено.
С учетом номинала кварца, это соответствует задержке примерно в 120 мкс.,
отрабатываемой "за один присест".

Это "слегка" нерационально, так как добавляются 4 команды.


Рациональнее сделать так (вариант №2):

;================================================================================

6
; ПП задержек, использующихся в процедуре инициализации термодатчика.
;================================================================================
PAUSE_3 bsf IntCon,7 ; РАЗРЕШЕНИЕ ПРЕРЫВАНИЙ.
movlw .200 ;
movwf Reg_1 ;

movlw .109 ; Обеспечение ухода в прерывание


movwf TMR2 ; в начале отработки задержки.
decfsz Reg_1,F
goto $-1
bcf IntCon,7 ; ЗАПРЕТ ПРЕРЫВАНИЙ.
return ; Возврат по стеку.
;================================================================================

Метка PAUSE_4 и группа команд, на которую она указывает, "убиваются".


А раз это так, то:

;################################################################################
; НИЖНЯЯ "ОБСЛУГА" 2-й СТРАНИЦЫ.
;################################################################################
; ПП инициализации термодатчика.
;================================================================================
DQ_INIT ........................
...................................
;-----------------------------------
; Задержка.
;-----------------------------------
bcf PCLATH,3 ; Выбор 1-й страницы.
call PAUSE_3 ; Переход в ПП задержки.
call PAUSE_3 ; Переход в ПП задержки.
call PAUSE_3 ; Переход в ПП задержки.
call PAUSE_3 ; Переход в ПП задержки.
bsf PCLATH,3 ; Выбор 2-й страницы.
;-----------------------------------
...................................
...................................
;-----------------------------------
; Задержка.
;-----------------------------------
bcf PCLATH,3 ; Выбор 1-й страницы.
call PAUSE_3 ; Переход в ПП задержки.
call PAUSE_3 ; Переход в ПП задержки.
bsf PCLATH,3 ; Выбор 2-й страницы.
return ; Возврат по стеку.
;WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

В этом случае, 4 команды - "прибыль" и 4 команды "убыль".


То есть, в конечном итоге, количество команд программы не изменится.

Я бы и рад применить 2-й вариант, но в этом случае, пришлось бы вносить


соответствующие изменения в картинки блок-схемы, а это неудобства для Вас и
лишняя путаница.
Поэтому, скрепя сердце, применяю 1-й вариант.
После такой доработки, "бяка" исчезла.
И это не удивительно, так как при любом "раскладе", задержки ПП DQ_INIT будут
отработаны "штатно".
Естественно, что после такого "катаклизма", время отработки рабочего цикла режима
ЗАЩИТА ВЫКЛЮЧЕНА увеличится, но "на фоне" большого времени отработки этого
цикла, такое увеличение будет незначительным (визуального дискомфорта не
ощущается).
Также нужно учесть, что задержки отрабатываются в "зоне" разрешения прерываний, и
поэтому увеличение времени их отработки увеличивает вероятность нахождения

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

Программа, в которой это реализовано, называется BP_MOD_1.asm (прилагается).


В данный момент, ее нужно считать "чистовиком" "базовой" программы.

8
"Практикум по конструированию устройств на PIC контроллерах"      http://ikarab.narod.ru       E-mail: karabea@lipetsk.ru