0

我想使用 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

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

4

1 回答 1

0

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

无论如何,内部工作原理足够相似,可以尝试回答您的问题。

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

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

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

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

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

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

于 2019-10-26T13:45:58.497 回答