ADC实验之光敏传感器

硬件连接

我们可以测量A的电位,进而测量光的强度,光强与A点电压的对应关系如下:

电流反应的光敏二极管的导通状态,光强与电流对应关系如下:

因此,我们可以得出ADC读取的电压值的数字量(12位)与光照强度的关系:

软件配置(采用单通道单次转换的ADC)

Main.c

#include "stm32f10x.h"
#include "delay.h"
#include "lcd.h"
#include "usart.h"
#include "LightSensor.h"int main()
{u8 LightSensor = 0;delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);LightSensor_InitConfig();uart_init(115200);LCD_Init();while(1){LightSensor = DigitalConvLight();printf("LightSensor = %d\n",LightSensor);LCD_ShowNum(10,10,LightSensor,4,16);delay_ms(50);}
}

LightSensor.c

#include "LightSensor.h"
#include "stm32f10x.h"
#include "delay.h"void LightSensor_InitConfig()
{ADC_InitTypeDef ADC_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3|RCC_APB2Periph_GPIOF,ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOF,&GPIO_InitStructure);ADC_DeInit(ADC3); // ADC3复位RCC_ADCCLKConfig(RCC_PCLK2_Div6); // ADC正常工作的频率<=14MHzADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_Init(ADC3,&ADC_InitStructure); // 配置ADC3的属性ADC_Cmd(ADC3,ENABLE); // 配置完ADC3的属性就使能ADC3ADC_ResetCalibration(ADC3);while(ADC_GetResetCalibrationStatus(ADC3) == SET); // 当函数返回为SET说明还在复位校准当中,当退出复位校准后函数返回RESETADC_StartCalibration(ADC3);while(ADC_GetCalibrationStatus(ADC3) == SET); // 当函数返回为SET说明还在启动校准当中,当校准完成后函数返回RESET
}u16 GetSingleADCValue()
{u16 temp = 0;ADC_RegularChannelConfig(ADC3,ADC_Channel_6,1,ADC_SampleTime_28Cycles5); // 配置ADC3_CH6规则通道的属性ADC_SoftwareStartConvCmd(ADC3,ENABLE); // ADC3的规则通道开始转换while(ADC_GetFlagStatus(ADC3,ADC_FLAG_EOC) == RESET); // 等待ADC3_CH6规则通道转换完成temp = ADC_GetConversionValue(ADC3);temp = temp>=4000?4000:temp;return temp;
}u8 DigitalConvLight()
{u8 i = 0;float temp = 0;while(i<=4){temp += GetSingleADCValue();i++;}temp = 100*(1 - temp/5/4000);return (u8)temp;
}

LightSensor.h

#ifndef _LIGHT_SENSOR_H
#define _LIGHT_SENSOR_H#include "sys.h"void LightSensor_InitConfig();
u16 GetSingleADCValue();
u8 DigitalConvLight();#endif

疑难解答

为什么ADC转换的数值会大于4096?

STM32的ADC 的转换结果可以左对齐或右对齐,结果大于4095 应该是采用了左对齐的方式。

你看一下手册把配置寄存器的相应位设定改成右对齐应该就是你想要的了

