Регулятор оборотов микровентилятора на LTC1695

Все чаще и чаще в различных самоделках используются микросхемы SoC, FPGA, например, в одноплатных компьютерах, которые при интенсивном использовании не могут обойтись без принудительного охлаждения.

Представленный здесь мини модуль позволяет регулировать обороты микровентилятора с двигателем постоянного тока с использованием интерфейса I2C, основываясь на измеренной температуре.

Модуль собран на специализированном драйвере LTC1695 и температурном датчике AD7415. В данном варианте модуль позволяет управлять микровентилятором мощностью до 1 Вт с питанием  5 В.

Микросхема LTC1695 размещена в миниатюрном корпусе SOT23-5. LTC1695 содержит регулятор LDO с фиксированным выходным напряжением, а так 6-разрядный ЦАП. Микросхема имеет встроенную защиту от перегрузки и перегрева.

Чтобы избежать проблем с запуском двигателя при пониженном напряжении питания, в схему встроен Boost Start. Эта функция выдает 100% выходное напряжение в течение 250 мс, что обеспечивает максимальный пусковой момент для вентилятора.

В дополнении модуль оснащен температурным датчиком AD7415, который можно использовать для управления вентилятором.

Принципиальная схема регулятора оборотов вентилятора показано на следующем рисунке.

Регулятор оборотов микровентилятора на LTC1695

Схема совместима со стандартом I2C Arduino. Сигналы интерфейса и питание выведены на 4-х контактный разъем типа EH – I2C.

Для модуля требуется питание 5 В / 1 Вт. Резисторы R1, R2 для подтяжки линий I2C, конденсаторы C1, С2 и дроссель L1 фильтруют напряжение питания микросхемы DD2.

Перемычка TA позволяет установить адрес I2C термометра AD7415-0 (DD1). Если перемычка не установлена, то адрес равен 100100, когда замкнута с массой – 1001001, когда с VCC – 1001010.

В место датчика AD7415-0 можно использовать AD7415-1 с измененным базовым адресом I2C.

Ниже приведена короткая тестовая программа для среды Arduino, которая контролирует работу вентилятора на основе считывания значения температуры в диапазоне 0…50°C.

#include <Wire.h>
#define LTC1695_Adr B1110100 // Адрес LTC1965
#define AD7415_Adr B1001001 // Адрес AD7415
uint8_t Speed_Val = 0;
void setup()
{
Wire.begin();
Serial.begin(9600);
}
//LTC1965 установка скорости
void LTC1695_Speed()
{
Wire.beginTransmission(LTC1695_Adr);
Speed_Val = Speed_Val & B00111111;
Wire.write(Speed_Val);
Wire.endTransmission();
delay(10);
}
//AD7415 чтение температуры
void AD7415_Read()
{
uint8_t result_H = 0, result_L = 0;
Wire.beginTransmission(AD7415_Adr);
Wire.write(B00000001);
Wire.write(B01000000);
Wire.endTransmission();
delay(10);
Wire.beginTransmission(AD7415_Adr);
Wire.write(B00000000); //temreg set
Wire.endTransmission();
delay(10);
Wire.beginTransmission(AD7415_Adr);
Wire.requestFrom(AD7415_Adr, 2);
while (Wire.available())
{
result_H = Wire.read();
result_L = Wire.read();
}
Wire.endTransmission();
Speed_Val = result_H;
}
void loop()
{
AD7415_Read();
Serial.print(«Temp: «);
Serial.println(Speed_Val, DEC);
delay(1000);
LT C1695_Speed();
}

Добавить комментарий

Ваш электронный адрес не будет опубликован.

*