1. 光敏传感器:你的STM32开发板也能“看见”光
大家好,我是正点原子的老朋友。今天我们来聊聊一个非常有趣且实用的项目:如何让你手上的STM32F103战舰开发板,通过一个不起眼的小元件,感知周围环境光线的强弱,并把它实时显示在屏幕上。这个项目非常适合刚接触嵌入式传感器开发的朋友,它能把抽象的ADC采集、电压转换这些概念,变成一个看得见、摸得着的实际应用。整个过程就像教你的开发板学会“看”一样,从硬件连接到软件编程,再到最终显示,每一步都充满了动手的乐趣。
这个项目的核心,就是利用开发板上自带的一个小东西——光敏传感器。它看起来就像一个普通的贴片LED,但功能却大不相同。简单来说,它的电阻会随着光照强度的变化而变化,光线越强,电阻越小;光线越暗,电阻越大。我们STM32的ADC(模数转换器)模块,正好就是用来测量电压的专家。通过一个简单的分压电路,我们就能把光敏传感器电阻的变化,转换成电压的变化,然后交给ADC去读取。最后,我们再把ADC读到的原始数字值,经过一点简单的数学处理,变成一个0到100之间的“光线强度值”,直观地显示在LCD屏上。整个过程逻辑清晰,硬件改动极小,几乎就是“开箱即用”的体验。接下来,我就带你一步步实现它,让你亲手点亮这个“视觉”技能。
2. 硬件连接:看懂原理图,动手不迷糊
在开始写代码之前,我们必须先搞清楚硬件是怎么连的。很多新手朋友一上来就埋头写程序,结果发现数据不对,折腾半天才发现是硬件没理解透。对于正点原子的战舰开发板,这部分工作已经由工程师们帮我们完成了,但我们依然需要理解其背后的原理,这对于后续的调试和举一反三至关重要。
2.1 光敏传感器的工作原理
我们板载的这个光敏传感器,本质上是一个光敏二极管,你也可以把它理解为一个特殊的光敏电阻。它的特性是:当没有光照时,内部只有极其微弱的电流(暗电流);当有光线照射时,内部会产生“光生载流子”,从而让电流大大增加。这个电流的变化,就是我们感知光线的关键。在开发板上,设计者已经为它设计好了外围电路。具体来看原理图,光敏传感器(LS1)的一端接在了3.3V电源上,另一端通过一个分压电阻(R34) 接地。同时,光敏传感器与电阻R34的连接点,被引到了STM32的PF8这个引脚上。
这里的生活类比来了:你可以把整个电路想象成一个水龙头和一段水管。3.3V是水源的水压,光敏传感器LS1就像一个可以自动调节粗细的水阀,光线越强,水阀开得越大(电阻越小),水流(电流)就越容易通过。而R34这个固定电阻,就像一段固定粗细的水管。PF8这个测量点,就像是在水阀和水管之间安装的一个压力表。当水阀开大(光线强)时,大部分压力都消耗在水管R34上,压力表(PF8)测到的水压(电压)就低;当水阀关小(光线暗)时,压力主要降在水阀上,压力表测到的水压就高。所以,PF8引脚上的电压与光照强度成反比:光线越强,电压越低;光线越暗,电压越高。这个结论非常重要,是我们后面进行数据转换的基础。
2.2 核心引脚与ADC通道映射
知道了PF8是测量点,下一步就是让STM32的ADC模块去读取这个点的电压。STM32F103的ADC功能非常强大,有多个ADC模块(ADC1、ADC2、ADC3),每个模块又有多个通道(Channel)。查阅STM32F103ZET6的数据手册和开发板原理图,我们可以确定:PF8这个引脚,它复用的ADC功能属于ADC3模块</
534



被折叠的 条评论
为什么被折叠?



