[Bascom] PI Regelung

Bonze

Neues Mitglied
16. Jan. 2010
516
0
0
Altenkirchen (Pfalz)
Sprachen
  1. BascomAVR
Ich hab als erstes Projekt mal versucht eine Pi Regelung zu programmieren, hab dazu auch schon mehrere Sachen gelesen.
Eine Schaltung hab ich noch nicht deshalb weiss ich auch noch nicht wie sich mein Programm auswirkt.
aber kommt das in etwa so hin ?
Code:
     Declare Function Piregler(byval Id As Byte , Temp As Single) As Integer       'deklarieren der funktion
     Function Piregler()
      Local Dim Regeldifferenz As Single                    'Regeldifferenz
      Local Dim Sollwert As Single                          'Sollwert
      Local Dim Istwert As Single                           'Istwert
      Local Dim Pverstellung As Single
      Local Dim Iverstellung As Single
      Local Dim Tmp_ianteil As Single
      Local Dim Regelgroesse As Single
      Local Dim Kri As Byte
      Local Dim Krp As Byte
      Local Dim T As Byte

      Sollwert = Temp
      T = 1
      Kri = 1
      Krp = 4
      Sollwert = 30                                         'Sollwert auf 30°C setzen

      Regeldifferenz = Istwert - Sollwert

      'P-Anteil
      Pverstellung = Krp * Regeldifferenz

      'I Anteil
      Tmp_ianteil = Regeldifferenz * Kri
      Iverstellung = Tmp_ianteil / T

      'Ergebnis
      Regelgroesse = Pverstellung + Iverstellung

      Piregler = Regelgroesse
     End Function

klar ist natürlich das ich noch irgendwie per PWM ne ausgabe machen muss, leider hab ich noch keinen Plan.
Ich hab den Code nach Formeln aus der Formelsammlung " Formeln für Elektrotechniker" umgesetzt. Ich hoffe nicht ganz falsch.
 
Hallo Bonze!

Erst einmal möchte ich dich im AVR-Praxis Forum begrüßen! :ciao:


Dann habe ich mir dein Code mal angehen und nun stellen sich mir viele Fragen....

Schön wäre es, wenn du dich einmal vorstellen würdest (persönlich und "technisch"), damit wir wenigstens deinen Erfahrungslevel kennen.


So wie dein Programm momentan aussieht würde ich sagen grenzt es eher an ein "Blockschaltbild", als an einen Programmcode. ;)


Je mehr Infos alle bekommen, desto besser (und gezielter) ist die Hilfe!
Also... Grundlagen zur Idee, Schaltplan und ggf. vorläufiger (aber vollständier) Programmcode können manchmal Wunder bewirken. ;)

Schöne Grüße und viel Spaß,
Cassio
 
jo klar ist das jetzt nur die regler funktion ohne irgendwelche ausgabe,
also , sagen wirs so erfahrung hab ich eigentlich keine,
noch nie soetwas programmiert.
Ich lerne zwar Elektroniker für Automatisierungstechnik (3LJ), aber habe nur elektrotechnische Grundkenntnisse, da der Schwerpunkt bei uns auf der Automatisierung in der Industrie liegt, BUS-Systeme , SPS usw.

Dieser Regler sollte, die Temp welche von nem 1wire Sensor kommt verarbeiten, und dann via PWM eine Spannung steuern für einen Mosfet der dann die Spannung für meine angeschlossenen Lüfter regelt.



Hier der vorläufige Schaltplan.


Im moment geht es mir eher um die Funktion des PI-Reglers, da ich die Schaltung noch nicht aufgebaut habe und auch noch keine 1wire auswertung gemacht habe,..
 
Hallo,

na denn auch mal von mir ein herzliches Willkommen :flowers:

