#ifndef __STAB_PARAM_H__ #define __STAB_PARAM_H__ //================================================================ //===========Настраиваемые параметры============================== //#define USE_EEPROM //================================================================ //#define Debug // Раскомментить для дебажения //#define LED_debug // Раскомментить для вывода на светодиод сигнала управления твердотельным реле #define INTERFACE_ALT // Раскомментить для включения альтернативного интерфейса с большими символами #define High_level_triac // Раскомментить, если твердотельное реле ТЭНа управляется ВЫСОКИМ уровнем, иначе НИЗКИМ #define High_level_relay // Раскомментить, если контактное реле ТЭНа управляется ВЫСОКИМ уровнем, иначе НИЗКИМ //#define NOT_LM358 // Раскомментить, если в датчике напряжения стоит НЕ LM358, а rail-to-rail операционник //#define DisplayReset // Раскомментить, если используется вывод сброса дисплея #define DEBOUNCE 26 // Значение для обеспечения защиты от дребезга кнопок DEBOUNCE=1 + <задержка в ms>/10 // //#define U_LINE_FREQ_60 // Раскомментить, если частота сети 60Гц, иначе - 50Гц // #define U_LINE 230 // Номинальное значение действующего напряжения в сети, для которого указана номинальная мощность ТЭНа #define U_MIN 180 // Значение напряжения в сети, ниже которого сеть считается аварийной #define U_LINE_Q 52900 // Квадрат номинала сети, для которого указана номинальная мощность ТЭНа #define RELAY_SHUNTING_TIME 50 // количество полупериодов, в течение которых шунтируются контакты реле // #define MENU_TIMEOUT 120 // Таймаут выхода из меню в секундах (не более 255) //================================================================== #ifdef U_LINE_FREQ_60 #define LINE_FREQ 129 // Определяет начальную частоту для фазовой автоподстройки частоты сети (60,1Гц) #define PSUM_MAX 60 // Количество периодов для набора отсчетов АЦП (60 - это за 1 сек, это порядка 5000 отсчетов) #define P_TIME_MAX 120 // Количество полупериодов сети в секунду для отсчета времени #define LINE_PERIOD 17 #else #define LINE_FREQ 155 // Определяет начальную частоту для фазовой автоподстройки частоты сети (50,08Гц) #define PSUM_MAX 50 // Количество периодов для набора отсчетов АЦП (50 - это за 1 сек, это порядка 5000 отсчетов) #define P_TIME_MAX 100 // Количество полупериодов сети в секунду для отсчета времени #define LINE_PERIOD 20 #endif //===========входные выводы============ // Пин входа отключения разгона (A3) // Читаем состояние пина и переводим в булев формат с учетом инверсии (активный - низкий) #define pin_RAZGON_OFF_STATE ~(palReadLine(LINE_RAZGON_OFF)) // Пин входа отключения стабилизатора (A2) #define pin_STAB_OFF_STATE ~(palReadLine(LINE_STAB_OFF)) //===========выводы подключения кнопок=========== // Пин кнопки "Р-". Уменьшение уставки мощности. // Читаем состояние пина и переводим в булев формат с учетом инверсии (активный - низкий) #define pin_butt_1_STATE ~(palReadLine(LINE_BTN_1)) // Пин кнопки "Р+". Увеличение уставки мощности. #define pin_butt_2_STATE ~(palReadLine(LINE_BTN_2)) // Пин кнопки "Стоп". Экстренное отключение ТЭНа. #define pin_butt_3_STATE ~(palReadLine(LINE_BTN_3)) // Пин кнопки "Разгон". Включение/отключение разгона. #define pin_butt_4_STATE ~(palReadLine(LINE_BTN_4)) //===============бортовой светодиод============== #define TURN_LED_ON LCD_LED_ON // Включаем светодиод #define TURN_LED_OFF LCD_LED_OFF // Выключаем светодиод //==============управление релюшками============= #ifdef High_level_triac // управление твердотельным реле высоким уровнем #define TURN_SSR_ON palSetLine(LINE_SSR) // Включаем ТЭН #define TURN_SSR_OFF palClearLine(LINE_SSR) // Выключаем ТЭН #else // управление твердотельным реле низким уровнем #define TURN_SSR_ON palClearLine(LINE_SSR) // Включаем ТЭН #define TURN_SSR_OFF palSetLine(LINE_SSR) // Выключаем ТЭН #endif #ifdef High_level_relay // управление контактным реле высоким уровнем #define TURN_RELAY_ON palSetLine(LINE_RELAY) // Включаем ТЭН #define TURN_RELAY_OFF palClearLine(LINE_RELAY) // Выключаем ТЭН #else // управление контактным реле низким уровнем #define TURN_RELAY_ON palClearLine(LINE_RELAY) // Выключаем ТЭН #define TURN_RELAY_OFF palSetLine(LINE_RELAY) // Включаем ТЭН #endif //========коэффициенты для ПИД-регулировки======= #define Kp 2 // Коэффициент пропорциональности для ПИД-подстройки ФЧ сети (степень двойки для регистрового сдвига) #define Ki 5 // Интегральный коэффициент для ПИД-подстройки ФЧ сети (степень двойки для регистрового сдвига) #define Kd 1 // Дифференциальный коэффициент для ПИД-подстройки ФЧ сети (степень двойки для регистрового сдвига) #define Km 6 // Коэффициент для целочисленной математики (степень двойки для регистрового сдвига) #define PHASE 8 // сдвиг фаз между детекцией ноля и прерыванием таймера (в тиках таймера) #define T_MAX 180 // ограничение максимальной длительности полупериода в тиках таймера #define T_MIN 100 // ограничение минимальной длительности полупериода в тиках таймера //================прочие константы=============== #define ADC_GRP1_NUM_CHANNELS 1 #define ADC_GRP1_BUF_DEPTH 1 #define ADC_CHANNEL_NUM ADC_CHANNEL_IN9 #define ZSUM_MAX 5000 // Количество отсчетов АЦП без детекции ноля (5000 отсчетов это порядка 1 сек) #define U_ZERO 512 // Значение нуля АЦП для двуполярного сигнала с постоянной составляющей на выходе ОУ #define T_ADC 49 // Определяет интервал между запусками АЦП (200 мкс) f_OCn = f_clk / 2*N*(1 + X), где N - коэффициент деления предделителя, X- содержимое регистра OCRnA #define CICLE 500 // Количество полупериодов в полном цикле регулирования (200 полупериодов - 2сек, 500 полупериодов - 5сек, больше ставить не надо) #define SRVDATA_ARR_SIZE 14 // Размер блока памяти для вспомогательных данных #define Pnom_ARR_SIZE 8 // Макс. размер массива записанных номинальных мощностей ТЭНа sizeof(Pnom_arr)/sizeof(Pnom_arr[0]) #define PDMset_ARR_SIZE 6 // Размер массива уставок мощности ТЭНа sizeof(PDMset)/sizeof(PDMset[0]) (ставить не меньше 4) #if Pnom_ARR_SIZE > PDMset_ARR_SIZE #define ARRAY_SIZE Pnom_ARR_SIZE // Размер массива для работы с номиналами в начальном меню и уставками #else #define ARRAY_SIZE PDMset_ARR_SIZE // Размер массива для работы с номиналами в начальном меню и уставками #endif // btn scan period, ms #define BTN_SCAN_PERIOD 20 #endif // __STAB_PARAM_H__