K_A09_008 基于 STM32等单片机驱动ES08A SG90舵机按键控制正反转

目录

一、资源说明

二、基本参数

        参数

                型号:SG90  

                型号:ES08A

        引脚说明

三、驱动说明

        SG90舵机

        ES08A 舵机

        对应程序:

四、部分代码说明

        接线说明

                STC89C52RC+ES08A SG90舵机

                STM32F103C8T6+ES08A SG90舵机

五、基础知识学习与相关资料下载

六、视频效果展示与程序资料获取

七、项目主要材料清单

八、注意事项

九、接线表格


一、资源说明

单片机型号

测试条件

模块名称

代码功能

STC89C52RC

1.晶振11.0592M

ES08A SG90舵机

单片机驱动ES08A SG90舵机按键控制正反转

STM32F103C8T6

  1. 晶振8M
  2. 系统时钟72M

ES08A SG90舵机

二、基本参数

        参数

                型号:SG90  

                重量13克 角度90度-180度通用

                红色电压  粽色 地线  橙色是信号线

                技术数据:
                尺寸:21.5mmX11.8mmX22.7mm
                重量:9克
                无负载速度:0.12秒/60度(4.8V)
                堵转扭矩:1.2-1.4公斤/厘米(4.8V)
                使用温度:-30~~+60摄氏度
                死区设定:7微秒
                工作电压:4.8V-6V

                型号:ES08A

        引脚说明

SG90舵机功率相对较小 可以直接系统板供电 但是建议单独供电 单独供电注意单片机与电源共地

SG90舵机

引脚说明

GND棕线

电源地 此处要与单片机共地

VCC红线

给舵机供电 5V

PWM黄线

PWM控制 SG90大概控制时间是0.5ms-2.5ms

ES08A功率相对较大 STC89C52RC驱动时候要单独供电 且PWM引脚要接一个4.7K左右上拉电阻

ES08A

引脚说明

GND棕线

电源地 此处要与单片机共地

VCC红线

给舵机供电 5V

PWM黄线

PWM控制 ES08A大概控制时间是0.7ms-2.3ms

三、驱动说明

        ES08A 舵机与SG90舵机驱动方式类似 主要是控制时间范围有所区别

        SG90舵机

        信号线(黄线)红线(电源线)棕色(地线)

        舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2. 5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的 控制关系是这样的:

           0.5ms--------------0度;

           1.0ms------------45度;

           1.5ms------------90度;

           2.0ms-----------135度;

           2.5ms-----------180度;

        ES08A 舵机

        对应程序:

        以下以STC89C52RC程序为例

        定时器产生周期20MS PWM波形

void tim0() interrupt 1
{
	TL0 = 0xA4;		//设置定时初值
	TH0 = 0xFF;		//设置定时初值  0.1ms

	times++;
	if(times<=Duty)
	{
	   Pwm=1;
	}
	else
	{
	   Pwm=0;
	} 
	if(times>=Period)
	{
	   times=0;
	}
}

        占空比由Duty决定 改变Duty则占空比改变 次处STC89C52RC用的晶振11.0592 故定时有误差

uint8_t Duty=5;    //大概600US

四、部分代码说明

        接线说明

                需要自定义引脚可在此处更改,STM32要自定义引脚的话也要注意引脚时钟使能的更改

                STC89C52RC+ES08A SG90舵机

//ES08A SG90引脚定义

sbit Pwm=P1^0;

//按键引脚定义

sbit K1=P1^1;

sbit K2=P1^2;

                STM32F103C8T6+ES08A SG90舵机

//ES08A SG90引脚定义

// TIM3 输出比较通道1

#define            GENERAL_TIM_CH1_GPIO_CLK      RCC_APB2Periph_GPIOA

#define            GENERAL_TIM_CH1_PORT          GPIOA

#define            GENERAL_TIM_CH1_PIN           GPIO_Pin_6

//按键引脚定义

#define K_Forward     GPIO_Pin_6 //舵机正转按键 GPIOB_Pin_6 0x0040

#define K_Reverse      GPIO_Pin_7 //舵机反转按键   GPIOB_Pin_7 0x0080

