Commit 6a0e69c6 authored by Oleg Nikulin's avatar Oleg Nikulin

Ограничение мин и макс скважности

parent 340ac129
......@@ -8,8 +8,11 @@
#define RPM_CHECK_INTERVAL 200 //Интервал подсчета rpm и обнуления tachRevs (мс)
#define RPM_VALUES_COUNT 5 //Количество значений RPM, которые записываются и усредняются (скользящее среднее)
#define MIN_PWM_DUTY_CYCLE 2 //Минимальная скважность ШИМ
#define MIN_PWM_DUTY_CYCLE 64 //Минимальная скважность ШИМ
#define MAX_PWM_DUTY_CYCLE 254 //Максимальная скважность ШИМ
//если true, вентилятор не будет полностью включаться/выключаться. Всегда будет какой-то шим
#define CONSTRAIN_MIN true
#define CONSTRAIN_MAX true
#define OFF_DUTY_CYCLE 0 //Условная скважность, при которой на самом деле вентиялтор выключен
#define ON_DUTY_CYCLE 255 //Условная скважность, при которой на самом деле вентиялтор постоянно включен
#define DEFAULT_PWM_DUTY_CYCLE ON_DUTY_CYCLE //Скважность ШИМ по умолчанию (до подключения к пк)
......@@ -341,15 +344,33 @@ void rpm_control() {
void set_duty_cycle(control &fanControl, int duty_cycle) {
if (duty_cycle < MIN_PWM_DUTY_CYCLE) {
fanControl.mode = control_pwm_mode::off;
digitalWrite(fanControl.pin, 0);
fanControl.dutyCycle = OFF_DUTY_CYCLE;
if (CONSTRAIN_MIN)
{
fanControl.mode = control_pwm_mode::pwm;
fanControl.dutyCycle = MIN_PWM_DUTY_CYCLE;
}
else
{
fanControl.mode = control_pwm_mode::off;
digitalWrite(fanControl.pin, 0);
fanControl.dutyCycle = OFF_DUTY_CYCLE;
}
}
else if (duty_cycle > MAX_PWM_DUTY_CYCLE) {
fanControl.mode = control_pwm_mode::on; //всегда вкл
digitalWrite(fanControl.pin, 1);
fanControl.dutyCycle = ON_DUTY_CYCLE;
if (CONSTRAIN_MAX)
{
fanControl.mode = control_pwm_mode::pwm;
fanControl.dutyCycle = MAX_PWM_DUTY_CYCLE;
}
else
{
fanControl.mode = control_pwm_mode::on; //всегда вкл
digitalWrite(fanControl.pin, 1);
fanControl.dutyCycle = ON_DUTY_CYCLE;
}
}
else {
fanControl.mode = control_pwm_mode::pwm;
fanControl.dutyCycle = duty_cycle;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment