stm32控制舵机sg90

一、sg90简介

首先介绍说一下什么是舵机。舵机是一种位置(角度)伺服的驱动器。适用于一些需要角度不断变化的,可以保持的控制系统。sg90就是舵机的一种。

舵机的工作原理比较简单。舵机内部有一个基准电压,单片机产生的PWM信号通过信号线进入舵机,与舵机内部的基准电压作比较,获得电压差输出。电压差的正负输出到电机驱动芯片上,从而决定正反转。开始旋转的时候,舵机内部通过级联减速齿轮带动电位器旋转,使得电压差为零,电机停止转动。

二、引脚连接

sg90有三个引脚,分别是红线(VCC),棕线(GND)和橙线(信号线)。通常使用5V供电,信号线接单片机引脚,用老来接收单片机发送的PWM。

三、控制方法

控制sg90舵机旋转也比较简单,只需要给它输出PWM波,修改占空比就可以调整角度。sg90的控制一般需要一个20ms 左右的时基脉冲,脉冲的高电平部分一般在0.5ms~2.5ms。高电平持续时间与旋转角度的对应关系如下

高电平持续时间/ms 舵机角度/°
0.5 0
1.0 45
1.5 90
2.0 135
2.5 180

四、程序设计

这里以180°的sg90,来展示一下程序设计

4.2 编写控制程序

根据高电平持续时间与角度关系对应表格来编写sg90的控制程序

复制代码
  while(1)
  {
		TIM_SetCompare1(TIM3,195);   // 旋转到0°
		delay_ms(500);
		TIM_SetCompare1(TIM3,190);   // 旋转到45°
		delay_ms(500);
		TIM_SetCompare1(TIM3,185);   // 旋转到90°
		delay_ms(500);
		TIM_SetCompare1(TIM3,180);   // 旋转到135°
		delay_ms(500);
		TIM_SetCompare1(TIM3,175);   // 旋转到180°
		delay_ms(500);
	}

文部分内容转载自:STM32外设系列---sg90(舵机) (jnnr.cn)感谢分享

看上面这个代码就是采用调用函数的方式来控制旋转角度,所以这个函数就是一个产生PWM的函数

相关推荐
Freak嵌入式1 小时前
Pico PIO 汇编语法深度详解:标识符、指令、伪指令全解析
汇编·stm32·单片机·嵌入式硬件·fpga开发·硬件架构
自小吃多2 小时前
PCB Editor软件差分对添加与设置笔记
笔记·嵌入式硬件
逐步前行2 小时前
ESP32-S3-工程管理
单片机
智购科技无人售货机厂家4 小时前
2026自动售货机连接器选型指南:从IP等级到插拔寿命的工程实践~YH
单片机·嵌入式硬件
Jaixln_HRF5 小时前
率能SS6548D 单通道16A/40V大电流H桥驱动芯片,45mΩ超低导通电阻,用于打印机/扫地机/工业设备
驱动开发·嵌入式硬件·硬件工程
Jason_zhao_MR6 小时前
电能质量监测为什么需要PTP精确时钟同步
linux·单片机·嵌入式硬件·嵌入式
happygrilclh6 小时前
嵌入式 GUI 框架大概说明
stm32
Freak嵌入式6 小时前
RP2040 PIO 编程模型与状态机原理:从硬件架构到工作逻辑全解析
java·大数据·开发语言·单片机·嵌入式硬件·硬件架构
Messy create6 小时前
【BMS-AFE-断路检测】
单片机·嵌入式硬件·能源
恶魔泡泡糖7 小时前
stm32F103C8T6标准库DWT基础应用1
stm32·单片机·嵌入式硬件