• Du musst dich registrieren, bevor du Beiträge verfassen kannst. Klicke auf Jetzt registrieren!, um den Registrierungsprozess zu starten. Registrierte User surfen werbefrei, können Suchen durchführen und sehen die volle Darstellung des Forums mit vielen anderen Unterforen!!!

Pelletgrill bauen

so wieder ein update meinerseits:

bin erstmal weg vom touch display - der wäre vorerst zu kompliziert gewesen und ich hab mir gedacht ich fang erstmal an ein bisschen den umgang mit der arduino zu erlernen.
den kann man ja später mal nachrüsten, nur möchte ich schon bald mal den ersten grillversuch starten :messer:

zu meinem programm: über einen drehschalter soll man vordefinierte programme (tempsollwert fix) und einen manuellen modus (hier kann man die temp über ein poti einstellen) auswählen können.
am lcd display(16x2) soll dann in der ersten zeile der programmname erscheinen + daneben die sollwert temp. darunter sollen dann abwechselnd die akutelle kernfühlertemp / garraumtemp angezeigt werden.

vielleicht kann mir hier jemand paar programmierratschläge geben ? :)

wie siehts eig mit der regelung aus ? wäre hier eine pid regleung sinnvoll? @s.ochs wie hast du das gelöst?

vielen dank leute
 
über einen drehschalter soll man vordefinierte programme (tempsollwert fix) und einen manuellen modus (hier kann man die temp über ein poti einstellen) auswählen können.
Funktioniert, habe ich auch so gemacht. Entweder die digitalen IOs vom Arduino dafür benutzen, oder wie ich einen Portexpander dazwischenhängen, dessen Portzustände ich dann auf einmal abfrage. Programmierung über if/else oder switch.

am lcd display(16x2) soll dann in der ersten zeile der programmname erscheinen + daneben die sollwert temp. darunter sollen dann abwechselnd die akutelle kernfühlertemp / garraumtemp angezeigt werden.
Wenn du den richtigen Treiber/Lib zu deinem Display hast, ist das nicht viel Aufwand.

wie siehts eig mit der regelung aus ? wäre hier eine pid regleung sinnvoll? @s.ochs wie hast du das gelöst?
Ja, ich habe einen PID-Regler drin, aber ich regle nicht den Pelletbrenner, sondern die Wärmezufuhr zur Pit aus der SFB. Mein Pelletbrenner wird nur gesteuert, also Vorgabe von Pellet- und Luftzufuhr. Ich habe 3 feste Modi (Teillast, Volllast, Boost) und einen für manuelle Vorgabe. Insgesamt läuft der Brenner sehr stabil in einemvorgegebenen Modi. Bei Teillast läuft der Brenner etwa so, dass die Pit-Temperatur bei offener Verbindung zwischen Pit/SFB auf 120 °C kommt. Volllast dann 200 °C und Boost für den Start oder für schnelles aufheizen. Dadurch, dass ich nicht den Brenner sondern die Wärmezufuhr regle, kann ich auch mal ein Stück Obstholz zusätzlich in die Flamme legen. Das stört den Brenner nicht, der arbeitet stabil weiter.
Wenn Brenner reglen, dann wie bereits geschrieben, nur die Pelletzufuhr und die Luftzufuhr angepasst zur Pelletmenge mitsteuern. Ob ein PID dann sinnvoll ist, musst du schauen, ob deine Pelletzufuhr überhaupt dynamisch genug dafür ist.
 
hätte mir das einfacher vorgestellt mit dem schalter an den digitalen IOs ^^ hier braucht man ja wiederstände dazwischengeschaltet um die störsignale rauszufiltern(so hab ich das verstanden), habe jz die internen arduino widerstände aktiviert und jetzt bin ich in der lage zu schalten

das nächste problem: ich möchte bei stufe "off" einfach nur einen Lüfternachlauf einprogrammieren. nur will ich dies nicht mit "delay" machen, da hier ja mein programm hängen bleibt. hab schon gescucht nach einer art timer der startet sobal ich die schalterstellung 1 aktiviere aber finde nichts brauchbares .

