请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32f1之光敏电阻传感器实验

[复制链接]
STMCU小助手 发布时间:2022-5-14 21:00
一、光敏电阻模块简介8 s) R8 n* k% |2 z1 s+ [6 o% [
光敏电阻传感器模块是对光线敏感度的反应,一般用来检测探头周围光线的强度(亮度),可以通过DO输出数字信号1和0,也可以通过AO口输出模拟信号( C% C7 v0 K# i7 ~  d
/ C8 I6 g, C6 x
GH5292LW(_Ow3XFG62R$T.png
2 E( d9 b( p6 I+ [; ?8 t1 o" v$ j: Y7 D/ f+ \% D
调节阈值:我们可以通过旋钮来改变它的阈值,如图
* H/ f1 C: }/ O0 P. O! O% S% e: q5 X
* x$ F- d, S! {/ x 20210808141523914.png - `: d) z2 W3 E

& A+ ^6 W: M, ], R: [7 v4 e2 E7 W9 M  A+ v# _
当检测到周围光线较暗时(在阈值范围内),DO口输出高电平,电压大;当检测到周围光线较亮时(超过我们设定的阈值),DO口输出低电平,电压小。
5 r& y- Z& o: y$ h+ i: v( p$ U5 R; X1 D
AO口作为模拟信号输出,可以连接到单片机上拥有的AD转换模块或者外置AD转换模块,通过转换,就可以得到更为精准的光线亮度数值。4 O0 j% z, `2 I0 Z, q, Z
! g" f7 a; D* J; D) S0 T3 D6 P$ j
这里我主要是用DO口做一个简单的实验,方便大家理解。# |# s, p- u( R8 j1 a
5 a) Y2 L, G/ V3 j5 I3 Q
二、实验过程4 p2 K) [1 A, C7 e* M1 g
在这里我主要是采用PD11作为DO输入口; |: D2 W/ Z0 f& z

3 K9 W  I1 r4 o& H: ]0 v' q光敏模块初始化:
# K; Z1 y+ ]4 K( o" _6 T4 q9 T( r9 j8 \
  1. #include "gm.h"% K& C+ C# m3 ~

  2. - H6 V( A% \9 J5 j; P
  3. % M7 [' }/ `0 I5 ~2 Z+ m- F6 @1 d
  4. void gm_Init(void)+ U8 U3 N  G4 U$ {
  5. {
    3 y8 T. v. ^  U+ \+ F! D

  6. . K! W+ b. a! @: X
  7. GPIO_InitTypeDef  GPIO_InitStructure;
    6 }: l# Y: v$ ]. h- t/ G* `
  8.          
      Y: \, j# h8 ^. T
  9. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);        
    # ]: {, c, l1 g4 S. {" e
  10.         
    8 n3 g) L$ H) L% \& O  F- @
  11. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;                                 
    ) P' I  D0 \" u7 G+ E2 [
  12. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;                 
    ' c+ C1 [3 q8 t7 A
  13. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;               
    3 s5 G. ]6 t  E. S+ W5 h0 m* d- ?2 q+ n
  14. GPIO_Init(GPIOD, &GPIO_InitStructure);                                         " Y' H% n* ~$ U$ X* P) K; U/ O8 Y- E
  15. GPIO_SetBits(GPIOD,GPIO_Pin_11);                                                / j: H- U5 K2 E

  16. 3 \9 A/ x" D$ c% q
  17. }
复制代码
; r' o. u7 T8 s6 i
头文件声明:: _! ^- M! P/ h! L% h) \
7 N  b0 D& b# {$ o
  1. #ifndef __GM_H7 v' ]$ g8 X/ Q1 {& F9 f* ~
  2. #define __GM_H4 R5 @' [- \; z4 s
  3. #include "sys.h"& D+ z: {/ `) u( S0 f$ j
  4. 9 g+ r8 J8 X3 w& q) T
  5. #define gm PDin(11)
    % R5 o% A" v6 B+ P* @3 l
  6. void gm_Init(void);% |/ |5 Y) v" H( @

  7. 2 k; Q- \9 x6 c6 _# h1 |; c
  8. #endif
复制代码

$ u2 J0 r- r* n. V, C3 E' H4 L主函数:
; V4 A& A$ R: o) F: j: i7 M
, K, y; l3 ]. w  u4 t: _
  1. #include "led.h"
    4 W2 T7 k6 ?3 S. f- Q5 _2 k! p# {
  2. #include "gm.h": G* g9 F- K* i$ U3 u

  3. 7 V9 @1 m0 j! [

  4. , c/ r- F* a# H
  5. int main(void)5 `, A6 Q6 ?0 C8 f
  6. {        
    + `" S" u' T* P1 M- C! X8 R
  7.         delay_init();            + Q1 J, N# s" G6 h
  8.         LED_Init();                  1 b8 Y" C" \, F) M
  9.          gm_Init();2 Y. D$ b# o/ q& e. G; j* G9 K- q
  10.         while(1)' N- ]+ Z: `+ u: i. M# K5 W
  11.         {2 G! t$ W: o  B
  12.                 if(gm==1)0 I6 c: ]# x' n7 F" @4 U# A. H
  13.                 {' F, c$ t1 J5 l
  14.                         LED0=1;
    : Q6 O+ ^; t9 S+ e
  15.                         LED1=1;6 e2 Z& m* e# h7 S- q) n% _( H
  16.                 }5 N  S6 i# C; }0 o; \& r* j& f: q
  17.                 if(gm==0) / i& R  y9 t1 M, a/ p- Q$ x: N
  18.                 {& C9 I3 Z5 I" c8 N
  19.                 delay_ms(50);# N. W  m& G0 n0 N
  20.                 if(gm==0)
    / K9 c2 G2 `; T
  21.                 {+ g) ?" c% s( K) {3 D1 R
  22.                         LED0=0;
    # `" }& F  Y2 l# F
  23.                         LED1=0;
    ; F, p4 N- q, g- q  ]+ o5 Q/ @. W' ^
  24.                 }
    ' j: u0 r/ ~* z* U& D9 [
  25.                 }7 z3 ~+ Q) H3 M+ b
  26.         }3 `$ E; h& ~7 ]& C2 a( a
  27. }
复制代码

5 C4 u# o4 v# |# V6 l) _实验截图:$ |. R3 y1 O9 W3 P; `; P
% m3 s% ]) o1 f' w# W5 c$ u7 q/ j4 I
[XQB]KS`V90K7I$AM7(RDC7.png + h$ ~0 K1 X( }" O( k/ O4 q$ \( k
$ D0 U7 h. g1 G# G% K
M7TMP{@CD8Y5$}BIC3_L2WC.png
2 q+ l" o7 |0 K8 S
! @/ F, R1 i5 Q 三、总结

- k5 i8 v8 Z' T, f0 D- b# n到这里就很清晰明了了,开始上手吧,关于光敏模块的用途,就是检测光线强度,我们添加光敏模块,很多地方都可以用到,比如像去年的无线充电小车,将光敏模块放置在LED灯前,小车充完电,灯亮起,光敏感应到后启动电机;又比如走廊里的灯亮灭设置等等,用途很广泛。
' q$ q: D2 @% V- r$ b5 L8 {/ G. g; |8 R

. g& W) w+ Y% @: ?! b
收藏 评论0 发布时间:2022-5-14 21:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版