实验目的:
通过键盘和串口通讯控制舵机,使其按照指定的参数转动对应的角度。
舵机概述:
舵机最早用于船舶上实现其转向功能,由于可以通过程序连续控制其转角,
因而被广泛应用智能小车、机械手臂以及机器人各类关节运动等。
舵机组成:
舵机主要由以下几个部分组成:舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路等。
电机控制板主要是用来驱动电机和接受电位器反馈回来的信息。电机,动力的来源了,这个不用太多解释。电位器这里的作用主要是通过其旋转后产生的电阻的变化,把信号发送回电机控制板,使其判断输出轴角度是否输出正确。齿轮组的作用主要是力量的放大,使小功率电机产生大扭矩。
工作原理:
控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机转动的方向和速度,从而达到目标停止。
PWM控制舵机的方法:
舵机的控制信号周期为 20MS 的脉宽调制(PWM)信号,其中脉冲宽度从0.5-2.5MS,相对应的舵盘位置为 0-180 度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持一定对应角度上,无论外界转矩怎么改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应位置上。舵机内部有一个基准电路,产生周期为 20MS,宽度 1.5MS 的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。由此可见,舵机是一种位置伺服驱动器,转动范围不能超过 180 度,适用于那些需要不断变化并可以保持的驱动器中。
本实验中所使用SG90舵机:
尺寸:21.5mmX11.8mmX22.7mm
重量:9克
无负载速度:0.12秒/60度(4.8V)
堵转扭矩:1.2-1.4公斤/厘米(4.8V)
使用温度:-30~~+60摄氏度
工作电压:4.8V-6V
单片机源程序如下:
- /***********************************************************************
- * 说 明: 点亮第一个发光二极管
- * 开发平台: 剑齿虎STM8开发板
- * 作 者: 刘洋 张殿东
- * 版 本: V1.0
- * 日 期: 2017-11-03
- *
- * IAR开发环境 版本 V2.20.1
- * ST库函数 版本 V2.2.0
- ***********************************************************************/
- #include "pbdata.h"//引入自定义公共头文件
- void BSP_Configuration(void);//硬件初始化函数声明
- /***********************************************************************
- * 函 数 名: main
- * 功能说明: c程序入口
- * 形 参:无
- * 返 回 值: 错误代码(无需处理)
- ***********************************************************************/
- int main(void)
- {
- BSP_Configuration();//硬件驱动初始化函数
- while(1)//主程序循环,反复执行循环体里的语句
- {
- DJ_KZ_Key();
- DJ_CS_Printf();
- delay_ms(1);
- }
- }
- /***********************************************************************
- * 函 数 名: BSP_Configuration
- * 功能说明: 初始化硬件设备。只需要调用一次。该函数配置CPU寄存器和外设的寄存器并初始化一些全局变量。
- * 形 参:无
- * 返 回 值: 无
- ***********************************************************************/
- void BSP_Configuration(void)
- {
- CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//时钟速度为内部16M,1分频,
- delay_ms(1000);
- UART1_Congfiguration();//调用RS232串口1初始化函数
- LED_Init();//调用LED初始化函数
- I2C_Configuration();
- TM1650_Init();
- Tim1_PWM_Init();
- rim();//打开总中断
- }
- /*断言函数:它的作用是在编程的过程中为程序提供参数检查*/
- #ifdef USE_FULL_ASSERT
- void assert_failed(u8* file,u32 line)
- {
- while(1)
- {
- }
- }
- #endif
复制代码
舵机实验代码免费下载:
众拳剑齿虎STM8开发板舵机实验程序.7z
(549.32 KB, 下载次数: 93)
|