jo klar ist das jetzt nur die regler funktion ohne irgendwelche ausgabe,
also , sagen wirs so erfahrung hab ich eigentlich keine,
noch nie soetwas programmiert.
Ich lerne zwar Elektroniker für Automatisierungstechnik (3LJ), aber habe nur elektrotechnische Grundkenntnisse, da der Schwerpunkt bei uns auf der Automatisierung in der Industrie liegt, BUS-Systeme , SPS usw.
Also wie üblich in der heutigen Ausbildung ... Man fängt das Haus vom Dach
an zu bauen. Hochgestochenen Stoff ohne Grundlagen. Leider. Arme Azubis :eek:
Aber für den Stoffplan kannst du ja nix. Das haben Leute verbockt die da
auch noch viel Geld für (nicht verdienen sondern) kriegen. :eek:

Dieser Regler sollte, die Temp welche von nem 1wire Sensor kommt verarbeiten, und dann via PWM eine Spannung steuern für einen Mosfet der dann die Spannung für meine angeschlossenen Lüfter regelt.
Soweit alles klar. Nur: MOSFETs nimmt man ganz ganz selten linear geregelt.
Sonst hat man einen wunderbaren Tischgrill :D Also das muß nochmal
überdacht werden.

Bonze_schaltung.png

Hier der vorläufige Schaltplan.

Im moment geht es mir eher um die Funktion des PI-Reglers, da ich die Schaltung noch nicht aufgebaut habe und auch noch keine 1wire auswertung gemacht habe,..
Also erstmal die Reglerfunktion ... OK ... also damit hab ich mich noch nicht
beschäftigt ;)

Gruß
Dino
 
Hallo Bonze!

Ach so....
Nun kann ich mir auch ein Bild machen! ;)


Letztlich möchtest du also nur deine Lüfter in der Drehzahl verstellen, wenn die Temperatur steigt oder fällt.

Da du noch nicht programmiert hast müsstest du also nun erst mal versuchen einen 1-Wire-Sensor (DS1820) zum laufen zu bekommen.
Dann kommt das PWM-Signal dran, dass deine Lüfter regelt.
Wenn beides zufriedenstellend funktioniert kannst du beginnen, beide Funktionen in einem Programm zu verknüpfen.


Hast du denn einige Dinge zur Hand, um schon mal einen ersten Testaufbau zu realisieren?
Wenn dass so ist, können wir gern mit den ersten Dingen beginnen.

Such hier im Forum mal nach DS1820 (bzw. DS18S20 oder DS18B20) und schau dir die Threads dazu mal an.
Danach kannst du ja versuchen den Sensor zum Laufen zu bekommen.

Stell einfach nach und nach deine "Fortschritte" hier ein und wir schauen dann gemeinsam drüber. :)

Grüße,
Cassio
 
ne werd mir die tage mal das zeugs bestellen,
soll ich mir die mosfets oder den lm317 bestellen ?
als temp fühler wollte ich eigentlich den DS1822 nutzen, ich denke aber da gibts keine großen unterschiede.(auf 2° kommt es nicht an)
Hab bis jetzt noch gar nichts hier ausser die Lochrasterplatinen :D
 
Hi Bonze!

Na, dann besorg dir erst mal das "Zeugs".....

Was möchtest du denn mit dem LM317 machen? :hmmmm:
Das ist doch ein einstellbarer Spannungsregler.
Wolltest du damit deine Lüfterregelung realisieren?

Nimm lieber die MOSFETs und steuer die per PWM an!

Dann bis die Tage, wenn du alles zusammen hast. :)

Ach so.....
Nimmst du eigentlich die Demoversion von BASCOM, oder hast du dir schon eine Vollversion zugelegt?
An welchen Controller hast du denn gedacht? Es muss ja nicht unbedingt ein Mega sein. Der ein oder andere Tiny wäre dafür auch ausreichend.
Schau doch hier mal in die Datenbank ( Database ) und such dir einen passenden Controllertyp aus.

Gruß,
Cassio
 
Hallo,

