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

【经验分享】stm32项目实战 光敏电阻的介绍和使用

[复制链接]
STMCU小助手 发布时间:2022-5-22 22:00
前言
2 i" A1 t8 r3 v: B' ?& l本篇文章我们讲带大家了解光敏电阻的使用
7 |; n9 l0 ~$ i3 h& E1 b
/ N# S# t8 d" Q5 X3 P一、光敏电阻介绍
5 x5 x% a/ b$ n$ ]下面是4线光敏电阻实物图+ d8 k5 m3 D& {( K7 E$ C
9QP]VKT$K1GD{1_CWM[(B.png : C) \0 Q* ^+ n' w
" R9 O9 t2 {) e' k' s4 w1 h6 l$ c" v
产品接线说明:
8 c; l# Z. L& m0 _! G2 ^' F4 C* J1、VCC 接电源正极 3.3-5V, p# e7 G! O7 a$ r% S  W! g
2、GND 接电源负极1 J/ M1 M( e* }3 ?
3、DO TTL 开关信号输出 (配置为输出模式)% O7 m2 s* |, n) ?4 i) m2 Z
4、AO 模拟信号输出(ADC采样通道)
! m2 P) \3 d7 l5 c+ p6 Q6 m/ \0 ^  `1 G% M8 P( `/ o3 _
光敏电阻主要用于检测周围的光照强度,光照强度发生变化那么ADC采样的值也会发送变化。% r: P2 H0 T1 ?4 f
9 x2 K2 z" U4 G6 F
二、cubeMX配置

$ O9 p2 |) Y( a$ r8 J  M- f简单的配置我们就不多说了主要是ADC采样的配置5 T% _" Q6 S, ?0 U) N
这里我采用的是ADC1通道4所以光敏电阻的A0就应该接在对应的ADC通道上。  w2 M! N- x1 ]: x8 f4 N& ?
' t9 U& S# p/ n- X0 C
54)N1]0CDTWN}`~Y4}J5M~M.png + o2 G1 x) M: k

  u* O1 A/ J0 x9 B顺便配置一下D0为输出模式用于简单检测光照强度。
; ^  a( i. R( M; \
- T9 G; ]" h+ A4 ~' m2 k" h {MM9AAB%2]N5F50T5S{BU~3.png
9 D2 W; ?; ?) }& m
0 @; W* w' p" h- \; G+ H三、代码说明
3 D- r$ _, B1 R2 i& u& Y( O
  1. //IO口定义
    ) I7 _- Q6 u; a5 x- R9 K# j
  2. #define D0_SET() HAL_GPIO_WritePin(D0_GPIO_Port, D0_Pin, GPIO_PIN_SET)) a- x% G0 |& R9 ]  E" d
  3. #define D0_RESET() HAL_GPIO_WritePin(D0_GPIO_Port, D0_Pin,GPIO_PIN_RESET)
    * z; b$ z/ }7 }  K
  4. ! A' j. V" ^1 G* E7 y
  5. 6 R7 U  C2 L: C0 k7 r2 _' R
  6. //ADC采样数值% d, z# F- ^* t3 F: |4 K5 H) Y9 f
  7. typedef struct" T7 ^+ q  S9 x
  8. {* Z" Q  S9 l" U* h0 @+ Q
  9.   u32 adc_vol;//ADC测量的值6 d, z% x  i3 }* Y+ E
  10.   float vol;//实际电压值$ b: ?8 v( O4 E5 a  w% R# c7 \  n
  11. * H) t( F4 P# h  V2 F$ q2 u. u$ F
  12. }RESIST;
    ) ]/ L" ^" G5 `* P: k$ J

  13. 5 B. ^5 ~, R5 c4 \; U1 o2 A$ J
  14. HAL_ADC_Start_IT(&hadc1);//中断方式开启ADC
    : g- P9 `" g/ ~( |
  15. //ADC回调函数( C8 p- h' Z! a5 N
  16. void  HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc), g5 j0 g' i0 W# {* h
  17. {! v7 I- @2 F1 x' H+ B: F, ~
  18.             resist_data.adc_vol=HAL_ADC_GetValue(hadc);//获取ADC转换结果0 ]' R$ p* H+ T5 c, g0 `0 T
  19.      resist_data.vol=resist_data.adc_vol*5/4095;//转换为电压值5 u8 x% c& E# b+ k
  20. }& u& a9 @( n' a4 x
  21. + I- z# ^- ~9 ?: A
  22. //测试函数当电压大于2.5时D0输出低电平光敏电阻上的LED指示灯被点亮6 }8 X# w# `6 B' @; p
  23. void Resist_Test(void): ?$ F& l. V3 ?. N
  24. {8 Z7 C1 w$ t4 T3 b
  25.   if(resist_data.vol>2.5); x, g) A: w% E
  26.   {) ]5 F- `( Y/ q5 ~4 j: C5 v& |8 x
  27.     D0_RESET();
    8 g, {! v" [1 l
  28.   }3 U5 O- C! |( I/ k$ B. T
  29.   else  n0 C" p/ F* i2 ^% g3 U, U
  30.   {, b& y1 O3 N0 ~8 ]$ t
  31.     D0_SET();9 L% ^0 g1 ?4 J8 f$ r. j) o
  32.   }
    , p" y& q  n% K! N3 e
  33. }
    1 N4 @9 d5 q; l4 G
  34. ' h3 _- J/ Z; G* r$ \& j; N
  35. while(1)
    ) K/ C$ g) T  q- A
  36. {
    2 |7 p/ W8 G5 B' X4 v
  37.         Resist_Test();
    9 F8 X! Y: p4 t' X6 X
  38. }
复制代码
) g$ O9 N# p" Y+ k( ^9 f4 J
总结

$ Z" @0 @# R* g: a- @光敏电阻的使用其实就是ADC采样的使用,大家如果不熟悉ADC采样的话可以看我前面的文章:ADC采样0 _. ^* o; x! p

8 q5 A& u4 G  G: e! V7 C: |+ _* i' V6 }6 ?; C4 @

( [  l0 l- ?8 R$ ?5 {
收藏 评论0 发布时间:2022-5-22 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

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