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

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

[复制链接]
STMCU小助手 发布时间:2022-5-14 21:00
一、光敏电阻模块简介
5 q/ V  D% J, U. u4 I) X4 a光敏电阻传感器模块是对光线敏感度的反应,一般用来检测探头周围光线的强度(亮度),可以通过DO输出数字信号1和0,也可以通过AO口输出模拟信号* B2 N- |0 e% A  E5 m; m1 q, B

" d, S% [/ R* J( B7 f% j GH5292LW(_Ow3XFG62R$T.png # G6 C3 c5 C* b9 B$ x

% p3 v7 h/ r! g/ S调节阈值:我们可以通过旋钮来改变它的阈值,如图% P* ?- M9 I2 q+ [' ~
  S, F3 S9 S* W- c0 \* O2 Q1 d+ z
20210808141523914.png
" W9 |- }! ^& M+ P
8 w  N" p: f7 Z% l- k$ ?* F( g2 h' N8 ?4 V1 X4 C
当检测到周围光线较暗时(在阈值范围内),DO口输出高电平,电压大;当检测到周围光线较亮时(超过我们设定的阈值),DO口输出低电平,电压小。1 t. V/ J6 Q: U2 |! |
. N' M6 {; X" o; M
AO口作为模拟信号输出,可以连接到单片机上拥有的AD转换模块或者外置AD转换模块,通过转换,就可以得到更为精准的光线亮度数值。; H( H* f: J, T  H9 }
' w- @2 D! e5 m9 A5 T
这里我主要是用DO口做一个简单的实验,方便大家理解。5 k# z. V9 ?# T; y

, S7 F' e$ \$ l4 \4 {& Z3 _, d二、实验过程
$ q( L5 C) |+ ~! i: Q2 D+ @在这里我主要是采用PD11作为DO输入口
0 i' D( y0 m' n4 ]3 ^8 d( f; `/ Z5 T0 b4 j( r! i" G2 c
光敏模块初始化:+ ~+ \1 U$ a- T
# y1 ?) W9 ]- i; o# E3 a( l
  1. #include "gm.h", _; b9 E$ c3 U* G1 X3 H
  2. $ P1 U6 V) H1 i$ H! F$ e  t
  3. : r$ u5 ]' j- B5 Z  _
  4. void gm_Init(void)+ H( A, |, i9 p* _
  5. {; Q7 ?' J" J- X* r3 G" K8 K) |6 j* X

  6. & c1 C: Q# |! X
  7. GPIO_InitTypeDef  GPIO_InitStructure;
    , B0 M, u' N( r& e, n2 D
  8.          & f3 W' k7 X2 K
  9. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);        ) Z0 ~2 z/ P( w: V1 j+ t
  10.         0 y4 X) ~! C, G8 e
  11. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;                                 + i" Q& |* l1 M9 ?+ k# q
  12. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;                 
    * Y- x& N: m3 N- c9 U
  13. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;               
    $ _/ {3 V; T  Y7 P
  14. GPIO_Init(GPIOD, &GPIO_InitStructure);                                         ; k+ k) x1 g* s$ @( y
  15. GPIO_SetBits(GPIOD,GPIO_Pin_11);                                                & Q3 C+ J' f5 ^

  16. - p& C; H  k6 c+ d8 V( _- ?
  17. }
复制代码

. h1 Z) q% k  `3 _+ X! n# e& Z* ?头文件声明:( s  y5 ]/ K/ Z( x# |' P% ]* J
1 T; r3 ]( m1 y- N* _) |
  1. #ifndef __GM_H+ d) ]5 U9 G! h3 i8 S
  2. #define __GM_H1 n5 K1 R& V, \2 ~8 p
  3. #include "sys.h"" b5 C4 t7 }* _1 g% i9 G

  4. 4 K1 x2 {" V+ W
  5. #define gm PDin(11)
    9 D) e# k7 X" x& b( s7 M, X
  6. void gm_Init(void);
    * K) C, L4 r. {( h9 h2 G' C
  7. 9 }! d4 C1 A1 c( d1 A& y
  8. #endif
复制代码

+ ]# a( I/ A2 |* X) |* F6 m主函数:
( `3 [0 c- @% i1 B9 [, b. j+ H) _2 z! N" q1 {7 _) z# |
  1. #include "led.h"
    + l* t5 \( u* |5 i2 B, H/ m
  2. #include "gm.h"! T- E9 Q3 _1 m* H% ]
  3. $ ~) v2 t, G* Q7 O% X

  4. ) p; W4 g  t: Q- R+ M: t& [
  5. int main(void)
    " S6 v; P' _; ^0 ]# Q" [
  6. {        
    " R4 M: t9 C0 Y9 u8 \; Q% l9 R% k
  7.         delay_init();            
    ' L% y% b7 n/ e1 E9 F0 _
  8.         LED_Init();                  $ ^" t" k; a5 ?- \; w) Q4 S
  9.          gm_Init();
    0 ^. R7 g* I% @8 \
  10.         while(1)
    . @2 c% k( f7 V! A
  11.         {
    9 N9 A- t* }+ K( _  \: D5 J
  12.                 if(gm==1)
    4 e9 t2 @" q- D2 O1 s
  13.                 {, j2 f, k1 w4 b4 i0 f
  14.                         LED0=1;
    - r: ]% m+ m+ l6 \
  15.                         LED1=1;, C, O* A8 B. C2 S8 n! p( h* d. Z. ^
  16.                 }% ]  N; b- t' w: r% i+ T7 i) x
  17.                 if(gm==0) . N. [0 s: r5 G! f+ L/ ]9 R
  18.                 {4 y. `! L( I% b/ j, `3 |: I
  19.                 delay_ms(50);& c' m* K% H7 A. D) ]
  20.                 if(gm==0)' Z/ f3 q4 K4 }/ V% n
  21.                 {
    & _$ |# l, ]) R) E
  22.                         LED0=0;
    0 ]+ P7 E# E- O! [- r* ~; E4 d+ R
  23.                         LED1=0;
    $ Q6 P/ n3 A3 ^- l
  24.                 }9 c" f4 P' x( _
  25.                 }/ `8 m9 ]) p1 p- W9 y, w) b" n
  26.         }8 u) y0 r- @# n$ G
  27. }
复制代码

: p3 v8 H9 N& R) c+ ~实验截图:
# V0 M- N. ?) k( U7 V+ a+ m  ]3 L* P" b* D; F- I' d
[XQB]KS`V90K7I$AM7(RDC7.png
) C8 o9 X. _& t- B! {( J9 k* K- B6 [$ r
7 B* W; S6 i+ R4 ?0 w M7TMP{@CD8Y5$}BIC3_L2WC.png
# Q+ c1 |" M+ b. a8 ?. o- o% y) ^* _8 k
三、总结

/ \; ~# P# Y4 k9 n* h到这里就很清晰明了了,开始上手吧,关于光敏模块的用途,就是检测光线强度,我们添加光敏模块,很多地方都可以用到,比如像去年的无线充电小车,将光敏模块放置在LED灯前,小车充完电,灯亮起,光敏感应到后启动电机;又比如走廊里的灯亮灭设置等等,用途很广泛。5 r, h# b7 P0 T' _8 D
" W* K+ G0 v5 W" }
6 C# W2 t: z- ]
赞 收藏 评论0 发布时间:2022-5-14 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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