栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

基于STC8G2K64S4单片机控制舵机

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于STC8G2K64S4单片机控制舵机

基于STC8G2K64S4单片机控制舵机 #前言

本文从硬件和软件两方面介绍了使用STC8G2K64S4单片机控制舵机的方法

舵机也是一个很常用的模块,每个竞赛几乎都用得到,相对电机来说它的控制也相对简单,话不多说直接上才艺

硬件方面

舵机的选择一般是两个参数,扭力和角度。扭力一般25kg就够用,角度的话可以择需选择也可以稍微大点的270度,这样之后也可以用。旁边的配件一般都会有,方便配合机械臂等其他结构。

现在说说连线,主要有三根线

红线是正极,这里需要接6V最好,5V不太够,所以需要额外从电池接一根出来,再通过稳压模块降压到6V就行了,负极就是GND接地

白线是信号线,通过输出PWM信号来控制角度

PWM波是可以改变占空比的,占空比是决定舵机角度最关键的因素。舵机的驱动信号是50hz的方波信号,每个周期为20ms,其中高电平的占比在0.5ms-2.5ms之间

t=0.5ms    占空比20%     舵机角度0°   
t=1.0ms    占空比40%     舵机角度45° 
t=1.5ms    占空比60%     舵机角度90° 
t=2.0ms    占空比80%     舵机角度135° 
t=2.5ms    占空比100%    舵机角度180° 

这里是180度舵机的占空比输出所对应的角度,仅供参考,实际的可能有偏差,按照实际的来 

软件方面 

依旧是keil写代码,代码如下:

sbit P46        //定义P46为信号输出口

void main()
{
	DisableGlobalIRQ();        //关闭总中断
	
	board_init();			//初始化内部寄存器,勿删除此句代码。
	pwm_init(PWM4_P46, 50, 0);        //初始化pwm端口
	pca_dealy_init();                 //初始化延时函数   

	EnableGlobalIRQ();        //开启总中断
	
    while(1)
	{ 
        pwm_duty(PWM4_P46, 1000);        //舵机旋转 			
		pca_delay_ms(1000);

        pwm_duty(PWM4_P46, 250);        //舵机更改角度 
		pca_delay_ms(1000);	
	}
}

舵机的驱动信号是50hz所以初始化的时候就写了50hz。因为舵机是通过改变占空比来改变角度,所以选择函数pwm_duty来改变舵机的速度

下面分享一个让舵机旋转得慢一点得的方法,因为正常的转速相对过快,可能会导致旋转抓着物块的机械臂上的物块掉落。思路是每个5ms输出一个+1的pwm波值,这样就能实现慢速旋转了

int x,y,z

sbit P10        //定义P10为输出pwm端口

void rotate(x,y)        //rotate(起始位置,结束位置)
{
	if(xy;z--)
		{
		    pwm_duty(PWM1_P10, z); 
			pca_delay_ms(5);
		}
	}
}

 舵机的控制相对简单很多,也蛮好理解的,只要还是需要对pwm的概念理解

本人小白,有问题交流讨论,虚心受教

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号