将微型伺服电机与Atmega16连接起来的方法

伺服电机广泛用​​于需要精确控制的地方,如机器人、自动化机械、机械臂等。然而,伺服电机的范围并不限于此,可以在许多应用中使用。
在本教程中,我们将使用 atmel studio 7.0将微型伺服电机与 atmega16 avr 微控制器连接起来。伺服电机额定工作电压为4.8-6v。我们可以通过应用脉冲串或pwm信号来控制它的旋转角度和方向。请注意,伺服电机不能移动完整的 360 度旋转,因此它们用于不需要连续旋转的地方。旋转角度为 0 -180 度或 (-90) – (+90) 度。
所需组件
sg90 tower pro 微型伺服电机
atmega16微控制器ic
16mhz 晶体振荡器
两个 100nf 电容器
两个 22pf 电容器
按钮
跳线
面包板
usbasp v2.0
led(任何颜色)
伺服电机引脚说明
红色 = 正电源(4.8v 至 6v)
棕色 = 接地
橙色 = 控制信号(pwm 引脚)
电路原理图
如下图所示连接所有组件,以使用 avr 微控制器旋转伺服电机。有四个 pwm 引脚,我们可以使用 atmega16 的任何 pwm 引脚。在本教程中,我们使用引脚 pd5 (oc1a) 来生成pwm。pd5直接接伺服电机橙色线,为输入信号脚。连接任何颜色的电源指示灯。此外,在复位引脚中连接一个按钮,以便在需要时复位 atmega16。将 atmega16 与适当的晶体振荡器电路连接。所有系统将由 5v 电源供电。
完整的设置如下所示:
用 avr atmega16 控制伺服电机
与步进电机一样,伺服电机不需要任何外部驱动器,例如 uln2003 或 l293d 电机驱动器。只需 pwm 就足以驱动伺服电机,并且很容易从微控制器生成 pwm。这个伺服电机的扭矩是2.5kg/cm,所以如果你需要更大的扭矩那么这个伺服是不合适的。
众所周知,伺服电机每20ms寻找一个脉冲,正脉冲的长度将决定伺服电机的旋转角度。
获得 20ms 脉冲所需的频率为 50hz (f = 1/t)。所以对于这个伺服电机,规范说0度需要0.388ms,90度需要1.264ms,180度需要2.14ms脉冲。
为了生成指定的脉冲,我们将使用 atmega16 的 timer1。cpu 频率为 16mz,但我们将只使用 1mhz,因为我们没有太多外围设备连接到微控制器并且微控制器上的负载也不大,所以 1mhz 就可以完成这项工作。预分频器设置为 1。因此时钟被划分为 1mhz/1 = 1mhz (1us),这很好。timer1将用作快速 pwm 模式,即模式 14。您可以使用不同的定时器模式来生成所需的脉冲序列。参考如下,您可以在atmega16 official datasheet中找到更多描述。
要将timer1 用作快速 pwm模式,我们需要 icr1(输入捕捉寄存器 1)的 top 值。要找到 top 值,请使用下面给出的公式:
f pwm = f cpu / nx (1 + top)
这可以简化为,
top = ( f cpu / ( f pwm xn)) – 1
其中,n = 预分频器设置的值
f cpu = cpu 频率
f pwm =伺服电机脉冲宽度,即 50hz
现在计算 icr1 值,因为我们拥有所需的所有值,
n = 1,f cpu = 1mhz,f pwm = 50hz
只需将值放在上面的公式中,我们就会得到
icr1 = 1999
这意味着要达到最大程度,即 180 0,icr1 应该是 1999。
对于 16mhz 晶振和预分频器设置为 16,我们将有
icr1 = 4999
现在让我们继续讨论草图。
使用 usbasp 编程 atmega16
下面给出了用于控制伺服电机的完整 avr 代码。代码很简单,很容易理解。
在这里,我们对 atmega16 进行了编码,以将伺服电机从 0 0旋转到 180 0并再次从 180 0旋转到 0 0。此转换将在 9 个步骤中完成,即 0 – 45 – 90 – 135 – 180 – 135 – 90 – 45 – 0。对于延迟,我们将使用 atmel studio 的内部库,即 《util/delay.h》
连接您的 usbasp v2.0 并按照此链接中的说明使用 usbasp 和 atmel studio 7.0 对 atmega16 avr 微控制器进行编程。只需使用外部工具链构建草图并上传即可。
#define f_cpu 1000000ul
#include
#include
无效的主要()
{
//配置timer1
tccr1a|=(1< tccr1b|=(1< icr1=19999;//fpwm=50hz(周期 = 20ms 标准)。
ddrd|=(1< 而(1)
{
        ocr1a=0;//0度
        _delay_ms(1000);
ocr1a=600;//45度 
_delay_ms(1000);
ocr1a=950;//90度 
_delay_ms(1000);
ocr1a=1425;//135度 
_delay_ms(1000);
ocr1a=1900;//180度 
_delay_ms(1000);
    ocr1a=1425;//135度
        _delay_ms(1000);
ocr1a=950;//90度
_delay_ms(1000);
ocr1a=650;//45度
_delay_ms(1000);
}
}
#define f_cpu 1000000ul
#include
#include
无效的主要()
{
//配置timer1
tccr1a|=(1< tccr1b|=(1< icr1=19999;//fpwm=50hz(周期 = 20ms 标准)。
ddrd|=(1< 而(1)
{
        ocr1a=0;//0度
        _delay_ms(1000);
ocr1a=600;//45度 
_delay_ms(1000);
ocr1a=950;//90度 
_delay_ms(1000);
ocr1a=1425;//135度 
_delay_ms(1000);
ocr1a=1900;//180度 
_delay_ms(1000);
    ocr1a=1425;//135度
        _delay_ms(1000);
ocr1a=950;//90度
_delay_ms(1000);
ocr1a=650;//45度
_delay_ms(1000);
}
}

多媒体音箱的改造升级
人工智能2020国家战略 北京率先达到世界先进水平
关于PCB加温电路设计
百度为何拆分小度科技?独立融资是智能音箱的新途径吗
51单片机定时器控制LED灯
将微型伺服电机与Atmega16连接起来的方法
电子把手气密性防水检测解决方案
多项利好政策促进高端制造业发展,到2025年制造业整体素质大幅提升
中国量子无人机问世 美国却恬不知耻提出技术共享
物联网如何革新工厂
Switch变成永久的游戏平台,并摆脱行业传统的兴衰周期
Maxim提供各类传感器为广泛的工业应用提供优异的性能
MySQL的页结构及原理
PCB布线的6条规则
一招化解动力电池电芯测试难题
车规级干货 | ISO26262中对硬件安全性的定性和定量评估(上)
大数据分析在物联网发展中的重要性
日本扩大无人机监管范围,“降鹰”反无人机系统让天空更安全
汽车CIS研究:三大细分场景造就巨大市场空间
IP系统监控与HD-CCTV的优缺点分析