Hallo,
ich will die Drehzahl einer Bohrmaschiene messen. Dazu hab ich eine Gabellichtschranke aufgebaut, die einmal pro Umdrehung auslöst. Jetzt weis ich nur nicht genau wie ich daraus die Drehzahl messe. Ich wollte irgendwie die Zeit zwischen 2 Impulsen messen nur wie ?
Vielen Dank shon mal
LP
Alternativ kannst du auch Zählen, wie oft in einer bestimmten Zeit ausgelöst wird.
Such mal in der Hilfe nach "pulsein"...
Gruß, Trabukh
"Der Mensch wächst am Widerstand" (Werner Kieser)
Bei einem Implus müßte man einen Zähler auf null setzen und dann über einen Interrupt beim nächsten puls den Zähler stand auslesen und schon hat man die zeit für eine Umdrehung. Ist gerad bei kleiner Drehzahlen bis ca 4000U/min die genauerer Möglichkeit. Ansonsten kann man auch noch die Impulse während eines Zeitfensters zählen. Wenn dies ausreichend groß ist, dann kommen da auch sehr genau Werte raus.
Gruß Johann!
Also ich hab bei Bascom 2 Code gefunden, müsstest du dir allerdings selber erklären. Ich denke Trabukh meinte pulsin1.bas:
bzw. Pulsein2.bas:Code:Declare Function Lopulse() As Byte Dim Value As Byte Const Inputpin = $10 , 0 ' Inputpin Alias Pind.0 Config Portb = Output Portb = &HFF Config Timer0 = Timer , Prescale = 1 On Timer0 Overflow_isr Nosave Enable Timer0 Enable Interrupts Do Value = Lopulse() Portb = Value Loop End Function Lopulse() As Byte $asm Hilo: Sbic Inputpin ' wait for Hi-Lo on inputpin Rjmp Hilo $end Asm Tcnt0 = 0 ' reset Timer0 Start Timer0 $asm Lohi: Sbis Inputpin ' wait for Hi-Lo on inputpin Rjmp Lohi $end Asm Stop Timer0 ' stop Timer0 after 26 cycles minimum Lopulse = Tcnt0 End Sub ' overflow isr stops timer0 and set tcnt0 to zero Overflow_isr: !push R24 Stop Timer0 Tcnt0 = 0 !pop R24 Return
MFG MoritzCode:Declare Function Lopulse() As Word Dim Value As Word Dim Time As Word Inputpin Alias Pind.0 Config Portb = Output Portb = &HFF Do Value = Lopulse() Portb = Low(value) Loop End Function Lopulse() As Word ' Local Time As Word While Inputpin <> 0 : Wend Time = 0 ' reset Timer0 While Inputpin = 0 Incr Time Wend Lopulse = Time End Sub
Eigentlich dachte ich mehr an sowas:
Code:Dim w As Byte pulsein w , PIND , 1 , 0 print w end
"Der Mensch wächst am Widerstand" (Werner Kieser)
Gut, wenn das funktioniert sprciht natürlich nichts dagegen. Die oberen Codes sind halt aus BAscom-AVR. Muss auch zugeben, das ich mich damit noch nicht beschäftigt habe, sondern es nur beim durchblättern gefunden habe.
Kannst du dein Code noch Kurz erläutern?
Warum z.B. nimmst du PinD und nicht D1 oder so?
Was meinen , 1 , 0 dahinter?
MFG Moritz
Hallo,
erstmal vielen Dank für alle Antworten. Die Möglichkeit die Tragukh gepostet hat ist natürlich die bequemste. Allerdings hab ich das mal ausgetestet und konnte nicht erkennen was der Befehl pulsein in die Variable w schreibt ?
der Post über diesem stammt auch von mir.
Lesezeichen