Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Assembler Modul DA-Wandler gesucht für Unterdruckmessung Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Andreas - 10.07.2013 15:02)
 Als Antwort auf Re: Assembler Modul DA-Wandler gesucht für Unterdruckmessung von Jens - 20.06.2013 16:00
Andreas nutzt:  Open-Micro, Open-Mini
> Hallo Andreas!
>
> > Und jetzt mal wieder das ABER. Der OM wird mit 8MHz getaktet. Würde bedeuten, dass er ca. 125 ns pro Takt braucht. Da jeder Schritt im Programm mindestens einen Takt bedeutet, und es vier Schritte innerhalb der for next Schleife sind, wären das theoretisch 500 ns. Angenommen die Motordrehzahl wäre 1.200 U/min, wären das 50 ms für eine Umdrehung. Ergo rund 100000 Messungen pro Umdrehung.
>
> Jo, das wäre ja richtig super, wenn das so funktionieren würde. Die rund 100000 Messungen pro Umdrehung sind aber reine Utopie. Zu den genauen Zeiten müsste Dietmar dann aber etwas sagen können, ich habe keine Ahnung wie schnell der Tocken-Code abgearbeitet wird...
>
> > Wie groß kann ein for next Schleife realisiert werden? Gibt es da Grenzwerte?
>
> Die For Schleife ist auch Byte orientiert, geht also auch nur bis 255, dann ist Schluss. Wenn Du hier größere Werte brauchst, dann musst Du mehrere For Schleifen ineinander verschachteln (wird aber mit Sicherheit nicht notwendig sein).
>
> LG Jens

Hallo Jens,
hab grad ´ne schöpferische Pause eingelegt. ;-)
100000 Messungen ist doch nur Theorie. Auch wenn nur 10000 Messungen wären, würde eine ziemlich hohe Genauigkeit entstehen. Im Test verläuft es aber noch nicht so gut wie ich dachte. Ich habe daher noch ein zweite Prototypenplatine gebaut, die mittels Bargraphen die Absolutwerte der beiden Zylinder anzeigt. Jetzt weiß ich, dass das Programm einen Fehler hat.

Die zwei verschachtelten Schleifen habe ich also erst mal aufgehoben und lasse derzeit nur eine Schleife durchlaufen. Damit geht die Anzeige erst mal schneller, wenn auch rucklig in der Anzeige, weil der Maximalwert nicht immer erreicht wird. Ich bin mir nicht sicher, aber ich denke, dass der Fehler in der Subtraktion liegen könnte.

#start
    for h = 0 to 255                   ' Festlegung der Messdurchläufe zur Maxiamlwertermittlung
'   for i = 0 to 255                   ' Festlegung der Messdurchläufe zur Maxiamlwertermittlung
    if Zyl1 > z1 then z1 = Zyl1        ' Maximalwert Zylinder 1 ermitteln und in Variable ablegen
    if Zyl2 > z2 then z2 = Zyl2        ' Maximalwert Zylinder 2 ermitteln und in Variable ablegen
'   next                               ' nächste Messung (Sprung zu for 2 )
'   i=0                                ' Rücksetzen Zähler 1
   next                                ' nächste Messung (Sprung zu for 1)
   if (z1) - (z2) <= 9 then tmp=125    ' Vergleich Zylinder 1 mit 2 und bei annähernder Gleichheit setzen der Variable des PWM auf Mittenspannung
   if (z2) - (z1) <= 9 then tmp=125    ' Vergleich Zylinder 1 mit 2 und bei annähernder Gleichheit setzen der Variable des PWM auf Mittenspannung
   if (z1) - (z2) > 9 then gosub positiv  ' Vergleich Zylinder 1 mit 2 und bei Zylinder1 größer Zylinder2 Sprung in Unterprogramm positiv
   if (z2) - (z1) > 9 then gosub negativ  ' Vergleich Zylinder 1 mit 2 und bei Zylinder2 größer Zylinder1 Sprung in Unterprogramm negativ
   pwm1 tmp                               ' zuweisen der Variable zum Pulsweitenmodulator
   h = 0                                  ' Rücksetzen Zähler 2
   z1 = 0                                 ' Rücksetzen Variable Unterdruckwert Zylinder1
   z2 = 0                                 ' Rücksetzen Variable Unterdruckwert Zylinder2
   Pause 20
   goto start                             ' Rücksprung zum Anfang

Ich habe jetzt testhalber die Variablen z in Klammern gesetzt. Ich bin mir nicht sicher, ob das Minus nicht als negatives Vorzeichen interpretiert wird.
Der Fehler äußert sich dahingehend, dass bei Erreichen eines Wertes für eine Subroutine der z-Wert offenbar "wegläuft". Anzeige geht nach Maximum und erlischt dann.
In den Unterprogrammen wird lediglich noch ein Vergleich von z mit vordefinierten Werten vorgenommen und dann ein dazu passender Wert an die Variable tmp übergeben. Dann erfolgt der Rücksprung. Also nichts dramatisches.
Da laut Programm nach Abschluss der Schleife alle Variablen auf Null gesetzt werden (rücksetzen) sollte das weglaufen eigentlich nicht passieren.

Ich muss das noch mal direkt messen bei Betrieb. Derzeit habe ich nur wenig Zeit. Wird also erst im August weiter gehen.

Fällt Dir noch was ein ?

LG Andreas

 Antwort schreiben

Bisherige Antworten:

Re: Assembler Modul DA-Wandler gesucht für Unterdruckmessung (von Andreas - 11.07.2013 12:48)