基于倒立摆的便捷自动控制教学平台的研究与设计

2015-08-07 13:39燕王江华郭海文
大众科技 2015年1期
关键词:参数设置陀螺仪中断

赵 燕王江华郭海文

(1.燕京理工学院,河北 三河 065201;2.华北科技学院,河北 三河 065201)

基于倒立摆的便捷自动控制教学平台的研究与设计

赵 燕1王江华2郭海文2

(1.燕京理工学院,河北 三河 065201;2.华北科技学院,河北 三河 065201)

设计一基于倒立摆的便捷自动控制教学平台,内置三维陀螺仪、加速度计等传感器,可实现平台的自主直立控制。平台利用STM32单片机对陀螺仪的角速度和加速度计的加速度进行实时跟踪,采用卡尔曼滤波算法对陀螺仪与加速度计采集回来的姿态信号进行校正,从而得到一个准确的空间姿态;通过采集编码器产生的脉冲来计数,形成速度闭环控制,实现双轮自平衡教学平台在任何干扰情况下,均能保持直立平衡状态。该教学平台的特点在于体积小巧,携带方便,操作简单,运行可靠,调整速度快。该平台是一个可随堂演示的PID控制系统,采用现场实物演示将大大增添课堂趣味性,学生们学习相关理论知识时将会更加积极主动,从而提高理论教学的质量。

教学平台;STM32单片机;PID控制

基于理论教学的抽象不灵活性,导致学生对理论知识的不理解,从而失去学习的兴趣,于是创新性的设计出了基于倒立摆的便捷自动控制教学平台,来调节现存的理论教学模式,进而激发学生学习的积极性,从而提高理论教学的质量。

1 平台总体设计

平台采用基于ARM Cortex-M3内核的32位处理器STM32F103C8作为控制核心,其总体结构如图1所示。采用传感器MPU-6050来检测陀螺仪的角速度和加速度计的加速度;按键模块用于菜单的选择和调试使用;OLED显示模块用来显示平台的状态信息;直流电机控制模块采用PWM方式控制两个独立的直流电机运行;电源模块提供平台工作所需的+5V和+3.3V电压;脉冲捕捉模块用于捕捉采集编码器产生的脉冲,达到测速的目的;NRF24L01无线模块利用无线通信方式将数据传输至上位机。

图1 平台总体结构图

2 平台硬件设计

平台硬件电路包括STM32单片机主控模块、电源模块、传感器检测模块以及直流电机控制模块等。

2.1 STM32单片机主控模块

平台采用32位单片机STM32F103C8作为主控核心,该单片机集高速运算与面向直流电机驱动的高效控制能力于一体,可以用软件取代模拟器件,方便的修改控制策略和控制参数,兼具故障检测、自诊断和上位机管理与通信功能,内置数模转换器、同步串行外设接口、异步串口通信接口、PWM控制管理器,其PWM波形产生单元包括可编程死区控制,可输出非对称PWM波形、对称PWM波形和空间矢量SVP-VM波形。

平台采用上电复位和手动复位相结合的方式来实现对单片机的复位。时钟电路采用外部时钟,晶振频率为8MHZ。平台设计有JTAG的程序下载接口,本设计程序的开发主要通过单片机内部的Bootloader程序完成程序的下载和调试,因此单片机最小系统只需要一个UART便可进行,无需额外的接口调试器。若用串口下载代码,则必须配置BOOT0为1、BOOT1为0;而若使STM32一按复位键就开始执行代码程序,则需配置BOOT0为0、BOOT1为任意状态即可。[1]

2.2 MPU-6050传感器模块

平台采用MPU-6050传感器来检测陀螺仪的角速度和加速度计的加速度。MPU-6050是一个9轴运动处理传感器,内部整合了3轴陀螺仪、3轴加速器,并自带AD转换,通过I2C总线方式与单片机进行通信。该传感器内置在一个芯片中,可以有效地抑制陀螺仪的温漂问题。