An welchen Controller hast du denn gedacht? Es muss ja nicht unbedingt ein Mega sein. Der ein oder andere Tiny wäre dafür auch ausreichend.
Schau doch hier mal in die Datenbank ( Database ) und such dir einen passenden Controllertyp aus.
Also für Anfänger tauglich würde ich den Tinny2313 ansehen. Und zwar ...
* Er hat nen vernünftigen UART
* Es gibt ihn im 20pol DIP-Gehäuse
* Er ist vom Sockel her kleiner als nen Mega8 aber hat aber trotzdem genug IOs
* Er hat genug Speicher für etwas mehr
* Die Zusatzfunktionen sind auf den Pins nicht so "komprimiert" vorhanden

Ich nehme den recht gern. Kann ich also nur empfehlen. Oder etwas kleiner
der Tiny26. Der hat aber dann nur noch ne USI-Schnittstelle und keinen
vernünftigen UART mehr. Noch etwas kleineer ist der Tiny44 und noch kleiner
würde ich den Tiny85 empfehlen. Aber der hat nur noch 8Pins wovon für die
normale Arbeit nicht mehr viele zu gebrauchen sind. Also von den Tinys
würde ich den 44, den 26 und den 2313 als Anfängertauglich einstufen
(Prio auf 2313).

Ich hab hier alle 4 als DIP und als SMD rumfliegen ;)

Gruß
Dino
 
Hallo,

bei Mikrocontrollern ist eine numerische Integration eine schrittweise Addition von einzelnen Produkten aus Funktionswert mal Zeitintervall. Das ergibt die Fläche unter der Funktionskurve der Regelabweichung. Mit anderen Worten - das ist aus dem aktuellen Takt eine schmale, konstant breite Säule plus der "Summe von allen vorhergehenden Säulen".

Das heisst beim Integrieren darf man den konstanten Anteil (das +C am gewöhnlichen Integral) nicht vergessen zu addieren.

Das mit dem I-Speicher funktioniert also so:

Ist der I-Speicher positiv und wird die Regelabweichung schrittweise kleiner dann bleibt der I-Speicher trotzdem positiv, es kommt nur immer weniger hinzu. Erst wenn die Regelabweichung negativ wird, dann wird der I-Speicher in kleinen Schritten wieder geleert bis er (irgendwann) leer oder negativ wird.

Man sollte sich also vorm dem Ausschalten genau überlegen wann man welchen Wert des I-Speichers bei Neubooten übergibt. Das gleiche passiert auch wenn der "watchdog bellt". Eine Hydraulik nimmt es übel wenn die Stellgröße zu sehr springt. Durch Programmierfehler beim I-Anteil übergeben (wenn der Regelrechner sich aufhängt) sind schon tonnenschwere hydraulische Pressen vom Fundament gehüpft. ;)

Weiter muss man aufpassen dass man nicht schon ein I-Verhalten (auf/zu-Motorventil) beim Stellglied hat, denn dann hat man schon eine Integration ohne sie programmiert zu haben, allein durch das Verhalten des Stellgliedes.
 
achso, den mega8 hab ich schon bestellt, jedoch sonst noch nichts wirklich, würde den auch gerne verwenden, denn ich fange mit der lüftersteuerung an , vielleicht kommt nochwas dazu ,.

@pidhunter, du beziehst dich jetzt auf das einstellen der regelstrecke?
oder kannst du das für anfänger nochmal besser erklären ?

achso, ja ich nutze die demoversion von bascom
 
Hi,

vielleicht noch kleines display,
mal schauen,.
nen LCD ist immer ne gute Idee. Und wenn es nur nen 0815 LCD mit einer
Zeile und 16 Zeichen ist. Für das Debugging ist das immer gut. Es hilft dir
Fehler zu finden und interne Abläufe im Programm sichtbar zu machen.

Gruß
Dino
 
also programmieren wollte ich den mega8 ja mit uart, da kann man im terminalprog auch debugging werte ausgeben lassen, ist halt nich so komfortabel oder?