ADC实验之光敏传感器相关推荐

  1. c语言光敏程序代码,ADC实验之光敏传感器

    ADC实验之光敏传感器 硬件连接 我们可以测量A的电位,进而测量光的强度,光强与A点电压的对应关系如下: 电流反应的光敏二极管的导通状态,光强与电流对应关系如下: 因此,我们可以得出ADC读取的电压值 ...

  2. stm32 adc输入电压范围_正点原子【STM32-F407探索者】第二十五章 光敏传感器实验...

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 本章我们将向大家介绍探索者 STM32F4 开发板自带的 ...

  3. STM32学习笔记(六 定时器及应用 4 光敏传感器实验 )

    一.光敏传感器简介 光敏传感器是最常见的传感器之一,它的种类繁多,主要有:光电管.光电倍增管.光敏电阻.光敏三极管.太阳能电池.红外线传感器.紫外线传感器.光纤式光电传感器.色彩传感器.CCD 和 C ...

  4. 光敏传感器实验报告_光敏传感器光电特性测量实验分析报告.ppt

    思考题 1.光电效应有哪些分类? 光电效应可以分为外光电效应和内光电效应. 2.光敏电阻的物理基础是什么? 内光电效应. * * 光敏传感器的光电特性测量实验 实验简介 光敏传感器是将光信号转换为电信 ...

  5. 【STM32】光敏传感器示例

    00. 目录 文章目录 00. 目录 01. 光敏传感器简介 02. 硬件模块 03. 程序设计 04. 结果验证 05. 预留 06. 附录 07. 声明 01. 光敏传感器简介 光敏传感器是最常见 ...

  6. STM32——光敏传感器实验-M4

    一.光敏传感器原理 1.光敏传感器简介 光敏传感器是最常见的传感器之一,它的种类繁多,主要有:光电管.光电倍增管.光敏电阻.光敏三极管.太阳能电池.红外线传感器.紫外线传感器.光纤式光电传感器.色彩传 ...

  7. 内部温度传感器和光敏传感器实验

    内部温度传感器 STM32F407 有一个内部的温度传感器,可以用来测量 CPU 及周围的温度(TA).该温度传感器在内部和 ADC1_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值. ...

  8. 33_光敏传感器实验

    目录 光敏传感器简介 硬件接线图 实验源码 光敏传感器简介 光敏传感器简介 光敏传感器是最常见的传感器之一,它的种类繁多主要有:光电管.光电倍增管.光敏电阻.光敏三极管.太阳能电池.红外线传感器.紫外 ...

  9. 光敏传感器实验报告_光敏传感器实验论文-大物实验

    光敏传感器实验及探究 摘要: 光敏传感器是以光电器件作为转换元件的传感器.它可用于检测光量变化或直 接引起光量变化的非电量, 也可用于检测能转换成光量变化的其他非电量. 它首先把被测量 的变化转换成光 ...

最新文章

  1. python中用来占位的语句是_python占位语句
  2. 总结一下遇到的各种核函数
  3. QTableView中修改某个单元格或者行或者列内容颜色
  4. MySQL数据库备份及二进制文件恢复
  5. 升级 asp.net core 1.1 到 2.0 preview
  6. 【Node】node启动过程
  7. oracle主从表分离怎么实时更新数据_高可用数据库主从复制延时的解决方案
  8. 给Vista系统加入一键还原功能
  9. C语言case字句有什么作用,switch case 语句的使用规则
  10. 解决response.setHeader(Content-disposition 中文乱码问题
  11. java lower_Java TreeSet lower()用法及代码示例
  12. grads插值_利用grads描述文件中的pdef做插值的实用方法,转模式的同学看过来~~...
  13. log4j2配置详解(节点和输出格式)
  14. URL Schemes
  15. 华为手机被diss:AI拍照涉造假,国外网友又炸锅了
  16. 电商女装评论数据集分析
  17. 软件设计的不同模型:瀑布式、快速原型法以及迭代式
  18. 如何使用Sass Mixins
  19. Android怎么保证广播安全,Android 广播机制安全性研究.PDF
  20. excel比较两个表中数据 提取相同列 合并到同一张表中

热门文章

  1. java.sql.SQLSyntaxErrorException Unknown column····
  2. fedora16英文环境下支持中文输入法
  3. 设计模式之备忘录模式(Memento Pattern)
  4. 洛谷OJ U552 守墓人 线段树模板题
  5. 孕期饮食新理念——初光孕妇餐 让孕期营养更科学
  6. 软件测试工程师必看:如何使用JMeter中的正则表达式?
  7. 卢梭:人无往不在枷锁之中
  8. 7. (8.10~8.31)2022年自动化保研信息汇总(预推免)
  9. 【转】ASCII码十进制、十六进制对照表
  10. 【google翻译】使用Ola Hallengren的脚本更新统计数据