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

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

[复制链接]
STMCU小助手 发布时间:2022-5-14 21:00
一、光敏电阻模块简介  M* Y* _- _- r8 F: D
光敏电阻传感器模块是对光线敏感度的反应,一般用来检测探头周围光线的强度(亮度),可以通过DO输出数字信号1和0,也可以通过AO口输出模拟信号
+ e- |3 x! a- X- o
5 O. k! x4 @7 a5 p9 a# v2 U5 n GH5292LW(_Ow3XFG62R$T.png
$ j; q* G* v8 y9 P
9 P) {' q7 e3 [3 [7 y7 Z调节阈值:我们可以通过旋钮来改变它的阈值,如图! F  Y& q- T3 y- j$ k; U

4 v! e2 U* f, H4 e* v! e: ~ 20210808141523914.png 1 O4 a! ?( o" i. S
- \" b) ]! |5 v( ]1 ]: N' D: F+ _

& C6 {4 h+ v, p& {" X当检测到周围光线较暗时(在阈值范围内),DO口输出高电平,电压大;当检测到周围光线较亮时(超过我们设定的阈值),DO口输出低电平,电压小。0 m- {1 c4 C/ \: P% h

3 I- @* u4 z, O8 O+ Z* T1 H$ YAO口作为模拟信号输出,可以连接到单片机上拥有的AD转换模块或者外置AD转换模块,通过转换,就可以得到更为精准的光线亮度数值。; C9 r9 u; F- e) l" E% m! w5 C3 z7 i
4 ^1 b: C2 m1 m4 J: p
这里我主要是用DO口做一个简单的实验,方便大家理解。
( {& _5 j& {# S" D) p( F5 {1 P- i" J! @
二、实验过程5 e* E7 q1 v. b! r
在这里我主要是采用PD11作为DO输入口4 _. E: j# v* Q/ c/ n
+ C1 {/ j" M' d+ v
光敏模块初始化:, ]: d% L7 c, S& p

+ F" ~5 a/ `# T. `, q% Q9 w
  1. #include "gm.h"6 t8 b1 l8 J9 e2 Z* A

  2. ! ?' E4 E1 X- ?

  3. 5 i1 L) q  E. J
  4. void gm_Init(void)
    6 T6 ?# R" r0 I) _
  5. {
    # _3 ^. W; A' A0 r! X/ }% `  ~# o

  6. $ o- l3 D, X/ X) E  l1 O
  7. GPIO_InitTypeDef  GPIO_InitStructure;
    ( n$ X( v) s, r
  8.          
    7 d* c/ d  ?# a$ H7 [
  9. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);        & j; e+ X# n  s
  10.         
    9 t* Q# C. B4 S7 d' t" y
  11. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;                                 
    ' |. c2 K! `% \) G, [7 u' P" x
  12. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;                 
    / Q+ e6 }/ i7 L' \3 |
  13. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;               
    $ s2 X3 x9 @: N! E# b$ {% m9 y
  14. GPIO_Init(GPIOD, &GPIO_InitStructure);                                         - [& W3 E* q( d% l6 n- j" K  S6 H, e
  15. GPIO_SetBits(GPIOD,GPIO_Pin_11);                                                
    : H0 a. A0 U- `% W. V, h/ D, t

  16. , R  d- p( Z+ v2 m( d
  17. }
复制代码

' t) A+ y5 _' s; l1 @1 c, ]头文件声明:
' b7 E0 O6 V$ V$ [( \, `/ U) M1 y0 |* l8 O8 w
  1. #ifndef __GM_H
    : t. ^0 s1 y# R% c" e: ~
  2. #define __GM_H
    : ~  y8 D/ x1 N- |
  3. #include "sys.h"
    2 z+ D( y1 D0 w" \- o

  4. & a) P$ f' m+ z
  5. #define gm PDin(11)8 E0 E. K3 F: y  M* P, C+ t
  6. void gm_Init(void);
    8 C# X5 b  c6 Z

  7. - x% I3 t. ~: v5 B, b
  8. #endif
复制代码

( H: n. F; j- k9 [+ {4 `2 t主函数:
6 O9 W; Q7 _; G! k2 {+ D5 }
- }: `5 w3 m- j6 X+ Z0 e' g
  1. #include "led.h"
    7 h* C7 }* j: ]# M. P
  2. #include "gm.h"
    : y; m; h$ J8 |. b9 a# g

  3. 0 Q* M1 {, U4 o  C9 B
  4. 3 n$ |, [% Z8 _5 Y& h$ L+ R
  5. int main(void)0 W& k) e" b+ U8 f
  6. {        
    ! y; ?1 G1 u1 m/ T
  7.         delay_init();            & t. R: S. Z  S/ n/ ]' z
  8.         LED_Init();                  
    ) j  F" @! ]' W# v. w+ m$ y
  9.          gm_Init();6 Q! K0 r1 T9 W, b$ Y
  10.         while(1)0 ]* D  _. Z) Y' c1 S7 g
  11.         {
    ' V! j& H; q" l! M" m
  12.                 if(gm==1)
      q6 a6 y0 i; H7 r$ y
  13.                 {9 n; q6 L( ~! V# u
  14.                         LED0=1;
    & I. i; Y$ f, J$ T' Z# t& {
  15.                         LED1=1;( o8 W  z9 L- n. a& h# `0 l6 Z( J
  16.                 }. a# |$ e" C* F( L2 a; g( @+ W  X
  17.                 if(gm==0) 2 T2 R# I  `6 c. d8 V9 B
  18.                 {$ [/ P" o& G* {0 y
  19.                 delay_ms(50);7 G, K! @% n+ l) v
  20.                 if(gm==0)
    5 {( K% `  L, ]2 G# {8 A
  21.                 {3 B. x- T, t! C! L- x/ ~  j! V3 a. F7 i
  22.                         LED0=0;
    ) E% L9 B! k' G* ?& Q
  23.                         LED1=0;
    9 x) X: g6 f/ Z) G
  24.                 }5 @6 e: M# H2 ?$ L: P
  25.                 }
    7 j: a( {1 W: i% M, Q2 A) }$ q( u3 P
  26.         }
    . |, g" j7 {3 w- N. {
  27. }
复制代码
6 y! s7 U: Z6 z
实验截图:
( B6 i, Q- |/ t" h( [1 K+ ]: A( R5 v, x
[XQB]KS`V90K7I$AM7(RDC7.png 5 Q* U, O& i( z# x. ]( l
+ m! p  R* J5 Y4 H
M7TMP{@CD8Y5$}BIC3_L2WC.png : G# h: S8 X1 G, P' p; Z% O
) F# u3 W; [' s: _3 M  ?* O
三、总结
1 r" O8 D$ h. k7 Y/ v. }
到这里就很清晰明了了,开始上手吧,关于光敏模块的用途,就是检测光线强度,我们添加光敏模块,很多地方都可以用到,比如像去年的无线充电小车,将光敏模块放置在LED灯前,小车充完电,灯亮起,光敏感应到后启动电机;又比如走廊里的灯亮灭设置等等,用途很广泛。
/ _5 K% {. @1 n7 k/ r+ H3 A" `7 P2 L0 E6 b% H# b5 Z% T
3 w) c& j/ x& _& T, u
赞 收藏 评论0 发布时间:2022-5-14 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版