【硬件模块】SG90舵机模块

  • SG90舵机模块实物图
    180度舵机:可以控制旋转角度、有角度定位。上电后舵机自动复位到0度,通过一定参数的脉冲信号控制它的角度。
    360°舵机:不可控制角度,只能控制顺时针旋转、逆时针旋转、停止和调节转速。
    如图所示为:SG90,180度版
    在这里插入图片描述
  • 工作参数
    工作扭矩:1.6kg/cm
    反应速度:0.12 - 0.13秒/60°
    死区设定:5us
    转动角度:常见0°、90°、180°、360°
    齿轮材质:尼龙塑料齿
    工作电压:3V - 6V
    温度范围:-30° ~ +60°
  • 引脚接线
SG90MCU
PWM 信号线(橙色线)任意IO
VCC(红线)3.3/5V
GND(棕色线)GND
  • 控制关系
    PWM 信号的频率大约为50Hz,即周期=1/频率通常为20ms,而脉冲宽度则在0.5ms 至 2.5ms 之间变化
    定时器需要定时20ms,单位0.5ms,20ms=0.5ms*40
脉冲高电平角度占空比
0.5ms2.5%
1.0ms45°5.0%
1.5ms90°7.5%
2.0ms135°10.0%
2.5ms180°12.5%

参考文章
SG90舵机模块

### 舵机模块介绍 舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统,在高档遥控玩具,如飞机、潜艇模型以及遥控机器人中已经得到了广泛应用[^3]。对于SG90三线舵机而言,其连接方式为红线接VCC,棕线接GND,黄线接IO口;通过这种方式接好的SG90会依据接收的不同PWM信号作出相应动作[^5]。 ### 应用实例 #### Arduino平台下的超声波与舵机集成使用案例 在某些项目里,比如智能避障小车的设计当中,不仅涉及到舵机的应用还可能结合其他传感器共同工作来完成特定的任务。例如,利用超声波测距模块HC-SR04配合SG90舵机能够构建起一套简易而有效的自动导航系统[^2]。 #### 单片机控制下的舵机操作 当采用STM32系列单片机作为控制器时,则可以通过CubeMX配置外设参数再借助Keil MDK编写程序逻辑从而达到精准操控的目的。下面给出了一段用于使能GPIO端口输出PWM脉冲序列给定转角指令至舵机的例子: ```c #include "stm32f1xx_hal.h" TIM_HandleTypeDef htim3; void MX_TIM3_Init(void) { __HAL_RCC_TIM3_CLK_ENABLE(); TIM_OC_InitTypeDef sConfigOC; htim3.Instance = TIM3; htim3.Init.Prescaler = 71; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 1999; HAL_TIM_PWM_Init(&htim3); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 150; // 中间位置对应的占空比值 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1); } ``` 此代码片段展示了如何初始化定时器资源以便于后续发送适当宽度的高电平时间间隔去改变舵机的角度状态[^1]。 #### 树莓派环境中的Python编程实践 除了传统的嵌入式开发工具链之外,在Linux操作系统上运行的设备同样支持对这类硬件组件进行编程访问。这里提供了一个简单的Python脚本来演示怎样让SG90执行一次大约90度范围内的转动过程[^4]: ```python import RPi.GPIO as GPIO import time servoPIN = 17 GPIO.setmode(GPIO.BCM) GPIO.setup(servoPIN, GPIO.OUT) p = GPIO.PWM(servoPIN, 50) # 设置频率为50Hz p.start(7.5) # 初始化到中间位置 (对应约90°) try: while True: p.ChangeDutyCycle(2.5) # 向左最大偏移 (-90°) time.sleep(1) p.ChangeDutyCycle(7.5) # 返回中心点 (0° 或者说是90°视具体情况而定) time.sleep(1) p.ChangeDutyCycle(12.5)# 向右最大偏移 (+90°) time.sleep(1) except KeyboardInterrupt: pass finally: p.stop() GPIO.cleanup() ``` 上述示例分别介绍了几种常见的微处理器平台上关于舵机使用的入门级教程和技术细节描述,希望能够帮助读者更好地理解这一类机电一体化元件的工作原理及其应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值