概述
关于数字显示
http://www.openedv.com/forum.php?mod=viewthread&tid=266299&extra=page=1
http://www.openedv.com/forum.php?mod=viewthread&tid=277375&extra=page%3D1
https://blog.csdn.net/vca821/article/details/80710812
32*64
注意!
- 如果用老师给的一些画图历程,颜色为RGB565,但是emwin中的色彩是RGB888!
- 我在mtlab里写了RGB888转化为RGB565的小工具。
关于PID调节
https://blog.csdn.net/ns2942826077/article/details/84895001
PID算法原理 一图看懂PID的三个参数
https://blog.csdn.net/qq_41673920/article/details/84860697
比例(proportion)、积分(integral)、微分(differential)
举个形象的例子,一列即将到站的火车在快要到达站点的时候会切断输出动力,让其凭借惯性滑行到月台位置。假如设置火车以 100km/h 的速度在站前 1km 的地方切断动力开始滑行,那么这个 100 比1 就是比例 P的含义,P 越大,它在站前开始滑行的速度越快。滑行初始速度快的好处就是进站快,但过快的初始滑行速度会导致火车在惯性的作用下冲过月台,这样一来火车不得不进行倒车,但是因为 P 设置过大,倒车以后的滑行也会同样使火车倒过头了,这样一来,就形成了一种反复前行后退的震荡局面。而 P 设置小了,进站速度会变得非常缓慢,进站时间延长。所以设置一个合适的 P 值是 PID 调节的首要任务。由于 P 是一个固定的数值,如果将火车的速度与月台的距离用一个坐标图理想化的表现出来的话,不考虑惯性及外力的作用,这两者的关系呈现出来 P 调节的结果会是一条直斜线,斜线越陡,代表进站时间越短
上图的 P 调节结果只是为了方便理解,在实际中是根本不可能出现的,PID计算的结果也不是这样子。不管怎样,如果只有 P 调节,火车要么设置一个比较低的 P 值以非常缓慢的速度到达目标月台,要么就是过冲了,很难设置在速度与准确度之间求得平衡。所以接下来该是讲解 D 微分的作用的时候了。根据上面举的例子,假如 P 等于 100 的时候,火车刚好能滑行到月台,所耗费的时间是 10 分钟。但是对应一个自稳定性能要求很高的自动化系统来说,这 10 分钟的时间太长了,可不可以加快呢?可以,我们把 P 加大到 120,让火车司机驾驶火车在站前 1km 的地方以 120km/h 的速度开始减速滑行,然后站前 500 米的时候踩一下刹车让速度降为 80km/h,站前 300 米再踩一下刹车让速度降为 50km/h,站前 100米又踩一下刹车,让速度降为 20km/h,站前 10 米让火车在较短的时间内滑行到月台准确的位置,这样一来,进站速度会大大加快,原来需要 10 分钟的时间可能只需要 5 分钟就行了。
这就是 D的作用,我们权且把 D理解为刹车吧,如果仍旧以坐标图形象表达 D对 P 调节的影响,那就是 D 使 P 调节出来的一条直线变成了一条曲线,在 PID 公式中,D 的左右就是改变 P 的曲线,D 的数值越大,对 P 的影响也越大。加入 D 后的曲线前期较陡,进站比较快,后期平缓,使得火车可以平稳准确的进站。
最后讲解 I 的作用,I 是积分,是为了消除误差而加入的参数,假如上面的例子中,火车靠站以后,离最终的目标停止线还是差了 1 米,我们虽然也可以认为这是一次合格的停车,但这毕竟是误差,如果我们认可了这 1 米的误差,那在此基础上火车第二次靠站就会有 2米的误差了,如此以往,误差会越来越大,所以我们要把这个误差记录下来,当第二次进站的时候就可以发挥作用了,如果差了 1 米,火车驾驶员就可以在原来的 PD调节基础上进行I 积分,延迟 1 米输出(或者提前),即 999 米开始减速,最终可以刚刚好到达停止线。如果没有 I 的作用,在多轴飞行器平台上的表现就是飞行器越来越倾斜,最终失去平衡。I 的调节是建立在 PD 的基础上的,PD 的改变都会影响 I 的效果,所以最终的调节步骤就是先调 P 确立灵敏度,接着调节 D调整平稳度,最后调节 I 确定精度。
关于温度传感器18B20
https://wenku.baidu.com/view/c6928e224b35eefdc8d3334f.html
可以利用led来指示水泥电阻工作情况?
Ds18b20的使用 https://blog.csdn.net/qq_37707218/article/details/80529365
15年惦念
modelsim-win64-10.4-se 下载、安装、破解(一次成功)
https://blog.csdn.net/he__yuan/article/details/80560064
15年电赛数字频率计
基于STM32和CPLD的等精度测频设计
http://www.eeworld.com.cn/FPGA/2011/1215/article_2758.html
file:///C:/Users/Nathan/Desktop/TI/全国电赛资料/资料/资料/基于FPGA高分辨率短时间间隔测量的研究与实现.pdf
13年电赛数字频率计
AD9854引脚及功能 - ad9854中文资料汇总
http://www.elecfans.com/yuanqijian/yinjiaotu/20180516678264_2.html
2013年E题简易频率特性测试仪获奖报告(国一)
https://wenku.baidu.com/view/34b5c4bfcc22bcd126ff0c8a.html
简易频率特性测试仪
https://blog.csdn.net/HOOKNET/article/details/82670125
Keil MDK报错:Browse information of one or more files is not available----全面的解决方法。
https://blog.csdn.net/Leon595/article/details/81811383
电赛总结(四)——波形发生芯片总结之AD9854
https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4748332.html
界面借鉴
http://www.elecfans.com/project/47?hphot
USART串口全双工与SPI全双工通信的区别!
https://blog.csdn.net/qq_40814094/article/details/83930467
STM32L0 HAL库 UART 串口读写功能
https://www.cnblogs.com/Mysterious/p/4804188.html
“#if 0/#if 1 … #endif”的作用
https://www.cnblogs.com/MichaelOwen/articles/2128733.html
C语言学习笔记之字符串拼接的2种方法——strcat、sprintf
https://www.cnblogs.com/metaphors/p/9409153.html
ADC采样频率问题,大概是利用cube里看到的进行修改的吧
AD7760转换原理及采集程序设计 (24位Σ-Δ型ADC)
https://blog.csdn.net/skybabi_/article/details/84103582
推挽输出,开漏输出等8中IO模式的总结
https://blog.csdn.net/u013488347/article/details/79105018
FPGA数字滤波器相关
FPGA 学习之路(六)任意分频技术
https://blog.csdn.net/gogomusic/article/details/54767013
https://blog.csdn.net/weixin_38071135/article/list/1?t=1&
FIR滤波器
https://blog.csdn.net/follow_moon/article/details/80376118
IP核(滤波器系数txt文件以逗号或者空格分隔,注意是英文逗号!)
FIR IP core的reset信号在仿真时要先0再1
https://www.cnblogs.com/cofin/p/10220648.html
https://blog.csdn.net/qq_40441390/article/details/83023838
FPGA中的有符号数与无符号数计算
https://blog.csdn.net/mdpsdhr/article/details/61922126
https://blog.csdn.net/maxwell2ic/article/details/80620991
自适应滤波器相关(LMS)
(一)https://www.jianshu.com/p/c110a0743c79
(二)https://www.jianshu.com/p/c9af07132eb6
实际中遇到的问题以及总结:
- 寄存器必须赋初值,虽然不赋初值会默认w为0,但是modelsim仿真会有问题(显示未知x),导致整个仿真失败
- 未知出现在x_in时,移位寄存器也进行工作的话,就会移进x,仿真还会有问题,因此RST要在x_in有值之后,再为1
- 输出的muex位数大于滤波器系数f,所以对muex进行算术右移、最后更新f(新f=上一次对应的旧f+muex)的时候需要截位,如果muex过大,或者移位数不恰当,则会出现符号位被原数据位替代、负变正的现象
目前的疑惑
- 如果真正的AD,得到的是12bits的无符号数吗?但目前程序是12bits的有符号数!如果是,matlab方面程序可能需要改
- 竞赛要求信号和噪声的峰峰值是1-2V,AD采进来信号大概是多大啊?怎么看?要不要发给单片机显示一下?
可能是截取位数的地方需要改,不太对
目前还是不够,注意仿真波形黄线处muex[0]+f[0] = 2046+964,这个值减去2^12后,就等于-1086,说明还是muex还是太大了
新的一天发现新的问题
计算muex时,用的x不是上一时刻对应的旧x
改成这样也不行,这里的x仍旧是clk上升沿新进来的x
最后
以上就是高贵缘分为你收集整理的电子竞赛相关15年电赛数字频率计13年电赛数字频率计FPGA数字滤波器相关的全部内容,希望文章能够帮你解决电子竞赛相关15年电赛数字频率计13年电赛数字频率计FPGA数字滤波器相关所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复