关于t3 ADC0内部通道 我看iot开发平台中技术文档提到里的内部通道是11,但是没有写明内部通道的稳压值是多少,麻烦告知一下。
还有为什么adc测试出来的电压好像是adc脚上实际电压的两倍。
请教下关于T3模组ADC0内部通道的问题
请教下关于T3模组ADC0内部通道的问题
Tags:
Re: 请教下关于T3模组ADC0内部通道的问题
目前 T3 ADC0 已经给内部使用了,外部不能使用。我们自己测试没有出现采样值为实际值的2倍情况。 麻烦提供下你们调用adc的代码,我们先看下。
Re: 请教下关于T3模组ADC0内部通道的问题
chaser 2025年 Jul 28日 14:00目前 T3 ADC0 已经给内部使用了,外部不能使用。我们自己测试没有出现采样值为实际值的2倍情况。 麻烦提供下你们调用adc的代码,我们先看下。
SDK版本是3.11.24,用了两个1MΩ电阻分压,并了一个100nf,adc管脚是模组的adc脚。
Code: Select all
#define GPIO_OUT_PIN 24
#define ADC_NUM TUYA_ADC_NUM_0
#define ADC_CHANNEL_BAT 1
#define SAMPLE_COUNT 10
#define STABILIZATION_DELAY_MS 50 // 增加稳定等待时间
#define SAMPLE_INTERVAL_MS 20 // 采样间隔
STATIC INT_T bat_detection(VOID_T) {
TY_OBJ_DP_S obj_dp = {0};
INT32_T adc_samples = 0;
INT32_T total_adc = 0;
// 配置ADC仅使用外部通道
STATIC TUYA_ADC_BASE_CFG_T sg_adc_cfg = {
.ch_list.data = (1 << ADC_CHANNEL_BAT),
.ch_nums = 1,
.width = 12,
.mode = TUYA_ADC_CONTINUOUS,
.type = TUYA_ADC_EXTERNAL_SAMPLE_VOL,
.conv_cnt = 1,
};
// 初始化GPIO控制mos打开采样电路
TUYA_GPIO_BASE_CFG_T out_pin_cfg = {
.mode = TUYA_GPIO_PUSH_PULL,
.direct = TUYA_GPIO_OUTPUT,
.level = TUYA_GPIO_LEVEL_LOW
};
tkl_gpio_init(GPIO_OUT_PIN, &out_pin_cfg);
// 开启MOS管前确保初始状态为低
tkl_gpio_write(GPIO_OUT_PIN, TUYA_GPIO_LEVEL_LOW);
tal_system_sleep(10); // 确保MOS管完全关闭
// 开启MOS管为分压电路供电
tkl_gpio_write(GPIO_OUT_PIN, TUYA_GPIO_LEVEL_HIGH);
// 初始化ADC并注册低功耗管理
tkl_adc_init(ADC_NUM, &sg_adc_cfg);
lpmgr_register(TY_LP_PWM); // 防止低功耗影响采样
// 增加稳定等待时间,确保分压电路稳定(根据1MΩ电阻和电容调整)
tal_system_sleep(500); // 初始稳定时间
// 多次采样取平均
for (INT_T i = 0; i < SAMPLE_COUNT; i++) {
// 采样前额外稳定时间(针对1MΩ大电阻)
tal_system_sleep(STABILIZATION_DELAY_MS);
tkl_adc_read_single_channel(ADC_NUM, ADC_CHANNEL_BAT, &adc_samples);
total_adc += adc_samples;
TAL_PR_DEBUG("Sample %d: %d", i+1, adc_samples);
tal_system_sleep(SAMPLE_INTERVAL_MS);
}
INT32_T avg_adc = total_adc / SAMPLE_COUNT;
// 清理资源 - 先关闭MOS管再释放ADC
tkl_gpio_write(GPIO_OUT_PIN, TUYA_GPIO_LEVEL_LOW);
//lpmgr_unregister(TY_LP_PWM);
tkl_adc_deinit(ADC_NUM);
lpmgr_unregister(TY_LP_PWM); // 防止低功耗影响采样
// 计算电压(电源3.3V 假设为参考电压,12位ADC)
float voltage = avg_adc* 3.3f / 4096 ;
}
Re: 请教下关于T3模组ADC0内部通道的问题
chaser 2025年 Jul 28日 14:00目前 T3 ADC0 已经给内部使用了,外部不能使用。我们自己测试没有出现采样值为实际值的2倍情况。 麻烦提供下你们调用adc的代码,我们先看下。
部分日志
[01-01 08:00:00 ty D][411][tuya_app_main.c:461] Sample 1: 3522
tkl_adc_to_pin_func adc:1,25
[01-01 08:00:00 ty D][411][tuya_app_main.c:461] Sample 2: 3552
temp_code:32 - adc_code:543 - adc_trend:[14]:556->[15]:533
tkl_adc_to_pin_func adc:1,25
[01-01 08:00:01 ty D][411][tuya_app_main.c:461] Sample 3: 3518
tkl_adc_to_pin_func adc:1,25
[01-01 08:00:01 ty D][411][tuya_app_main.c:461] Sample 4: 3516
tkl_adc_to_pin_func adc:1,25
[01-01 08:00:01 ty D][411][tuya_app_main.c:461] Sample 5: 3516
tkl_adc_to_pin_func adc:1,25
[01-01 08:00:01 ty D][411][tuya_app_main.c:461] Sample 6: 3516
tkl_adc_to_pin_func adc:1,25
[01-01 08:00:01 ty D][411][tuya_app_main.c:461] Sample 7: 3514
State: ASSOCIATED -> 4WAY_HANDSHAKE
程控电源输出的2.9v 这个3514*3.3/4096=2.84v左右 ,但是我是在adc管脚上进行了分压。
Re: 请教下关于T3模组ADC0内部通道的问题
你把分压电阻改为小于100k 测试试试。
由于内部adc电阻是1M, 外部还使用1M电阻分压。导致采样周期太长,会出现采样不准情况。
Re: 请教下关于T3模组ADC0内部通道的问题
一样的状态,我先手动除个2吧,这个模组我反复拆装焊接可能出问题,搞完别的再回头换一个,目前就是/2的状态数据比较准确。
还有模组手册里写的推荐adc管脚用1M电阻,如果手册有错误的话希望早点改正。下面是手册摘出来的原文
Code: Select all
ADC 口输入电平最大值为 3.25V,外部分压电阻建议使用 MΩ 级别,同时靠近 ADC 口放置对地 100nF 电容滤波