STM32版CCD线性摄像头寻线寻迹小车

本文介绍了一种使用STM32F103C8T6单片机和TSL1401线性CCD传感器的寻线寻迹小车设计。通过CCD摄像头采集数据,结合ADC采集和动态阈值算法,实现实时调整小车方向,确保其稳定跟随黑线行驶。文中还涉及到硬件配置、代码实现和调试过程。
摘要由CSDN通过智能技术生成

基于STM32F103C8T6的CCD线性摄像头寻线寻迹小车


前言

目前大多数的小车寻线寻迹都是用红外对管寻线,这是比较简单也比较成熟的技术方案,且成本也低。本文将介绍使用CCD线性摄像头寻线寻迹。


一、模块介绍

TSL1401 线性传感器由一个 1x128 的光电二极管阵列、相关的电荷放大电路以及一个内部像素数据保功能组成。内部像素数据保功能可以为所有像素点提供同时积分的开始和停止时间。该阵列由 128 个像素组成,每个像素的感光面积为 3,524.3 平方微米。 像素之间的间隔为 8μm。内部控制逻辑简化了操作,该模块需要串行输入(SI)信号和时钟信号(CLK)。

在这里插入图片描述

二、使用说明

1.引脚说明

在这里插入图片描述
通过查看数据手册模块的管脚介绍如上

  1. AO: 信号输出(供单片机进行信号采集读取)
  2. CLK: 时钟信号
  3. GND: 地线
  4. SI: 信号输入(单片机向 CCD 发送指令)
  5. VDD: 电源(模块引脚标识为 VCC,接单片机逻辑电平,支持 3~5V)

2.其他

CCD 传感器是光学传感器,会受到环境光线的影响;程序中已经运用了动态阈值算法,尽量减小环境光线的影响,但是太暗或者太亮的环境下是不能正常工作的(一般室内正常光线可以运行)。

三、调试过程

在CCD调试助手中可以看出,当CCD摄像头扫描到黑线时,会出现一个凹槽,左右移动,凹槽也移动,脱离黑线凹槽消失。从这条线大概可以看出中值为多少。
在这里插入图片描述
通过串口助手打印出的中值结果如下:
在这里插入图片描述

四、寻线原理

小车寻线原理是通过 CCD 线性摄像头扫描黑线,摄像头扫描到 128 的像素点,中值为 64,扫描到黑线会得到一个二值化数据,用这个二值化数据减去中值64再除以 2,就得到小车偏离黑线的值(有正有负,如果为正,小车左转,如果为负,小车右转),舵机初始角度的值加上偏差的值就可以控小车沿着黑线跑了(数据是实时获取的,所以小车沿着黑线行驶不会卡方向)。

五、部分代码

1.CCD摄像头相关代码

首先对CCD摄像头初始化所用到的管脚初始化:

void Ccd_Init(void)
{
    
	GPIO_InitTypeDef  GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	 //使能PA端口时钟
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;				 //PA.2 端口配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
	GPIO_Init(GPIOA, &GPIO_InitStructure);					 //根据设定参数初始化GPIOA.2
	GPIO_SetBits(GPIOA,GPIO_Pin_2);						 //PA.2 输出高

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;	    		 //PA.3 端口配置, 推挽输出
	GPIO_Init(GPIOA, &GPIO_InitStructure);	  				 //推挽输出 ,IO口速度为50MHz
	GPIO_SetBits(GPIOA,GPIO_Pin_3); 						 //PA.7	输出高
}

获取中值:

void RD_TSL(void) 
{
   
	u8 i=0,tslp=0;
		
	static u8 j,Left,Right,Last_CCD_Zhongzhi;
	static u16 value1_max,value1_min;
		
	TSL_CLK=1;     //CLK引脚设为高电平          
	TSL_SI=0; 
	Dly_us(TIME_us);
				
	TSL_SI=1; 
	TSL_CLK=0;
	Dly_us(TIME_us);
				
	TSL_CLK=1;
	TSL_SI=
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值