Ří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 8 roky a 10 měsíci.
-
AutorPříspěvky
-
3.4.2016 v 10:46 #6497
Rams72
ÚčastníkDobrý 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] -
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.