Michael schrieb:
der die Abweichung genau ausregeln kann
Ein p-Regler würde nicht aufaddieren aber in dem Fall auch erst zu spät nachziehen.
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.
Hinweis kann nach Kenntnisnahme deaktiviert werden!
Michael schrieb:
der die Abweichung genau ausregeln kann
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tschoeatsch ()
YdnAm schrieb:
und das Projekt ist vom Lehrer abgenommen worden
Mitch64 schrieb:
Der Lehrer kiegt ne 5.
Mitch64 schrieb:
Ob die Regelung wirklich funktioniert mag ich an der Stelle doch sehr bezweifeln
tschoeatsch schrieb:
wäre doch der A-Kanal nicht der top-Wert und man müsste mit dem B-Kanal die Pulsbreite regeln?.
YdnAm schrieb:
dies ist das programm das funktioniert, und das Projekt ist vom Lehrer abgenommen worden.Alles anzeigenQuellcode
- $regfile="m8def.dat"
- $crystal=16000000
- Config Lcd=20x4
- Config Lcdpin=Pin,Db4=PORTB.2,Db5=PortB.0,Db6=PORTD.7,Db7=PORTD.6,E=PORTD.4,Rs=PORTC.0
- Cursor off
- cls
- Const Fosc=16000000
- Const Fpwm=16000
- Const Prescale=1
- Config Adc=Single,Prescaler=Auto,Reference=Avcc
- Start Adc
- Dim Usoll_ as Word
- Dim Uist as Single
- Dim Uist_ as Word
- Dim Usoll as Single
- Dim Schritte as Word
- Dim Pwmwert as Word
- Dim Hilfsin as Single
- Dim C as Single 'Schrittweite single
- Dim Pwmfaktor as Single 'Pwmfaktor ;Regeldifferenz*Faktor
- Dim Pwm as Word
- Dim Regeldifferenz as Single
- Dim Adcwert as Word
- Dim Tastgrad as Single
- Dim Uin as Single
- Dim Uin_ as Word
- Pwmwert=200
- Pwm1a=Pwmwert
- Tccr1a=&B10000010
- Tccr1b=&B00011001
- Hilfsin=Fosc/Fpwm
- Hilfsin=Hilfsin/Prescale
- Hilfsin=Round(hilfsin)
- Schritte=Hilfsin '=1000
- Capture1=Schritte
- Config PortB.1=Output
- Config Pind.5=Input
- Regeldifferenz=0
- Do 'Beginn der Schleife
- Uist_=Getadc(5)
- Usoll_=Getadc(3) 'Spannung vom Poti P1 0V=Adcwert=O,5V=Adcwert=1023
- Uin_=Getadc(1)
- 'digit=5/1023 Volt=0,00489V
- Usoll=Usoll_ 'von word auf single bringen
- Usoll=Usoll*0.038798185941 'die am pin anliegende Spannung ausrechnen
- Uist=Uist_
- Uist=Uist*0.038798185941
- Uin=Uin_
- Uin=Uin*0.0157728706624
- Regeldifferenz= Usoll-Uist
- Pwmfaktor=Regeldifferenz*5
- If Regeldifferenz <=0 then 'Spannung geht runter
- C=C+Pwmfaktor
- End if
- If Regeldifferenz >=0 then
- C=C+Pwmfaktor
- End if
- C=round(C)
- If C>1001 then
- C=1000
- End if
- If C<0 then
- C=1
- End if
- Adcwert=Getadc(5)
- Pwm=C
- Pwm1a=Pwm
- Tastgrad=Pwm/10
- Locate 1,1:Lcd "Uin:"
- Locate 1,8:Lcd fusing (Uin,"#.#");"V";" "
- Locate 2,1:Lcd "Usoll: "
- Locate 2,8:Lcd fusing (Usoll,"#.#");"V";" " 'Anzeige der Spannung auf dem Display
- Locate 3,1:Lcd "Uist: "
- Locate 3,8:Lcd fusing (Uist,"#.#");"V";" "
- Locate 4,1:Lcd "Pwm: "
- Locate 4,8:Lcd fusing (Tastgrad,"#.#");" %";" " 'Schreibt Leerzeichen über die überflüssigen Zeichen.
- 'Locate 4,1:Lcd "ADC: ";Adcwert
- Waitms 100
- Loop 'Schleife, die Spannung wird neu berechnet.
- End