本帖最后由 shaoziyang 于 2015-1-30 00:05 编辑
# G e. Y8 f y& N
, [$ G9 \8 n1 `% I" Z$ `5 t/ p) |LED除了可以发光,其实也可以测试光强,因为LED也是二极管。当环境光强变化时,LED上的结电压会发生变化,因此可以通过这个方法测量光强。虽然这种方法精度不是太高,但在有些情况下还是有用的。+ H$ C) u0 @1 }( Y) I& M& `
- `' f# }. [6 g; CST Nucleo F072RB上只有一个用户LED,它接在PA_5,它也是ADC_IN5。利用F072带有的12位ADC,可以很灵敏的测出光强变化。下面程序就演示这个方法,程序很简单,但是效果还不错。
8 s) m( `2 u* H: Y2 q2 O5 u' R4 b
# f, y9 g& M" L" E( N! ?! r8 t- #include "mbed.h"& b2 m. a$ M. `# m1 b2 }" V
- ( W4 O' q# Y1 R s3 \# B6 F
- DigitalOut myled(LED1); z, `6 q# K" k+ B
0 ?; _' Y& o$ G' l7 ~- AnalogIn Light(LED1);
; ^% }+ A0 D, o5 y: u2 C
) n/ }0 p; X4 G5 {- Serial pc(USBTX,USBRX);: T; J& D. }4 J2 S- O% L: I
& A7 y! ^) o& B" S3 h- int main() {
, b, M& s$ m( U% y - myled = 0;
% ~4 i5 \+ `9 @% O" f# X - while(1) {( D! X& p; C2 \- y
- wait(0.5);* w2 e2 v$ g# a- t! s: T2 e
- pc.printf("%d\r\n", Light.read_u16()>>4);
0 C1 x4 t6 w- k, H3 G4 S& R - }1 h4 B1 L- ^! O6 @
- }
复制代码
! A* u/ v- f+ X4 L. `- B+ B4 p9 b, V: ^. k
! L" d5 d+ |# o/ @2 \( `测试效果1 W& e: u' s- ^' X4 |* C) p
: b& H" W& K! f" y
" E+ K9 }) u7 h0 N6 N9 Q$ ?9 s I/ C- n& v9 e6 m) l2 o+ l w
ST_Nucleo_F072_TEST.zip
(671.1 KB, 下载次数: 8)
|
当环境光强变化时,LED上的结电压会发生变化,它们存在一个对应关系(非线性),所以可以测光强。0 l! ?+ f0 i6 Q, M$ i$ H7 p
缺点是变化范围较小,一致性不是特别好,所以不适合测光强具体数值,但是测光强变化,或者测大概光强还是不错的,不用增加任何硬件成本。6 n3 X. e: b, j( _, \3 ^; w
- O x5 G6 g9 u' `, c
你试试就清楚了,很容易的。
在要求不高,或者IO不够时,这个方法还是有用的,又不增加任何硬件成本啊。一个LED完成两个功能。
多谢,刚刚去复习了一下PN结