一、任务
设计并制作一个液体点滴速度监测与控制装置,示意图如右图所示。
二、要求
1、基本要求
(1)在滴斗处检测点滴速度,并制作一个数显装置,能动态显示点滴速度(滴/分)。
(2)通过改变h2控制点滴速度,如右图所示;也可以通过控制输液软管夹头的松紧等其它方式来控制点滴速度。点滴速度可用键盘设定并显示,设定范围为 20~150(滴/分),控制误差范围为设定值± 10% 1 ± 滴。
(3)调整时间≤3 分钟(从改变设定值起到点滴速度基本稳定,能人工读出数据为止)。
(4)当h1降到警戒值(2~3cm)时,能发出报警信号。
2、发挥部分
设计并制作一个由主站控制 16 个从站的有线监控系统。16 个从站中,只有一个从站是按基本要求制作的一套点滴速度监控装置,其它从站为模拟从站 (仅要求制作一个模拟从站)。
(1)主站功能:
a.具有定点和巡回检测两种方式。
b.可显示从站传输过来的从站号和点滴速度。
c.在巡回检测时,主站能任意设定要查询的从站数量、从站号和各从站的点滴速度。
d.收到从站发来的报警信号后,能声光报警并显示相应的从站号;可用手动方式解除报警状态。
(2)从站功能:
a.能输出从站号、点滴速度和报警信号;从站号和点滴速度可以任意设定。
b.接收主站设定的点滴速度信息并显示。
c.对异常情况进行报警。
(3)主站和从站间的通信方式不限,通信协议自定,但应尽量减少信号传输线的数量。
(4)其它。
三、说明
1、控制电机类型不限,其安装位置及安装方式自定。
2、储液瓶用医用 250 毫升注射液玻璃瓶(瓶中为无色透明液体)。
3、受液瓶用 1.25 升的饮料瓶。
4、点滴器采用针柄颜色为深蓝色的医用一次性输液器(滴管滴出 20 点蒸馏水相当于1ml±0.1ml)。
5、赛区测试时,仅提供医用移动式点滴支架,其高度约 1.8m,也可自带支架;测试所需其它设备自备。
6、滴速夹在测试开始后不允许调节。
7、发挥部分第(2)项从站功能中,c 中的“异常情况”自行确定。
GPT-4o给出的设计方案:
检测液体点滴速度
微控制器控制
异常滴速报警
通过光电传感器检测液滴,通过MCU进行实时计算和控制,简单易实现。系统集成光电传感、微控制和电动机控制,可实时有效地监测和调节点滴速度。
检测精度和范围
显示和报警
传感器电路
信号处理和控制
驱动电路
光电传感器CNY70
MCU STM32
电动机驱动模块L298N
以下是基本滴速计算和调节的C代码示例:
#include "stm32f4xx_hal.h"
// 定义引脚
#define SENSOR_PIN GPIO_PIN_0
#define MOTOR_PIN GPIO_PIN_1
// 初始化
void setup() {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_ADC_Init();
MX_TIM_PWM_Init(); // 用于电动机控制
LCD_Init(); // 初始化显示
}
// 检测滴速
int read_drip_speed() {
static uint32_t last_time = 0;
uint32_t current_time = HAL_GetTick();
uint32_t time_interval = current_time - last_time;
last_time = current_time;
if (time_interval > 0) {
return 60000 / time_interval; // 滴速 = 60000 ms/min / 时间间隔(ms)
}
return -1;
}
// 调整电动机速度
void adjust_motor_speed(int speed) {
uint32_t pwm_value = (speed - 30) * 100 / 120; // 简单线性调节
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pwm_value);
}
void loop() {
if (HAL_GPIO_ReadPin(GPIOA, SENSOR_PIN) == GPIO_PIN_RESET) { // 传感器检测到液滴
int drip_speed = read_drip_speed();
if (drip_speed != -1) {
LCD_DisplayNumber(drip_speed);
if (drip_speed < 30 || drip_speed > 150) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 报警
} else {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
}
adjust_motor_speed(drip_speed);
}
}
HAL_Delay(100);
}
int main(void) {
setup();
while (1) {
loop();
}
}
这个题目考察的知识点:
本题考察液体点滴速度监测与控制的相关知识,具体包括以下几个方面: