目录
一、引言
为确保消费者体验及产品长期运行的稳定性,设计有效地上下电压力测试方案至关重要。通过测试电子产品在频繁上下电过程中的表现,可及时发现潜在问题,确保产品的可靠性。因此,开展严谨、稳重的上下电压力测试,有助于维护电子产品的稳定性,并提升用户体验。
上下电压力测试是一种严谨、稳重的测试方法,它旨在模拟电子产品在实际使用过程中可能遇到的各种极端情况。这种测试通过施加一定的电应力,模拟频繁的上下电过程,以检测产品在长时间运行后的性能表现。它通过对电子产品进行多次上下电操作,观察其是否能够正常工作,是否有故障或损坏。上下电压力测试的目的是模拟电子产品在实际使用中可能遇到的各种电源波动和中断的情况,评估其对电源的适应性和稳定性。
二、测试方案步骤
设计和实施上下电压力测试方案的一般步骤如下:
1、确定测试目标和测试标准,根据电子产品的类型、功能和使用场景,确定需要进行上下电压力测试的部件或模块,以及测试的次数、频率、电压范围等参数。
2、选择测试控制方式,根据测试目标和测试标准,选择合适的测试控制方式,比如手动控制、定时控制、程序控制等,以及相应的测试控制器和测试软件。
3、搭建测试环境和测试系统,根据测试控制方式,搭建测试环境和测试系统,包括测试电源、测试控制器、测试软件、测试对象、测试线路、测试仪器等,确保测试系统的安全和稳定。
4、进行测试和记录数据,根据测试方案,对测试对象进行上下电压力测试,观察并记录测试过程中的各种数据,比如电压、电流、温度、功率、信号等,以及测试对象的工作状态和异常情况。
5、分析数据和评估结果,根据测试数据,分析测试对象的性能和可靠性,评估测试对象是否满足测试标准和设计要求,是否存在潜在的缺陷或风险,是否需要进行改进或优化。
三、设计方案介绍
3.1 设计思路
以下是三种常见的上下电压力测试方案,用于有效地检测电子产品可能出现的问题点:
1、跳变沿检测法:在此测试方案中,我们将对特定引脚的边沿信号进行检测,并通过串口打印口进行输出确认。如果检测到该IO口上电电平异常,程序将在此位置卡顿,此时我们将分析产品输出log以及芯片主要电源电压。
2、字符串匹配法:串口字符串匹配法是一种常见测试方法,用于确认产品是否正常运行。在此方法中,测试板会搜索并匹配固定的字符串。一旦匹配成功,即认为产品运行正常;否则,则认为产品出现异常。这是一种相对直接且有效的测试方法,广泛用于硬件和软件的故障排除和调试。
3、继电器控制法:使用继电器控制法进行压力测试时,需要将测试板与继电器相连,并按照预设的程序控制继电器的开启和关闭时间。例如,进行过压测试时,可以通过这种方式模拟电源电压或IO阻抗出现异常的情况,并进行重复测试。在严谨的测试过程中,需要保证测试次数达到几千甚至上万次,以确认电子产品的稳定性和可靠性。
3.2 实现方法说明
3.2.1 测试板原理框图
测试板3D演示图
该上下电控制电路采用了MOS管进行控制,其中PMOS负责控制上电,而NMOS则负责控制下电。为了实现快速放电,下电部分加入了一个小电阻。测试板通过PWR_EN使能脚来控制上下电操作,同时该输入接口兼容多种不同类型的连接。
3.2.2 跳变沿检测法
3.2.2.1 接线方式
GND → 接待测板GND
DUT3V3 → 接待测板VCC
P32 → 接待测板VCC,用于检测待测板电源电压
P33 → 接待测板上电成功初始化信号引脚
3.2.2.2 检测流程
3.2.2.3 参考代码
该代码以状态机的形式实现,主要包含开机、检测边沿信号、放电和关机四个状态。在开机状态下,设备进行自检并准备接收边沿信号。在检测到边沿信号时,设备会进入放电状态,执行相应的操作。完成操作后,设备会进入关机状态,关闭电源并等待下一次开机。
void mos_app_handle(void)
{
uint8_t buf[30];
int res = -1;
switch(sys_state)
{
case POWER_ON_STATE: /*开机*/
POWER_ONOFF_EN = 0;
dut_test_timing = 0;
int1_count = 0;
delay_ms(1);
sys_state = DUT_TEST_STATE;
break;
case DUT_TEST_STATE: /*检测待测模块是否正常启动*/
dut_test_timing++;
if(dut_test_timing < DUT_TIMEOUT_MAX)
{
if(work_mode == WORK_MODE_IO_EDGE)
{
if(int1_flag)
{
int1_flag = 0;
int1_count++;
}
if(int1_count > INT1_NUM_MAX)
{
dut_test_timing = 0;
int1_count = 0;
power_onoff_count++;
memset(buf, 0, sizeof(buf));
sprintf(buf,"mos_time = %ld\r\n",power_onoff_count);
uart1_send_str(buf,strlen(buf));
sys_state = DUT_DISCHARGE_STATE;
}
}
else if(work_mode == WORK_MODE_STR_MATCH)
{
res = uart_str_check();
if(res != -1)
{
res = -1;
dut_test_timing = 0;
power_onoff_count++;
memset(buf, 0, sizeof(buf));
sprintf(buf,"match_time = %ld\r\n",power_onoff_count);
uart1_send_str(buf,strlen(buf));
sys_state = DUT_DISCHARGE_STATE;
}
}
}
else
{
sys_state = DUT_ERROR_STATE;
}
rgb_set(RGB_COLOR_GREEN);
break;
case DUT_DISCHARGE_STATE: /*放电*/
POWER_ONOFF_EN = 1;
delay_ms(1);
adc10_code = Get_ADCResult(10);
dut_vol = ((float)adc10_code/4095.0)*3.3;
if(dut_vol < DUT_VOL_LIMIT)
{
sys_state = POWER_OFF_STATE;
delay_ms(1);
}
else
{
}
rgb_set(RGB_COLOR_BLUE);
break;
case POWER_OFF_STATE: /*关机*/
power_off_count++;
if(power_off_count > POWER_OFF_NUM)
{
power_off_count = 0;
sys_state = POWER_ON_STATE;
}
rgb_set(RGB_COLOR_OFF);
break;
case DUT_ERROR_STATE: /*错误*/
uart1_send_str(" Error! \r\n",sizeof(" Error! \r\n"));
rgb_set(RGB_COLOR_RED);
while(1);
break;
}
}
3.2.3 字符串匹配法
3.2.3.1 接线方式
DUTTXD → 接待测板需要检测的串口TXD
DUTRXD → 接待测板需要检测的串口RXD
GND → 接待测板GND
DUT3V3 → 接待测板VCC
3.2.3.2 检测流程
3.2.3.3 实现代码
int violent_match(char* s, char* p,int slen,int plen)
{
int sLen = slen;
int pLen = plen;
int i = 0;
int j = 0;
while (i < sLen && j < pLen)
{
if (s[i] == p[j])
{
//①如果当前字符匹配成功(即S[i] == P[j]),则i++,j++
i++;
j++;
}
else
{
//②如果失配(即S[i]! = P[j]),令i = i - (j - 1),j = 0
i = i - j + 1;
j = 0;
}
}
//匹配成功,返回模式串p在文本串s中的位置,否则返回-1
if (j == pLen)
return i - j;
else
return -1;
}
3.2.4 继电器控制法
3.2.4.1 接线方式
可以通过串口设置继电器开启和关断的时间,单位:ms
开启时间加上关断的时间为一个周期,次数为重复周期的次数,待测板可以通过连接继电器的常开开关,实现控制其上下电的功能。
3.2.4.2 检测流程
3.2.4.3 实现代码
void relay_app_handle(void)
{
switch(step)
{
case 0:
relay_dev_ctrl(&relay,g_config_data.parm.first_relay_on_time,g_config_data.parm.first_relay_off_time,g_config_data.parm.first_relay_repeats);
step = 1;
break;
case 1:
if(relay_finish_flag)
{
relay_finish_flag = 0;
relay_dev_ctrl(&relay,g_config_data.parm.second_relay_on_time,g_config_data.parm.second_relay_off_time,g_config_data.parm.second_relay_repeats);
step = 2;
}
break;
case 2:
if(relay_finish_flag)
{
relay_finish_flag = 0;
relay_dev_ctrl(&relay,g_config_data.parm.third_relay_on_time,g_config_data.parm.third_relay_off_time,g_config_data.parm.third_relay_repeats);
step = 3;
}
break;
case 3:
if(relay_finish_flag)
{
relay_finish_flag = 0;
step = 0;
relay_count++;
printf("relay_count = %ld\r\n",relay_count);
}
break;
default:
relay_finish_flag = 0;
step = 0;
break;
}
relay_dev_process();
}
四、资料获取
通过点击以下链接,您可以获取上下电压力测试板原理图、源代码以及开发资料。链接地址将为您提供详细的文件资料,以供您进行参考和使用。
如果您在使用过程中遇到任何问题或疑虑,欢迎加我QQ ,一起探讨技术问题,我的QQ号是986571840,加的时候请注明优快云。
上下电压力测试控制板 - 硬创社 (jlc.com)https://x.jlc.com/platform/detail/8819799a609841cca501fa91da5fe7cb
感谢各位用户点赞、分享、在看,这些行为让知识得以更加广泛地传播,从而让更多人受益。
请在转载作品时注明出处,严禁抄袭行为。