Arduino 食材识别器:电阻法检测食物种类与新鲜度
核心原理
不同食材因水分、离子浓度、细胞结构不同,呈现不同电阻率。将食材作为分压电阻接入模拟口,Arduino 读取 ADC 值即可粗略识别。
最小系统 (仅 3 样)
- Arduino Uno (或任意 AVR 板)
- 10 kΩ 电阻 (上拉/分压)
- 两根导线 (插入食材)
可选:1602 LCD (I2C 或并口) 显示结果
电路接法
5V ── 10kΩ ── A0 ── 食材 ── GND
(上拉) (分压点) (探针)
两根导线分别插入食材两端 (间距 1–2 cm),A0 读取分压电压,ADC 值越大 → 电阻越小。
校准与识别流程
- 串口监视器观察各食材 ADC 范围 (如黄瓜 400–700、苹果 140–300、空气 > 900)
- 在代码
if/else中填入对应阈值区间 - 上传代码,即时显示 “Cucumber / Apple / No Food”
实测心得
- 黄瓜、草莓、胡萝卜等高水分果蔬读数稳定,识别率高
- 切开的苹果因氧化电阻快速漂移,难以稳定识别
- 肉类、干货电阻过大,接近空气读数,需改用交流激励或阻抗谱法
- 温度、探针深度、接触压力均影响读数,建议做夹具固定
代码示例 (含 LCD 支持)
const int sensePin = A0;
int val;
void setup() {
Serial.begin(9600);
// lcd.begin(16,2); // 如有 LCD 取消注释
}
void loop() {
val = analogRead(sensePin);
Serial.print("ADC: "); Serial.println(val);
if (val > 400 && val < 700) { Serial.println("Cucumber"); /* lcd.print("Cucumber"); */ }
else if (val > 140 && val < 300) { Serial.println("Apple"); /* lcd.print("Apple"); */ }
else { Serial.println("No Food"); /* lcd.print("No Food"); */ }
delay(1000);
}
进阶方向
- 多频交流激励 + FFT → 区分成熟度/腐败程度
- 温度补偿 + 多点测量 → 提升鲁棒性
- 结合气体传感器 (MQ系列) 检测挥发性胺类,实现真正 “鲜度计”
制造工艺