Pi Pico PWM功能和toggle()引脚功能

问题描述 投票:0回答:1

我正在尝试使用 Micropython 为 pi pico 编写一个程序,将 pwm 信号发送到 MOSFET 模块,以打开和关闭它,从而通过直流电磁体发送脉冲电流。 MOSFET 以 0.1、7、14、21、28、35 和 42 Hz 的频率打开和关闭直流电磁体的电源。我还计划让它在其他更高的频率上工作。在 12 伏直流电压下,要切换的负载电流约为 4 至 4.5 安培直流。 MOSFET 可以在 Pi Pico 引脚输出 3.3 伏电压时开启。

我的疑问是,既然 Pi Pico 可以产生 PWM 输出,我是否应该在程序中使用该函数来使用 PWM 控制 MOSFET,或者我可以使用切换()引脚命令来打开和关闭引脚并使用它来控制MOSFET。会有什么不同呢?我只需要所有频率的 50% 占空比,并且我不会更改占空比,因此切换()函数可以正常工作。但我不知道这两种方法使用时有什么区别。在toggle() 方法中,我可以直接给出以秒为单位的值以获得50% 的占空比。通过使用 pwm,我必须设置所需的频率,然后通过选择 0 到 65550 之间的值来设置占空比。

我将使用按钮开关一次选择一个频率,这样 pi pico 一次只会执行一项任务。我想知道这两种方法中哪一种更有效,有哪些缺点。

我编写了一个程序并使用了toggle() pin函数。效果很好。我应该使用 pwm 功能吗?会不会更有效率。有什么区别。

谢谢

我已进行编辑以包含用于切换 mosfet 模块的 Micropython 代码。

import machine

import utime

pin_external = machine.Pin(15, machine.Pin.OUT)

while True:   
    pin_external.toggle()   
    utime.sleep(5)

该程序每 5 秒在引脚 15 处发出 3.3 伏的电压,开启状态 5 秒,关闭状态 5 秒。即占空比为 50% 时的频率为 0.1 Hz。同样,我可以通过在上面代码的最后一行中给出 utime.sleep(0.0714285) 替换 utime.sleep(5) 来实现 7 Hz。

Time, T = 1/f

由于占空比为 50%

On time = T/2
Off time = T/2

utime.sleep(T/2)
是代码中的数字。

toggle micropython pi pwm
1个回答
0
投票

PWM 通常最好通过专用硬件外设来完成,而不是通过软件。不过,在 42 Hz 以下的频率下,基于软件的解决方案可能是可行的。请注意,您需要避免在循环中触发 MicroPython GC 暂停。您确实应该使用示波器测量实际频率,因为软件语句可能会引入计时问题 - 您可能需要对此进行补偿。 如果设备要同时做其他事情,事情就会变得更加复杂。或者如果所需的频率更高。

基于软件的解决方案的唯一好处是它可以在硬件中不具有 PWM 功能的引脚/芯片上工作。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.