hat jemand tipps? :D
 
Timer gibt es doch zu hauf. Oder eben selbst programmiert:

Code:
// Timer-Variable im Header definieren
unsigned long lastUpdate;

// Variable setzen
lastUpdate = millis();

// Zeitspanne definieren
if (millis() - lastUpdate > 60000) {
// was soll gemacht werden
}

Ob du ">" oder "<" benutzt und ob du lastUpdate innerhalb der Abfrage resettest, hängt von deiner restlichen Programmierung ab.
 
Hab aber nichts gefunden, dass zu meinem Fall passt . Wird aber wahrscheinlich auch an meinen mangelnden Programmierfähigkeiten liegen. :thumbdown: Danke für die Tipps !! Ich werde das Morgen gleich versuchen und das Ergebnis Posten.
Schönen Abend noch :mosh:
 
sitz schon ein paar stunden und tüftle vor mich hin aber ich bekomm das mit dem timer einfach nicht hin..

ich hab den digitalen eingang "ProgrammOff" wenn dieser aktiviert ist, soll der Lüfter (digitaler Ausgang) eingeschaltet werden und für 10 min nachlaufen, danach abschalten und aus bleiben.

das ganze soll in einem eigenen loop aufgerufen werden.

habe nämlich für jedes grillprogramm einen eigenen loop - ist dies sinnvoll?
 
Wird "ProgrammOff" per Interrupt abgefragt? Hängt da ein Schalter oder ein Taster dran, also bleibt der Eingang LOW (bzw. HIGH) bei Betätigung? Wie viele delays hast du schon drin, also wie schnell läuft deine Hauptloop noch. Läuft der Lüfter nur, wenn er durch "ProgrammOff" gestartet wird, oder auch wann anders? Im Grunde gibt es nur eine Loop, alle deine Teilloops musst du ja von der Hauptloop aus aufrufen. Aber das Unterteilen in Teilfunktionen ist schon ok. Kannst ja deinen Code mal online stellen, dann kann man dazu auch mehr sagen.

Unter der Annahme, dass du nicht per Interrupt abfragst, und ein paar weiteren Annahmen, zu denen du leider nichts geschrieben hast:

Code:
unsigned long lastUpdate;
bool fanflag;

#define PROGRAMMOFF 11  // oder was auch immer für ein IO
#define FAN 12          // dito
#define ZEITSPANNE 60000      // oder wie lang auch immer


void setup() {
  // put your setup code here, to run once:
  pinMode(PROGRAMMOFF, INPUT);
  digitalWrite(PROGRAMMOFF, HIGH);    // ich nehme mal an du schaltest LOW
  pinMode(FAN, OUTPUT);
  digitalWrite(FAN, LOW);
  fanflag = false;

}

void loop() {
  // put your main code here, to run repeatedly:

  // Checken was am IO passiert
  if (!digitalRead(PROGRAMMOFF) && !fanflag) {
    fanflag = true;
    lastUpdate = millis();
    digitalWrite(FAN, HIGH);
  }

  // Zeitspanne definieren
  if (fanflag && (millis() - lastUpdate > ZEITSPANNE)) {
    digitalWrite(FAN, LOW);
    fanflag = false;
  }
}

Funktioniert aber nur, wenn deine Loop nicht durch delays zu sehr verlangsamt wird, ansonsten wird die Änderung am PROGRAMMOFF nicht festgestellt.

Edit: Theoretisch kann fanflag aus der untersten IF-Abfrage auch raus, falls der Lüfter wirklich nur durch ProgrammOff eingeschaltet wird, und sonst immer aus ist. Ein erneutes Betätigen von ProgrammOff während die Vorgabezeit noch nicht abgelaufen ist, würde aktuell nichts an der Laufzeit ändern, es zählt die erste Betätigung. Falls die Zeit bei jedem Betätigen resettet werden soll, kann fanflag aus der oberen if-Abfrage raus. Falls Variablen gespart werden sollen, kann die Funktion von fanflag auch komplett durch lastUpdate übernommen werden, zur Vereinfachung habe ich die Variablen aktuell getrennt.
 
