伺服电机的工作原理是脉宽调制(PWM),其旋转角度由施加在其控制引脚上的脉冲持续时间控制。在本教程中,我们将使用PWM技术通过ATtiny13微控制器控制伺服电机。因此,在进一步介绍之前,我们将首先了解PWM,伺服电机以及如何使用Arduino Board编程ATtiny13。
脉宽调制(PWM)
脉宽调制(PWM)被定义为一种使用数字源生成模拟信号的方法。PWM信号由两个主要部分组成-占空比和频率。这些组件定义其行为。占空比描述了信号处于高电平状态的时间。它表示为完成一个周期所花费的总时间的百分比。
占空比=打开时间/(打开时间+关闭时间)
频率定义了PWM完成一个周期的速度以及信号在高状态和低状态之间切换的速度。100Hz的频率表示每秒100个周期。通过以一定的占空比快速打开和关闭数字信号,输出将看起来像恒定电压的模拟信号。PWM的强大优势之一是功耗非常小。
所有伺服电机都直接在+ 5V电源下工作,但是我们必须注意电机消耗的电流量。如果我们使用两个以上的伺服电机,则应设计适当的伺服防护罩。
在将伺服连接到Attiny13之前 ,您可以借助此伺服电机测试仪电路来测试伺服。在这里,我们已经将伺服电机与许多微控制器相连接:
- 伺服电机与ARM7-LPC2148的接口
- 将伺服电机与MSP430G2连接
- 用Arduino控制多台伺服电机
- 使用MPLAB和XC8将伺服电机与PIC单片机接口
- Raspberry Pi伺服电机控制
- 带有Arduino Due的伺服电机控制
- 伺服电机与AVR单片机Atmega16的接口
使用Arduino编程ATtiny13
可以使用Arduino Uno或任何其他Arduino板对Attiny13进行编程。如下图所示,将Attiny13连接到Arduino Uno。
- Arduino 5V – ATtiny13引脚8
- Arduino GND – ATtiny13引脚4
- Arduino引脚13 – ATtiny13引脚7
- Arduino引脚12 – ATtiny13引脚6
- Arduino引脚11 – ATtiny13引脚5
- Arduino引脚10 – ATtiny13引脚1
Arduino被设置为编程ATtiny13的程序员。这是通过将ArduinoISP草图上传到Arduino来完成的。该Arduino草图可在Arduino IDE的示例中找到。打开Arduino IDE并转到 文件>示例> ArduinoISP 。
现在将弹出用于ArduinoISP的程序。将程序上传到Arduino Uno。
Arduino Uno现在可以对Attiny13进行编程了。但是我们必须通过安装其核心文件来设置Attiny。为此,请转到Arduino IDE中的 File >> Preferences
然后将弹出一个新窗口。然后在“ 其他董事会经理网址 ”中添加以下链接,然后单击“确定”。
“
现在,在您的Arduino IDE中,转到 工具>>板>>板管理器
然后会弹出另一个窗口,在搜索框中键入 “ Attiny”, 然后您将得到“ DIY ATtiny”,然后单击 “安装” 按钮(我已经安装了它,这就是为什么安装按钮为灰色)
要开始对ATtiny 13进行编程,我们必须将Bootloader刻录到其中。为此,请转到 工具>主板> ATtiny13。
现在转到 工具>处理器 版本,并检查是否选择了正确的ATtiny版本。根据您的芯片选择ATtiny13或ATtiny13a。
然后单击“工具”菜单底部的“刻录引导程序”按钮。
烧写引导加载程序后,ATtiny现在可以进行编程了。现在您可以上传程序了。
所需组件
- ATtiny13单片机
- 伺服马达
- 电位器
- + 5V电池
- Arduino IDE
- 连接线
电路图和工作
下面给出了使用带有ATtiny13的电位器控制伺服电机的电路图。
以下是连接
- 将伺服电机控制引脚连接到ATtiny13的引脚5
- 将伺服电机的接地连接到ATtiny13的引脚4
- 将伺服电机的VCC连接到ATtiny13的引脚8
- 将电位器的中间引脚连接到ATtiny13的引脚7
- 将电位计的第一个和第三个引脚连接到VCC和GND。
- 将+ 5V电池的正极连接到ATtiny13的引脚8
- 将+ 5V电池的负极连接到ATtiny13的引脚4
电位计连接到ATtiny13的引脚7(PB2),伺服电机的控制线连接到引脚5(PB0)。
此处读取电位计值,并将其转换为0到180之间的值。然后将该角度值转换为微秒,并以计算出的微秒延迟将脉冲提供给伺服电机的控制引脚。现在,伺服电机将根据电位计的值旋转,如下面的视频所示。