Hallo ,ich bin neu hier und auch im Umgang mit uc neu.Ich habe mich bis jetzt mit Assembler ausseinandergesetzt Nun wollte ich ne Heizungsteuerung bauen,die sich langsam an die soll temparatur rantastet,da das ganze träge ist.Ich versuch mal zu erklären wie ich mir das gedacht hatte. Es soll zum beispiel 80grad C (R5=HIGH,Heizung ein) erreicht werden,bei 70grad wird der comparator angesprochen ,dann R3=High(Comparator schwellwert ändern) R6=Low(phasenabschnitt nur noch 80%) Dann 75grad C R4=HIGH(schwellwert ändern) R7=Low(Phasenabschnitt nur noch 60%) Dann 80grad C R8=Low (Phasenabschnitt auf 40%,temperatur halten) Mit einem ATTINY2313 Also gefühlt werden soll mit PT100 am Comparator. !-----------! ! -!-----------R1-------Poti----------VS ! Comparator! !---PT100--------------Ground ! ! !2313 +!-----------R2-----------------Ground ! ! ! ! Pinout!--R3-----! ! Pinout!--R4-----! ! Pinout!--R5-------------! ! ! ! ! Pinout!--R6----------------------!-------!--------Phasenabschnitt ! Pinout!--R7-------------! !opto- ! zur Heizung ! Pinout!--R8-------------! !koppler! ! ! ! ! !-----------! !-------! Ich hoffe das nicht so tolle Schaltbild ist halbwegs verständlich. Mit dem Poti eventuell abgleichen.Es bleiben noch pins für taster und Display.Was meint ihr machbar? Vieleicht könnte jemand in stichworten beschreiben wie der ablauf im uc zu realisieren ist,ich möchte kein fertiges programm,aber ne hilfe. Z.B erst ports setzen dann comparator setzen,dann abgragen. Comparator interupt dann ports schalten. Ich tu mich ein bisschen schwer den ablauf in den kopf zu kriegen,bzw. umzusetzen in programm. Ich wäre dankbar für hilfe
Tja, damit kannst du nur einen Zweipunktregler realisieren. Reicht zwar oft, für ne Heizungssteuerung würde ich etwas mehr investieren. Also nimm einen MC, der auch einen ADC hat und eine passende Pt100-Schaltung dran, mit einem einfachen Spannungsteiler wird man mit dem sonst nicht wirklich froh. Alternativ gleich einen der vielen Temperatursensoren mit digitalem Ausgang, dann kannst du auch beim Tiny2313 bleiben. Kannst dann trotzdem erstmal einen Zweipunktregler programmieren und später verfeinern (P,I,D).
http://www.delta-r.de/Pt-Elemte/Widerstandstabelle_Pt_100/widerstandstabelle_pt_100.html Laut der Widerstandstabelle des PT100 und 1kohm als spannungsteiler(bei 5V 4,5mA durch die widerstände) hätte ich bei null grad 0,4545 V am comparator.Die Referenzspannung der teiler ist ja gleich also kann es da denke ich keine ungenauigkeiten geben. Bei 70 grad 0,5637 V ,laut datenblatt des Attiny2313 schaltet dieser bei ca. 10mV ,es sei denn analog comparator input offset voltage meint die ungenauigkeit des differenzial eingangs.Ansonsten sollte der zuverlässig schalten oder? Die Widerstände sollten natürlich präzisionswiderstände sein. Es sollte halt recht einfach sein und eventuell mit attiny12 oder so gemacht werden. Es sei denn der comparator im MC ist ungenau,und deswegen sinnlos.Weil eine schaltung vor den PT100 entweder mit teuren zusatz IC oder mit billigeren ungenauen IC zu machen ist.
Ich würde das ganze eher mit einem ADC machen. Wenn die Temperaturwerte geändert werden sollen, ist damit nur eine Softwareänderung notwendig. Auch lässt sich die Regelcharakteristik eines PID in der Software besser anpassen und ggf auch mal nachstellen. Der Komparator ist nicht ungenau, er vergleicht einfach nur zwei Spannungen. Das kann sogar genauer sein, als der ADC - wenn man es braucht.
Ein Komparator schaltet zwar punktgenau hat aber keine merkliche Hysterese. Die müßte dann mit der Software nachgebildet werden sonst schaltet die Heizung evtl. im Sekundentakt aus und ein. Da würde ich lieber eine Temperatur messen und den Rest einer Software überlassen. Das dürfte auch die Ferienschaltung, Temperaturabsenkung usw. wesentlich erleichtern.
Es soll keine Zusatzfunktionen haben ausser halbwegs genau eine Temperatur zu erreichen und zu halten und das ohne erstmal drüber zuheizen und danach wieder weit drunter zu fallen.Deswegen auch eine Phasenabschnittsteuerung die geregelt wird.Die Heizung hat eine gewisse Trägheit,würde man warten bis 80grad erreicht sind würde danach die temparatur noch ansteigen weil sich dann die Hitze erst verbreitet.Deswegen langsam rantasten.
Hi! >Temperatur zu erreichen und zu halten und das ohne erstmal drüber >zuheizen und danach wieder weit drunter zu fallen Ein anderer Gedanke wäre den Temperaturanstieg über die Zeit zu betrachten, dann könnte man vor Erreichen der Solltemperatur abschalten. Steigt die Temp. weiter -Heizung=0, steht die Temp. -Heizung langsam hochfahren und erneut zeitliches Verhalten testen / messen. Ist dann sowas wie ein Fuzzyregler. Viel Erfolg, Uwe
Indem man die Schaltschwelle des Komparators umschaltbar macht baut man sich lediglich mit Mehraufwand einen 2-bit-AD-Wandler selbst was die Regelung eher schwieriger und die Schaltung komplexer als mit einem integrierten 10-bit-AD-Wandler macht. Für relativ viele Heizungsanwendungen ich keine Phasenanschinttsteuerung erforderlich da die Reaktion auch für eine Pulspaketsteuerung ausreichend träge ist (z.B. feste Periode 5s und variable Ein-Zeit).
>Es soll keine Zusatzfunktionen haben ausser halbwegs genau eine >Temperatur zu erreichen und zu halten und das ohne erstmal drüber >zuheizen und danach wieder weit drunter zu fallen. Deswegen auch eine >Phasenabschnittsteuerung die geregelt wird. Was du vermutlich beschreiben willst, ist ein einfacher P-Regler. Bei dem ist die Augangsgröße umgekehrt proportional zur Differenz Sollwert-Istwert. Je näher sich die Isttemperatur an die Solltemperatur annähert, desto weniger wird geheizt. Am Ende bleibt da immer eine kleine Differenz zwischen Soll- und Istwert, denn bei Sollwert=Istwert ist die Heizung ja aus. Wenn das stört, kannst du dem Regler noch einen I-Anteil hinzufügen. Realisieren kann man das sicherlich auf unterschiedliche Art und Weise. Am einfachsten dürfte aber der oben schon genannte Vorschlag über den ADC sein. Im Prinzip ist das einfach: Istwert einlesen, mit Sollwert vergleichen, die Differenz mit einem konstanten Faktor multipliziert ergibt die Ausgabegröße, diese an die Phasenabschnittssteuerung ausgeben, und das ganze wieder von vorn. Oliver
Adriano Duggento wrote: > Ich tu mich ein bisschen schwer den ablauf in den kopf zu kriegen,bzw. > umzusetzen in programm. Dann nimm Papier und Bleistift und mach dir die Abläufe in einem Diagramm klar. Jeder Teilschritt kommt in eine Box. Pfeile verbinden die Boxen und zeigen so den Programmfluss an. Eine Raute wird traditionell für Vergleiche benutzt. In der Raute schreibst du die Bedingung, von der Raute gehen dann 2 Pfeile raus: einer für 'Ja, Bedingung erfüllt', einer für 'Nein, Bedingung nicht erfüllt'. Der Vorteil so eines Flussdiagramms: Du brauchst dich nicht um irgendwelche Syntaxfeinheiten der verwendeten Programmiersprache kümmern, die sind zu diesem Zeitpunkt uninteressant. Es geht rein darum, den logischen Ablauf der Dinge zu visualisieren. Wenn du ein erstes Diagramm hast, schaust du dir die einzelnen Teile-Boxen an und entscheidest, welche davon es verdienen genauer detailiert zu werden. Das machst du dann (ev. in einem neuen Diagramm, wenn das alte droht unübersichtlich zu werden). Diesen Verfeinerungsverfahren kann durchaus über mehrere Iterationen laufen. Am Ende stehst du dann mit einem Diagramm da, das detailiert genug ist um fast 1:1 in ein Programm umgesetzt zu werden. Dein erstes Diagramm könnte zb. so aussehen
1 | +--------------------------+ |
2 | | Hardware initialisieren | |
3 | +--------------------------+ |
4 | | |
5 | |<---------------------------------------+ |
6 | v | |
7 | +--------------------------+ | |
8 | | Temperatur messen | | |
9 | +--------------------------+ | |
10 | | | |
11 | | | |
12 | v | |
13 | ____/ \____ | |
14 | _____/ \______ | |
15 | Ja ______/ gemessene Temp kleiner \______ Nein | |
16 | +------/ als Sollvorgabe ? \------+ | |
17 | | \_____ ______/ | | |
18 | | \_____ ________/ | | |
19 | | \____ ___/ | | |
20 | | \ / | | |
21 | | | | |
22 | | | | |
23 | v v | |
24 | +---------------------+ +-------------------+ | |
25 | | Heizung ein | | Heizung aus | | |
26 | +---------------------+ +-------------------+ | |
27 | | | | |
28 | | | | |
29 | +---------------+ +-----------------+ | |
30 | | | | |
31 | v v | |
32 | +---------------------------+ | |
33 | | Anzeige aktualisieren | | |
34 | +---------------------------+ | |
35 | | | |
36 | | | |
37 | +---------------------------------------+ |
Das obige Regelverfahren wird nicht das von dir gewünschte Regelverhalten zeigen, aber darum gehts jetzt nicht. Es geht darum, dass du ein Werkzeug benutzt (nämlich das Diagramm) um deine Gedanken und Ideen zu organisieren und die vorgesehenen Abläufe zu versinnbildlichen.
Ja das war schon ein guter hinweis mit dem flussdiagramm und der fuzzyregler scheint dann auch schonmal interresanter zu sein.Dann werd ich mich mal mit dem mega48 ausseinandersetzen den hab ich auch noch rumliegen. Danke nochmal für die wichtigen tritte in die richtige richtung. Da es mein erstprojekt ist werd ich mich sicher nochmal melden.
Für ein Erstobjekt ist Latte ziemich hoch gehangen mit einer Heizungssteuerung für das ganze Haus. Da würde ich erst mal mit was nicht so großvolumigen, thermisch trägen anfangen. Ein Glas Wasser mit kleinster Aquarienheizung dürfte für erste Simulations-Versuche schon langsam genug reagieren. Wenn das funktioniert sind weitere Schritte durch die gewonnene Erfahrung bestimmt leichter.
Das wird keine Steuerung fürs Haus,es wird ein Heizband in einem metallstück aufgeheizt.Als Erstprojekt vieleicht wirklich ein bisschen schwierig allerdings hats zeit und hat dann wirklich eine mehrfache sinnvolle verwendung für mich.Ich wollte meine Regale nicht mit tollen spielzeugen füllen,ich brauche als ansporn immer was für mich nützliches. Und wenn ichs ausgefeilt bekomme denke ich hat sowas immer verwendung.
Nun da ich den pt100 ja am adc auswerten will und man wegen eigenerwärmung ja wenig strom durchjagen soll,nun meine frage kann ich zum messen nicht einen pin einschalten oder ist das dann ungenau z.b so !--------------! ! ! !------------------>ARef ! pinout!---!--100 OHM--! ! ! ! ! ADC!---------------!-------PT100------Ground ! ! !--------------! Da ich ja nur alle 3-5 sek. messen müsste könnte das funktionieren oder gibt es da weitere bedenken?Das wären zum messzeitpunkt ca 25mA (63mW)für nur ganz kurz.
Habs selbst gefunden, das wohl die spannungsänderung zu gering für 10bit adc sind.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.