• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 3 Hlas(ů) - 4.33 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Pi3 automatické spínání větráku chlazení
#52
Ahoj,
bohužel jsem se dostal do potíží s teplotou na Raspberry a tak jsem byl nucen vymyslet nějaké řešení. Jak jinak jsem se nesmířil s polovičatým řešením, jako v případě vypínání/zapínání raspberry a udělal jsem aktivní chlazení bez kompromisů. A opět jak jinak, je hlavní hybnou silou Arduino, jelikož zastávám názor, že raspberry je mozek a arduino ruce. Takže moje řešení je použití klasického PC ventilátoru na 12V s 4pin konektorem, pro přesnou a bezhlučnou PWM regulaci. Výhody tohoto řešení je plynulá regulace v plném spektru otáček ventiátoru, nezatěžování raspberry řízením a napájením ventilátoru. Výčet komponentů pro řízení:
Arduino micro cena 40 Kč nebo nano v tom případě cca. 70 Kč
step UP modul cena do 20 Kč pro napájení ventilátoru (z 5V na 12V)
step UP modul cena do 20 Kč pro napájení arduina (z 5V na 9V)
Odpory 10k a 4k7 a nějaká propojovací kabeláž. Takže celková cena bez ventilátoru do 100Kč. Pokud je někdo zdatný bastlíř, jde cena srazit na pakatel.
Program do arduina tady:
Kód:
#include <OneWire.h>
#include <DallasTemperature.h>
volatile byte half_revolutions;
unsigned int rpm;
unsigned long timeold;
const int pinCidlaDS = 4;
const int PWMPin = 3;  
int sensorVal;
OneWire oneWireDS(pinCidlaDS);
DallasTemperature senzoryDS(&oneWireDS);


void setup()
{
Serial.begin(9600);
attachInterrupt(0, rpm_fun, RISING);
half_revolutions = 0;
rpm = 0;
timeold = 0;
pinMode(PWMPin, OUTPUT);  
senzoryDS.begin();
TCCR2A = _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
TCCR2B = _BV(WGM22) | _BV(CS21);
OCR2A = 79;
OCR2B = 0;
}

void loop()
{
if (half_revolutions >= 20) {
   rpm = 30*1000/(millis() - timeold)*half_revolutions;
   timeold = millis();
   half_revolutions = 0;
 }
 senzoryDS.requestTemperatures();
  int in, out;
sensorVal = senzoryDS.getTempCByIndex(0);
  if(sensorVal > 90){
  sensorVal = 90;
}

in = sensorVal;
out = map(in, 25, 90, 7, 79);

    if(sensorVal < 25){
  out = 0;
  rpm = 0;
      }

OCR2B = out;
Serial.print("Teplota cidla DS18B20: ");
Serial.print(senzoryDS.getTempCByIndex(0));
Serial.println(" stupnu Celsia");
Serial.println(out);
Serial.println(rpm,DEC);
}
void rpm_fun()
{
 half_revolutions++;
}

Program pokud bude zájem rozeberme podrobněji. Hardwarové zapojení taky. Pro začátek ale stačí, že ventilátor je nastaven na plynulou regulaci od 25 do 90 °C (lze libovolně nastavit). Snímač zvládá rozsah -55 až 125 °C s chybou +- 0.5°C. Snímačů lze použít víc a měřit raspberry komplexněji. Informaci o otáčkách ventilátoru a teplotě jde poslat do raspberry nebo na display. V případě nano je myslím omezení na 3 nebo 4 nezávisle řízené ventilátory.
 
Citovat
  


Příspěvků v tématu
RE: Pi3 automatické spínání větráku chlazení - od cuore - 16.4.2018, 17:24

Přejít na fórum:


Prochází: 3 host(ů)