mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Arduino Programmierer 2Punkt Regelung


Autor: ONpoint (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich bin dabei ein kleines Projekt in die Tat umzusetzen und bin nun an 
einen Punkt angekommen an dem ich ohne fremde Hilfe nicht mehr weiter 
komme.
Ich habe einen Arduino Uno, einen Pt1000 Messwandler, eine 
Relaisplatine, ein 16x2 Display und 2 10K Poti´s (1x Kontrast, 
1xSollwertgeber). Das alles soll zusammen als 2 Punkt Regler 
funktionieren. Das Sollwertpoti gibt dem Arduino den Zu erreichenden 
Wert vor und der Arduino schaltet das Relais so lange an bis der ISTwert 
mit dem Sollwert Übereinstimmt bzw Aus wenn der Istwert über dem soll 
liegt und An wenn der Istwert unter dem Soll Liegt.
dabei soll Am Display in der ersten Zeile "Hallo" stehen und in der 
zweiten Zeile soll "Soll XXX   IST XXX" (XXX ist der Variable wert) 
stehen.

Ich bräuchte die Fähigkeiten eines Mannes oder einer Frau der/die das 
als Sketch umsetzen kann, ich würde natürlich auch eine Belohnung 
(Überweisung) im Gegenzug tätigen.

Grüße Sebi

Autor: Ralph S. (jjflash)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich programmiere dir das zwar nicht (und wenn dich n bissi einliest ist 
das auch für einen Anfänger nicht sooooooo das Überprojekt).

PT1000 ... mit Messwandler ? Relativ teuer (aber gut).

Hier... mußt du wissen, welche Temperatur welchen Spannungswert 
produziert (bspw. 0,1V / Grad Celcius).

Sollwert kann man zwar mit Poti (über einen Analogeingang realisieren), 
aber das ganze digital mit Tastern einzustellen wäre imo. geschickter.

Was ich aber wirklich schreiben wollte ist, dass du eine Hysterese für 
den 2 Punktregler brauchst wenn du am Ausgang mit einem Relais etwas 
machen magst, weil ansonsten das Relais zum "flattern" neigt.

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ONpoint schrieb:
> Ich habe einen Arduino Uno, einen Pt1000 Messwandler,

Welchen Temperaturbereich möchtest du messen?
Käme für dich auch ein DS18B20 als Sensor in Frage?
Der ist billiger, digital, und fertig kalibriert/justiert und würde 
somit die ganze Sache vereinfachen.

Dann könnte ich dir ein solches Programm gerne schreiben.

Ich würde allerdings auch Taster zum Einstellen vorschlagen, da Potis 
mit der Zeit "vergammeln" und somit zu Fehlern führen können. Im 
schlimmsten Fall läuft deine Heizung dann permanent auf Vollgas, weil 
das Poti kaputt ist.

lg
Chris

Autor: aSma>> (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieviel zahlst du? Damit ich erstmal überhaupt nur etwas dafür 
nachdenke.

Was soll überhaupt geregelt werden? Hast du die Strecke schon?

Autor: Sebastian Leistner (onpoint)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es Soll eine Kleine Heizspule geregelt werden in einem Temperaturbereich 
von Ca 250 Grad deswegen ist der DS18B20 keine Variante für mich.

Taster an sich ja finde ich auch besser, aber auf Grund dessen das ich 
die optimale Temperatur noch Herausfinden muss, benötige ich zur 
Stufenlosen Sollwertvorgabe das Poti, da habe ich genug, also kein 
Stress wenn da mal eins Kaputt geht.

Zwecks Hysterese ist das ja für mich nicht so schlimm da Heizelemente eh 
recht träge sind und in diesem Temperaturbereich sind +/- 3 Grad nicht 
schlimm.

: Bearbeitet durch User
Autor: aSma>> (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,
also hast du schon alle Teile gekauft? Du sendest diese Einen zu?

Oder brauchst du nur das Sketch?

Autor: ONpoint (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja die Teile habe ich schon und das display mit einem poti schon nach 
libary verdrahte. Habe es auch getestet mit einem sketch nach youtube 
tutorial und es funktioniert perfekt.

Ich bräuchte nur jetzt noch das Sketch für die komplette Regelung nur 
das bekomme ich leider nicht hin, sowas lernt man auf der Meisterschule 
leider nicht.

Autor: Arduino Fanboy (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ONpoint schrieb:
> Ich bräuchte nur jetzt noch das Sketch für die komplette Regelung nur
> das bekomme ich leider nicht hin, sowas lernt man auf der Meisterschule
> leider nicht.

Ein einziger Vergleich....
Das soll doch wohl drin sitzen....
Die 3°K Hysterese ergibt sich sicherlich von selber, durch die Trägheit.

Autor: ONpoint (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre eis eine verbindungsprogrammierte Steuerung oder eine SPS wär das 
ganze kein Problem, aber C programmierung bekomme ich so nicht ohne 
weiters nicht hin und ich habe leider keine Zeit mich da monate lang 
einzuarbeiten denn ich brauche den sketch ziemlich dringend.

Autor: aSma>> (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,
ich würde das für dich machen. Alles weitere besprechen wir per PN.

Hier ist meine email: asma_mag_doener@web.de

Dann sende ich dir meine Tele-Nr.

Autor: Ralph S. (jjflash)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... nur mal so: 250°C mit PT1000 ist nicht so ganz lustig..... Such dir 
noch ein NiCr Thermoelement und einen elektronischen Eispunkt... Hm, 
freut mich dass  jemand gefunden hast drr dir das programmiert....

Autor: aSma>> (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Servus,
wird das heute noch was? Ich will noch Fußball gucken. Ich habe noch 
viele Fragen.

Hast du die Strecken Koeffitienten schon mal aufgenommen, damit man eine 
Simulation starten kann? Wenn deine Regelgüte 3° Hysterese sind, dann 
kann es sein, dass man eine Grundlast per PWM zum heizen erzeugen muss.

Am WE habe ich keine Zeit.

Autor: Thumbmeister (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ONpoint schrieb:
> Ich bräuchte nur jetzt noch das Sketch für die komplette Regelung nur
> das bekomme ich leider nicht hin, sowas lernt man auf der Meisterschule
> leider nicht.

Bitte was - Meisterschule? Metallbauer oder Tischler lernen keine 
Programmierung, das ist klar, aber es sollten doch wohl allgemeine 
Fähigkeiten gebildet werden, sich Informationen zu beschaffen!

Diese Vorgehensweise disqualifiziert Dich, ich würde sie als stinkefaul 
bezeichnen.

Wenn ich schon lese "Uno", dafür gibt es im Internet tausende von 
Anleitungen und Schulscripten, wenn Du es damit nicht schaffst, einen 
Wert am Analogport abzufragen, kaufe Dir eine Raspel und fertige 
Holzfiguren.

Und ja, mir bestätigt es wieder die Richtigkeit, das Handwerk direkt 
nach der Leere verlassen zu haben.

*)Schreibfehler können Absicht sein.

Autor: m.n. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ONpoint schrieb:
> einen Pt1000 Messwandler

Welchen und mit welchem Ausgangssignal?

Autor: ONpiont (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thumbmeister dein super Text bietet hier weder hilfe noch sonst irgend 
was, bestätigt nur das du relativ wenig Ahnung von den weiterbildungs 
und Qualifizierungsmaßnahmen hast. Mag sein das du oder andere leute 
sich mit dem arduino besser auskennen aber deswegen hab ich ja genau 
hier angefragt. Man muss im leben nicht alles können man muss nur die 
richtigen leute um Hilfe bitten. Denn ich glaube nicht das wenn du als 
"superhandwerker" ein Haus bauen möchtest dir Informationen alle aus dem 
Internet suchst. Dein Beitrag war nur Stumpfsinnig und keineswegs 
Hilfreich. Aber gibt ja überall diese Art von Menschen die eine 
Fähigkeit haben und sich über andere die das nicht können beschwären 
weil sie ja nichts besseres im leben zu tun haben.

Habe des messwandler von pollin und will ihn im ausgangsbereich von 0-5V 
nutzen.

Autor: m.n. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ONpiont schrieb:
> messwandler von pollin

Der gehört in die orangefarbene Tonne!

Ein Arduino Beispiel zur Auswertung eines PT1000 findest Du hier: 
Beitrag "Re: PT1000, einfache Auswertung mit AVR (ATmega328)"
Die substanzlosen Beiträge des Herrn MaWin kannst Du getrost ignorieren.

Der Temperturwert wird direkt ermittelt und per USB ausgegeben. Du 
kannst ihn als Istwert auf dem LCD anzeigen. Den Sollwert erhält man 
durch Einlesen des Potis über analogRead(poti_kanal). Ein einfacher 
Vergleich auf >= oder < schaltet das Relais ein oder aus.

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
m.n. schrieb:
>> messwandler von pollin
> Der gehört in die orangefarbene Tonne!

Was erstmal Quark ist, im Gegenteil: Mit der Aufbereitung 0-5V Ausgang 
passt das Signal perfekt zum Wandlungsbereich des Prozessors.

Autor: Liz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, 0.3 Grad Auflosung MIT Polling Schaltung gegen 0.7 Grad Auflösung 
mit einem einfachen Widerstand, wobei die Pollin Schaltung erheblichen 
Mehraufwand bedeutet.
Beides muss man kalibrieren, bei der einfachen Schaltung braucht man nur 
ein 5k Spindeltrimmer anstelle des Sensors anzuschließen, welches auf 
1k+Leitung eingestellt wird.
Damit calibriert man dann 1.1V vref, Toleranz widerstand sowie
Leitungslänge automatisch aus. Der Pollin Messwandler ist aber wirklich 
Murks.

Autor: Liz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
# define w unsigned int
# define b unsigned char
# define d unsigned long
# define q d long
# define v void

w pot[10];
w pt1000[10];

w avg(w*p,c i) { b j=i; d t=0; while(i--) t+=p[i]; 
 t/=j; while(--j) p[j]=p[j-1]; *p=t; }

v sensor(w*p,c i) { 
  analogRead(i); delay(10); *p=analogRead(i);
  avg(p,5); avg(p,10);
}

v idle() { static c f;
  sensor(pot,0);
  sensor(pt1000,1);
 delay(150);
 if(f) display(); f=!f;
}


#include <LiquidCrystal.h>

LiquidCrystal lcd(12 /*RS*/, 11 /*E*/, /*D4*/ 5, 4, 3, 2 /*D7*/);


v setup() {
  Serial.begin(19200);
  pinMode(13,OUTPUT);
  digitalWrite(13,0);
  lcd.begin(16, 2);
  lcd.print("Init 2Point Temp");
  Serial.println("\nInit");
  lcd.offCursor();
  for(c i=50;i--;idle());
  lcd.setCursor(0, 0);
  lcd.print(" Hello World! ");
  lcd.offCursor();
}

v loop() {
  if((*pot-5)>*pt1000) digitalWrite(13,HIGH); 
  if((*pot+5)<*pt1000) digitalWrite(13,LOW); 
  idle();
}

v display() { 
  w Set = *pot*10/34; 
  w i=*pt1000*10/34;
  w j=*pt1000*10-i*34; j=j*10/34;
  lcd.setCursor(0, 1);
  if(i<100) lcd.print(' ');
  if(i<10) lcd.print(' ');
  lcd.print(i); lcd.print("."); lcd.print(j);
  lcd.print(" Set: "); lcd.print(Set);
  if(Set<100) lcd.print(' ');
  if(Set<10) lcd.print(' ');
  Serial.print(millis()); // per UART ausgeben
  Serial.print(" , "); Serial.print(i);
  Serial.print("."); Serial.println(j);
}




2 Punkt Regler 0-300 Grad Potentiometer auf ain0 und Pt1000 auf Ain1 .
Hysterie 3 grad,  ca 5 Hz Prozess Zeit, 2.5Hz Anzeige Update.

Autor: Arduino Fanboy (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ein hässliches Gürteltier....


> static c f;
Das versagt!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.