[DemoCode下载] TCRT5000红外传感器的控制

[复制链接]
 楼主| mintspring 发表于 2023-2-19 17:45 | 显示全部楼层 |阅读模式
EC_NANO130_TCRT5000_IR_Sensor_Control_V1.00.zip (932.45 KB, 下载次数: 1)
简介
TCRT5000传感器的工作原理与一般的红外传感器一样,一传一感。
TCRT5000具有一个红外发射管和一个红外接收管。当发射管的红外信号经反射被接收管接收后,接收管的电阻会发生变化,在电路上一般以电压的变化形式体现出来,本范例代码使用Nano130经过ADC转换后输出结果。电阻的变化起取于接收管所接收的红外信号强度,常表现在反射面的颜色和反射面接收管的距离。

8045063f1efc8b2636.png

 楼主| mintspring 发表于 2023-2-19 17:47 | 显示全部楼层
ADC初始化:
  1. void Open_Volume_Knob(void)
  2. {
  3.         uint32_t ADC_Source_Clock_DIV;
  4.        
  5.         /* Initial ADC Function Pin */
  6.         SYS->PA_L_MFP = (SYS->PA_L_MFP & ~SYS_PA_L_MFP_PA0_MFP_Msk) | SYS_PA_L_MFP_PA0_MFP_ADC_CH0;
  7.         GPIO_DISABLE_DIGITAL_PATH(PA, BIT0);
  8.        
  9.         /* Safe for other unknown ADC device */
  10.         while(ADC_IS_BUSY(ADC));                                       
  11.   SYS_UnlockReg();
  12.         /* Initial ADC Clock Source */
  13.         ADC_Source_Clock_DIV = _ADC_Source_Clock / ADC_Clock;
  14.         if(ADC_Source_Clock_DIV>256)
  15.         {
  16.                 Open_Volume_Knob_Fail = TRUE;
  17.                 ADC_Source_Clock_DIV = 256;
  18.                 ADC_Clock = _ADC_Source_Clock / 256;
  19.                 printf("\nADC Clock Initial Fail!\n");
  20.         }
  21.         else
  22.         {
  23.                 Open_Volume_Knob_Fail = FALSE;
  24.         }
  25.        
  26.         CLK_SetModuleClock(ADC_MODULE, CLK_CLKSEL1_ADC_S_HXT, CLK_ADC_CLK_DIVIDER(ADC_Source_Clock_DIV));
  27.         CLK_EnableModuleClock(ADC_MODULE);
  28.   SYS_LockReg();
  29.        
  30.         /* Initial ADC Peripheral */
  31.         ADC_Open(ADC, ADC_INPUT_MODE_SINGLE_END, ADC_OPERATION_MODE_SINGLE_CYCLE, ADC_CH_0_MASK);
  32.         ADC_SET_RESOLUTION(ADC, ADC_RESSEL_12_BIT);
  33.         ADC_SET_REF_VOLTAGE(ADC, ADC_REFSEL_POWER);
  34.         ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);
  35.         ADC_POWER_ON(ADC);
  36. }


 楼主| mintspring 发表于 2023-2-19 17:48 | 显示全部楼层
MCU通过ADC获得TCRT5000传感器测量到的值:
  1. uint32_t Get_Volume_Knob(void)
  2. {
  3.         uint32_t ADC_Raw_Data;

  4.         /* Start ADC Coversion */
  5.         ADC_START_CONV(ADC);
  6.         while(!(ADC_GET_INT_FLAG(ADC, ADC_ADF_INT)));
  7.         ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);
  8.         ADC_Raw_Data = ADC_GET_CONVERSION_DATA(ADC, 0);

  9.         return ADC_Raw_Data;
  10. }


小小蚂蚁举千斤 发表于 2023-2-23 16:17 | 显示全部楼层
反射式光学传感器
huangcunxiake 发表于 2023-2-23 21:53 | 显示全部楼层
这个是测温的传感器吗?
AdaMaYun 发表于 2023-2-24 08:57 | 显示全部楼层
不是测温是光感吧,那不红外吗
OKAKAKO 发表于 2023-2-27 16:12 | 显示全部楼层
这个具体还分什么光电光敏吗?
szt1993 发表于 2023-2-28 11:54 | 显示全部楼层
TCRT5000质量可以但是好像价格不便宜而且比较容易受干扰
中国龙芯CDX 发表于 2023-2-28 14:38 | 显示全部楼层
都属传感器类型的吧,一般基本传输都是一样的
LOVEEVER 发表于 2023-2-28 14:39 | 显示全部楼层

TCRT5000的结构很紧凑
小小蚂蚁举千斤 发表于 2023-2-28 15:34 | 显示全部楼层
反射光强度的高低来调节
AloneKaven 发表于 2023-3-1 19:46 | 显示全部楼层
测温那是红外的吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

302

主题

4962

帖子

24

粉丝
快速回复 在线客服 返回列表 返回顶部

302

主题

4962

帖子

24

粉丝
快速回复 在线客服 返回列表 返回顶部