-         

Ergebnis 1 bis 6 von 6

Thema: Temperaturregelung (PWM)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.02.2006
    Ort
    Hattingen
    Beiträge
    17

    Temperaturregelung (PWM)

    Anzeige

    Hallo zusammen!!

    Habe folgendes Problem:

    Möchte eine Temperaturregelung implementieren, bei der der angeschlossene Lüfter über PWM gesteuert wird. "Manuell" den Lüfter über PWM zu steuern funktioniert auch einwandfrei (habe schon "ausgelotet", welche Frequenz und welche minimal Pulsbreite möglich ist,etc. also alles schon OK), auch habe ich eine Temperaturmessung schon "integriert", zudem habe ich auch Grundkenntnisse der Regelungstechnik.

    Habe mich jetzt mal an den Artikel hier auf Robotornetz gehalten, und erstmal ein kleines Programm geschrieben zur "Simulation":

    Hier mal das Programm soweit:

    $regfile = "m8def.dat"
    $crystal = 3686400

    Config Pinb.1 = Output
    Config Pinb.2 = Output
    Dim Esum As Single
    Dim E As Single
    Dim Kp As Single
    Dim Ki As Single
    Dim Ta As Single
    Dim X As Word
    Dim Y As Single
    Dim Z As Single
    Dim W As Single

    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    Do

    W = -25 'Sollwert = -25°
    Kp = 18 'Aus Beitrag übernommen
    Ki = 60 'Aus Beitrag übernommen
    Ta = 0.01 ' Aus Beitrag übernommen
    X = Getadc(0) 'Istwert Einlesen
    E = W - X 'Vergleich (Regelabweichung)
    Esum = Esum + E 'Integration I-Anteil
    If Esum < -400 Then
    Esum = -400
    End If 'Begrenzung I -anteil
    If Esum > 400 Then
    Esum = 400
    End If
    Y = Kp * E
    Z = 0.6 * Esum
    Y = Y + Z
    'Reglergleichung
    If Y < 0 Then
    Y = 0 'Begrenzung Stellgröße
    End If
    If Y > 255 Then
    Y = 255
    End If

    Pwm1a = Y 'Einfach mal so "fiktiv" gesetzt

    Cls
    Upperline
    Lcd "Y: " ; Y ; "X: " ; X 'Displayausgabe der Werte zur Kontrolle
    Lowerline
    Lcd "E: " ; E

    Loop



    So, wenn ich jetzt mal am ADC0 "drehe", bleibt Y immer auf Null!!

    Woran liegt das?!?!

    Wie kann ich sonst noch die Regelung einbauen?!?!

    Ich denke ein PI-Regler sollte reichen, jedoch ist mir nicht ganz klar wie ich ihn noch aufbauen kann mit einem Mikrocontroller..

    Danke schonmal für eure Hilfe!

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    14.02.2006
    Ort
    Hattingen
    Beiträge
    17
    Ich glaube ich hab meinen Fehler gerade selber gefunden...der Sollwert ist ja kleiner als das was der ADC überhaupt liefern kann, ich darf da ja auch nicht irgendeinen "Temperaturwert" als Sollwert nehmen, sondern den Wert am ADC auf den ich geregelt haben möchte, richtig?!?!

    Also wenn mein Temperatursensor mit bei -25°C z.B. eine Spannung von 2.5Volt liefer, ist der ADC-Wert ja 512...

    Richtig?!?!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.01.2006
    Ort
    Hamburg
    Alter
    34
    Beiträge
    40
    um deine letzte frage zu beantworten richtig!

    und so
    Config Adc = Single , Prescaler = Auto , Reference = Avcc

    ist dann bei 5 Volt = 512......

    aber die haupt sache ist ja es geht! dann werde ich mich in dein prog auch nicht mehr reind enken!
    Wer Rechtschreibfehler findet, darf sie behalten.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    14.02.2006
    Ort
    Hattingen
    Beiträge
    17
    Ja, genau, war ja auch nur als Beispiel die "512", also halt der "Rohwert" des ADC, weil ich im Programm bislang immer das schon direkt in eine Temperatur umgerechnet hatte...muss man dann aufpassen...

    Was mich nur wundert: ich hab Referenz-Spannung = intern gesetzt, und habe bei 0 Volt am ADC auch eine "Null", bei +5V (also das was Versorgungsspannun gist) habe ich dann 1023, also bei +2.5Volt dann ~512, richtig!?!?!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    09.01.2006
    Ort
    Hamburg
    Alter
    34
    Beiträge
    40
    ich verste das gerade nicht!

    also

    Reference = Avcc
    1023 = 5V
    512 = 2,5V

    Reference = intern
    1023 = 2,5V
    512 = 1,25V

    ist es das was du meinst?
    Wer Rechtschreibfehler findet, darf sie behalten.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    14.02.2006
    Ort
    Hattingen
    Beiträge
    17
    Mmmmh...ich habe doch Reference = intern, und habe bei +5V auch die 1023, und bei 2.5V die 512, und bei 0 V die 0!

    Habe ich ja selber gemessen und getestet!?!

    Also dann stimmt da wohl was nicht, oder?!?!

    Habe zwar an Avcc am mega8 auch die +5V dran, aber inwiefern das jetzt das ganze beeinflusst weiß ich nicht... :-/

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •