Всем доброго времени суток) очень нужна помощь для подключения вентилятора системы охлаждения двс по шим сигналу…
Что имеем : Arduino Nano v3, датчик температуры ds18b20 и вентилятор мощностью 850 ватт… работающий от шим сигнала с частотой 10Гц (10%).
2 повода ± на АКБ и 2 на блок управления +12 вольт и провод шим сигнала) задача чтоб вентилятор вращался быстрее в зависимости от возрастания температуры…
Имею следующий скетч , который был успешно залит … но ничего не работает ((((
PS (скетч был залит с просторов интернета)
#include <PWM.h>
#include <OneWire.h>
const int oneWirePin = 5; // Создаем объект OneWire для шины 1-Wire, с помощью которого будет осуществляться работа с датчиком / пин сигнала с датчика
int temperature = 0; // Глобальная переменная для хранения значение температуры с датчика DS18B20
long lastUpdateTime = 0; // Переменная для хранения времени последнего считывания с датчика
const int TEMP_UPDATE_TIME = 1000; // Определяем периодичность проверок
const int buttonPin = 7; // пин подключенный к кондиционеру
int A_C = 0; // переменная для хранения состояния кондея
#define FANrelay 9 // пин сигнала ШИМ
byte FANspeed = 0;
byte lastFANspeed = FANspeed;
void setup() {
InitTimersSafe();
SetPinFrequencySafe(FANrelay, 10);
pwmWrite (FANrelay, 230);
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH);
}
void loop() {
A_C = digitalRead(buttonPin);
detectTemperature();
if (temperature > 90 && temperature <= 100)
{
FANspeed = map (temperature, 91, 100, 10, 90);
}
else if ( temperature > 100) FANspeed = 100;
if (temperature <= 90 && A_C != LOW) {
FANspeed = 0;
}
if (A_C == LOW && FANspeed < 50) {
FANspeed = 50;
}
if (lastFANspeed != FANspeed) {
byte pwm = map (FANspeed, 0, 100, 0, 90);
pwm = constrain (pwm, 0, 90);
pwmWrite (FANrelay, 230-(pwm*230/100));
lastFANspeed = FANspeed;
}
}
void detectTemperature() {
byte data[2];
ds.reset();
ds.write(0xCC);
ds.write(0x44);
if (millis() - lastUpdateTime > TEMP_UPDATE_TIME)
{
lastUpdateTime = millis();
ds.reset();
ds.write(0xCC);
ds.write(0xBE);
data[0] = ds.read();
data[1] = ds.read();
// Формируем значение
temperature = (data[1] << 8) + data[0]; temperature = temperature >> 4;
}
}
Подключение пинов ардуины:
5 пин — датчик температуры (не забываем повесить подтягивающий резистор на 4.7к)
7 пин — включение режима работы кондиционера ( при замыкании релюшки, вентилятор включается на 50% мощности)
9 пин — шим сигнал на вентилятор