首页 > 解决方案 > 通过设置PCA9685的占空比调光时的脉冲

问题描述

我有一个交流电流调光器 (MPDMv4.1),它采用 PWM 信号来调暗卤素灯泡。PWM 信号来自 PCA9685 伺服 HAT。

这与以下代码完美配合:

from board import SCL, SDA
import busio
from adafruit_pca9685 import PCA9685

ic2_bus = busio.I2C(SCL, SDA)
pca = PCA9685(i2c_bus)
pca.frequency = 1000

while True:
    value = input(„Enter a value from 0 to 100“)
    duty_cycle = int(round((100 - int(val))/100 * 57000)) 
    pca.channels[15].duty_cycle = duty_cycle

如果我将 PCA9685 对象初始化放在无限循环中,就会出现我的问题,如下所示:

from board import SCL, SDA
import busio
from adafruit_pca9685 import PCA9685

ic2_bus = busio.I2C(SCL, SDA)

while True:
    pca = PCA9685(i2c_bus)
    pca.frequency = 1000
    value = input(„Enter a value from 0 to 100“)
    duty_cycle = int(round((100 - int(val))/100 * 57000)) 
    pca.channels[15].duty_cycle = duty_cycle

在这个例子中,将初始化放在循环中当然没有意义。但我的程序循环通过不同的温度传感器,并根据导出的温度调暗灯光。调光是在一个单独的过程中完成的,因为应该有实际值逐渐变化到目标值以使变化更平滑。我迫不及待地等待主进程结束,所以我启动了一个子进程来处理这个问题。但是每次启动这个过程,都必须重新生成PCA9685对象,我得到这个亮光脉冲,这对我的应用程序来说是不可接受的。当我实际上并没有通过生成对象来更改占空比时,也会发生此脉冲。它仅在光线远离最大功率时可见。

我试图腌制 PCA9685 对象并将其作为参数提供给调光过程,但_io.FileIO无法腌制对象。

我还尝试了几个不同的库,它总是一样的。因此我的问题是:有人知道这是怎么造成的吗?建立连接时这是不可避免的吗?它可能被规避吗?

最好的,非常感谢,Gero

标签: pythonraspberry-pipickleledservo

解决方案


推荐阅读