raspbian bullseye – PiGPIO Library yields unstable timing in waveform

I want to drive an IR LED Emitter with certain pulse waveforms to emulate an IR remote control using the PiGPIO Library on a Raspberry Pi Zero W (1.1).
Based on the examples of the PiGPIO library the generation of a dedicated waveform should be rather simple and I implemented the following test program for the waveform generation:

import sys
import time
import pigpio


pi = pigpio.pi()

if not pi.connected:

pi.set_mode(IRLEDGPIO, pigpio.OUTPUT)
pi.set_pull_up_down(IRLEDGPIO, pigpio.PUD_OFF)

#                ON            OFF           DELAY

on=[pigpio.pulse(1<<IRLEDGPIO, 0,            21300),
    pigpio.pulse(0           , 1<<IRLEDGPIO, 840),
    pigpio.pulse(1<<IRLEDGPIO, 0,            1700),
    pigpio.pulse(0           , 1<<IRLEDGPIO, 84350)]



onid = pi.wave_create()

pi.wave_send_using_mode(onid, pigpio.WAVE_MODE_REPEAT_SYNC)



pi.wave_clear() # clear all waveforms


The IR LED is connected to GPIO13 (BCM) through a bipolar NPN transistor supplied with 5V to not get any switching noise on the 3.3V rails. I checked the supply voltages and they look good that there is no noise disturbing the Pi in operation.

I would expect a train of on-pulses with 21.3ms and 1.7ms duration, with off-states of 0.84ms and 84.35ms respectively.

However the timings of the two on-pulses set in above script (measured with an IR detector connected to an digital oscilloscope) are quite varying between 4 and 10msec, whereas the off state with 840µs seems to be captured about correctly.

Sometimes the pigpio-daemon seems to crash, not switching the signal off or the channel stays on full on. All in all a rather unstable behaviour.

I already changed the clock frequency with




according to this post

Am I overlooking something in above setup? Is the setup of the pulse definition and the wave creation correct?

Read more here: Source link