【发布时间】:2020-03-16 03:30:20
【问题描述】:
我正在为火箭发动机试验台设计控制器和数据采集单元。该系统需要控制测试台上的多个执行器,并且还能够将收集到的数据传输回主机,团队将在主机上安全地观看实时数据/摄像头馈送。
总体设计要求如下:
- 以 1KHz 从约 15 个模拟传感器采集数据
- 控制测试台上的执行器,包括阀门和点火开关
- 将数据实时传回我们避难所的主机
- 接受来自主机的控制,例如手动阀门驱动、测试序列修改、序列中止等。
在为这个系统设计软件时,我不确定从哪里开始。我正在考虑使用运行频率为 180 MHz 的 STM32 ARM Cortex-M4 处理器。我无法弄清楚我应该如何解决这个问题。我曾考虑使用 RTOS 系统,但根据我所看到的,当您运行它们时它们会产生大量开销,因为调度程序必须运行每个滴答声。我反复考虑的另一个想法是状态机与一些基于计时器的中断相结合,用于读取然后将数据发送回 PC。任何有关如何解决此问题以最小化代码复杂性的建议将不胜感激。谢谢。
编辑: 我被告知要澄清一些有关系统技术规格的事情。
我的执行器包括:
- 6 个螺线管(通过继电器/MOSFET 进行数字控制,每秒切换一次)
- 2 个直流电机(由 PID 回路中的 PWM 输出驱动,需要能够可控地斜坡位置)
- 一个点火器,再次通过继电器/MOSFET 控制
我的传感器包括:
- 8 个压力传感器(模拟电压)
- 4 个热电偶(模拟电压)
- 2 个电机编码器(正交编码器)
- 1 个光传感器(模拟电压)
- 1 个称重传感器(模拟电压)
理想情况下,所有收集到的数据(所有上述传感器)加上一些附加数据(时间戳、电机设置位置、螺线管位置)都会实时流回主机。
【问题讨论】:
-
您似乎会从完全同步的所有事情中受益。读取的是纯模拟电压还是需要用一些数字串行总线戳传感器?这对 CPU 的密集程度在很大程度上取决于您将如何控制阀门。它们是成比例的并且需要PWM吗?你需要用PID等来调节它们吗?您需要向主机传输多少数据?如您所知,没有足够的细节来回答这个问题。 “关于如何解决这个问题以最小化代码复杂性的任何建议”:是的,首先编写技术规范。
-
RTOS 应该更慢,事件驱动或严格定时的主循环方法也可以工作。但我认为这里的关键不是这么快就确定一个目标单片机/品牌。是否不允许过度杀伤,例如 pi-zero?除非这是一些大规模生产的产品,否则成本相当便宜。 180mhz 只是系统时钟 MAX,外围设备可能只是其中的一小部分,而且你有很多,如果有一个主机驱动它,你可以每个传感器有一个 mcu。首先进行系统工程,通信/I/O 是解决方案成功的重要因素。
-
国家仪器,如果这仍然是他们的名字,可能有一个产品你可以插入一个可以轻松处理你需要的数据收集的个人电脑,但毫无疑问,它的成本会超过一个单片机。我相信还有其他品牌提供全系列的现成测试设备。
-
@Lundin 我已经添加了你提到的信息,如果你还有什么想知道的,请告诉我。
-
@old_timer 预算是一个相当大的问题,我认为我们买不起 NI 板,我会调查 PI 零。之所以考虑这个特定的 MCU,是因为我已经有一个开发板,并且我已经使用相同的 MCU 为另一个系统设计了一个类似的 DAQ 系统(虽然不需要执行器或数据流)
标签: arm embedded real-time data-acquisition