发布时间:2021-09-14 阅读量:1235 来源: 我爱方案网 作者: 我爱方案网整理
PWM1和PWM2接口是连接到H桥的两个接口,这里使用了G2553的定时器A1产生PWM。CAP_P12是光电对管连接到比较强后输入到单片机的一个捕获接口,因为这里可以用定时器A0的捕获接口,使用定时器的捕获功能,可以使得程序设计更为简单。整个系统利用了两个定时器,并结合中断,使得整个系统都处于休眠状态,功耗可以做得比较低(但由于电机和12864的存在,这里的低功耗程序设计显得毫无意义额。。。)。另外还有一个12864的串行外部接口(SPI)三根线。


再放一个三线控制13864的图。由于MSP430x2xx系列是3.3V的器件,这里用到了一个245芯片来转换电平电压(CS和SCLK的顺序反了,后来布线的时候改的)。

这个函数是将捕获到的定时器的脉冲计数值送到12864的一个中间转换函数,temp显示的转速,由于CPU 时钟用的1MHz,电机那里有四个黑带,所以实际的转速应该是250000/tempData,得到这个数据后转换成ASCII码,再送到12864显示。问题出现在这里,12864显示数据1000+,说明temp = 1000+,比实际的数据100+大了10倍。那么也就意味着tempData的数据比实际的真实数据小了10倍,也就是说定时器两次捕获时间的间隔比常规的要小很多,为什么会小了那么多倍呢。
电容的阻抗表达式:

把运放的输出结果看成一个电压源,其输出电压等于RC滤波网络的输入电压假设其值为:

那么上图所示的Vout的输出表达式为

为了方便分析,我们假设Vi为1V,并且不考虑相位问题,取Vout的模可得

输出表达式与输入频率的关系找到了,那么我们的电容值又该怎么设计呢?考虑到我们的光电管经过比较器输出以后的频率最大为500Hz,那么我们设计一个‐3dB在500Hz左右的滤波器即可。用MATLAB写个小程序。
R = 1000;
f = 0:0.01:1000;
w = 2*pi*f;
C1 = 0.001 * 10^-6;%%uF
C2 = 0.01 * 10^-6;%% uF
C3 = 0.1 * 10^-6;%% uF
C4 = 1 * 10^-6;%% uF
C5 = 0.3 * 10^-6;%% uF
y1 = sqrt((1./(1+w.*w*R^2*C1^2)).^2 +
((w*R*C1)/(1+w.*w*R^2*C1^2)).^2);
y2 = sqrt((1./(1+w.*w*R^2*C2^2)).^2 +
((w*R*C2)/(1+w.*w*R^2*C2^2)).^2);
y3 = sqrt((1./(1+w.*w*R^2*C3^2)).^2 +
((w*R*C3)/(1+w.*w*R^2*C3^2)).^2);
y4 = sqrt((1./(1+w.*w*R^2*C4^2)).^2 +
((w*R*C4)/(1+w.*w*R^2*C4^2)).^2);
y5 = sqrt((1./(1+w.*w*R^2*C5^2)).^2 +
((w*R*C5)/(1+w.*w*R^2*C5^2)).^2);
plot(f,y1,f,y2,f,y3,f,y4,f,y5);
title(‘RC滤波器设计’);
legend(‘0.001uF’,‘0.01uF’,‘0.1uF’,‘1uF’,‘0.3uF’);
xlabel(‘频率/Hz’);
ylabel(‘输出幅频/V’);
在测试C的时候从1nF开始测试,得到下面的输出曲线,从图中我们可以看到,从0Hz到1000Hz,输出几乎都是1,不变,1nF的电容不符合我们的设计要求。再加大,测试104电容,104电容即0.1uF,得到的输出幅频特性曲线如下,显然不符合我们的设计要求,500Hz‐3dB处还差一点点,再加大10倍,测试1uF。
推荐阅读:
在任何数字电子系统中,时钟信号都扮演着“心脏起搏器”的角色。
RTC晶振与普通32.768kHz晶振的PCB设计要点基本一致,其核心均在于通过优化布线以降低杂散电容、确保频率精度,并依托合理的布局规划最大限度屏蔽来自板上其他信号源的电磁干扰。
按晶振的功能和实现技术的不同,分为温度补偿晶振(TCXO)、压控晶振(VCXO)、恒温晶振(OCXO)。
为了在性能与功耗之间取得最佳平衡,需要根据具体应用场景,对基准时钟进行相应的分频、倍频或转换处理,从而为各模块提供适宜的时钟信号。此时,分频技术就成为连接晶振基准频率与系统需求的关键,通过数字电路将晶振原始频率按固定比例降低,输出符合要求的低频时钟信号。
RTC芯片是一种专门用于精准计时、掉电续时的专用集成电路,其核心功能是提供精准、稳定的时间信息(包括秒、分、时、日、月、周、年),并能在主电源断电后依靠备用电池继续保持计时,从而确保时间持续不间断。