【问题标题】:How to control servos continously using Bascom 8051如何使用 Bascom 8051 连续控制舵机
【发布时间】:2019-10-25 14:17:15
【问题描述】:

我想使用 Bascom 8051 连续控制伺服器的运动,以便它可以改变位置。

我尝试通过手动分配脉冲长度并在一定延迟后更改它来使用蛮力。

P1.2 = 1
Config Servos = 1 , Servo1 = P1.2 , Reload = 10
Enable Interrupts


Do
Servo1 = 15 '90 degrees to the left
Wait 10
Servo1 = 65 '90 degrees to the right
Wait 10
Loop

End

我希望伺服器来回切换位置,但它所做的只是卡在一个地方。

【问题讨论】:

    标签: 8051 servo bascom


    【解决方案1】:

    有两种不同的 BASCOM 变体,具体取决于您的微控制器。你已经标记了两者,所以不清楚你的意思是哪一个。你也没有告诉我们你使用的是哪个伺服系统。

    无论如何,内部工作原理都差不多,可以尝试回答您的问题。

    首先,我们需要了解标准 R/C 伺服器期望的信号类型。伺服位置以(正)脉冲的宽度编码。它的范围从 1 毫秒到 2 毫秒。该脉冲必须每 20 ms 重复一次,重复频率为 50 Hz。

    使用Config Servos,您可以将定时器设置为中断源及其服务程序。这意味着伺服的脉冲是自动生成的,无需您的主程序进行任何进一步的操作。您只需要在分配的变量中设置所需的脉冲width;这实际上取决于 BASCOM 变体。对于 AVR,它是一个数组 Servo(1) = #,对于 8051,它有一个单独的变量 Servo1 = #。

    根据手册,参数Reload 设置脉冲宽度值的分辨率(以微秒为单位)。你选择了 10。

    因此,对于脉冲宽度范围,您需要为伺服变量分配 100 到 200 之间的值:

    Do
    Servo1 = 100
    Wait 10
    Servo1 = 200
    Wait 10
    Loop
    

    附加说明:BASCOM AVR 的手册中提到了要设置的端口模式。用于脉冲的引脚必须作为输出。

    【讨论】:

    • 抱歉,我用的是AT89S51
    猜你喜欢
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 2015-03-11
    相关资源
    最近更新 更多