传感器模块通过I2C通信方式输出相应的9轴数字信号。I2C是二线接口,包括串行数据线SDA和串行时钟线SCL。连接到I2C接口的设备可做主设备或从设备。主设备将Slave地址传到总线上,从设备用与其匹配的地址来识别主设备。当连接到系统芯片时,MPU-6050总是作为从设备。SDA和SCL信号线通常需要接上拉电阻到VCC,最大总线速率为400kHzbps。[2]

2.3 OLED显示模块

平台采用OLED显示屏来显示一些状态信息,此显示屏的分辨率为128×64。OLED显示参数设置界面如图2所示,angle_mid为平衡角度的中心角度值,P_angle为角度PID算法的比例参数设置,D_angle为角度PID算法的微分参数设置,P_Speed为速度PID算法的比例参数设置,I_Speed为速度PID算法的积分参数设置,D_Speed为速度PID算法的微分参数设置,speed_set为运动速度的初值。

图2 OLED参数设置界面

2.4 NRF24L01无线模块

设计中采用的无线模块为NRF24L01,一方面,利用无线进行数据传输,可以避免有线传输线对教学平台调试的制约,通过这种方式可以远离上位机调试,并且下位机参数数据实时上传,不会有距离的限制。另一方面,利用NRF24L01制作无线遥控器,通过遥控器对教学平台中的参数进行修改,便于现场问题的处理,方便调试。

3 平台软件设计

3.1 平台程序设计

平台由主程序和中断程序两部分程序构成。主程序流程图如图3所示,在主程序中先进行倍频、GPIO、OLED、PWM以及定时器等各个模块的初始化,然后使能总中断。这样可以为各个模块配置好寄存器信息,给中断要处理的信息提供保障。同时等中断处理完信息又能确保中断处理后的信息实时显示在OLED上。方便程序的调试和效果的显示。

中断处理流程图如图4所示,利用定时器1ms中断,在中断中完成信号的采集和处理。采集MPU-6050输出的陀螺仪、加速度计的数据值,然后将采集数据进行中值滤波,将中值滤波后的数据再进行10次的均值滤波。这样可以保证滤去杂波和不正确的值,得到的数据比较平滑。将得到的值与中心值进行比较得到变化值,再将变化的信号值转化成变化的角度值。将得到处理后的陀螺仪变化的角度值和加速度变化的角度值进行卡尔曼滤波,得到的角度与设定好的角度比较并用PID算法计算。再通过STM32的脉冲捕捉功能,分别捕捉两路脉冲并计数,将此数值与程序中设定好的数值比较并用PID算法计算。最后将角度PID值和速度PID值叠加,再调节PWM的占空比。[3]

图3 平台主程序流程图

图4 平台中断程序流程图

3.2 单片机各模块初始化

3.2.1 系统时钟初始化

该函数的主要功能是初始化STM32的时钟。其中包括对向量表的配置,以及相关外设的复位及配置。Stm32_Clock_Init函数只有一个变量PLL,用来配置时钟的倍频系数。比如当前所用的晶振为8MHz,PLL的值设为9,那么STM32将以72MHz的速度运行。系统时钟初始化程序如下:

void Stm32_Clock_Init(u8 PLL)

{

unsigned char temp=0;

MYRCC_DeInit(); //复位并配置向量表

RCC->CR|=0x00010000; //外部高速时钟使能HSEON

while(!(RCC->CR>>17)); //等待外部时钟就绪

RCC->CFGR=0X00000400;

//APB1=DIV2;APB2=DIV1;AHB=DIV1;

PLL - =2; //抵消2个单位

RCC->CFGR|=PLL<<18; //设置PLL值 2~16

RCC->CFGR|=1<<16; //PLLSRC ON

FLASH->ACR|=0x32; //FLASH 2个延时周期

RCC->CR|=0x01000000; //PLLON

while(!(RCC->CR>>25)); //等待PLL锁定

RCC->CFGR|=0x00000002; //PLL作为系统时钟

while(temp!=0x02) //等待PLL作为系统时钟设置成功

{

temp=RCC->CFGR>>2;

temp&=0x03;

}

}

