摘要
压电执行器动态刚度是特定频率、负载、位移幅值和边界条件下,力变化与位移变化的频域比值。它不能用一条静态力位移曲线代替,也不能把驱动器电流限值直接当成执行器刚度。
工程验证应固定安装和预紧条件,在多个频率点施加小幅正弦扰动,同步采集工作端力和位移,计算幅值比与相位差,并分别报告静态刚度、动态刚度和闭环等效刚度。本文代码为可运行的教学分析示例,不代表任何产品实测指标。
1. 静态刚度、动态刚度和闭环等效刚度
| 静态刚度 | 准静态力变化除以位移变化 | 加载速率、预紧、摩擦和位移范围 |
| 动态刚度 | 同一频率下力和位移交流分量的幅值比 | 频率、激励幅值、相位、负载和安装 |
| 闭环等效刚度 | 控制器参与后工作端的扰动响应特性 | 传感器位置、控制带宽、延迟和限幅 |
| 结构刚度 | 安装件、柔性铰链和夹具对力位移的贡献 | 边界约束、接触、偏载和装配重复性 |
2. 测试架构与信号链
动态刚度测试同时需要力通道、位移通道和同步采样。
3. 频率扫描与数据处理流程
4. 软件、硬件与测试条件
| 执行器 | 型号和版本、驱动波形、预紧方式、负载、安装边界和工作温度 |
| 力通道 | 力传感器量程、灵敏度、校准状态、安装刚度和采样率 |
| 位移通道 | 传感器类型、测量基准、带宽、分辨率和工作端位置 |
| 激励与采集 | 频率范围、激励幅值、采样率、同步时钟、滤波和窗口长度 |
| 软件 | Windows 11 64位,Python 3.12.13,仅使用csv、math和statistics标准库 |
| 统计口径 | 每个频点周期数、幅值估计方法、重复次数、均值、标准差和异常剔除规则 |
5. Python动态刚度分析代码
CSV列名为 case_id、frequency_hz、force_amplitude_n 和 displacement_amplitude_um。代码计算动态刚度,单位为 N/um,并输出每个频点的结果。输入数据是教学数据。
python dynamic_stiffness.py –self-test
python dynamic_stiffness.py stiffness_data.csv
from __future__ import annotations
import argparse
import csv
import json
import math
from pathlib import Path
FIELDS = ("frequency_hz", "force_amplitude_n", "displacement_amplitude_um")
def number(value: str, field: str, line: int) –> float:
try:
result = float(value)
except (TypeError, ValueError) as exc:
raise ValueError(f"invalid {field} at line {line}") from exc
if not math.isfinite(result):
raise ValueError(f"non-finite {field} at line {line}")
return result
def load(path: Path):
with path.open("r", encoding="utf-8-sig", newline="") as handle:
reader = csv.DictReader(handle)
required = {"case_id", *FIELDS}
missing = required – set(reader.fieldnames or [])
if missing:
raise ValueError(f"missing columns: {sorted(missing)}")
rows = []
for line, raw in enumerate(reader, start=2):
row = {"case_id": raw["case_id"]}
for field in FIELDS:
row[field] = number(raw[field], field, line)
rows.append(row)
if not rows:
raise ValueError("CSV contains no rows")
return rows
def analyze(row):
displacement = row["displacement_amplitude_um"]
if displacement <= 0:
raise ValueError("displacement_amplitude_um must be positive")
return {"case_id": str(row["case_id"]), "frequency_hz": row["frequency_hz"], "dynamic_stiffness_n_per_um": row["force_amplitude_n"] / displacement}
def self_test():
rows = [
{"case_id": "F10", "frequency_hz": 10.0, "force_amplitude_n": 0.50, "displacement_amplitude_um": 0.10},
{"case_id": "F100", "frequency_hz": 100.0, "force_amplitude_n": 0.60, "displacement_amplitude_um": 0.10},
{"case_id": "F1000", "frequency_hz": 1000.0, "force_amplitude_n": 0.80, "displacement_amplitude_um": 0.10},
]
result = [analyze(row) for row in rows]
expected = (5.0, 6.0, 8.0)
for item, target in zip(result, expected):
assert abs(item["dynamic_stiffness_n_per_um"] – target) < 1e-12
print("SELF_TEST_OK")
print(json.dumps(result, ensure_ascii=False, indent=2))
def main():
parser = argparse.ArgumentParser(description="Analyze piezo actuator dynamic stiffness")
parser.add_argument("csv_path", nargs="?", type=Path)
parser.add_argument("–self-test", action="store_true")
args = parser.parse_args()
if args.self_test:
self_test()
elif args.csv_path is None:
parser.error("csv_path is required")
else:
print(json.dumps([analyze(row) for row in load(args.csv_path)], ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()
代码只计算力幅值除以位移幅值,不计算相位、不做传感器校准,也不替代有限元分析或产品规格验证。
6. 教学结果与曲线解释
自检输入在10 Hz、100 Hz和1000 Hz分别给出0.50 N、0.60 N和0.80 N的力幅值,位移幅值均为0.10 um,得到5.0、6.0和8.0 N/um。它只用于验证代码计算链路,不代表任何产品的动态刚度。
| 10 Hz | 0.50 N | 0.10 um | 5.0 N/um | 教学输入 |
| 100 Hz | 0.60 N | 0.10 um | 6.0 N/um | 教学输入 |
| 1000 Hz | 0.80 N | 0.10 um | 8.0 N/um | 教学输入 |
动态刚度曲线必须标注频率、激励幅值、负载和数据属性。
7. 常见失效原因
- **把静态刚度当动态刚度:**频率升高后,材料、结构和测量链的相位都会变化。
- **力和位移不在同一工作端:**夹具变形或接触间隙会把结构误差混入结果。
- **传感器带宽不足:**力通道或位移通道的带宽不足,会造成幅值衰减和相位偏差。
- **激励幅值过大:**迟滞、非线性或碰撞会破坏小信号动态刚度假设。
- **采样率和同步不当:**不同步采样会使力位移相位估计失真。
- **闭环控制未单独记录:**控制器增益和延迟会改变工作端等效刚度,不能归因于陶瓷本体。
8. 常见问题
8.1 动态刚度和谐振频率是什么关系
两者相关但不是同一个指标。谐振附近幅值和相位变化明显,动态刚度可能快速变化,必须结合频响曲线判断。
8.2 动态刚度可以用阻塞力计算吗
不能直接替代。阻塞力是特定边界下的静态或准静态指标,动态刚度需要频域力位移比。 
8.3 为什么要控制位移幅值
小幅激励更接近线性化条件。幅值变化后,迟滞、预紧和接触非线性可能使结果发生变化。
8.4 闭环压电平台的动态刚度怎么定义
应明确扰动输入、控制器状态、传感器基准和工作端输出。闭环结果是系统等效特性,不等同于执行器本体刚度。
8.5 动态刚度单位为什么是N/um
因为力幅值用N、位移幅值用um。换算到N/m时要明确单位转换,不能混用。 
8.6 频率扫描一定要使用正弦信号吗
不一定,也可用随机或多正弦激励,但数据处理需说明激励谱、窗函数、频率分辨率和相干性。
8.7 传感器噪声会怎样影响结果
当位移幅值接近噪声底时,刚度比值会被放大。应先做静止噪声和空载基线测试。
8.8 教学曲线能否作为选型依据
不能。选型需要具体型号、负载、预紧、温度、频率范围和实测或规格书数据。
9. 结论
压电执行器动态刚度测试的关键,是在明确的频率、负载、预紧、激励幅值和工作端测量基准下,同步获取力和位移。先验证传感器带宽与同步,再计算幅值比和相位,最后区分器件本体、安装结构与闭环控制的贡献。 
本文代码、表格和曲线均为可复现教学示例,不代表鸿芯微控或其他具体产品的实测性能。正式发布动态刚度数据前,必须补充仪器、采样率、样本数、环境、校准和原始记录。
网硕互联帮助中心





评论前必须登录!
注册