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

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

[复制链接]
STMCU小助手 发布时间:2022-5-14 21:00
一、光敏电阻模块简介1 i% r6 d1 y' f3 s' F, p
光敏电阻传感器模块是对光线敏感度的反应,一般用来检测探头周围光线的强度(亮度),可以通过DO输出数字信号1和0,也可以通过AO口输出模拟信号* R  s! S5 t( r
& h' b9 j5 r" I9 f/ x( s$ T
GH5292LW(_Ow3XFG62R$T.png 1 D+ g2 K7 |  U4 ^" t  ~; I9 x8 k. W
' y8 {) V9 [7 ~6 x0 M9 R
调节阈值:我们可以通过旋钮来改变它的阈值,如图
* A% m" D2 |  L0 J! M- ]6 l' |1 A+ t9 H! P: z9 A
20210808141523914.png
/ Z7 m0 f% e" p* P% o! H. G% _8 z! m8 R& r% s5 A1 L
0 O1 p1 Q* C$ T" J
当检测到周围光线较暗时(在阈值范围内),DO口输出高电平,电压大;当检测到周围光线较亮时(超过我们设定的阈值),DO口输出低电平,电压小。
; Q# }, \& l: u$ w) C& o) x# W& z6 _+ [6 r, q0 G  u# O1 d
AO口作为模拟信号输出,可以连接到单片机上拥有的AD转换模块或者外置AD转换模块,通过转换,就可以得到更为精准的光线亮度数值。5 u' [! t$ ~5 q1 ]

% U+ e7 {* i% _2 p0 K1 u+ ?6 u这里我主要是用DO口做一个简单的实验,方便大家理解。( T( U) `  A4 y, \9 t

0 }( Z. h6 }, i0 k3 d. A二、实验过程
3 ?/ h0 A. H8 Q8 e7 j在这里我主要是采用PD11作为DO输入口
2 X/ W8 d" i) h- A/ V6 o3 ]  G2 x5 U- s* P
光敏模块初始化:. M: Q0 Q. }9 E: n, _, }  h

' m. b: P1 r3 T+ |5 {; A( @# m9 W0 f
  1. #include "gm.h"7 g4 K1 }3 ?" |3 x) R: |

  2. % X  b1 d) z8 j9 Y  K! d' p5 X3 ^# j

  3. % u5 v8 f* G" Q- B9 F' N6 f
  4. void gm_Init(void)
    - T) u7 x( g0 k2 q5 ]
  5. {
    ' n  D& P' M, \5 r( w2 D/ F% R

  6. " C. z; H' L8 c) Y7 Q5 w
  7. GPIO_InitTypeDef  GPIO_InitStructure;
    ! S  X% m7 Q, Z1 {/ i9 T
  8.          
    % F) f4 ~" |7 E8 }) \+ s* Q
  9. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);        7 \5 v, ?1 B$ l% m
  10.         
      L3 l5 |2 ^, M5 z
  11. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;                                 ( h& ]# d9 e( q% Q! d- N& W7 c
  12. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;                 
    ! ?/ I5 d5 k& s7 r8 ?
  13. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                ; m, |" h( h( y9 v9 x6 K, e
  14. GPIO_Init(GPIOD, &GPIO_InitStructure);                                         
    7 C1 f1 O& b0 k
  15. GPIO_SetBits(GPIOD,GPIO_Pin_11);                                                
    $ w( M& v' ^6 H; Z8 R" Q6 j

  16. 9 a0 C/ j# h# S+ a# ?
  17. }
复制代码
0 ^- W; f. q+ `& T' F' [  X
头文件声明:
% q& Q' Y9 [. v
/ I, m; m, [" A- d0 E& ?. S6 ~$ p
  1. #ifndef __GM_H7 D* q% o2 n3 Q9 ~( _  a
  2. #define __GM_H* O5 w+ f8 W7 R7 |3 J1 d8 U- l& U
  3. #include "sys.h"
    ! h( Z( _3 F1 L: P& O

  4. 2 D, J$ _7 ]! O9 K- e0 X
  5. #define gm PDin(11)4 z9 [5 R" h& U, E
  6. void gm_Init(void);0 _( p/ \& p4 L7 I" O
  7. # [2 P' K( f! r
  8. #endif
复制代码

, i5 I) o4 o( P: \9 d主函数:
! e2 c) S: b. P- r" p! x* r: M& U0 W" x0 c5 L" c' y
  1. #include "led.h"! Z; d% l# l" y2 ]
  2. #include "gm.h"' J& j/ _) z0 D$ r

  3. 0 P6 r/ O& w% Y4 W! F

  4. 1 z: z6 x( h* Z; U4 ?
  5. int main(void)
    ) e4 k1 L1 y) e. ~, w" [
  6. {        
    - m. m- K" o: c. Z2 p
  7.         delay_init();            
    " r1 i: M, P) D: O! c' P
  8.         LED_Init();                  ; }, `% k$ F3 s! |; a  R7 z, w! o% Y
  9.          gm_Init();  O/ r! V9 B' k2 @+ m
  10.         while(1); I3 B* R+ D2 x% I
  11.         {+ @3 t5 M& p4 q5 s
  12.                 if(gm==1)
    , {2 n& j6 p# a' z5 N% D' F3 m( ]& Y* k. M
  13.                 {
    " R3 Q! S& [: o; e
  14.                         LED0=1;. C" _# p9 `6 a/ v+ P. _
  15.                         LED1=1;* I" U+ l5 P( W, ^
  16.                 }4 f4 V) a  A( b7 i
  17.                 if(gm==0)
    $ Z4 |: ^# x, q& n. S( i7 j
  18.                 {+ i1 q5 r7 m9 e# i  g# X
  19.                 delay_ms(50);
    3 ?; S+ C, N% W1 Z
  20.                 if(gm==0)3 P8 x; ^; B) ^' M4 @* \
  21.                 {
    9 H8 O! j% f% q- A
  22.                         LED0=0;
    " u: _8 H  k( u, X4 q* [! V) k: _
  23.                         LED1=0;
    * N* y; C, s; ?! e7 C
  24.                 }
    1 h0 A% @8 @. _
  25.                 }
    7 H0 ]6 X8 U* Z) S: X$ w+ w
  26.         }4 t/ f0 n: v) t- h& K: g
  27. }
复制代码

" `- j1 u3 O2 `实验截图:4 n# I  J/ s$ E5 }2 w7 T
% q: q4 r; a1 R, x0 U2 W4 p/ d7 b
[XQB]KS`V90K7I$AM7(RDC7.png ( E4 v5 s. T: a( Z

9 C! V' t; q( u M7TMP{@CD8Y5$}BIC3_L2WC.png
5 Q2 F9 I$ E  L
  [1 M. S( j: G3 \ 三、总结

; l0 U2 u4 T0 h. E4 e! b到这里就很清晰明了了,开始上手吧,关于光敏模块的用途,就是检测光线强度,我们添加光敏模块,很多地方都可以用到,比如像去年的无线充电小车,将光敏模块放置在LED灯前,小车充完电,灯亮起,光敏感应到后启动电机;又比如走廊里的灯亮灭设置等等,用途很广泛。
0 d: K! f% G8 X3 @) x- c2 B  z6 e' l+ j5 ]3 S
0 ?- h; P7 u) h4 W: G6 l$ a1 P
收藏 评论0 发布时间:2022-5-14 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

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