五、基础知识学习与相关资料下载

  1. STC89C52RC程序下载 直戳跳转
  2. STM32F103C8T6程序下载
    1. 串口下载                直戳跳转 
    2. ST-LINK下载             直戳跳转
    3. J-LINK下载              直戳跳转
    4. DAP-LINK下载            直戳跳转

六、视频效果展示与程序资料获取

        视频连接    直戳跳转

          资料获取            ( 滑到最后添加群号看公告免费获取)   

七、项目主要材料清单

STC89C52RC驱动方案

图片

STM32F103C8T6驱动方案

图片

备注

K_A09_008

STC89C52RC系统板X1

STM32F103C8T6系统板X1

  1. STM32系统板两根Micro USB线一根用于J-LINK下载器,另一根用于给系统板供电
  2. 杜邦线建议不用太长的

ES08舵机x1

ES08A舵机x1

SG90舵机x1

SG90舵机x1

Micro USB线X1

Micro USB线X2

公母杜邦线X8

公公杜邦线X2

公母杜邦线X8

公公杜邦线X2

J-LINK下载器

八、注意事项

  1. VCC GND请勿接反,接反易烧
  2. 显示异常时,排除接线接触不良
  3. 单片机与模块需要共地接线
  4. STC89C52RC驱动ES08A舵机必须单独供电并IO口需要4.7K左右电阻上拉

九、接线表格

单片机型号

模块

对应引脚(上:模块引脚 下:单片机引脚)

STC89C52RC

ES08A舵机

PWM(黄线)

VCC(红线)

GND(棕线)

P1.0

5V

GND(共地)

SG90舵机

PWM(黄线)

VCC(红线)

GND(棕线)

P1.0

5V

GND(共地)

按键模块

KEY1

KEY2

GND

P1.1

P1.2

GND

STM32F103C8T6

ES08A舵机

PWM(黄线)

VCC(红线)

GND(棕线)

PA6

5V(单独供电)

GND(共地)

SG90舵机

PWM(黄线)

VCC(红线)

GND(棕线)

PA6

5V(单独供电)

GND(共地)

按键模块

KEY1

KEY2

GND

PB6

PB7

GND

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
首先,需要了解 SLLB120200 是什么设备,以及它的通信协议和通信接口类型。SLLB120200 看起来是一个数字式温度传感器,通信协议可能是 I2C 或 SPI,通信接口类型可能是 3 线或 4 线。 针对不同的通信协议和通信接口类型,需要使用不同的驱动库。在这里,我假设 SLLB120200 是一个 I2C 设备,通信接口类型是 2 线(SDA 和 SCL)。 针对 STM32F030,可以使用 HAL 库提供的 I2C 函数来驱动 SLLB120200。下面是一个简单的代码示例: ```c #include "stm32f0xx_hal.h" #define SLLB120200_ADDR 0x48 // SLLB120200 I2C 地址 I2C_HandleTypeDef hi2c; void SLLB120200_Init() { hi2c.Instance = I2C1; hi2c.Init.Timing = 0x20000A09; hi2c.Init.OwnAddress1 = 0; hi2c.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c.Init.OwnAddress2 = 0; hi2c.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_I2C_Init(&hi2c) != HAL_OK) { Error_Handler(); } } float SLLB120200_ReadTemperature() { uint8_t buf[2]; int16_t raw; float temp; HAL_I2C_Master_Transmit(&hi2c, SLLB120200_ADDR << 1, NULL, 0, 1000); HAL_I2C_Master_Receive(&hi2c, SLLB120200_ADDR << 1, buf, 2, 1000); raw = (buf[0] << 8) | buf[1]; temp = ((float)raw / 256.0) * 165.0 - 40.0; return temp; } ``` 在这个示例中,我们首先需要初始化 I2C 外设(在 SLLB120200_Init 函数中)。然后,我们可以使用 HAL 库提供的 I2C 主机发送和接收函数来读取 SLLB120200 的温度数据(在 SLLB120200_ReadTemperature 函数中)。这个函数将返回一个浮点数,表示当前温度值。 需要注意的是,这个示例中假设 SLLB120200 的数据格式是一个 16 位的有符号整数,高字节在前,低字节在后。具体的数据格式需要参考 SLLB120200 的数据手册。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值