Close

Řízení kogenerační jednotky na dřevoplyn

Úvodní stránka Fórum Vaše projekty Arduino Řízení kogenerační jednotky na dřevoplyn

  • Toto téma obsahuje celkem 0 odpovědí. Do diskuze (1 diskutující) se naposledy zapojil uživatel Rams72 a poslední změna proběhla před 6 roky a 1 měsícem.
Aktuálně je na stránce zobrazen 1 příspěvek (celkem z 1)
  • Autor
    Příspěvky
  • #6497
    Rams72
    Účastník

    Dobrý den,
    Prosím místní komunitu o pomoc s odladěním programu. Arduino mám necelý týden a jsem s programem v pasti. Kód který přikládám sice funguje jak bych potřeboval, ale je nekompletní a v jednom loopu. V podstatě jde o jeden blok, který hlídá množství paliva v hořáku, při poklesu paliva sepne šnekový podavač za předpokladu, že je v násypce >= jak 5% paliva.
    Potřebuji k tomu přidat další samostatný blok, který se skládá z modulu hallového senzoru a serva. Servo by mělo měnit polohu v rozmezí 90° v závislosti na naměřených otáčkách agregátu. Respektive má řídit klapku sání plynu do spalovacího motoru. Pokud RPM < 2000 otvírej klapku. a obráceně.
    Třetí blok je pouze modul L298N s DC ventilátorem, kde potřebuji potenciometrem měnit otáčky a spínat jej nezávisle na ostatních blocích tlačítkem nebo vypínačem.
    Nakonec jeden hlídací modul, detektor kouře, který je samozřejmě také samostatný blok a ten má při detekci kouře vypnout podavač paliva.
    Podavač paliva musí vypnout i pokur RPM = 0 (v případě že chcípne motor)
    Moc vás prosím o pomoc s poskládáním programu.

    [code]
    #define trigPin01 8
    #define echoPin01 9
    #define echoPin02 4
    #define trigPin02 3
    #define Switch 5

    #include <SPI.h>
    #include <Ethernet.h>
    byte mac[] = { 0xD4, 0xAD, 0xBE, 0xEF, 0xFE, 0x7D };
    IPAddress ip(192,168,1,150);
    EthernetServer server(80);

    void setup(){
    int duration01,distance01,duration02,distance02,percentage,heightTank;
    Serial.begin (9600);
    Ethernet.begin(mac, ip);
    server.begin();
    pinMode(trigPin01,OUTPUT);
    pinMode(echoPin01,INPUT);
    pinMode(trigPin02,OUTPUT);
    pinMode(echoPin02,INPUT);
    pinMode(Switch,OUTPUT);

    }

    void loop(){
    int duration01,distance01,duration02,distance02,percentage,heightTank,deviation;
    //You’ll probably want to change the next 2 lines.
    // The first one is the max. level of the water.
    // The next one is how high the sensor is above that max. level.
    heightTank=40;
    deviation=5;

    digitalWrite(trigPin01,LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin01,HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin01,LOW);
    duration01=pulseIn(echoPin01,HIGH);
    distance01=(duration01/2)/29.1;
    percentage=100-(((distance01-deviation)*100)/heightTank);

    Serial.println(„Stav nasypky:“);
    Serial.print(percentage);
    Serial.println(„% naplneni“);
    Serial.print(distance01);
    Serial.println(„cm od okraje“);
    Serial.println();
    delay(100);

    digitalWrite(trigPin02,LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin02,HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin02,LOW);
    duration02=pulseIn(echoPin02,HIGH);
    distance02=(duration02/2) / 29.1;
    delay(100);

    Serial.println(„Stav spalovaci komory:“);
    Serial.print(„palivo je „);
    Serial.print(distance02);
    Serial.println(„cm od okraje“);
    Serial.println();

    if ((distance02 >=20)&&(percentage>=5)) {
    digitalWrite(Switch, HIGH);
    Serial.print(„Rele podavace ve stavu: „);
    Serial.println(digitalRead(5));
    Serial.print(„——————————„);
    Serial.println();
    delay(8000);
    }
    else {
    digitalWrite(Switch,LOW);
    Serial.print(„Rele podavace ve stavu: „);
    Serial.println(digitalRead(5));
    Serial.print(„——————————„);
    Serial.println();
    delay(8000);
    }

    // když je připojen klient, zjistíme, zda jsou odeslána data
    // od klienta směrem k nám
    EthernetClient client = server.available();

    // dokud je klient připojen
    while (client.connected()) {

    // čti data od něj dokud nenarazíš na znak nového řádku
    if (client.available()) {
    char c = client.read();
    if (c == ‚\n‘) {

    // odešle klasickou hlavičku HTML stránky
    client.println(„HTTP/1.1 200 OK“);
    client.println(„Content-Type: text/html“);
    client.println(„Connection: close“);
    client.println();
    client.println(„<!DOCTYPE HTML>“);

    // zde již klasická html data
    client.println(„<html>“);
    client.println(„<head>“);
    // Název stránky
    client.println(„<title>Kogeneracni jednotka</title>“);
    // po odkomentování tohoto řádku nastavíte automatický refresh
    // hodnotu v sekundách můžete změnit ve vlasnosti content
    client.println(„<meta http-equiv=’refresh‘ content=’20‘ >“);
    client.println(„</head>“);
    client.println(„<body>“);
    client.print(„<b>Stav nasypky:</b>“);
    client.println(„</br>“);
    client.print(percentage);
    client.print(„% naplneni“);
    client.println(„</br>“);
    client.print(distance01);
    client.print(„cm od okraje“);
    client.println(„</br>“);
    client.println(„</br>“);
    client.print(„<b>Stav spalovaci komory:</b>“);
    client.println(„</br>“);
    client.print(„palivo je „);
    client.print(distance02);
    client.print(„cm od okraje“);
    client.println(„</br>“);
    client.println(„</br>“);
    client.print(„<b>Rele podavace ve stavu: </b>“);
    client.println(digitalRead(5));
    client.println(„</body>“);
    client.println(„</html>“);

    //ukončí přenos
    client.stop();
    }
    }
    }
    }
    [/code]

Aktuálně je na stránce zobrazen 1 příspěvek (celkem z 1)
  • Pro reakci na toto téma se musíte přihlásit.