资讯详情

基于STM32的自由度云台运动姿态控制系统

目录 写设计报告 2 一、设计要求 2 1、掌握 MEMS 传感器 MPU6050 应用方法; 2 三、二自由度云台运动姿态控制系统设计。 2 二、设计方案(需要详细的设计思路和必要的论证) 2 1、硬件设计 3 1)电源系统 3 2)数字控制器 4 3)角度测量传感器 4 4)执行机构 5 5)系统原理总体框图 5 2、软件设计 7 1)主函数 8 2)收集和处理姿态角数据 8 3)角度控制算法 9 3、设计内容(包括具体原理和电路、相关硬件设计和软件程序,可结合图表和表格进行说明和分析) 9 1、硬件实现 9 1 )STM32 最小系统 9 2)电源系统设计 10 3)光电隔离 11 4)系统电气连接图 11 2、软件实现 12 1)PWM 信号输出配置程序 12 2)角度数据包的解算算法 13 3)数字 PID 控制算法 16 1 )? ? u ( 16 4)中断服务程序 20 四、调试结果分析及结论 21 1)程控姿态控制系统 21 2)恒值姿态控制系统 23 3)实物图作品 25 五、教师评价和学生成绩 26 写设计报告 一、设计要求 1、掌握 MEMS 传感器 MPU6050 应用方法; 2、掌握 STM32 系统应用、脉冲宽度调制,(PWM)信号控制舵机的方法; 三、二自由度云台运动姿态控制系统设计。 二、设计方案(需要详细的设计思路和必要的论证) 根据控制系统中输入量的变化规律,度云台运动姿态控制系统可设计为程控姿态控制系统和恒值运动姿态控制系统。其中,程控姿态控制系统的输入量是一个随时间变化的函数,可用于飞机姿态角的控制,对其设计要求系统响应快,精度高。恒定姿态控制系统的输入是一个固定的常数,即运动姿态保持恒定角度,不受外部载体运动的干扰。该系统可应用于航拍无人机上的自稳云平台,其设计要求系统具有较强的抗干扰能力。因此,在设计主题中对两个系统进行了设计研究。 控制系统的设计包括硬件设计和软件设计两大部分,程控姿态控制系统和恒值姿态控制系统的区别主要体现在输入量的变化规律不同,需采用不同的参数进行调试,因此两者的硬件基础和软件基本框架大致相似,均可统一设计。 1、硬件设计 硬件系统主要包括电源系统、数字控制器系统、角度测量传感器、执行机构等部件,形成整个系统。 1)电源系统 电源部分的主要功能是为系统的其他部分提供适当的电源电压,工程中常用的电源方案如下。 方案一:使用 220V 通过交流电作为系统的总电源输入 AC-DC 通过转换模块获得所需的高直流电源,然后通过 DC-DC 稳压模块分别获得其他任意值的直流电压。该供电方式适用于输出电流大、负载能力强的固定设备,体积大、不灵活。 方案2:使用可充电电池供电。根据系统所需的电压和功耗,选择相应的电池电压和电池容量。 DC-DC 稳压模块分别获得任何其他值的直流电压。该电源体积小,重量轻,方便灵活,适用于需要移动的系统。缺点是电池成本高,使用寿命有限。 由于姿态角控制系统仅用于原理验证说明,功耗低,体积小,因此可使用上述两种方案, 考虑成本和使用范围,决定使用方案1,即使用开关电源 220V 交流电转化为 12V 直流为系统供电。 2)数字控制器 数字控制器是系统的关键组成部分,通过对其编程可以实现复杂的控制算法,控制执行机构动作,进而实现系统功能,因此控制器的选取在一定程度上决定系统的性能。控制器的选取一般应考虑其运行速度,外设资源,开发的难易程度等方面。目前较常用的数字控制器有以下几种: 方案一:51 单片机。STC89C51 单片机价格便宜,但操作速度慢,内部资源少,功能单一,逐渐被市场淘汰。 51 单片机 STC12C5A,较 STC89C51 性能有了很大的提高, 16 位长,运行频率 35MHz,同时内部自带 60K FLASHROM,而且 STC 系列单片机支持串口程序烧写,对开发设备要求低,开发时间大大缩短,对于有一定编程基础的人来说更容易使用。 方案二:STM32 单片机。STM32F103 该系列单片机是专门为高性能、低成本、低功耗的嵌入式应用而设计的 ARM Cortex-M3 内核,32 位字长,时钟频率达到 72MHz,同时,功耗。内部自带 12 位 ADC 单元,6 通道 DMA,多达 8 定时器和强大灵活的特定控制接口。控制和计算功能非常强大,是同类产品中性价比较高的产品,但系统开发需要较强的编程能力和微机硬件基础。 方案三:Arduino Uno 控制器。Arduino 开源电子平台方便灵活,使用方便,包括硬件(各种型号) Arduino 板)和软件(Arduino IDE)。硬件部分可用于电路连接 Arduino 电路板;软件是 Arduino IDE,即计算机中的程序开发环境。只要在 IDE 通过简单的语言编写程序代码,将程序上传到 Arduino 电路板完成后,电路板将进行相关操作。适用于简单的机电控制系统,控制器几乎不需要任何编程基础。 综上所述,为了达到更好的控制效果,选择 STM32F103 单片机作为控制器,通过软件编程实现控制算法,达到姿态角控制的目的。 本文转载:http://www.biyezuopin.vip/onews.asp?id=16522

#include "H_define.h"  #if __DELAY  static u8  fac_us=0;//us延时倍乘数  static u16 fac_ms=0;//ms延迟倍乘数,在ucos下,代表每一个节拍ms数  ///初始化延迟函数 //当使用ucos这个函数会初始化的时候,ucos的时钟节拍 //SYSTICK时钟固定为HCLK时钟的1/8 //SYSCLK:系统时钟 void delay_init(u8 SYSCLK) { 
           SysTick->CTRL&=~(1<<2); //SYSTICK使用外部时钟源   fac_us=SYSCLK/8;  不管用不用ucos,fac_us都需要使用         fac_ms=(u16)fac_us*1000;//非ucos下,代表每个ms需要的systick时钟数 
}								    
//延时nus
//nus为要延时的us数. 
void delay_us(u32 nus)
{ 
       		
	u32 temp;	    	 
	SysTick->LOAD=nus*fac_us; //时间加载 
	SysTick->VAL=0x00;        //清空计数器
	SysTick->CTRL=0x01 ;      //开始倒数 
	do
	{ 
       
		temp=SysTick->CTRL;
	}
	while((temp&0x01)&&!(temp&(1<<16)));//等待时间到达 
	SysTick->CTRL=0x00;       //关闭计数器
	SysTick->VAL =0X00;       //清空计数器 
}
//延时nms
//注意nms的范围
//SysTick->LOAD为24位寄存器,所以,最大延时为:
//nms<=0xffffff*8*1000/SYSCLK
//SYSCLK单位为Hz,nms单位为ms
//对72M条件下,nms<=1864 
void delay_ms(u16 nms)
{ 
       	 		  	  
	u32 temp;		   
	SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)
	SysTick->VAL =0x00;           //清空计数器
	SysTick->CTRL=0x01 ;          //开始倒数 
	do
	{ 
       
		temp=SysTick->CTRL;
	}
	while((temp&0x01)&&!(temp&(1<<16)));//等待时间到达 
	SysTick->CTRL=0x00;       //关闭计数器
	SysTick->VAL =0X00;       //清空计数器 
} 
			 


#endif

在这里插入图片描述

标签: 电源自由电源型光电传感器89ms1电压隔离传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台