(优作)风力摆控制系统

本系统由瑞萨 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

相关推荐
AI 嗯啦3 小时前
SQL详细语法教程(七)核心优化
数据库·人工智能·sql
ClouGence3 小时前
三步搞定!GaussDB 实时数据入仓
数据库·后端
郭京京3 小时前
mongodb基础
mongodb·go
鼠鼠我捏,要死了捏5 小时前
生产环境MongoDB分片策略优化与故障排查实战经验分享
数据库·mongodb·分片
KaiwuDB6 小时前
KWDB 分布式架构探究——数据分布与特性
数据库·分布式
笨蛋不要掉眼泪6 小时前
Spring Boot集成腾讯云人脸识别实现智能小区门禁系统
java·数据库·spring boot
Leiwenti7 小时前
MySQL高阶篇-数据库优化
数据结构·数据库·mysql
你的电影很有趣7 小时前
lesson44:Redis 数据库全解析:从数据类型到高级应用
数据库·redis·缓存
NineData7 小时前
2025 DTCC大会来了,NineData联合创始人周振兴将分享《AI重塑数据库管理模式》的主题演讲
数据库
NineData7 小时前
NineData亮相2025中国数据库技术大会,并荣获《年度优秀技术团队奖》
数据库