一、任务
设计并制作一个同轴电缆长度与终端负载检测装置(以下简称“装置”),如图1所示。待测电缆始端通过电缆连接头与装置连接,电缆终端可开路或接入电阻、电容负载。设置“长度检测”和“负载检测”两个按键,用以选择和启动相应功能。负载电阻值范围:10Ω~30Ω,电容值范围:100pF~300pF。装置由不大于6V的单电源供电。
图 1 同轴电缆长度及终端负载检测装置示意图
二、要求
1. 基本要求
(1)装置能够显示工作状态、电缆长度、负载类型、负载参数,显示格式见表 1。
表1 装置显示格式
(2)电缆长度 1000cm≤L≤2000cm、终端开路,按“长度检测”键启动检测,装置能够检测并显示电缆长度 L,相对误差的绝对值不大于 5%,一次检测时间不超过 5s
(3)终端开路条件下完成电缆长度检测后,保持L不变,在终端接入电阻、电容中的一种负载,按“负载检测”键启动检测,装置能够正确判断并显示负载类型,一次检测时间不超过 5s。
2. 发挥部分
(1) 提高电缆长度检测精度:电缆长度 1000cm≤L≤2000cm、终端开路,电缆长度检测相对误差的绝对值不大于 1%,一次检测时间不超过 5s。
(2) 终端开路条件下完成长度检测后,保持 L 不变,在终端接入电阻、电容中的一种负载,按“负载检测”键启动检测,装置在正确判断负载类型的基础上检测并显示负载的电阻、电容值,相对误差的绝对值不大于 10%,一次检测时间不超过 5s。
(3) 减小电缆长度检测盲区:终端开路时,在满足电缆长度检测相对误差的绝对值不大于 1%、一次检测时间不超过 5s 的条件下,减小能够检测的电缆长
度至 L≤100cm。
(4)其他。
三、说明
(1) 装置应包括信号源和测量处理电路两部分。根据测量方法采用合适的激励信号,在电缆始端测量入射、反射等信号并进行处理,计算所需检测的参数。
(2) 被测同轴电缆由参赛队自备并在参加测试时带入现场,事先需自行测量电缆总长度,至少一根电缆长度不小于2000cm。电缆始端所接插头类型自定,终端可在芯线和屏蔽层间方便地接入负载。电缆应允许盘绕,测试过程中除按指定长度截短电缆和接入指定负载外,不允许再改变电缆的其他状态。
(3) 作品测评过程中,除按“长度检测”、“负载检测”一键启动相应功能外,不允许对装置进行其他任何调整和操作。
(4) 题目中检测相对误差的绝对值𝛿 = |(测量值−实际值)/实际值 | × 100%,电阻、电容的实际值使用 LCR 测试仪测定。
(5) 发挥部分(3)能检测的最小长度 L≤100cm 得满分,L≥1000cm 本项不得分。测试时由参赛队指定测试长度,在此长度附近测量并进行精度验证,电缆长度测量相对误差的绝对值不大于 1%、一次检测时间不超过 5s 认为满足要求,并认定该长度有效。
(6) 作品中不得使用测距传感器及摄像头。
该设计方案用于测试和显示电缆长度及其终端负载特性,系统由测量模块、显示模块和传感通信模块组成。
测量模块:
显示模块:
控制和处理模块:
精度和效率:
电磁兼容性:
电缆长度测量精度:
负载检测和判定:
信号生成电路:
信号接收和放大电路:
A/D转换和数据处理电路:
MCU:
信号处理IC:
显示模块:
如果我们选择采用MSP430来实现电缆长度和负载检测功能,可以使用以下C代码片段进行基本配置和数据处理:
#include <msp430.h>
void configureADC() {
ADC10CTL1 = INCH_0 + ADC10DIV_3; // 输入通道A0,时钟分频器
ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON + ADC10IE; // 参考电压,采样时间,ADC使能和中断
}
void configureLCD() {
// LCD配置代码,如初始化、清屏等
}
void main(void) {
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器
configureADC();
configureLCD();
__enable_interrupt(); // 使能全局中断
while (1) {
ADC10CTL0 |= ENC + ADC10SC; // 开始ADC转换
__bis_SR_register(CPUOFF + GIE); // 进入低功耗模式
int adc_result = ADC10MEM; // 读取ADC结果
// 根据ADC结果计算长度或负载特性
float cable_length = calculate_length(adc_result);
display_length(cable_length);
}
}
// ADC转换完成中断服务程序
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void) {
__bic_SR_register_on_exit(CPUOFF); // 退出低功耗模式
}
float calculate_length(int adc_value) {
// 根据校准公式计算电缆长度
return (float)adc_value * CALIBRATION_FACTOR;
}
void display_length(float length) {
// 显示长度值到LCD屏幕
lcd_print(length);
}
本题目考察知识点:
电缆长度测量:
电容负载检测:
负载类型判定:
自动检测显示:
快速响应时间: