(优作)风力摆控制系统

本系统由瑞萨 100LGA 单片机控制模块, 6050 三轴陀螺仪加速度模块,直流风机及其驱
动模块,显示模块,键盘模块,蜂鸣器模块以及风力摆机械结构组成, MPU6050 采集风摆姿
态,单片机处理姿态数据后通过 PID 精确算法调节直流风机以控制风力摆,本系统实现了风
力摆在仅受直流风机为动力控制下快速起摆、画线、稳摆的功能,并能准确画圆,且在受风
力影响后能快速回复画圆状态,双 PID 组成双闭环控制系统具有很好的稳定性。另外本系统
具有良好的人机交互系统,各参数及测试模式可由按键输入并通过显示屏显示,智能性好,
反应速度快。
关键词:瑞萨 100LGA 单片机 MPU6050 PID 算法 人机交互
一、 设计任务
根据题目要求,系统主要实现驱动直流风机,使其按照一定规则运动,包括左右摆动,
可控幅度摆动,定向摆动。圆周运动以及制动。其关键在于对于直流风机的精密控制。系统
方案框图如下:

设计单元理论分析
1. 硬件部分
(A) 100LGA 单片机资源分布图,如图 2 所示。

显示方案实现:
使用 1602 显示屏,能够同时显示 16x02 即 32 个字符。

控制算法分析
本系统采用 PID 算法来控制风机转动的速度,风机开始工作后,姿态采集模块不
断采集当前风力摆姿态角状态,并与之前的状态比较,使得风力摆的运动状态逐渐
趋向于平稳, PID 算法控制由舵机转动角度比例 P 、角度误差积分 I 和角度微分 D 组
成。
其输入 e ( t )与输出 U ( t )的关系为:

风力摆转动角度比例 P :对风力摆角速度进行比例调整,即对舵机转动速度调整,
比例越大,调节速度越快,但不能过大,过大可能造成四风机因工作状态突变而是
摆杆不稳定,
角度误差积分 I :使系统消除稳态误差,提高无差度,加入积分调节可使系统稳
定性下降,动态相应变慢。本系统追求更快更稳完成对风力摆的控制,因此,本系统
对积分调节的需要就非常弱,即保证在不需要时系统不会受到影响。
角度微分 D :微分作用反应风力摆角度的变化率,即角速度,具有预见性,能预
见偏差变化的趋势因此能产生超前的控制作用,在偏差还没有形成之前已被微分调
节作用消除,因此,可以改善系统的动态性能、在微分时间选择合适情况下,减少
调节时间


附录 3-部分程序
/***************************************************************************
********************************************
* DISCLAIMER
* This software is supplied by Renesas Electronics Corporation and is only
intended for use with Renesas products.
* No other uses are authorized. This software is owned by Renesas Electronics
Corporation and is protected under all
* applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS
SOFTWARE, WHETHER EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM
EXTENT PERMITTED NOT PROHIBITED BY
* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED
COMPANIES SHALL BE LIABLE FOR ANY DIRECT,
* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED
TO THIS SOFTWARE, EVEN IF RENESAS OR
* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this software
and to discontinue the availability
* of this software. By using this software, you agree to the additional terms
and conditions found by accessing the
* following link:
* http://www.renesas.com/disclaimer
*
* Copyright (C) 2011, 2014 Renesas Electronics Corporation. All rights reserved.
****************************************************************************
*******************************************/
/***************************************************************************
********************************************
* File Name : r_cg_KeyScan.c
* Version : RL78/G13 V2.02.01.01 [21 Jan 2015]
* Device(s) : R5F100LG
* Tool-Chain : CA78K0R
* Company Name : Getsoon Electronic Co,Ltd. Shanghai,China
* Description : This file implements device driver for TAU module.
* Creation Date: 2015-1-21
****************************************************************************
*******************************************/
#include "r_cg_macrodriver.h"
#include "r_cg_KeyScan.h"
//uint8_t array_key[2];
uint8_t temp = 0;
volatile unsigned char num_keyboard;
uint8_t testvalue;
/***************************************************************************
********************************************
* Function Name: delay
* Description : nop instruction wait.
* Arguments : None
* Return Value : None ****************************************************************************
*******************************************/
void delay(uint8_t t)
{
for(;t>0;t--);
for(;t>0;t--);
}
/***************************************************************************
********************************************
* Function Name: Keyboard_scan
* Description : check key state.
* Arguments : None
* Return Value : None
****************************************************************************
*******************************************/
uint8_t Keyboard_scan(void)
{
num_keyboard=0;
KEY_PORT = 0xff;
P7.3=0;
temp = KEY_PORT;
temp=temp&0xf0;
/*check four lower bits*/
if(temp!=0xf0)
/*first check*/
{
delay(100);
/*delay some time*/
temp = KEY_PORT;
temp=temp&0xf0;
/*check four lower bits*/
if(temp!=0xf0)
/*second check*/
{
temp=KEY_PORT;
temp=temp&0xf0;
switch(temp)
{
case 0xe0: num_keyboard=1; break;
case 0xd0: num_keyboard=5; break;
case 0xb0: num_keyboard=9; break;
case 0x70: num_keyboard=13; break;
}
}
testvalue=num_keyboard;
} KEY_PORT = 0xff;
/*as above*/
P7.2=0;
temp=KEY_PORT;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(100);
temp=KEY_PORT;
temp=temp&0xf0;
if(temp!=0xf0)
{ temp=KEY_PORT;
temp=temp&0xf0;
switch(temp)
{
case 0xe0: num_keyboard=2; break;
case 0xd0: num_keyboard=6; break;
case 0xb0: num_keyboard=10; break;
case 0x70: num_keyboard=14; break;
}
}
}

资源分享

直流风机风力摆控制系统(原理图+PCB+程序源码+论文)基于瑞萨100LGA单片机https://download.csdn.net/download/xcltapestry/89358314

相关推荐
数据库小组2 小时前
2026 年,MySQL 到 SelectDB 同步为何更关注实时、可观测与可校验?
数据库·mysql·数据库管理工具·数据同步·ninedata·selectdb·迁移工具
华科易迅2 小时前
MybatisPlus增删改查操作
android·java·数据库
Kethy__3 小时前
计算机中级-数据库系统工程师-计算机体系结构与存储系统
大数据·数据库·数据库系统工程师·计算机中级
SHoM SSER3 小时前
MySQL 数据库连接池爆满问题排查与解决
android·数据库·mysql
熬夜的咕噜猫3 小时前
MySQL备份与恢复
数据库·oracle
jnrjian4 小时前
recover database using backup controlfile until cancel 假recover,真一致
数据库·oracle
lifewange4 小时前
java连接Mysql数据库
java·数据库·mysql
大妮哟5 小时前
postgresql数据库日志量异常原因排查
数据库·postgresql·oracle
还是做不到嘛\.5 小时前
Dvwa靶场-SQL Injection (Blind)-基于sqlmap
数据库·sql·web安全
不写八个5 小时前
PHP教程004:php链接mysql数据库
数据库·mysql·php