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

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

[复制链接]
STMCU小助手 发布时间:2022-5-14 21:00
一、光敏电阻模块简介
9 o$ l9 p3 f# ]3 C* C光敏电阻传感器模块是对光线敏感度的反应,一般用来检测探头周围光线的强度(亮度),可以通过DO输出数字信号1和0,也可以通过AO口输出模拟信号
) C8 p6 B. x4 i3 q( ^& }4 f! O* ^. k  h0 l7 c
GH5292LW(_Ow3XFG62R$T.png
4 z( G( B! v$ w6 a7 R# c1 j9 p
: x* T7 U1 l$ \" |9 \$ j调节阈值:我们可以通过旋钮来改变它的阈值,如图
% f1 G* a; k2 E" n7 {+ F  m0 n5 g8 z0 S, f. w- R; L
20210808141523914.png
9 ]0 w" C; G  D. V4 _$ B# J) S* h8 G& O) e+ ]% {

+ x, ], k( E' v当检测到周围光线较暗时(在阈值范围内),DO口输出高电平,电压大;当检测到周围光线较亮时(超过我们设定的阈值),DO口输出低电平,电压小。
  \9 w/ T  p9 M, ]( y" Q
* J6 b3 s; Z% E9 c, iAO口作为模拟信号输出,可以连接到单片机上拥有的AD转换模块或者外置AD转换模块,通过转换,就可以得到更为精准的光线亮度数值。$ N) V' r; f# `* Z* D4 i( P# u; m

, Q9 U* a* D+ O2 K& M- K这里我主要是用DO口做一个简单的实验,方便大家理解。
! \( e2 @6 M0 h4 `. }" O& Y9 c1 U: A+ P5 n
二、实验过程4 N! p+ `6 j, I' ], W' z
在这里我主要是采用PD11作为DO输入口7 Z6 Q3 Q. y+ f5 X; ?
9 z7 ^* o3 W2 C$ b
光敏模块初始化:0 Z* x' R- X9 c

+ f# J6 j4 x1 t" d3 k& D
  1. #include "gm.h": b/ s( A; {, N7 Y/ e

  2. + B+ S! Q6 c1 k& F: U7 q

  3. 4 B. `: ?9 Y! p# k! `
  4. void gm_Init(void)
    3 d. q; B' b& p  l
  5. {
    7 }8 ^7 n2 w+ n% s

  6. ! u! {+ t; F: w+ x( |
  7. GPIO_InitTypeDef  GPIO_InitStructure;
    3 _  G# p3 L3 E3 g3 J0 P0 z
  8.          1 x3 @+ K7 V! y. \+ C) H8 M( T
  9. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);        ; w6 X( C" z% k% B8 H( O3 _
  10.         9 v! A) I& x7 o6 C1 C
  11. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;                                 " M) C/ u3 g5 s3 K, b/ [$ ^. H
  12. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;                 $ j% ]% x2 U9 h7 m' U, }4 x5 [
  13. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;               
    ! g0 ?* c: O6 k4 K0 `8 a
  14. GPIO_Init(GPIOD, &GPIO_InitStructure);                                         
    . x. D& }8 q) d9 A* e- r6 V$ u
  15. GPIO_SetBits(GPIOD,GPIO_Pin_11);                                                ! K6 I9 C6 i7 ]1 U- d

  16. - c2 O' g, ]' B7 x$ Z& n0 [6 k
  17. }
复制代码
: z" f7 t/ B+ t0 w" y- d+ J+ [0 c
头文件声明:' b! v2 B/ v6 c" n8 k

$ T/ n2 ]7 r& V9 [1 D
  1. #ifndef __GM_H/ A6 _) _: [4 ?. q
  2. #define __GM_H* Y; g- d0 |, r/ a! c) r5 k
  3. #include "sys.h"
    3 v) T  X4 C3 O! f

  4. 2 o0 Q; J" g5 [9 N4 F/ e! `: X: z
  5. #define gm PDin(11)3 U0 F; }( s2 H6 i! w# R/ {
  6. void gm_Init(void);# e" k& z7 a; ^6 j5 \$ A% V

  7. 3 a9 q% l/ k  k! U+ b7 c
  8. #endif
复制代码
" u" h8 X* Q8 z" i" y2 G( D5 n1 y
主函数:" ?6 U  S# E5 `
, ~& O8 W* P4 y* w2 |
  1. #include "led.h"
    5 T# ~. O8 K8 ]- s' Z
  2. #include "gm.h"# B! _3 \* e0 k! P1 @
  3. 5 V' j- O8 R5 {* K
  4. " Q7 G  v+ z# d: W
  5. int main(void)( f9 e5 g, n  {  `$ ^( A) K  |
  6. {        3 B; t2 Z& r  Y2 A+ H" I
  7.         delay_init();            
    # T4 t' H; X3 i, |* ^5 X6 b, Y
  8.         LED_Init();                  
    ; m7 W' d( }, ^3 z* O
  9.          gm_Init();. T9 a* V3 F+ r3 d+ ^4 S/ m
  10.         while(1)
    ; F* {" }% x2 C: M. I$ {
  11.         {! ^: s) C! W3 h
  12.                 if(gm==1)
    ; g, j4 z3 I3 i9 F- q- v6 Y
  13.                 {4 l6 R; j7 \* M1 b& y- y' V
  14.                         LED0=1;
    $ M! N6 Z9 ^1 I$ O5 C* @& l
  15.                         LED1=1;
    3 n# @% R0 r# L9 i, ]7 O
  16.                 }
    2 |: d/ P% d8 E
  17.                 if(gm==0) % I' z$ Y2 \. }
  18.                 {; w/ _, d7 W- G. D
  19.                 delay_ms(50);
    ( V/ q$ ^  J, b4 y2 m" l" @
  20.                 if(gm==0)
    5 B" H3 ]4 F" J
  21.                 {
    & p5 @2 o" i/ j' d: i4 Z
  22.                         LED0=0;, v$ K4 W, T; i% Q; Z
  23.                         LED1=0;+ D- J7 f9 n! K- L5 H
  24.                 }
    8 T( [2 @- m& e4 M/ q! E" N
  25.                 }
    2 u. L- R3 G2 F0 ]
  26.         }
    9 H5 O. }8 Q' z" V, d. [0 c8 ^
  27. }
复制代码
6 P2 H# O" E7 e% J9 [  j8 q. _
实验截图:
" _7 d; e' r/ Z% ^) ], x& U$ I6 n7 O( Z0 o# x9 r+ F
[XQB]KS`V90K7I$AM7(RDC7.png ' C9 v9 A8 d5 f

# _; G8 o* K# c. x6 I/ _: I M7TMP{@CD8Y5$}BIC3_L2WC.png # H( w! d) ~) Q3 Q1 o) R4 U
8 Y6 J  w, o9 }$ a1 V
三、总结
6 p! o" t8 s: B: y* s% ?5 V
到这里就很清晰明了了,开始上手吧,关于光敏模块的用途,就是检测光线强度,我们添加光敏模块,很多地方都可以用到,比如像去年的无线充电小车,将光敏模块放置在LED灯前,小车充完电,灯亮起,光敏感应到后启动电机;又比如走廊里的灯亮灭设置等等,用途很广泛。
- R; w$ E. A/ r; J4 ?& W7 [  f9 c& U

4 B' R. u. R  u/ D/ D% F- m' D
收藏 评论0 发布时间:2022-5-14 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版