Seite 1 von 1

RasPi Pico: Frequenz GPIO IN > 4kHz?

Verfasst: Dienstag 29. März 2022, 21:16
von D-Platoon
Hallo zusammen,

ich versuche mich gerade an einem Drehzahlsensor mittels einer Gabellichtschranke und einer Lochscheibe.
Um zu schauen, wie viele Löcher die Lochscheibe haben darf, hab ich die LED der Gabellichtschranke an den Funktionsgenerator und den Fototransistor an den Pico angeschlossen.
Wenn ich nun die Frequenz hoch drehe, merke ich ab ca. 4,2kHz, dass er anfängt, sich zu verschlucken (das passiert übrigens auch, wenn ich den FUG direkt an den Pico anschließe - am verwaschenen Transistorsignal liegts also nicht).
Jetzt meine Frage an euch: ist es normal, dass der Pico nicht mehr als rund 4kHz schafft, oder hab ich einfach einen saumäßig langsamen Code?

Hier mal noch meinen Code (ist noch nicht der Weisheit letzter Schluss, aber zum Testen reichts erstmal):

Code: Alles auswählen

from machine import Pin
import utime
from functions import int2bool

iPulse = Pin(2, Pin.IN)
LED = Pin(25, Pin.OUT)

bTimeStarted = False
bPulse = False
bPulseLastCycle = False
nTimeStarted = 0
nTimeLastPulse = 0
nPulses = 0
nResult = 0
cnZykluszeit = 1000000
cnMinute = 60000000
nTastgrad = 0

while True:
    bPulse = int2bool(iPulse.value())
    
    if bPulse and not bTimeStarted:
        nPulses = 0
        bTimeStarted = True
        nTimeStarted = utime.ticks_us()
    
    if bPulse and not bPulseLastCycle:
        nTimeLastPulse = utime.ticks_us()
        nPulses = nPulses + 1
    
    bPulseLastCycle = bPulse
    
    if bTimeStarted and (utime.ticks_us() > (nTimeStarted + cnZykluszeit)):
        nTastgrad = (nTimeLastPulse - nTimeStarted) / cnZykluszeit
        nResult = ((cnMinute * nTastgrad) / 50) / ((nTimeLastPulse - nTimeStarted) / nPulses)
        bTimeStarted = False
        print("#######")
        print(nTastgrad, "%")
        print(nPulses, "Hz")
        print(nResult, "U/min")
    
Viele Grüße,
D-Platoon

Re: RasPi Pico: Frequenz GPIO IN > 4kHz?

Verfasst: Dienstag 29. März 2022, 21:29
von __deets__
Theoretisch kann der Pico das auch so ausprogrammiert, aber da wird dir MicroPython im Weg sein. Vor allem, weil du auch so viel machst in jedem Zyklus. IRQs wuerden die Last da etwas reduzieren. Wuerdest du C nehmen, dann ginge es.

Aber man macht das eh so nicht. Man verschwendet keinen Kern auf das simple zaehlen von Pulsen. Dazu hat der Pico seine PIO-Einheiten, mit denen sowas quasi kostenlos nebenbei. Ein Einfuehrung findet sich zB hier: https://www.digikey.at/en/maker/project ... 97642e0831

Re: RasPi Pico: Frequenz GPIO IN > 4kHz?

Verfasst: Mittwoch 30. März 2022, 09:48
von D-Platoon
Hallo __deets__!
Vielen Dank für die schnelle Antwort!
In dem Fall werde ich mich jetzt mal in die PIO-Thematik einlesen und schauen, wie ich damit zurande komme. Vermutlich muss ich mich dann nochmal melden...