So ich bin nun endlich wieder dazugekommen, an meinem regelungsprogramm weiterzuarbeiten.

Leider funktioniert es immer noch nicht. Konkret schaut es nun so aus:

Code:
Dim E As Single , Esum As Single , Ealt As Single

Cls

Start Adc


Dim Sollwert As Single
Dim Istwert As Single
Dim Stellwert As Single
Dim W As Word


Stellwert = 0
Sollwert = 3.00
Ealt = 0

Cyclic:
   Waitms 50
   Gosub Regulator
Goto Cyclic


Regulator:

   Pwm1a = Stellwert

   Const Kp = 0.0
   Const Ki = 0.0
   Const Kd = 1

   Dim Panteil As Single
   Dim Ianteil As Single
   Dim Danteil As Single

   W = Getadc(0)
   Istwert = W / 1023
   Istwert = Istwert * 50

   E = Sollwert - Istwert

   Esum = Esum + E

   Panteil = Kp * E
   Ianteil = 0.05 * Esum
   Ianteil = Ianteil * Ki

   Danteil = E - Ealt
   Danteil = Danteil * Kd
   Danteil = Danteil * 20                                   '1 / Ta  = 20, da Ta  = 0.05ms'

   Stellwert = Panteil + Danteil
   Stellwert = Stellwert + Ianteil

   Ealt = E


   Locate 1 , 1
   Lcd Stellwert
   Locate 2 , 1
   Lcd Fusing(istwert , "#.##")
Return
Ich hab mich dabei mit an dem Bascom Beispiel orientiert. Darum auch die 50ms Verzögerung am Anfang. Ich hab mir auch den anderen Beitrag im Forum zu dem Beispiel durchgelesen und weis, dass es nicht das beste ist. Mein Problem ist immer noch folgendes, dass der Stellwert teilweise negativ wird. Kp und Ki hab ich absichtlich weggelassen um ersteinmal Ki einzustellen. Nur wie bring ich jetzt den Stellwert in Verbindung mit dem PWM wert. Der Stellwert kann ja auch negativ werden. Ich wäre für vorschläge sehr dankbar. Achja: der Faktor 0.05 stellt die Abtastrate (50ms Verzögerung dar, und der Faktor 20 der Kehrwert)

Vielen Dank für eure Hilfe.

Martin