Добрый день. Пытаюсь реализовать регулировку скорости вытяжного вентилятора, для этого использую:
1. Вентилятор ВЕНТС 100 Квайт
2. Диммер переменного тока
3. NodeMcu v3
Делаю как в этом видео (
), но только подключаю вентилятор. Использую вот этот скетч:
Проблема в том, когда я понижаю напряжение на 50% , то вентилятор снижает обороты, но потом начинает непрерывно поднимать и снижать обороты. При этом я пару раз мерил напряжение на клеммах, оно доходило до 390В.
Подскажите как правильно настроить систему, чтобы вентилятор держал обороты?
1. Вентилятор ВЕНТС 100 Квайт
2. Диммер переменного тока
3. NodeMcu v3
Делаю как в этом видео (
Код:
#include "hw_timer.h"
const byte zcPin = 12;
const byte pwmPin = 13;
byte fade = 1;
byte state = 1;
byte tarBrightness = 255;
byte curBrightness = 0;
byte zcState = 0; // 0 = ready; 1 = processing;
void setup() {
Serial.begin(115200);
pinMode(zcPin, INPUT_PULLUP);
pinMode(pwmPin, OUTPUT);
attachInterrupt(zcPin, zcDetectISR, RISING); // Attach an Interupt to Pin 2 (interupt 0) for Zero Cross Detection
hw_timer_init(NMI_SOURCE, 0);
hw_timer_set_func(dimTimerISR);
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available()){
int val = Serial.parseInt();
if (val>0){
tarBrightness =val;
Serial.println(tarBrightness);
}
}
}
void dimTimerISR() {
if (fade == 1) {
if (curBrightness > tarBrightness || (state == 0 && curBrightness > 0)) {
--curBrightness;
}
else if (curBrightness < tarBrightness && state == 1 && curBrightness < 255) {
++curBrightness;
}
}
else {
if (state == 1) {
curBrightness = tarBrightness;
}
else {
curBrightness = 0;
}
}
if (curBrightness == 0) {
state = 0;
digitalWrite(pwmPin, 0);
}
else if (curBrightness == 255) {
state = 1;
digitalWrite(pwmPin, 1);
}
else {
digitalWrite(pwmPin, 1);
}
zcState = 0;
}
void zcDetectISR() {
if (zcState == 0) {
zcState = 1;
if (curBrightness < 255 && curBrightness > 0) {
digitalWrite(pwmPin, 0);
int dimDelay = 30 * (255 - curBrightness) + 400;//400
hw_timer_arm(dimDelay);
}
}
}
Подскажите как правильно настроить систему, чтобы вентилятор держал обороты?