如何使用Bascom 8051连续控制伺服器

时间:2019-10-25 14:17:15

标签: 8051 servo

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

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

1 个答案:

答案 0 :(得分:0)

有两种不同的BASCOM变体,具体取决于您的微控制器。您已经标记了两者,因此不清楚您是指哪一个。另外,您也没有告诉我们您使用的是哪种伺服器。

无论如何,内部工作原理都非常相似,足以回答您的问题。

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

使用Config Servos将计时器设置为中断源及其服务程序。这意味着将自动生成伺服脉冲,而主程序无需采取任何进一步措施。您只需要在分配的变量中设置所需的脉冲宽度即可;这实际上取决于BASCOM变体。对于AVR,其数组为Servo(1) = #,而对于8051,则为单个变量Servo1 = #

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

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

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

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