also hab jetzt mal alles so eingegeben, so dass es gehen müsste aber die änderung der von "zeitspanne" bewirkt leider keine änderung. der lüfter läuft immer nur kurz an und dann geht er wieder aus. selbes spiel auch beim schnecken motor

antworten zu den annahmen: wird nicht per interrupt abgefragt und hängt an einem schalter und bleibt low (wegen pulldown). delays nur eines ersichtlich unten. lüfter soll immer 100% mitlaufen außer bei programm_smoke weniger



hier der entsprechende code-teil für den lüfter:



#define ZeitspanneLuefter 600000

bool Heizstatus = false;
unsigned long LastUpdateLuefter;

void setup()
{

pinMode(ProgammOff, INPUT_PULLUP);
pinMode(Luefter, OUTPUT);
digitalWrite(Luefter, LOW);

void loop(){

delay(500); // für temp sensor
int ProgammOff_read = digitalRead(ProgammOff);
//Serial.println(ProgammOff_read, DEC); // dient zum anzeigen am seriellen monitor
if (ProgammOff_read == false)
{
Off();
}


void Off(){

lcd.setCursor(0, 0);
lcd.print("Ausschaltvorgang");
lcd.setCursor(0, 1);
lcd.print(thermocouple.readCelsius());

Heizstatus = false; // schaltet den status um, damit nach dem umschalten ins programmoff wieder geheizt werden kann
HeizstabEinAus();

if (!digitalRead(ProgammOff) && !Luefterstatus){

LastUpdateLuefter = millis();
Luefterstatus = true;
digitalWrite(Luefter, HIGH);
}

if (Luefterstatus && (millis() - LastUpdateLuefter > ZeitspanneLuefter)) {

digitalWrite(Luefter, LOW);
}


}
 
problem gelöst! es gab verbindungsschwierigkeiten zwischen arduino und pc - läuft alles wie es soll!! :muhahaha:

werde euch am laufenden halten! :gs-rulez:
 
also hab jetzt mal alles so eingegeben, so dass es gehen müsste aber die änderung der von "zeitspanne" bewirkt leider keine änderung. der lüfter läuft immer nur kurz an und dann geht er wieder aus. selbes spiel auch beim schnecken motor

antworten zu den annahmen: wird nicht per interrupt abgefragt und hängt an einem schalter und bleibt low (wegen pulldown). delays nur eines ersichtlich unten. lüfter soll immer 100% mitlaufen außer bei programm_smoke weniger
Ja gut, ich bin von einem Taster ausgegangen, bei einem Schalter setzt sich mein Code immer selbst wieder zurück, deshalb das aus/ein-Verhalten. Bei einem Schalter brauchst du in der Off() das !digitalRead(ProgammOff) nicht, da du den Zustand ja schon beim Aufruf der Off abfragst und danach entscheidest. Außerdem würde ich im else-Zweig zur Off-Abfrage noch den Lüfterstatus reseten, falls du nach einem Ausschaltvorgang nochmal das System starten willst, ohne einen Restart des Arduino.

Wenn du willst, kannst du diesen Teil
Code:
if (!digitalRead(ProgammOff) && !Luefterstatus){

LastUpdateLuefter = millis();
Luefterstatus = true;
digitalWrite(Luefter, HIGH);
}

if (Luefterstatus && (millis() - LastUpdateLuefter > ZeitspanneLuefter)) {

digitalWrite(Luefter, LOW);
}

auch ersetzen durch

Code:
if (!LastUpdateLuefter) {
  LastUpdateLuefter = millis();
  digitalWrite(Luefter, HIGH);
} else if (millis() - LastUpdateLuefter > ZeitspanneLuefter) {
  digitalWrite(Luefter, LOW);
}

Auch hier würde ich LastUpdateLuefter bei nicht eintreten der Off() auf 0 reseten.

Und ich würde den delay(500) für deine Temperaturmessung auch noch durch einen Timer ersetzen, sodass die loop() nicht bei jedem Durchlauf ne halbe Sekunde stillsteht.
 
Servus Leute,

ich les mal mit..
bin gerade am Ideen sammeln für einen Pellets Ofen.

Hattet ihr schonmal die Idee einen Fleischwolf als Förderschnecke zu verwenden?

Bei wieviel Grad an der Heizpatrone entzünden sich die Pellets?

MfG
 
Hattet ihr schonmal die Idee einen Fleischwolf als Förderschnecke zu verwenden?
Bei geschlossenem Kern der Forderschnecke wird das nix. Die Idee hat ich schon mal, aber der Freiraum im Inneren ist zu schmal. Bringt nur was, wenn du hinten Pellet-Mehl raus bekommen willst und einen richtig fetten Motor dran baust, das Zerquetschen der Pellets braucht ne Menge Leistung.

Bei wieviel Grad an der Heizpatrone entzünden sich die Pellets?
Hab ich noch nicht gemessen, kann nur sagen, wenn sie anfängt rot zu glühen und genug Frischluft da ist, zünden auch die Pellets. Ich würde mal sagen, je mehr desto schneller zünden die Pellets, desto weniger Rauchentwicklung hast du. Wobei du aufpassen musst, dass dir die Patrone nicht abraucht, weil sie die Leistung nicht wegbekommt. Daher sollte sie mindestens 8 mm, besser 10 mm Durchmesser haben. Und 160W reichen bei mir. Größere sind mir schon weggeraucht.
 
Danke für die Antwort, @s.ochs
Den Gedanken mit dem Fleischwolf hab ich übern Haufen geworfen, zumal die Schnecken im Ebay ja auch sehr preiswert sind.
Das mit der Heizpatrone werde ich einfach ausprobieren "Versuch macht kluch":-)

Hat denn jemand schon eine funktionierende Steuerung über einen Arduino gepastelt? Hab mal ein wenig in meiner Werkstatt gewühlt und dabei einen Mega und einen Touchmonitor gefunden...
Ich wollte, im Gegensatz zu @s.ochs, meine Regelung über die Geschwindigkeit der Schnecke steuern. Ist das Sinnvoll? Mein Plan war auch der, das Pelletfeuer in der Garraum und nicht in die SFB zu bauen...
 
Hat denn jemand schon eine funktionierende Steuerung über einen Arduino gepastelt?
Arduino Micro und ESP8266 als Doppelpack an meinem Eigenbau. Der Micro steuert den Brenner und sammelt Systemdaten, der ESP übernimmt die Schnittstelle zum User (Touchscreen, Wifi). Ist aber nicht 1:1 übertragbar, kommt ja stark auf die verwendete Hardware an. Programmierung einer Steuerung ist aber auch nicht so dramatisch, jenachdem was man alles haben will.
 
@Renier ich werde die Patrone mal über ein Eltako Phasenanschitt Relais anschließen und einfach testen.. stell dann meine Testergebnisse hier rein..
 
wie lange lässt du sie laufen?
Bei meinem Brenner dauert es etwa 5 Min bis die ersten Pellets fallen. Ich schalt die Heizpatrone beim Start ein, nach 5 min ist sie heiß genug, sodass sie die ersten fallenden Pellets entzündet. Nach 10 min schalte ich sie automatisch ab. Sollte es bis dahin nicht brennen, verlängere ich nochmal um 10 min. Sind beim Start schon Pellets im Eimer, lass ich keine neuen Pellets fallen, bis die Flamme da ist, ansonsten sind zu viele Pellets im Eimer und es gibt am Brennpunkt nicht genug Frischluft für die Zündung.

Ich schalt meine Patrone mit einem SSR. Wenn das Leistungs/Querschnitt-Verhältnis der Patrone zugroß ist, merkt man das recht schnell, weil sie dann nämlich nur einmal anmachen und laufenlassen überlebt, die glüht dann einfach aus, weil sie die Hitze nicht ans umgebenende Medium abgeben konnte.
 
Zurück
Oben Unten