PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grenzwertauswertung



Mike 22
14.07.2005, 06:54
Hallo @ all,

muss eine Grenzwertauswertung wie z.B. Spannungsüberwachung mit anschliessender Ausgabe durch LED Blinken realisieren.Spannung wird über RA0 eingelesen.


z.B. Spannungsbereich

>14V 8 x blinken
13,5 - 14V 7 x blinken
13 -13,5V 6 x blinken

usw.

Wie würdet Ihr sowas programmieren???? Bitte gebt mir mal einen Tip.

Gruß

Mike 22

PicNick
14.07.2005, 08:05
Pseudo code, wenn das hilft
if (V < 13) goto tschüss
6xBlinken
if (V >= 13,5) 1xBlinken
if (V > 14) 1xBlinken
tschüss:

14.07.2005, 08:43
Hallo Robert,
das ganze wird in Assembler programmiert ist aber letzendlich egal. Wie realisierst Du die Routine wenn z.B. die Spannung 6 V ist?? laut deiner Pseudo Routine ist Sie in der ersten Zeile erfüllt und geht zu Tschüss.
Wäre aber nicht korrekt, da es im jeweilige Fenster sein muß also z.B. 6 - 7 V 4 Blinks............oder habe ich das falsch verstanden???????

Gruß

Mike 22

PicNick
14.07.2005, 09:10
Ah so, ich hab gedacht unter 13 V is nix. State-of-the-art wäre natürlich, aus einer Tabelle die Blinkanzahl zu holen und dann zu blinken.

Wenn blinken und Spannung linear abhängig sind, also z.B. je 0.5 V einmal blinken
Ich würd' aber eine simple Schleife machen, wo ich vom Spannungswert immer wieder 0.5 V abziehe. Bei negativ (Carry = 0 ! =PIC-Schweinerei) hör ich dann auf.
(0.5 müßt du natürlich auf eine ADC-Zahl umwandeln (511 / max volt), das kann aber schon der Compiler machen

Isses nicht linear, eigentlich die gleiche Schleife, aber nicht gleich blinken, sondern mitzählen. Mit diesem Wert dann in die berühmte PIC-RETLW-Tabelle


movlw nn ; in w steht die anzahl 0.5 V Werte
call TAB
w-mal blinken
....

TAB:
addwf PCL, f ; add to PC
retlw blinkzahl_00_0
retlw blinkzahl_00_5
retlw blinkzahl_01_0
retlw blinkzahl_01_5
...........
retlw blinkzahl_14_0


Hilft das ?

EDIT: Beim PIC sind Schleifen zwar elegant, aber oft gar nicht effektiv.
Es kann sein, daß du mit Spaghetti-Code sogar besser dran bist