mirror of
https://github.com/eddyem/stm32samples.git
synced 2026-02-28 11:54:30 +03:00
restructuring
This commit is contained in:
164
F0:F030,F042,F072/Socket_fans/Readme.md
Normal file
164
F0:F030,F042,F072/Socket_fans/Readme.md
Normal file
@@ -0,0 +1,164 @@
|
||||
Контроллер питания и охлаждения.
|
||||
===============================
|
||||
|
||||
-- Четыре канала измерения температуры с точностью +-1degrC (три канала управляют активностью кулеров, четвертый - для общего отключения питания в случае достижения критической температуры).
|
||||
-- Два канала управления четырехпроводными кулерами с контролем их активности.
|
||||
-- Две кнопки управления (включить/экстренно выключить нагрузку).
|
||||
-- Внешний сигнал (пищалка 12В): короткий сигнал раз в 10 секунд - один из кулеров не вращается (а должен), непрерывные сигналы - критическая ситуация, питание скоро будет отключено, (сигналы в течение 4с с паузой в 6с - резерв).
|
||||
-- Режим ручного управления (без контроля температур с соответствующими действиями) или мониторинга (в этом режиме нельзя вручную задавать параметры кулера или внешнего сигнала).
|
||||
|
||||
== help ==
|
||||
```
|
||||
'0x' - turn cooler0 on/off (x=1/0) or get status (x - any other)
|
||||
'1x' - turn cooler1 on/off (x=1/0) or get status (x - any other)
|
||||
'Ax' - get ADC raw value (x=0..7)
|
||||
'B' - buttons' state
|
||||
'bx' - buzzer: x==0 - off, x==1 - on, x==l - long beeps, x==s - short beeps
|
||||
'Cx' - get cooler x (0/1) RPS
|
||||
'D' - activate DFU mode
|
||||
'E' - show current state
|
||||
'Gx' - get cooler x (0..3) PWM settings
|
||||
'M' - get MCU temperature
|
||||
'm' - toggle monitoring
|
||||
'R' - software reset
|
||||
'rx' - relay on/off (x=1/0) or get status
|
||||
'Sx y' - set coolerx PWM to y
|
||||
's' - show settings
|
||||
'T' - get time from start (ms)
|
||||
'tx' - get temperature x (0..3)
|
||||
'V' - get voltage
|
||||
'Z' - reinit ADC
|
||||
'!' - switch between manual and automatic modes
|
||||
```
|
||||
|
||||
=== 0x,1x ===
|
||||
x=='0' - выключить питание кулера; x=='1' - включить питание; любое другое значение - проверить состояние.
|
||||
|
||||
=== Ax ===
|
||||
x=={0..7} - получить "сырое значение" x-го канала АЦП (в ADU).
|
||||
Каналы: 0..3 - термометры, 4 - измерение 12В, 5 - измерение 5В, 6 - температура МК, 7 - уровень 3.3В.
|
||||
|
||||
=== B ===
|
||||
Состояние обеих кнопок, например:
|
||||
```
|
||||
BUTTON0=0
|
||||
BUTTON1=0
|
||||
```
|
||||
|
||||
Нажатие кнопок проверяется один раз в секунду. Кнопка BUTTON0 переводит систему в автоматический режим и включает реле. Кнопка BUTTON1 отключает реле, отключает все кулеры и сигнал и переводит систему в ручной режим.
|
||||
|
||||
=== bx ===
|
||||
Изменить состояние внешнего сигнала. 0 - выключить, 1 - включить серию непрерывных сигналов, l - включить серию коротких сигналов в течение 4 секунд с паузой в 6 секунд, s - включить короткий сигнал (0.5с) с паузой 9.5с.
|
||||
|
||||
=== Cx ===
|
||||
Получить значения скорости вращения четырехпроводного кулера (обороты в секунду). Например:
|
||||
```
|
||||
C0
|
||||
RPM0=78
|
||||
C1
|
||||
RPM1=0
|
||||
```
|
||||
|
||||
=== D ===
|
||||
Активировать режим DFU для перепрошивки. После прошивки нужно перезапустить МК, закоротив контакты "reset" или кратковременно отключив от питания.
|
||||
|
||||
=== E ===
|
||||
Отобразить текущее состояние системы, например:
|
||||
```
|
||||
TIME=1229247
|
||||
T0=293
|
||||
T1=264
|
||||
T2=262
|
||||
T3=254
|
||||
BUZZER=OFF
|
||||
BUTTON0=0
|
||||
BUTTON1=0
|
||||
RPS0=82
|
||||
RPS1=107
|
||||
PWM0=30
|
||||
PWM1=40
|
||||
PWM2=33
|
||||
COOLER0=1
|
||||
COOLER1=1
|
||||
RELAY=1
|
||||
```
|
||||
Где
|
||||
TIME - время с момента включения (мс, приблизительно);
|
||||
Tx - температуры (x10) соответствующих каналов в градусах Цельсия;
|
||||
BUZZER - состояние сигнала;
|
||||
BUTTONx - состояние кнопок (1 - нажата, 0 - отпущена);
|
||||
RPSx - скорость вращения кулера x (оборотов в секунду);
|
||||
PWMx - установленное значение ШИМ (в процентах, 0..100) канала x;
|
||||
COOLERx - включено ли питание кулера x (0..1), из-за неправильной схемотехники не рекомендуется отключать питание четырехпроводных кулеров (+12В поступает в этом случае на измерительный вход);
|
||||
RELAY - состояние реле (1 - включено, 0 - выключено).
|
||||
|
||||
=== Gx ===
|
||||
Отобразить значения настройки ШИМ кулера x.
|
||||
|
||||
=== M ===
|
||||
Отобразить температуру МК (приближенная температура, x10 градусов Цельсия).
|
||||
|
||||
=== m ===
|
||||
Переключить (вкл/выкл) режим мониторинга, когда каждые 5 секунд отображается состояние системы.
|
||||
|
||||
=== R ===
|
||||
Программный перезапуск системы.
|
||||
|
||||
=== rx ===
|
||||
x==0 - выключить реле, x==1 - включить реле, любое другое значение - получить состояние реле.
|
||||
|
||||
=== Sx y ===
|
||||
Установить значение заполнения ШИМ кулера x (0..2) в y (0..100). Согласно опыту, четырехпроводные кулеры не стартуют при значении PWM<15, а двухпроводные не стартуют при PWM<35, поэтому для получения малых оборотов необходимо стартовать на большей скорости, а затем уже установить нужное значение заполнения ШИМ.
|
||||
|
||||
=== s ===
|
||||
Отобразить "вшитые" в код настройки, например:
|
||||
```
|
||||
Thysteresis=30
|
||||
Tmin={400, 350, 350}
|
||||
Tmax={900, 800, 600}
|
||||
T3max=850
|
||||
```
|
||||
|
||||
В данном случае гистерезис температуры установлен в 3 градуса, область допустимых значений температур - 40..90 градусов для канала 0, 35..80 градусов для канала 1 и 35..60 градусов для канала 2. Критическая температура канала 3 установлена в 85 градусов. Если в течение 20 секунд превышено значение одной из критических температур (для T0..2 они равны Tmax+Thysteresis), то реле отключается, система остается в автоматическом режиме.
|
||||
|
||||
=== T ===
|
||||
Отобразить время (условное) в миллисекундах со старта.
|
||||
|
||||
=== tx ===
|
||||
Получить значение температуры x-го канала (0..3). Температура умножена на 10. Например:
|
||||
```
|
||||
t0
|
||||
T0=294
|
||||
t1
|
||||
T1=265
|
||||
t2
|
||||
T2=264
|
||||
t3
|
||||
T3=256
|
||||
```
|
||||
|
||||
Соответственно, температуры равны: t0=29.4, t1=26.5, t2=26.4 и t3=25.6.
|
||||
Учитывая то, что величина вычисляется кусочно-линейной аппроксимацией с погрешностью до 0.1 градуса, а сами NTC дают разброс не лучше +-0.5 градуса, не стоит надеяться на то, что температуры будут достаточно точными.
|
||||
|
||||
=== V ===
|
||||
Получить значения напряжения (x100) в каналах, например:
|
||||
```
|
||||
V3_3=330
|
||||
V5=428
|
||||
V12=1055
|
||||
```
|
||||
Означает, что питание МК =3.3В, на входе 5В присутствует 4.28В, а на входе 12В присутствует 10.55В.
|
||||
|
||||
=== Z ===
|
||||
Реинициализация АЦП (ХЗ, зачем я это добавил).
|
||||
|
||||
=== ! ===
|
||||
Переключение между автоматическим и ручным режимами управления.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user