3.2.2 I/O口模块初始化

STM32F103C8的I/O口可以配置成输入模式、输出模式或复用模式。如果把端口配置成输出模式,有3种输出速度可选,即2MHz、10MHz和50MHz,这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。如果把端口配置成输入模式,无需设置输出速度即可。如果把端口配置成复用输出模式,则引脚和输出寄存器断开,并和片上外设的输出信号连接。将管脚配置成复用输出功能后,如果外设没有被激活,那么它的输出将不确定。

3.2.3 PWM模块初始化

先对APB1ENR进行设置,开启TIM2的时钟,配置PA0、PA1为复用输出,因为TIM2_CH2、TIM2_CH3通道是以I/O复用的形式连接到PA0、PA1上的,故使用其复用输出功能。在开启了TIM2的时钟之后,要设置ARR和PSC两个寄存器的值来控制输出PWM的周期。PWM周期在这里不宜设置的太小,否则会有明显的闪烁现象。之后设置TIM2_CH2、TIM2_CH3的PWM模式,使能TIM2的CH2、CH3输出。在完成以上设置了之后,需要开启TIM2的通道2输出以及TIM2中断。前者通过TIM2_CCER1来设置,是单个通道的开关, 而后者则通过TIM2_CR1来设置,是整个TIM2的总开关。只有设置了这两个寄存器,在TIM2的通道2、3上才能输出PWM波,此时输出的PWM波的占空比和频率都是固定的,通过修改TIM2_CCR2、TIM2_CCR3则可以控制CH2、CH3的输出占空比,继而控制舵机的输出角度。

4 总结

图5 平台实物图

平台实物如图5所示。本教学平台体积小巧,携带方便,操作简单,运行可靠,调整速度快,可应用于PID控制相关课程的理论教学,采用现场实物演示将大大增添课堂趣味性,学生们学习相关理论知识时将会更加积极主动,从而提高理论教学的质量。

[1] 陈春,朱向冰,朱骞,等.基于STM32单片机的DLP驱动电路的研究[J].电子设计工程,2012,20(2):126-128.

[2] 李航.小型四旋翼飞行器实时控制系统研究[D].大连:大连理工大学,2010.

[3] 刘金琨.智能控制[M].北京:电子工业出版社,2009:124-125.

Research and design of convenient automatic control teaching platform based inverted pendulum

To design a teaching platform of the convenient automatic control based on the inverted pendulum , built-in 3 d gyroscope and accelerometer sensors, can realize autonomous vertical control. Platform uses STM32 MCU to track the accelerometer gyroscope of angular velocity and acceleration. Using Calman filtering algorithm for correcting the posture signal, the signal is collected by the gyroscope and accelerometer, to get an accurate space posture. By collecting generated pulse encoder counts, forming a closed loop speed control. Realization of two-wheeled self-balancing teaching platform in any interference, can maintain upright balance. Features of the teaching platform is compact, easy to carry, easy to operate, reliable, fast adjustment. The platform is a quiz presentation PID control system. Using live demonstrations will greatly increase the physical classroom fun. Students will learn the theory of knowledge when more proactive, thereby improving the quality of teaching theory.

Teaching platform; STM32 MCU; PID control

TP273

A

1008-1151(2015)01-0015-03

2014-12-12

廊坊市科学技术研究与发展计划自筹经费项目“基于倒立摆的便捷自动控制教学平台的研究与设计”(2014011033)。

赵燕(1982-),女,燕京理工学院讲师,从事理论及实验教学和科研工作。

猜你喜欢
参数设置陀螺仪中断
基于EMD的MEMS陀螺仪随机漂移分析方法
基于FPGA的中断控制器设计*
我国著名陀螺仪专家——林士谔
跟踪导练(二)(5)
千里移防,卫勤保障不中断
逃生疏散模拟软件应用
微机械陀螺仪概述和发展
蚁群算法求解TSP中的参数设置
MEMS三轴陀螺仪中不匹配干扰抑制方法
RTK技术在放线测量中的应用