(优作)风力摆控制系统

     本系统由瑞萨 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单片机icon-default.png?t=N7T8https://download.csdn.net/download/xcltapestry/89358314

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/15736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RHCSA —— 第一节 (简介)

目录 一、红帽 RedHat Linux 二、计算机 三、操作系统 四、Linux 入门 一、红帽 RedHat Linux RHCSA英文全称:Red Hat Certified System Administrator ,中文全称:红帽认证系统管理员 RHCE英文全称:Red Hat Certified Engi…

TypeScript 的基础类型

1. 布尔类型(Boolean) 布尔类型表示逻辑上的真或假。在 TypeScript 中,布尔类型只有两个可能的值:true 和 false。例如:typescriptlet isDone: boolean false;### 2. 数字类型(Number)数字类型…

软件系统部署方案(Word原版文件)

一、 引言 (一) 编写目的 二、 外部设计 (一) 标识符和状态 (二) 约定 1. 数据库涉及字符规范 2. 字段命名规范 (三) 专门指导 (四&#…

C++初阶之模板进阶

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.非类型模板参数 二.模板的特化 2.1引入 2.2全特化 2.3…

K-近邻算法(KNN)基础详解

K-近邻算法(K-Nearest Neighbors,简称KNN)是机器学习中一种简单而有效的监督学习方法,用于分类和回归任务。其核心思想基于“物以类聚,人以群分”的原则,通过计算待分类对象与已知数据集中的样本点之间的距离,找出距离最近的K个邻居,然后根据这些邻居的类别或数值来预测…

八、函数和数组

8.1 函数 函数几乎是学习所有的程序设计语言时都必须过的一关。对于学习过其他的程序语言的用户来说,函数可能并不陌生。但是Shell中的函数与其他的程序设计语言的函数有许多不同之处。 8.1.1什么是函数 通俗地讲,所谓函数就是将一组功能相对独立的代码…

数组中的第K个最大元素 - LeetCode 热题 74

大家好!我是曾续缘😝 今天是《LeetCode 热题 100》系列 发车第 74 天 堆第 1 题 ❤️点赞 👍 收藏 ⭐再看,养成习惯 数组中的第K个最大元素 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意&#…

记忆力和人才测评,如何提升记忆力?

什么是记忆力? 如何通俗意义上的记忆力?我们可以把人的经历、经验理解成为一部纪录片,那么已经过去发生的事情,就是影片之前的情节,对于这些信息,在脑海里,人们会将其进行处理和组合&#xff…

SAP-CO成本控制概念之标准成本

“ 本篇介绍:标准成本的会计概念,标准成本的制定标准;通过结合会计标准成本的概念与SAP CO标准成本估算功能,更具象化的了解SAP如何实现标准成本管理,为后续学习SAP实际成本核算打下基础。” 01 — 背景需求 SAP实施…

2024年春招高薪职业报告:大模型算法研究员领跑

近日,脉脉高聘发布的研究报告《2024春招高薪职业和人才洞察》(以下简称《洞察》)显示,2024年一季度,大模型算法研究员新发岗位以平均月薪6.4万元领跑高薪岗位榜。受人才培养周期和技术门槛影响,人工智能行业…

机器学习大模型驱动:未来的趋势与应用

文章目录 📑前言一、什么是机器学习大模型?1.1 大模型的特点1.2 大模型的技术基础 二、大模型的技术实现2.1 Transformer 架构2.2 预训练和微调2.3 模型并行和数据并行 三、大模型的应用场景3.1 自然语言处理(NLP)3.2 计算机视觉&…

Unity功能——物体随鼠标朝左/右旋转(带角度限制)

功能简介: unity的3d场景中,设置3d物体和2dUI,随鼠标移动,向左/右旋转,带角度限制; 1、获取鼠标位置 float mouseX Input.GetAxisRaw("Mouse X") float mouseX Input.GetAxisRaw("Mo…

vue3 使用css实现一个弧形选中角标样式

文章目录 1. 实现效果2. 实现demo 在前端开发中,ui同学经常会设计这样的样式,用于区分选中的状态 下面抽空简单些了一下,记录下,后面直接复制用 1. 实现效果 实现一个菜单切换,右下角有个角标的样式 2. 实现demo 主要…

Java进阶学习笔记20——枚举

认识枚举: 枚举是一种特殊的类。 枚举类的格式: 说明: 第一行是罗列枚举的对象名称。只能写合法的标识符(名称),多个名称用逗号隔开。 这些名称本质上都是常量,每个变量都会记住枚举类的一个…

Optica数据库 (原OSA美国光学学会电子期刊)文献去哪里查找下载

Optica(OSA)数据库涵盖了光学和光子学理论研究和实际应用的各个领域,包括:光学设备、光学成像、光纤通信、分析方法、光通信、光纤、半导体激光、光传输、光学系统、计量学、带宽、量子电子学。 该库包括18种学会期刊&#xff08…

MVCC 原理分析、MySQL是如何解决幻读的

文章目录 一、前言回顾1.1 事务四大特性ACID1.2 并发事务问题1.3 事务隔离级别 二、MVCC2.1 为什么使用MVCC2.2 基本概念——当前读、快照读、MVCC2.2.1 当前读2.2.2 快照读2.2.3 MVCC 2.3 隐藏字段—— TRX_ID、ROLL_PTR2.4 undo log2.4.1 介绍2.4.2 版本链 2.5 Read View读视…

/audio~ 前端音浪来袭:HTML音频视频标签的深度探索

&#x1f3a5;/audio~ 前端音浪来袭&#xff1a;HTML音频&视频标签的深度探索 &#x1f31f;音频标签 <audio>&#xff1a;让网页唱起歌来基础搭建&#xff1a;让音乐飘扬进阶魔法&#xff1a;自定义音频体验安全与性能并重 &#x1f39e;️视频标签 <video>&a…

python写接口性能测试

import time import requestsdef measure_response_time(api_url):try:start_time time.time()response requests.get(api_url, timeout10) # 设置超时时间为10秒end_time time.time()response_time end_time - start_timeprint(f"接口 {api_url} 的响应时间为&#…

Oracle如何定位消耗资源最多的sql

Oracle中定位消耗资源最多的SQL语句是性能调优的重要步骤之一。以下是一些方法和步骤&#xff0c;可以帮助你定位这些SQL语句&#xff1a; 使用Oracle的自动工作负载存储库&#xff08;AWR&#xff09;&#xff1a; AWR是Oracle提供的一个性能诊断工具&#xff0c;它定期收集…

读书笔记-Java并发编程的艺术-第1章 并发编程的挑战

文章目录 1.1 上下文切换1.1.1 多线程一定快吗1.1.2 如何减少上下文切换 1.2 死锁1.3 资源限制的挑战 1.1 上下文切换 即时是单核处理器也支持多线程执行代码&#xff0c;CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给多个线程的时间&#xff0c;因为时间…