gpt4 book ai didi

使用带有 wiringPi 的硬件 PWM 控制带有树莓派的伺服

转载 作者:太空狗 更新时间:2023-10-29 16:52:42 35 4
gpt4 key购买 nike

我尝试使用 wiringPi 库通过 softPwm 控制伺服,但这使伺服卡顿。因此,我想将 Raspberry Pi (GPIO18) 上的硬件 PWM 引脚与 wiringPi 库一起使用。但是我不明白如何将频率设置为 50 Hz 并将占空比更改为脉冲宽度范围为 0.8 ms 到 2.5 ms。

在网上查到如下关系(不知道对不对):

pwmFrequency in Hz = 19.2e6 Hz / pwmClock / pwmRange.

我知道时钟分频器最大值约为 4000,Raspberry Pi PWM 时钟的基本频率为 19.2 MHz。所以这给了我 ~4,8KHz。

我已经得到这些设置,使用以下关系应该给我 ~50Hz:

//put PWM in mark-space mode, which will give you 
//the traditional (and easily predictable) PWM
pwmSetMode(PWM_MODE_MS);
//setting ping GPIO 18 as a pwm output
pinMode(18,PWM_OUTPUT);
//Set clock divisor to 4000
pwmSetClock(4000);
pwmSetRange (10) ;

我没有示波器来测试输出信号来检查什么设置改变了什么。这让我自己很难找到它。

长话短说:谁能告诉我如何使用 Raspberry Pi 上的硬件 PWM 实现脉冲宽度为 0.8ms 到 2.1ms 的占空比来控制伺服系统。

最佳答案

我是 Pi 和 Servo 的新手。但我让它与 wiringPi 一起工作。

它说 here我们希望每 20 毫秒左右创建一个长度为 1 毫秒到 2 毫秒的脉冲。假设这个 19.2Mhz 基本时钟确实正确,将 pwm 时钟设置为 400 并将 pwm 范围设置为 1000,应该会以 48Hz 或每 20.8 毫秒给出一个脉冲。然后将 pwm 值设置为 48 应该给你一个 1ms 长的脉冲,pwm 值 96 应该给你一个 2ms 长的脉冲。但是你需要把芯片设置成pwm-ms模式。(这里有很多应该的,因为我也没有示波器)

所以要设置它:

  • gpio 模式 1 pwm
  • gpio pwm-ms
  • GPIO 脉宽调制 400
  • gpio pwmr 1000

然后你可以通过以下方式从左到右转动 Helm 机

  • gpio 脉宽调制 1 48
  • gpio 脉宽调制 1 96

(实际上,我得到的 Helm 机从 28 到 118;可能是 Helm 机)(设置顺序似乎很重要;可能是一个错误)

关于使用带有 wiringPi 的硬件 PWM 控制带有树莓派的伺服,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20081286/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com