8051 - 如何使用 Bascom 8051 连续控制舵机
问题描述
我想使用 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
我希望伺服器来回切换位置,但它所做的只是卡在一个地方。
解决方案
有两种不同的 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 的手册中提到了要设置的端口模式。用于脉冲的引脚必须作为输出。
推荐阅读
- python - 在 Python 中遍历大型数组以查找缺失元素的最有效方法
- reactjs - 错误:无法获取 Firebase 项目 facebook-clone-9bd27。请确保该项目存在并且您的帐户有权访问它
- python - 如何使用 For 循环范围和列表创建列表列表以在此上下文中显示不同的字符串输出
- ssl - CentOS8下anyconnect vpn的问题(IPsec协议)
- c# - 来自后台服务的 Xamarin.Forms 弹出页面
- java - JBoss日志中连续出现通信链路故障异常时CPU负载自动增加
- c# - 在新窗口中从 Blazor 打开页面,无需导航
- karate - 空手道:错误 com.intuit.karate.core.FeatureParser - 不是有效的功能文件:不匹配的输入 'S' 期望
- javascript - 如何在html文件中引用JS
- javascript - 如何隔离标记标签中包含的子字符串?