PID Control
PID Control一、适用系统二阶以内线性系统
💡
线性系统需满足:
(1)齐次性
(2)叠加性
二、控制系统概述1. 开环控制系统
本质:没有眼睛的控制器。控制器发出指令,系统照做,但不会根据实际结果修正。
优点:简单、快缺点:不抗扰、不自适应典型例子:微波炉按 30 秒就 30 秒,不会因为食物没热透自动再来一轮。
2. 前馈控制系统
本质:提前补偿扰动。
它根据已知模型,把扰动“抵消”掉,让输出不被影响。
优点:快、超前
缺点:模型错了就全错
常出现在机械臂、飞控里,比如提前补偿重力。
3. 单闭环控制系统
本质:系统终于安装了眼睛。控制器根据误差修正指令,有抗扰能力。
缺点:慢于前馈,有滞后优点:鲁棒、可靠这是 PID 最经典的应用场景。
4. 双闭环控制系统
典型结构:外环调慢变量,内环调快变量。
比如伺服系统:位置环外 → 速度环内。
优势:提高整体动态性能
双环能让系统像“加了大脑和小脑”,一个掌方向,一个掌姿态。
5. 前馈-反馈复合控制系统
喻为“预测 + 修正”双保险。前馈负责提前补偿,反馈负责兜底。
在工业控制里非常常见,如电机抗负载扰动场景。
三、 ...
MINI_OSCILLOGRAPH
MINI_OSCILLOGRAPH基本参数
通道
同步双通道
采样率/带宽
每通道2MSPS/100KHz
输入范围
±10mV - ±15V
输入阻抗
1MΩ
1 模拟信号采集:STM32H7支持三路ADC,分别是ADC1,ADC2和ADC3。其中ADC1和ADC2可以组成双ADC模式,ADC3是独立的。
2 模拟信号的输出:STM32H750 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输出型的 DAC。STM32H7 只有一个 DAC,但有两个独立的通道,这里使用DAC_OUT1连接比较器与定时器捕获配合作为触发功能。
3 ADC采集信号的处理:从ADC采集到的信号可以获取到频率、峰峰值、波形和频谱图。
ADC的数据采集刚好使用DAC_OUT1与比较器和TIM2的触发功能搭配,当TIm触发就会获取相应的波形频率,不触发就直接采集,采集完成后对ADC获取的数据进行相应的计算获得峰峰值和波形和频谱图。
4 屏幕的刷新:屏幕选择的是SPI通信的LCD(驱动为ST7789V,中景园电子),使用DMA(直接内存访问)来 ...
K210摄像头学习笔记
一、启用并初始化摄像头代码实例:import sensor, lcd
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames()
lcd.init(freq=15000000)
while(True):
lcd.display(sensor.snapshot())
引入了对库的使用
import sensor, lcd:首先是将sensor, lcd两个内置库进行导入
sensor.reset():初始化摄像头
如果初始化失败要检查硬件损坏和兼容的问题;
sensor.set_pixformat(sensor.RGB565): 设置摄像头为RGB565格式
默认都是用RGB565即可
sensor.run(1):摄像头启动!
可省略,因为完成前三项的设置后,摄像头会自动启动
sensor.skip_frames():skip(跳过),用于跳过摄像头刚启动时的不稳定画面
l ...
VScode中Platformio的library界面卡死在loading...的解决办法
‘Platforms: Registry PIO Core Call Error: HTTPClientError:’ 解决方法
检查防火墙是否阻止80/443 端口的服务
在控制面板中依次点击 系统和安全/Windows Defender 防火墙,然后在左侧菜单中点击“高级设置”进入高级安全 Windows Defender 防火墙,点击“入站规则”在右侧操作栏选择“新建规则…”
矩形边缘识别+顶角坐标获取(摄像头视觉)
这篇文章主要介绍K210、V831、OpenMV的部分用法,以及心得体会K210
例程:
rectangles = []
for r in img.find_rects(threshold=10000):
rectangles.append(r)
img.draw_rectangle(r.rect(), color=(255, 0, 0))
corners = r.corners() # 获取矩形的四个顶角坐标
corners = sort_corners_clockwise(corners)
for i, p in enumerate(corners):
img.draw_circle(p[0], p[1], 5, color=(0, 255, 0))
print("矩形顶角{}坐标:".format(chr(ord('A')+i)), p[0], p[1])
rectangles = []:这是一个空列表,用于存储找到的矩形对象。
...




