Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

本项目设计并实现了一款基于嵌入式系统的多功能光谱分析仪,采用M型Czerny-Turner光学架构,结合闪耀光栅分光技术与东芝TCD1304线阵CCD,实现430–630 nm波段范围内的高精度光谱检测,光学分辨率达0.5nm。通过高性能RISC-V架构单片机CH32V307完成光信号采集、处理及数字转换,构建完整的数据处理链路。传感器使用线阵ccd,芯片是东芝TCD1304.

Notifications You must be signed in to change notification settings

wandyme/Spectrometer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

3 Commits

Repository files navigation

Spectrometer

本项目设计并实现了一款基于嵌入式系统的多功能光谱分析仪,采用M型Czerny-Turner光学架构,结合闪耀光栅分光技术与东芝TCD1304线阵CCD,实现430–630 nm波段范围内的高精度光谱检测,光学分辨率达0.5nm。通过高性能RISC-V架构单片机CH32V307完成光信号采集、处理及数字转换,构建完整的数据处理链路。传感器使用线阵ccd,芯片是东芝TCD1304.

其中tcd1234.zip文件是沁恒ch32v307vct6MCU驱动东芝TCD1304的程序 spectromete.zip是同样使用沁恒ch32v307的上位机程序,实现对CCD采集的光谱信息进行处理并进行与串口屏间的交互。串口屏型号为:淘晶驰 TJC1060X570_011C_I

结构为:

图片1

该光谱仪整体框架由光学系统、电路模块(含MCU)、触控屏幕和电池供电系统四部分构成,各模块协同工作,共同完成光谱信息采集、分析、展示等功能。
待测光先通过狭缝进入光学系统,经内部元件( 1 - 9 对应光学元件,含准直镜、光栅、线阵CCD 等)完成光信号分光与光电转换;转换后的电信号传输至MCU 等电路模块,由沁恒芯片(CH32V307VCT6)进行信号处理、光谱重构等运算;电池供电系统为电路模块、触控屏幕提供电力,保障各部分运行;触控屏幕一方面接收用户操作指令(如参数设置),传递给 MCU 模块执行,另一方面实时显示 MCU 处理后的光谱数据、操作界面,实现人机交互。在供电系统的支持下,通过 "光信号采集-电信号处理-指令交互与结果呈现" 的流程,各模块相互配合,完成光谱测量。

CCD传感器各模块介绍

(1)系统总体架构

应用层:数据采集、控制参数配置、数据传输
驱动层:定时器驱动 (TIM1/TIM2/TIM3/TIM4)、ADC驱动、DMA驱动、USART驱动
硬件层:CH32V307 MCU、TCD1304传感器、信号调理电路

(2)信号连接方案 TCD1304引脚--CH32V307连--信号特性
ICG--PA8 (TIM1_CH1)--负极性脉冲 2*(SH周期+10μs)
SH--PA6 (TIM3_CH1)--正极性脉冲 10μs-7.5ms可调
φM--PA0 (TIM2_CH1)--2MHz方波 50%占空比
Analog Out--PA1 (ADC1_IN1)--0.3-2.3V模拟输出

(3)通信协议
指令集:
0xA1 请求发送当前帧数据;
0xB1 设置SH周期10us;
0xB2 设置SH周期20us;
0xB3 设置SH周期50us;
0xB4 设置SH周期60us;
0xB5 设置SH周期75us;
0xB6 设置SH周期100us;
0xB7 设置SH周期500us;
0xB8 设置SH周期1.25ms;
0xB9 设置SH周期2.5ms;
0xBA 设置SH周期7.5ms;

数据帧格式:
[长度] 2字节 (小端)
[数据] 7296字节 (×ばつ2字节)

(4)关键问题与解决方案
ADC采样问题:初期测试中出现像素位置偏移
解决方案:引入硬件触发链路:TIM2→TIM4→ADC,改为主从模式并添加SH脉冲延迟补偿

数据输出问题:若将SH配置为单脉冲,按照TCD1304普通时序图配置。此时MCU像串口传输数据的时间也要算入积分时长,导致数据异常。
解决方案:将SH改为固定周期,使用TCD1304 Electronic Shutter功能

可变积分时间问题:更改SH周期时会导致ICG和SH相位不匹配,导致输出数据错误
解决方案:每次输出数据后重置产生ICG和SH的定时器,并补偿SH脉冲延迟

上位机各模块介绍

(1)状态机模块介绍
IDLE:检测auto_collect_flag或uart2_cmd_flag
START:发送特定起始字节(如0xAA)到ADC模块
WAIT:等待USART3 DMA完成标志 或 TIM6超时(防止死等)
PROCESS:原始数据转12位(右移4位+补码处理)
AVERAGE:累计采样达到AVG_TIMES后求均值
SEND:封装数据帧(添加0xFE头、校验和、0xFF尾)

(2)中断服务函数
TIM6_IRQHandler:1ms定时中断服务程序,仅执行sysTickCnt++和清除中断标志,确保系统时间基准的精确性。
USART2_IRQHandler:采用三状态机(头/数据/尾)解析控制指令:检测到0xFE进入数据接收状态,收满16字节后遇到0xFF置位完成标志,严格校验数据包完整性。
USART3_IRQHandler:通过空闲中断检测USART3数据帧结束,在DMA搬运完成后触发data_buffer_index更新,主循环通过该索引判断数据就绪。

(3)功能函数
ProcessReceivedData:根据adc_resolution模式转换原始数据,12位模式下每2字节合并为1个采样值,8位模式左移4位扩展,统计信息模式解析特征参数。
ProcessReceivedData1:为数据归一化处理函数,扫描数组找到最大值后,若超过阈值(0x15),则按比例压缩所有数据至0xFD以下,防止后续处理溢出。
ProcessReceivedData2:为多功能函数,对于校准功能我们设计了适用于淘晶驰屏幕的动态校准核心算法:屏幕会将传过来的数据一一显示,数据点和坐标轴有一套映射关系,比如第10个点对应的波长为431nm。通过输入的校准数据计算出实际的映射关系。最后在进行反解,该波长对应的是实际映射的第几个点,如果是小数,就用四阶龙格法拟合出他对应的值。对于基线采集功能:当启用basic_collect时记录基线噪声,delete_flag触发时执行基线消除(差分运算+0x10偏移补偿)。其内还设置了自动采集间隔、平均次数等运行参数,并通过change_data来解析USART2指令包并更新系统参数。

(4)数据收发函数:
Serial_SendByte1:功能同Serial_SendByte3,但针对USART2控制通道,用于发送响应指令或状态报告。
Serial_SendByte3:通过USART3同步发送单字节数据,阻塞等待发送完成标志(USART_FLAG_TXE),确保数据可靠传输到ADC模块。
Serial_SendString:基于Serial_SendByte1实现字符串透传,用于调试信息输出或文件数据保存时的文本格式转换。
Serial_GetRxFlag:原子化读取USART2的接收完成标志Serial_RxFlag,并在读取后自动清零,避免重复处理同一指令包。

About

本项目设计并实现了一款基于嵌入式系统的多功能光谱分析仪,采用M型Czerny-Turner光学架构,结合闪耀光栅分光技术与东芝TCD1304线阵CCD,实现430–630 nm波段范围内的高精度光谱检测,光学分辨率达0.5nm。通过高性能RISC-V架构单片机CH32V307完成光信号采集、处理及数字转换,构建完整的数据处理链路。传感器使用线阵ccd,芯片是东芝TCD1304.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /