Raspberry Pi Pico: Frequenz messen
Mit dem Raspberry Pi Pico und MicroPython lässt sich ein Frequenzmesser programmieren. Das Programm misst nacheinander die HIGH- und LOW-Zeit des Signals. Aus der Summe beider Zeiten wird die Periodendauer berechnet, woraus sich die Frequenz in Hertz ergibt. Das Messergebnis wird fortlaufend in der Kommandozeile angezeigt.
Zum Testen des Frequenzmessers wird ein PWM-Signal mit 10 Hz erzeugt, das man nach Bedarf anpassen kann.
So lässt sich der Raspberry Pi Pico einfach für Frequenzmessungen einsetzen.
Aufbau und Bauteile


Programmcode
Das Programm erzeugt auf einem Mikrocontroller (z. B. Raspberry Pi Pico) ein PWM-Signal und misst dessen Frequenz mithilfe eines Eingangs-Pins.
- PWM-Erzeugung: Auf GPIO 1 wird ein PWM-Signal mit 50 % Duty Cycle und 10 Hz ausgegeben. Die Frequenz ist beispielhaft auf 10 (Hz) voreingestellt.
- Signaleingang: GPIO 0 wird als Eingang konfiguriert, um ein Signal auszuwerten.
- Messprinzip: Die Funktion machine.time_pulse_us() misst nacheinander die HIGH-Zeit (T_high) und die LOW-Zeit (T_low). Aus beiden wird die Periodendauer berechnet, woraus sich die Frequenz ergibt.
- Ausgabe: Die berechnete Frequenz wird fortlaufend im Terminal angezeigt.
- Beenden: Mit dem STOP-Button oder mit Strg + C wird das Programm gestoppt, und das PWM-Signal sauber deaktiviert.
Die typischen Messergebnisse sollten bei 10 (Hz) zwischen 9.99 und 10.01 Hz liegen.
# Bibliotheken laden
import machine
import time
# Konfiguration: Pins und GPIOs
PIN_PWM = 1 # GPIO 1 / Pin 2
PIN_IN = 0 # GPIO 0 / Pin 1
# PWM-Signal initialisieren (GPIO 1 / Pin 2)
pwm = machine.PWM(machine.Pin(PIN_PWM))
pwm.duty_u16(65535//2) # 50 % Duty Cycle
pwm.freq(10) # Frequenz in Hertz (Hz)
# Signal-Eingang initialisieren (GPIO 0 / Pin 1)
pin_in = machine.Pin(PIN_IN, machine.Pin.IN)
# Hauptprogramm
print('Frequenzmessung wird gestartet')
print('STOP oder STRG + C zum Beenden')
print()
try:
while True:
time.sleep(1)
# Messung HIGH- und LOW-Zeit (jeweils in µs)
T_high = machine.time_pulse_us(pin_in, 1, 2_000_000) # Timeout = 2 s
T_low = machine.time_pulse_us(pin_in, 0, 2_000_000)
# Wechselsignal vorhanden?
if T_high < 0 or T_low < 0:
print("Timeout", end=" \r")
else:
T_periode = T_high + T_low # gesamte Periodendauer
f = 1_000_000 / T_periode # Hz, da 1 s = 1e6 µs
print(f"{f:.2f} Hz", end=" \r") # Datenausgabe
except KeyboardInterrupt:
pass
except:
pass
# PWM-Signal abschalten
pwm.deinit()
print()
print('Ende')
Erweiterung
Da der Programmcode die High- und Low-Zeit separat erfasst, könnte man noch das Puls-Pausen-Verhältnis berechnen und ausgeben.
Weitere verwandte Themen:
- Messen mit dem Raspberry Pi Pico
- Raspberry Pi Pico: GPIO als ADC (Experimente mit ADC)
- Raspberry Pi Pico: Spannung messen bis 3,3 Volt
- Raspberry Pi Pico als Taktgenerator
- Raspberry Pi Pico als einstellbarer Taktgenerator
Frag Elektronik-Kompendium.de
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.
- LED: Einschalten, ausschalten, blinken und Helligkeit steuern
- Taster: Entprellen und Zustände anzeigen
- LED mit Taster einschalten und ausschalten
- Ampel- und Lauflicht-Steuerung
- Elektronischer Würfel
- Eigene Steuerungen programmieren
Online-Workshop: Programmieren mit dem Raspberry Pi Pico
Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.
Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.






