基于Stm32的黑胶唱机测速装置及误差补偿算法
2021-02-07黄春平陈帼鸾田森平王伟涛
黄春平,陈帼鸾,田森平,王伟涛
(1.中山职业技术学院信息工程学院,广东 中山 528404;2.华南理工大学自动化科学与工程学院,广东 广州 510641;3.中山市自动化研究所音响工作室,广东 中山 528400)
1 引 言
黑胶唱片采用模拟录音,动态范围广,作为音源载体能真实记录音乐信号。黑胶唱机影响音质好坏的关键因素是转速,黑胶唱机常见转速有每分钟16.6666转、33.3333转、45转、78转,在使用黑胶唱机前,都必须调校好黑胶唱机转速,传统的调速借助测速刻度盘和人眼进行辨别,这样的辨别需要丰富的经验且易产生误差。为了更方便调整黑胶唱机转速,设计了一种基于红外对射感应[1]能准确测试黑胶唱机转速的测速仪,确保唱机转速和黑胶唱片的规格一致。
2 测试方案及系统设计
2.1 测试方案的选择
方案1在黑胶唱机外围贴一白纸,已知白纸的长度S,机子转动后通过红外传感器测出通过这段白纸用了多少时间T,用公式计算出线速度V,进而求出角速度ω,也就求出了最终结果。但不同的黑胶唱机半径大小不同,而产品最终的设计代码是固定的,所以当换了一些半径不同的机子的时候就会出现误差,造成了计算结果的不精准,所以就排除了这个方案。
方案2在黑胶唱机上边贴一长方形长条白纸,从圆心起点向外围贴上去,白纸的长度是经过调研市面各种黑胶唱片机而计算出的长度,然后再通过方案一的计算方法计算出角速度ω,因为白纸的长度是固定的,也是从圆心向外开始贴的,所以就解决了不同机子半径不同的问题。但如果采用这种方案需要人工测出白纸的长度,人工的测量总是会出现误差的,所以这样测量的结果也会不精准。
方案3在黑胶唱机中心的轴上插入一个特制的圆形码盘,码盘里开有四等分的1 mm沟槽,然后让红外对射感应每两个沟槽间的时间,再通过单片机的算法算出最终的转速,这也是本次设计最终方案。
2.2 系统结构及工艺设计
黑胶唱机测速仪结构图如图1所示,主要包括测定黑胶唱机电机转速的码盘装置1、单片机处理模块、显示器4、固定外壳2、中间传输管5和码盘塞子6。为减轻附着在黑胶唱机的测速仪重量,同时也为了方便操作,将码盘装置和单片机处理模块在结构上分成两块,码盘装置可转动地放置在固定外壳21内部,单片机处理模块安装在固定外壳22内部,中间通过传输管5连接。显示器安装在处理模块固定外壳22的顶部,显示实时转速。
码盘装置包括测速码盘和红外传感器,如图2所示,测速码盘包括上下两个圆盘和中间圆柱,上边是一个小圆盘10,下边是一个大圆盘11;中间的圆柱是中空的,它是码盘的转轴13,可套进唱片机中间的转轴,码盘转轴将大小圆盘连为一体。码盘的大圆盘在测速时能够附着在唱片机上,使码盘能跟着唱片机带着转动;小圆盘沿着圆心到圆边均匀开了4条宽为1 mm宽的沟槽12,目的是为红外传感器测速使用。红外传感器采用了两个槽型红外光耦传感器模块,由槽型光耦和LM393处理电路组成,30是槽型光耦的红外发射光源,31是槽型光耦的红外接收探头[2]。用螺栓把槽型红外光耦传感器模块固定到码盘装置外壳两侧,使小圆盘位于槽的中间,两个槽型红外光耦传感器模块对称地固定在码盘的两侧。测速时码盘转轴套在黑胶唱机中心电机的转轴上,当黑胶唱机电机转动时,能带动码盘大小圆盘转动,小圆盘转动时因为沟槽红外传感器能周期性地感知红外光遮挡信息,根据这个信息单片机处理模块能精准测出黑胶唱机转速。
图1 黑胶唱机转盘测速仪的结构示意图和实物图
图2 测速仪码盘和红外传感器示意图
红外传感模块,如图3(a)图所示,固定在码盘装置外壳的内侧壁上,通过传输管将红外测速信息送到另一端的单片机处理模块,传输线设置在传输管内连接码盘装置和单片机处理模块。码盘模块,如图3(b)图所示,是测速装置的关键模块,中间的圆柱将上下两个圆盘连为一体,大圆盘的半径是28 mm,小圆盘的半径是18 mm。由于码盘装置是可转动地放置在固定外壳内部的,不测速期间,码盘因为没有黑胶唱机转轴的支撑易滑落,从而与槽型红外光耦传感器模块发生碰撞,导致槽型光耦损坏,为此在码盘装置外侧壁上设置了一个起固定支撑小圆盘的码盘塞子,如图3(c)图所示。在不使用测速仪期间,推进码盘塞子支撑小圆盘,为了方便码盘塞子的推拉操作,设计了一个凸起的小抓手。
图3 黑胶唱机测速仪几个关键模块
3 控制硬件电路设计
硬件电路框图如图4所示,考虑到码盘装置和单片机处理模块是分开的,信号传输的距离远,使用了光电耦合器来提高抗干扰能力。STM32F103C8T6单片机7通过第二光耦9调整好显示器的最佳显示效果;通过第一光耦8启动红外对射装置和LCD显示,红外对射装置将码盘转速信息送到单片机输入捕捉引脚,当发生边沿触发,单片机进入中断,进行捕捉计数,经过周期测速法和拟合算法,精准测出黑胶唱机转速显示在LCD1602显示器4上。5 V电源通过USB接口输入给到可充放电管理IC 19控制可充式锂电池18,为单片机提供电源。
图4 硬件电路总体框图
3.1 单片机控制电路
如图5所示,主芯片使用的是48脚STM32F103-C8T6单片机,外接8 MHz无源晶振,CPU系统频率达到72 MHz,拥有64 KB FlashROM。该单片机拥有3个16位通用定时器,本设计将PB0设置成通用定时器3通道3输入捕捉引脚,PB8设置成通用定时器4通道3输入捕捉引脚[3]。把按键和单片机相连,当按下按键时单片机产生中断,不同的按键产生不同的中断,从而实现不同的功能,S7连接PB10控制LCD的显示偏压,按一下就调节一下LCD的对比度,共有十个档位,S8连接PB11控制红外对射和LCD的电源,按下则开始测速并开启LCD,通过Stm32低功耗配置和中断控制保证黑胶测速仪供电充足。指示灯的作用是,当按下S7时,每调节一次对比度指示灯便闪烁一次,按下按键但指示灯没闪烁证明对比度没有调节到,需要重新按,这样作用便确保了按键的使用和对比度的调节。
图5 Arm控制模块单元
3.2 充放电电路
为了测速使用方便,不需要外接电源线,采用了TP4057的充放电电路,内部配有锂离子电池,如图6所示。TP4057电路由USB接口输入5 V电源,芯片会自动检测BAT引脚电压,低于2.9 V时,进入涓流充电模式;高于2.9 V时,进入恒定电流模式;为4.2 V时,进入恒定电压模式,且充电电流开始减小。不同充电状态会亮不同的指示灯。
图6 TP4057锂电池充电IC电路
3.3 红外对射测速传感器电路
红外对射测速传感电路如图7所示,采用槽型红外光耦传感器[4],当槽有物体遮挡时,二极管发出的红外光不能传输到光敏三极管,LM393比较器输出为TTL高电平;相反的,当槽没物体遮挡时,输出为:TTL低电平。光耦传感器输出引脚直接连接STM32F103C8T6单片机的输入捕捉引脚。
图7 槽型光耦传感器原理图和实物图
STM32F103C8T6单片机的PB5输出经光耦AQY212S来控制红外对射测速传感电路开启和关闭,如图8所示。AQY212是光耦合器,抗干扰能力很强,当PB5为高电平时,光耦合器内部的发光二极管阴阳两端为高电平,二极管截止不发光,场效应管截止;当PB5为低电平时,光耦合器内部的发光二极管导通发光,场效应管导通,此时VCCIR约等于VCC,从而达到开启红外检测的功能。通过编程控制PB5,实现按键控制开关。开启检测时,测速仪随着黑胶唱机转动,红外对射传感器把检测到的信号送入STM32F103C8T6单片机PB0和PB8进行输入捕捉计数,再通过拟合公式算出精准的转速,并在LCD显示屏上显示。
图8 红外对射处理单元
4 测频误差分析
4.1 测频原理
黑胶唱机速度从16.6666 rad/min到78 rad/min,属于低速,宜采用测周期T法,通过测量小码盘相邻两个沟槽之间的时间再换算成周期,从而求出转速[5]。利用定时器3,4的输入捕捉模式可以精确地测出两次上升沿或下降沿之间的时间,可算出频率。测频原理如图9所示。采用Stm32通用定时器3和定时器4的通道3进行输入捕捉测量,将72 MHz系统主频进行7200分频变成10 kHz,并以这个频率采样计数;配置控制寄存器1使输入滤波器不滤波,滤波器采样频率fDTS跟FCK_INT一致,并以fDTS对TIM3_CH3 、TIM4_CH3上的边沿信号进行采样。配置选择输入端 IC3映射到TI3上;当定时器3和定时器4的通道3有边沿变化时候,会触发定时器将TIM3_CNT,TIM4_CNT的值锁存到TIM3_CCR3,TIM4_CCR3中去;并会对TIM3_SR,TIM4_SR的CC3IF置位从而产生中断。
图9 通用定时器通道3测频原理框
4.2 误差分析
由于码盘的小圆盘开有四条1 mm的沟槽,通过测量相邻两个沟槽脉冲的时间来测量速度。小圆盘随着黑胶唱机旋转,当旋转到沟槽时输出低电平,其他时候为高电平,而四条沟槽是均匀分布的,黑胶唱机旋转一周所需时间由四个相等高低波形构成,如图10所示。只要测出一个高低波形的时间即可求出黑胶唱机旋转周期,频率和转速。
图10 T法测速原理图
T=4×mTc
(1)
式中,T是黑胶唱机旋转一周时间;Tc是内部高速脉冲周期;m为高频时基对高电平的计数值。
(2)
式中,f是黑胶唱机频率;fc是内部高速时基;m为高频时基对高电平的计数值。
(3)
式中,n是黑胶唱机转速,单位为转/每分钟;N为码盘孔数,为4。
(4)
由于:
(5)
所以:
Δn/n=Δfc/fc-Δm/m
(6)
黑胶唱机转速误差的最大值为:
(Δn/n)max=±(|Δfc/fc|+|Δm/m|)
(7)
式中,Δn/n为转速的相对误差;Δm/m为计数值的相对误差;Δfc/fc为频率的相对误差。Δm/m误差主要是由于内部高速脉冲和按键启动测速时刻可能存在相差一个脉冲,此误差常被称为“±1误差”[6]。
Δfc/fc误差产生:Δfc/fc主要取决于晶体振荡器的稳定度G。
码盘小圆盘半径为18 mm,它的周长是113.09724 mm,码盘上面的小圆盘开有四条1 mm的沟槽,因沟槽导致的误差为4/113.09724=0.035367795。
4.3 误差解决和测试结果
Δm/m误差即“±1误差”,要减小Δm/m误差,就要增大m,增大m就要增大采样频率fc,本设计Stm32内部时钟为72 MHz,通过7200分频,内部高速时基设置为10 kHz,因此这项误差可以达到0.01%。
Δfc/fc误差取决于单片机无源晶振的稳定度,经过多次实验,通过补偿一个常数1.0000552可基本消除此项误差。
测速仪工作图如图11所示,经过大量实验数据分析,LCD显示的转速与实际的转速之间的关系接近纯比例关系,主要与Δfc/fc误差和沟槽未计数导致误差相关,通过直线方程n=n测×1.025425进行拟合补偿[7],补偿前后数据如表1所示。
图11 黑胶测速仪测速工作图
表1 补偿前后测试结果表
5 结 语
针对人工辨别黑胶唱机转速误差大的问题,通过测速码盘关键结构设计,能对不同尺寸、不同转速黑胶唱机精准测速;采用红外传感技术、周期测速法、Stm32输入捕捉测频技术及拟合误差算法使转速误差稳定在0.4 % 以内;Stm32低功耗配置、锂离子电池充电技术使测试仪便携可靠。黑胶唱机测速仪操作使用简单,建议在此基础上配上黑胶唱机电机调速模块,实现全自动调速将具有更好的市场推广价值。