mir fällt gerade ein, hätte nochn wintek von pollin da.
 
hi,

wenn du ein display für das projekt suchst kann ich dir das LCD 162C LED von reichelt empfehlen. Lässt sich einfach unter bascom ansteuern. für die pwm würde ich eher einen buz72 nehmen als einen irl3803. die können eine höhere spannung verkraften. die 1n4007 würde ich nicht nehmem. die sind etwas zu langsam für freilaufdioden.

gruß
technicus
 
Hallo,

für die pwm würde ich eher einen buz72 nehmen als einen irl3803. die können eine höhere spannung verkraften. die 1n4007 würde ich nicht nehmem. die sind etwas zu langsam für freilaufdioden.
denk bei den MOSFETs an LogicLevel-FETs sonst bekommt man sie nicht voll
durchgesteuert und sie verbraten durch den höheren Innenwiderstand
unnötig Saft und werden zu warm. Das mit den Dioden würde ich auch sagen.
1N4007 sind eigentlich nicht mehr wirklich zeitgemäß. Gute Arbeitspferde für
allgemeine Aufgaben aber als Freilaufdioden würde ich irgendwas wie
FastRecovery-Dioden oder Schottkys oder so nehmen die schneller sind beim
Schalten und einen geringeren Spannungsabfsall haben.

Gruß
Dino
 
ja, werd dann alles soweit erstma bestellen,
vielleicht noch kleines display,
mal schauen,.

Hi Bonze!

Ein Dipslay ist immer gut! ;)

Ich würde dir dieses HIER empfehlen.

Ist günstig, sieht gut aus und wird problemlos von BASCOM unterstützt.

Wenn du etwas mehr Zeichen zur Ausgabe haben möchtest, dann ist dies HIER auch ganz nett.
Allerdings hat es keine Hintergrundbeleuchtung.

Nun hast du die Qual der Wahl. :D

Gruß,
Cassio
 
Hallo,


denk bei den MOSFETs an LogicLevel-FETs sonst bekommt man sie nicht voll
durchgesteuert und sie verbraten durch den höheren Innenwiderstand
unnötig Saft und werden zu warm. Das mit den Dioden würde ich auch sagen.
1N4007 sind eigentlich nicht mehr wirklich zeitgemäß. Gute Arbeitspferde für
allgemeine Aufgaben aber als Freilaufdioden würde ich irgendwas wie
FastRecovery-Dioden oder Schottkys oder so nehmen die schneller sind beim
Schalten und einen geringeren Spannungsabfsall haben.

Gruß
Dino

Hi Dino,

ich würde das ganze so oder so galvanisch trennen. Wenn die Induktivität abschaltet und kleinen Dioden in den IRL's und die Freilaufdioden krepieren schlägt es dir alles durch. Ist mir leider schon passiert. Von daher ist ein etwas dickerer Mosfet und eine zusätzliche Freilaufdiode praktischer und soviel Strom ziehen die Buz auch nicht. Aber das ist Ansichtssache.

Gruß
Technicus
 
also, als freilaufdiode sollte ich erhe eine 1n4448 nehmen?
naja de irl reicht denke ich aus für mich da ich max 15V regele, und er ein LL Mosfet ist .,
wie wärs mit der RGP 30M als Freilaufdiode?
oder welche schottkydioden wären besser geeignet finde da bei reichelt garkeine mit größeren Spannung als 200V?

werd erstma die 1n4007 nehmen, ist ja keine high-tec anwendung,
hab mir überlegt das ich noch nen piezo-summer anbauen werden der ab ner gewissen temp piepst.
Ihr könnten mir mal sagen ob ich den zweidg dafür richtig eingezeichnet hab, auch mit dem widerstand.
es datenblatt dazu http://www.reichelt.de/index.html?;...wQARkAAFlLeiw6de187217cd8475844a59f2f250f21a5


aktueller schaltplan
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)