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

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

[复制链接]
STMCU小助手 发布时间:2022-5-22 22:00
前言. Z; y$ L9 b( v9 j6 j7 A
本篇文章我们讲带大家了解光敏电阻的使用( B; O" N/ Z( e+ |; c
1 P! b4 H- I8 J3 Q% P
一、光敏电阻介绍
0 ^9 _% K6 B" i& |, w# j下面是4线光敏电阻实物图- u% I4 O! Y/ [  d! z1 z0 }
9QP]VKT$K1GD{1_CWM[(B.png 8 z/ s1 _7 E4 X9 a: A' a8 S4 S

  K0 Z. G6 y, w: r0 a产品接线说明:7 r2 s! V1 e* Z$ G9 ~5 o4 u
1、VCC 接电源正极 3.3-5V
. @+ n5 V- M* ^* i: J2、GND 接电源负极
2 Z2 E0 j  X3 A7 w& e! S3、DO TTL 开关信号输出 (配置为输出模式)& }0 v3 t: m( G: Y6 E' P  `2 Q
4、AO 模拟信号输出(ADC采样通道)
/ b7 @; }. w) F2 |! ]0 ]! j' r4 `6 G9 c0 H
光敏电阻主要用于检测周围的光照强度,光照强度发生变化那么ADC采样的值也会发送变化。
4 L. J* [8 b& a0 y! O7 j! W
/ E* y8 N, x4 d9 U5 V; q) `. }二、cubeMX配置
! n" C1 T$ B2 m0 Y* `
简单的配置我们就不多说了主要是ADC采样的配置
) x( v) Z& Y! ^  U) x# ~这里我采用的是ADC1通道4所以光敏电阻的A0就应该接在对应的ADC通道上。+ @7 \$ z  W2 z
# J( }% G3 c+ v7 S7 e. n
54)N1]0CDTWN}`~Y4}J5M~M.png
- J5 |  o- R. \2 Q4 g/ S/ G2 d
/ r# L) K# q4 F/ @' [顺便配置一下D0为输出模式用于简单检测光照强度。
& w7 Y3 {3 ?0 A' A5 f. D/ b$ ]: V1 d+ ~
{MM9AAB%2]N5F50T5S{BU~3.png
: k* e* N( a4 o" H" D; P: S
" b' K& a" B' E* K1 A三、代码说明8 K" s; s& `7 g" ?7 N. n+ {
  1. //IO口定义
    ! G) W8 P! U; |
  2. #define D0_SET() HAL_GPIO_WritePin(D0_GPIO_Port, D0_Pin, GPIO_PIN_SET)
    7 R, ~3 L, j9 G1 \
  3. #define D0_RESET() HAL_GPIO_WritePin(D0_GPIO_Port, D0_Pin,GPIO_PIN_RESET)
    " p) q$ {7 S1 O
  4. 3 h2 g* `/ W2 C' W' N
  5. - Q* k/ M/ g) R+ y, a; |
  6. //ADC采样数值
    3 c% H. K% \( T7 f1 q- W
  7. typedef struct# M$ L( H7 F4 f/ c, J6 Q; c; j, J. h
  8. {. O: D8 F  G' y9 @) a2 p
  9.   u32 adc_vol;//ADC测量的值
    8 B5 R! J! T# a
  10.   float vol;//实际电压值
    ! x' L- }2 q3 y8 @7 V, ~  l

  11. $ J0 N4 K& ]/ d; Z. Q) i# E& Z" R
  12. }RESIST;$ |: ~- X* l# q- i' J7 W

  13. * B% u6 u4 ~6 N( n
  14. HAL_ADC_Start_IT(&hadc1);//中断方式开启ADC' N+ H4 I" T# Y# |
  15. //ADC回调函数* f  F5 A+ W+ b" R: A. Z2 A
  16. void  HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)# `5 X2 ~3 x# M. O# v
  17. {* T7 s! x7 u" {7 |& o: D4 Y
  18.             resist_data.adc_vol=HAL_ADC_GetValue(hadc);//获取ADC转换结果. G: Y+ |- v1 p9 z# m
  19.      resist_data.vol=resist_data.adc_vol*5/4095;//转换为电压值& a: a7 Z1 M0 O) f- t
  20. }
    0 V5 U8 g0 Q, P" N: P

  21. 3 Z+ Z. D' F/ Z7 S# Y: E
  22. //测试函数当电压大于2.5时D0输出低电平光敏电阻上的LED指示灯被点亮8 o) \4 L/ p$ Y0 }
  23. void Resist_Test(void)
    " G- U0 e8 m$ N9 L: F" P  ^3 {: ?
  24. {
    # ~! G, c/ S3 D; C+ G( U9 R8 O
  25.   if(resist_data.vol>2.5): g1 S5 k7 B* B% s
  26.   {( `- E& s$ J8 _/ C" m3 g1 W
  27.     D0_RESET();/ @+ M! _% B4 e& r5 I7 P# G* D
  28.   }5 F& B# W6 X5 q
  29.   else
    7 Z1 E* W; t1 r  X8 S5 x
  30.   {5 E6 f% _* _. T' _
  31.     D0_SET();
    $ ^. H6 J. _8 X6 `1 s+ R& I! ]4 S
  32.   }
    * ^! `% w) `, t+ m* K  y
  33. }" T8 J- d+ w, {3 v9 h' S/ V. J" o
  34. * z6 z3 y) b0 n4 a7 Q7 D$ y
  35. while(1)8 @! a- N! e+ M4 |
  36. {, q' K& f& r7 q% C7 B+ N" Y  m, N
  37.         Resist_Test();& ~8 t+ P8 Y" j# }8 A
  38. }
复制代码

$ T/ }- ?& a  ]& a+ j" q- C' S- J总结

  ^, \. C1 ~' i  l# a( h! D光敏电阻的使用其实就是ADC采样的使用,大家如果不熟悉ADC采样的话可以看我前面的文章:ADC采样
) G8 q' w  G3 q, Y
  v  M: ~9 H& S: R. W! ]2 |# }1 t- U
/ `; @3 Q% }8 m  N! `( A3 d1 e
赞 收藏 评论0 发布时间:2022-5-22 22:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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