许多模拟电路需要一种时钟信号,或者要求能在一定时间后执行某项任务。对于这样的应用,有各种各样适用的解决方案。对于简单的时序任务,可以使用标准的555电路。使用555电路和适当的外部组件,可以执行许多不同的任务。
然而,使用相当广泛的555定时器有一个缺点,就是设置不太精确。555定时器通过给外部电容充电和检测电压阈值来工作。这种电路很容易制作,但它的精度很大程度上取决于其电容的实际值。
晶体振荡器适用于精度要求较高的应用。它们的精度可能很高,但它们有一个缺点:可靠性。参与电气设备维修的人都知道,故障通常是由大型电解电容引起的。晶体振荡器是引起故障的第二大原因。
第三种测量时间长度或生成时钟信号的方法是使用一个简单的小型微控制器。当然,可供选择的器件数量繁多,且可以选择各自不同的优化方法。但是,这些器件需要编程,用户需要掌握一定的知识才能使用它;此外,由于其采用数字设计,在关键应用中使用时,必须非常小心谨慎。例如,如果微控制器发生故障,整个系统会出现问题。
除了这三种基本的时钟产生构建块之外,还有其他不太为人所知的替代方案。ADI公司提供的TimerBlox模块就是这样一种替代方案。它们是基于硅的时序模块,与微控制器不同,它们在运行中是完全模拟的,可以通过电阻进行调整。所以,它不需要软件编程,功能也非常可靠。图1对不同的TimerBlox模块进行了概述,且介绍了它们各自的基本功能。使用这些基本构建模块可以生成无数其他功能。
图1.用于生成各种时序功能的TimerBlox电路。
与广泛使用的555定时器电路相比,TimerBlox电路不依赖外部电容充电。所有的设置都在电阻中完成,因此其功能更精确。精度可达到1%至2%。晶体振荡器的精度更高,约为100倍,但随之而来的是各种缺点。
图2.采用LTC6993 TimerBlox集成电路的包络检波器。
时序模块的应用非常多样化。ADI公司已经发布了许多示例电路。图2显示了一个包络检波器。几个快速脉冲结合在一起形成一个较长的脉冲。LTC6993-2的外部组件对于这个应用来说是最少的。电路中的电容只是一个支持电源电压的备用电容,对定时模块的精度没有影响。
其他有趣的应用还包括用于电源的多个开关稳压器的相移同步,或将扩频调制添加到具有同步输入的开关稳压器IC中。另一个典型的应用是部署指定的延迟,也就是定时器为特定的电路段提供延迟开启的功能。
有许多不同的技术解决方案用于生成时钟信号和执行各种基于时间的任务。每种方案各有其优缺点。例如TimerBlox模块这样的硅振荡器,就因为使用可变电阻代替电容,所以具备易于使用、精度高、可靠性高等特点。
关键字:模拟电路 定时器
引用地址:
技术文章—模拟电路正确的时序
推荐阅读最新更新时间:2024-11-13 09:27
单片机汇编中断程序(定时器中断)
;首相,介绍一下51单片机的定时计数器,51有两个定时计数器,分别为T0,T1,基本一样, ;有一点不同,下面我们介绍定时计数器T0 ;了解8051的timer0中断的程序写法,用中断法产生定时 ;上面显示的是proteus仿真图,下面的是源程序 ;说明:(源程序中的终端入口地址很重要(这个是固定的),程序中断时,会在对应中断固定的 ;入口地址进入,因为规定的相隔入口间的空进有限,只能用跳转指令跳转,最终用RETI强制返回 ;这个程序把所有的中断入口地址都写上了,没有用到的,用RETI直接屏蔽) ;运行结果是使led灯明一下,暗一下。 COUNT EQU 9217;对于11.0592的晶振来说,延时1
[单片机]
xs128 双定时器PIT0和PIT1
/***************************************************************** ** 函数说明:xs128 双定时器PIT0和PIT1 ** 版 本:V1.00 ** 修 改:庞辉 芜湖联大飞思卡尔工作室 ** 修改日期:2011年09月19日 ** ** 说 明:PLL倍频到80Mhz,PB0口灯1s闪烁,PB1口灯2s闪烁 ** ** 版本更新:详见readme.txt **
[单片机]
计算定时器所需要的定时时间举例
如果采用晶振的频率为3MHz,定时器/计数器工作方式0、1、2下,其最大的定时时间为多少?解答: 同样可以求得方式1下的最大定时时间为262.144ms;方式2下的最大定时时间为1024ms。
[单片机]
【STM32】4-SysTick系统定时器实验
一、SysTick.c中部分代码解析 1、static u8 fac_us=0; static u8 fac_us=0; //us延时倍乘数 1.1 static含义: static相关解释 1.2 u8含义: typedef uint8_t u8; //所在位置 stm32f10x.h typedef unsigned char uint8_t; //所在位置 stdint.h 即u8就是unsigned char 2、void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource) 2.1 可选参数 1、SysTick_CLKSource_H
[单片机]
关于STM32系统时钟和STM32定时器的使用若干注意点
1. 这里总结一下 SystemInit()函数即上电启动后中设置的默认系统时钟大小: SYSCLK(系统时钟) =72MHz AHB 总线时钟(使用 SYSCLK) =72MHz APB1 总线时钟(PCLK1) =36MHz APB2 总线时钟(PCLK2) =72MHz PLL 时钟 =72MHz 2.关于STM32定时器重要寄存器说明: 1)自动重装载寄存器( TIMx_ARR):(这里所指的重装载是装到影子寄存器,与计数器没关系)该寄存器在物理上实际对应着 2 个寄存器。一个是程序员可以直接操作的,另外一个是程序员看不到的,这个看不到的寄存器在《 STM32参考手册》里面被叫做影子寄存
[单片机]
STM32——高级定时器的应用
/定时器1的配置 输出两路PWM信号 PA8 PA11,计数时钟为400KHZ 计数溢出大小为40000 / void Tim1Init(void) { GPIO_InitTypeDef GPIO_InitStruct; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_OCInitTypeDef TIM_OCInitStruct; u16 LeftMotor_CCR; u16 RightMotor_CCR; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1|RCC_APB2Periph_GPIOA|RCC_APB2P
[单片机]
不用定时器和汇编语言,只用C语言实现精确无误的延时
对于51定时器,却是有点少,有时候不经意间就被用完了,而实现定时又TM神坑了!一般的解决方案有直接上汇编,一条语句的执行时间就是一个机器周期,所以多写几个就实现了完美的定时功能。可是可是……..又有多少学51的会汇编呢?呵呵哒 所以来分享一个神好用的方法,C语言的while和nop结合使用实现精确延时 上调试代码: #include #include #define TIME 164//此处是需要不断调节的改变时间的数值 //164是少4个机器周期,165是多了2个机器周期 /* ∵晶振=12MHz ∴一条指令用时=1/(12/12)=10^(-6)s=1us */ //想办法补偿,而不是减少 void del
[单片机]
GD32对Timer定时器原理的详细讲解
GD32 Timr定时器看起来比较复杂啊。一看GD32E10x 的SPEC:一个高级定时器,三个通用定时器,还有一个基本定时器。 项目上想用来做分时处理程序都不知道用哪个? 就用通用的定时器 timer1 一起看下时钟树,如下图所示: GD32时钟树部分硬件展示 TIMER1的时钟是CK_TIMER1,要提供CK_TIMER1需要TIMER1 enable并且需要提供具体的时钟 具体的时钟 if(APB1 prescale = 1 ) x 1 else x 2 我们的CK_SYS时钟(系统时钟)经过Prescaler之后最大频率是CK_AHB(120MHz) 然后经过预分频,APB1频率最大到60MHz,如果预分频系数是1的
[单片机]