做了个土壤温湿度监测笔。
以后我家小绿植的“生活环境”健康不健康,我一戳就知道!横批:了如指掌!

演示一下!

这是一种TDR电容式的,高精度的,便携式的,土壤温湿度监测笔。
采用时域反射法对电容值进行测量,经过多次调试后,可对土壤的湿度进行精准测量。
该方案为非接触式土壤,可避免土壤对关键测量器件进行腐蚀。实际使用时可在针头加一圈热缩管,不影响测量值,但需注意需要紧贴测量针。
具体到电路,要怎么设计呢?
电路设计方案采用集成式TDR电容测量MCU加精调LC频选电路,也可以更改参数测量水培植物液位值。

原理图

PCB
来分析一下,这个简单的电路设计!
电路由以下部分组成,充电部分,主控模块,电源部分、开关机部分。
采用CN3163对锂电池进行充电,该芯片与TP4056管家兼容,可对单节锂电池进行快速充电,并自带过流过压保护,且无锂电池时也可稳压输出4.2V 。
充电时U3亮起,U4熄灭;充满时U4亮起,U3熄灭。
采用LDO电源芯片,稳压3.3V供电,该芯片压差70mV@(300mA),完全满足3.7V锂电池供电该系统最大10MA功耗。
采用OLED显示屏显示,该屏幕尺寸为0.91寸,黑底白光,LED采用5MA低功耗LED,可最大降低功耗。
主控采用MCP62G进行采集和显示,该芯片采用M0内核,自带电容测量芯片;自带温度测量端,可测量土壤温度;也带有1路I2C可方便对OLED屏进行驱动,1路串口进行调试和接入联动模块。
unsigned int temp=115,hh=122;unsigned int hhwarn1=600,hhwarn2=400,hhwarn3=200; //10倍数数值int main(void){char i;unsigned char systime;const unsigned char *point;SystemInit();GPIOKEY_Configure();TIM1_Configure();PLATFORM_Init(); //Initialize configurationcap_structure.I_DRIVE = DRIVE_I_80mA; //Select 4mA driving currentcap_structure.FIN_DIV = FIN_DIV_128; //Input oscillation 128 division frequencycap_structure.FREF_DIV = Fref_NO_DIV; //Sampling clock without frequency divisioncap_structure.clk = In_CLK; //Using CAR AFE internal clockif(cap_structure.clk == In_CLK)cap_structure.clkfre = 2.4/(Fref_NO_DIV+1); //2.4Mhz sampling frequencyelse if(cap_structure.clk == Ex_CLK)cap_structure.clkfre = 12.0/(Fref_NO_DIV+1); //12.0Mhz sampling frequencycap_structure.RCNT = RCNT_D; //Set sampling timecap_structure.avg = 20;Cap_Afe_Init(&cap_structure); //Initialize CAP AFEcap_structure.VT_CH=vt_structure;myVT_Init(&cap_structure);PLATFORM_InitDelay();while (1){Single_Measure(&cap_structure); //Measure CAP AFE informationfloat Cx0,Cx1,CF1,CF0;CF0 = Cd0*(Cp0+Cpcb0)/(Cd0+(Cp0+Cpcb0));CF1 = Cd1*(Cp1+Cpcb1)/(Cd1+(Cp1+Cpcb1));Cx1 = 1/((cap_structure.fre_ch1*cap_structure.fre_ch1)*4*(PI*PI)*L1)-CF1;Cx0 = 1/((cap_structure.fre_ch0*cap_structure.fre_ch0)*4*(PI*PI)*L0)-CF0;cap_structure.cap0 = Cs0*Cx0/(Cd0-Cx0);cap_structure.cap1 = Cs1*Cx1/(Cd1-Cx1);if(cap_structure.cap0<0)cap_structure.cap0=0;if(cap_structure.cap1<0)cap_structure.cap1=0;myGetVT(&cap_structure,50); //Measuring temperature informationPR("CH0_COUNT:%d CH0_FRE:%.3f Mhz CH0_CAP:%.3f pF CH1_COUNT:%d CH1_FRE:%.3f Mhz CH1_CAP:%.3f pF VT:%.1f mV\r\n",cap_structure.count_ch0 ,cap_structure.fre_ch0,cap_structure.cap0,cap_structure.count_ch1,cap_structure.fre_ch1,cap_structure.cap1,cap_structure.VT*1000);temp=cap_structure.VT*1000;hh = (cap_structure.cap1/17.2*100-45.3)*2.45*10;PR("temp is %f",cap_structure.VT*(-16.66)+48.32);if(cap_structure.cap1>10)if(hh=120){systime =0;RCC_APB1PeriphClockCmd(RCC_APB1ENR_PWR, ENABLE); PWR_EnterSLEEPMode(PWR_SLEEPNOW_WFE);}}
项目DIY成本约
12元
本项目已开源!
——想复刻?想给作者点赞?可复制开源网址 前往原文。
开源网址:https://oshwhub.com/xiumusheng/soil-moisture-monitoring-pen