PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschwindigkeitsberechnung



TomEdl
08.05.2009, 22:41
Hi Leute!

Ich hab da ein kleines Problem mit der Erfassung und Berechnung der Geschwindigkeit eines Rades.



'VARIABLEN
Dim Time_umdrehung_n As Integer
Dim Time_umdrehung_ms As Integer
Dim Time_umdrehung_s As Single
Dim Radumfang As Single
Dim Vms As Single
Dim Meter As Single
Dim Vkmh As Single


'KONSTANTEN
Radumfang = 0.3


'KONFIGURATION INT0
Config Int0 = Falling
On Int0 Int0_isr
Enable Int0


'KONFIGURATION ADC
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc


'KONFIGURATION TIMER0
Config Timer0 = Timer , Prescale = 8
Timer0 = 131
On Timer0 Timer0_isr
Enable Timer0
Stop Timer0


'KONFIGURATION LCD
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portb.2 , Rs = Portc.5 , E = Portc.4
Config Lcd = 16 * 4
Config Lcdbus = 4
Waitms 100
Initlcd
Waitms 100


'INTERRUPTS GLOBAL FREIGEBEN
Enable Interrupts


Do

Time_umdrehung_s = Time_umdrehung_ms * 1000
Vms = Radumfang / Time_umdrehung_s
Vkmh = Vms * 3.6

Locate 1 , 1
Lcd Vms
Locate 2 , 1
Lcd Meter
Locate 4 , 1
Lcd Vkmh


Loop


Int0_isr:

Stop Timer0
Time_umdrehung_ms = Time_umdrehung_n
Time_umdrehung_n = 0
Start Timer0
Meter = Meter + Radumfang

Return


Timer0_isr:

Timer0 = 131
Incr Time_umdrehung_n

Return


End


Der Interrupt "INT0" wird aufgerufen, denn der Zähler, der bei jeder Radumdrehung den Radumfang addiert funktioniert und zählt entsprechend hoch. Doch die Geschwindigkeitsanzeige bleibt auf null stehen.

Entweder hab ich da einen gravierenden Denkfehler drinnen, oder ich bin schon ganz paranoid geworden und seh den offensichtlichen Fehler nicht.

Gruß
Thomas

vohopri
09.05.2009, 07:47
Hallo Tom,


Time_umdrehung_s = Time_umdrehung_ms * 1000

Die Umdrehungszeit-in-Sekunden = Umdrehungszeit-in-Millisekunden / 1000 .

hoffe, das hilft und
grüsse,
Hannes

TomEdl
12.05.2009, 20:24
Hi!


Hallo Tom,


Time_umdrehung_s = Time_umdrehung_ms * 1000

Die Umdrehungszeit-in-Sekunden = Umdrehungszeit-in-Millisekunden / 1000 .

hoffe, das hilft und
grüsse,
Hannes
Danke für deine Antwort. Ich werds mal probieren und gebe dann Rückmeldung, obs geklappt hat.

Gruß
Thomas
:)