Moduł oparty jest o specjalizowany sterownik silnika prądu stałego LTC1695 oraz termometr AD7415. W użytej konfiguracji umożliwia sterowanie mikrowentylatorem o mocy do 1 W zasilanym z 5 V.
Układ LTC1695 jest umieszczony w miniaturowej obudowie SOT23-5. Zawiera regulator LDO o napięciu wyjściowym ustalonym przez 6-bitowy przetwornik C/A. Układ ma wbudowane zabezpieczenie przed przeciążeniem i przegrzaniem. Aby zapobiec problemom z rozruchem silnika przy obniżonym napięciu zasilania, w układ wbudowano timer Boost Start dostarczający regulatorowi LDO 100% napięcia wyjściowego przez 250 ms, co zapewnia maksymalny moment rozruchowy wentylatora. Układ jest konfigurowany za pomocą interfejsu I2C.
Moduł wyposażono w opcjonalny termometr AD7415, którego można użyć do sterowania wentylatorem. Schemat ideowy modułu sterownika wentylatora pokazano na rysunku 1. Jest on zgodny ze standardem ARDuino I2C. Sygnały interfejsu i zasilanie doprowadzone są do 4-pinowego złącza typu EH – I2C. Moduł wymaga zasilania 5 V/1 W. Rezystory R1, R2 podciągają linie I2C, natomiast kondensatory CE1, C2 i dławik L1 filtrują napięcie zasilające regulator U2. Zwora TA umożliwia ustawienie adresu I2C termometru AD7415-0 (U1). Jeśli zwora dołączona do pinu AS jest otwarta, to adres jest równy 100100, gdy dołączona do masy – 1001001, gdy dołączona do VCC – 1001010. W miejsce AD7415-0 można użyć AD7415-1 ze zmienionym adresem bazowym I2C.
Moduł zmontowano na dwustronnej płytce drukowanej – jej schemat montażowy pokazano na rysunku 2. Montaż jest typowy i nie wymaga opisywania. Na listingu 1 zamieszczono krótki program testowy dla środowiska Arduino, sterujący wydajnością wentylatora na podstawie odczytu wartości temperatury (0…50°C).
/* I2C_FAN_Test LTC1695/AD7415
Temperature speed control */
#include <Wire.h>
#define LTC1695_Adr B1110100 // Base Address LTC1965 fan driver
#define AD7415_Adr B1001001 // Base Address AD7415 thermometer
uint8_t Speed_Val = 0;
void setup()
{
Wire.begin();
Serial.begin(9600);
}
//LTC1965 speed set
void LTC1695_Speed()
{
Wire.beginTransmission(LTC1695_Adr);
Speed_Val = Speed_Val & B00111111;
Wire.write(Speed_Val);
Wire.endTransmission();
delay(10);
}
//AD7415 temp read
void AD7415_Read()
{
uint8_t result_H = 0, result_L = 0;
Wire.beginTransmission(AD7415_Adr);
Wire.write(B00000001); //config reg
Wire.write(B01000000); //cont conv
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); // request 2 bytes from slave device AD7415_Adr
while (Wire.available())
{
result_H = Wire.read(); // HIGH_T
result_L = Wire.read(); // LOW_T
}
Wire.endTransmission();
Speed_Val = result_H;
}
void loop()
{
AD7415_Read();
Serial.print("Temp: ");
Serial.println(Speed_Val, DEC);
delay(1000);
LT C1695_Speed();
}
Adam Tatuś, EP
- R1, R2: 10 kΩ (SMD 0805)
- R3: 2,2 kΩ (SMD 0805)
- R4: 1 kΩ (SMD 0805)
- C1, C2: 0,1 μF (SMD 0805)
- CE1: 47 μF (elektrolityczny)
- CE2: 4,7 μF (elektrolityczny)
- LD: LED SMD
- U1: AD7415ARTZ0 (SOT-23/5)
- U2: LTC1695CS5 (SOT-23/5)
- FAN: złącze DG381-3.5-2 (2 piny, R=3,5 mm)
- FB: dławik SMD BLM21AG102SN1D
- I2C: złącze EH4 kątowe
- TA: zwora