Skocz do zawartości

Sterowanie wentylatorem rekuperatora


Pomocna odpowiedź

Napisano

Witam,

to mój pierwszy post na forum, i mam skromne pytanie związane z wyrażeniem IF

a mianowicie, chcę by po wykryciu temperatury niższej jak 3 stopnie na nawiewie rekuperatora, regulator wyłączył wentylator nawiewu i poczekał do momentu ogrzania wymiennika się do temperatury 7 st.C po czym włączył wentylator nawiewu.

czy taki zapis ma prawo działać prawidłowo.

Zastanawiają mnie dwa wyrażenia if czy jedno po drugim zadziałają prawidłowo.

tj czy po przekroczeniu temp 3 st.C regulator poczeka gdy temp wzrosnie do 7 st.C

i załączy wentylator ?

Czy zapis kody jest prawidłowy.

Czy mogę prosic kolegów o sprawdzenie fachowym okiem.

if (sensors.getTempC(nawiew)=<3);   // jesli nawiew nizszy jak 3 st.C funkcja antyzamrozeniowa
{
digitalWrite(wentN, HIGH);                 // postoj wentylatora nawiewu
 if(zadanaFrosta == (sensors.getTempC(nawiew)));  //jesli nawiew =7
  {
   digitalWrite(wentN,LOW);                //wlacz went nawiewu
  } 
 }

Oczywiscie cały kod do wglądu


         ///////////////////////////REKUPERACJA//////////////////////////////

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
//#include <LCD.h>
#include <LiquidCrystal_I2C.h>  

int wentW=9;                      //wentylator Wyciagowy
int wentN=8;                // wentylator nawiewny
bool frosta = false;                     // FLAGA FROSTA
float zadanaFrosta=7;         
//unsigned long aktualnyCzas = 0;
//unsigned long zapamietanyCzas = 0;
//unsigned long roznicaCzasu = 0;  
////////////////////////////////////////////////////// 

#define ONE_WIRE_BUS 3     
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C  lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
/*-----( Declare Variables )-----*/
// http://arduino-info.wikispaces.com/Brick-Temperature-DS18B20#Read%20individual
DeviceAddress wyrzut = { 0x28, 0xFF, 0x56, 0x0F, 0x02, 0x15, 0x04, 0xE6 }; 
DeviceAddress nawiew = {  0x28, 0xFF, 0x1F, 0x87, 0x65, 0x15, 0x02, 0x3B };
DeviceAddress wyciag = {0x28, 0xFF, 0x1E, 0xE4, 0x71, 0x15, 0x03, 0x64 };
DeviceAddress czerpnia = { 0x28, 0xFF, 0xF6, 0xC8, 0x71, 0x15, 0x03, 0xE2 };
void setup()   /****** SETUP: RUNS ONCE ******/
{
// pinMode(ledpin, OUTPUT);
 pinMode(wentW, OUTPUT);               //wentylator Wyciagowy
 pinMode(wentN, OUTPUT);               // nawiewny
 digitalWrite(wentW, LOW);  //   // normalnie w spoczynku stan HIGH wyłączony
 digitalWrite(wentN, LOW);       // normalnie w spoczynku stan HIGH wyłączony


//-----///////////////////-- Powitanie------/////////////////////--------
 lcd.begin(20,4); lcd.home (); 
// sensors.begin();
 lcd.setCursor ( 3, 0 ); 
lcd.print("rekuperacja");  delay(2000);lcd.setCursor ( 3, 1 );  lcd.print (" startowanie   ");
 delay(3000);
 sensors.setResolution(wyrzut, 11);
 sensors.setResolution(nawiew, 11);
 sensors.setResolution(wyciag, 11);
 sensors.setResolution(czerpnia, 11);
}
void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
// aktualnyCzas = millis();
 sensors.requestTemperatures(); // Send the command to get temperatures
//lcd.backlight();  //Backlight ON if under program control  
 lcd.setCursor(0,0);lcd.print("czerp.:");displayTemperature(czerpnia);  
 lcd.setCursor(0,1);lcd.print("nawiew:");displayTemperature(nawiew); float temp = sensors.getTempC(nawiew);
 lcd.setCursor(0,2);lcd.print("wyciag:");displayTemperature(wyciag);  
 lcd.setCursor(0,3);lcd.print("wyrzut:");displayTemperature(wyrzut);  
  delay(1000);

if (sensors.getTempC(nawiew)=<3);   // jesli nawiew nizszy jak 3 st.C funkcja antyzamrozeniowa
{
digitalWrite(wentN, HIGH);                 // postoj wentylatora nawiewu
 if(zadanaFrosta == (sensors.getTempC(nawiew)));  //jesli nawiew =7
  {
   digitalWrite(wentN,LOW);                //wlacz went nawiewu
  } 
 }


}
/*-----( Declare User-written Functions )-----*/
void displayTemperature(DeviceAddress deviceAddress)
{

float tempC = sensors.getTempC(deviceAddress);

  if (tempC == -127.00) // Measurement failed or no device found
  {lcd.print("Error"); } 
   else
  {
  lcd.print("t=");
  lcd.print(tempC);
 } 
}
// End printTemperature

//*********( THE END )***********

Skomplikowałeś to zupełnie niepotrzebnie.

Coś w stylu:

if (temperatura <= 3) wyłącz_wentylator;
else if (temperatura >=7) włącz_wentylator.

Pasuje?

he he ,
szuka Pan Filary gdzie są moje okulary ")

Najprostsze rozwiązanie w tym przypadku najskuteczniejsze , grunt nie namieszać sobie w głowie za mocno.

Dzieki wielkie.

  • 6 lat(a) później...

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...