以 PWM 調整 MOSFET 提供定電流 調整 以匹配負載的變化
free your mind be Happy then do a good job ! 「讓硬體開口說話,讓軟體腳步前行,讓Robot聽你的指令奔馳!」
welcom ! Handel home
2015年8月27日 星期四
2014年9月5日 星期五
AD620 儀表放大器 OP Note
AD620仪表放大器: 低漂移、低功耗仪表放大器,增益设置范围1至10000
AD620是一款低成本、高精度仪表放大器,仅需要一个外部电阻来设置增益,增益范围为1至10,000。此外,AD620采用8引脚SOIC和 DIP封装,尺寸小于分立电路设计,并且功耗更低(最大电源电流仅1.3 mA),因而非常适合电池供电及便携式(或远程)应用。
AD620具有高精度(最大非线性度40 ppm)、低失调电压(最大50 µV)和低失调漂移(最大0.6 µV/°C)特性,是电子秤和传感器接口等精密数据采集系统的理想之选。它还具有低噪声、低输入偏置电流和低功耗特性,使之非常适合ECG和无创血压监测仪等医疗应用。
由于其输入级采用Superßeta处理,因此可以实现最大1.0 nA的低输入偏置电流。AD620在1 kHz时具有9 nV/ÖHz的低输入电压噪声,在0.1 Hz至10 Hz频带内的噪声为0.28 µV p-p,输入电流噪声为0.1 pA/ÖHz,因而作为前置放大器使用效果很好。同时,AD620的0.01%建立时间为15 µs,非常适合多路复用应用;而且成本很低,足以实现每通道一个仪表放大器的设计。
AD620 组件介绍
AD620 的基本特点为精确度高、使用简单、低噪声,此仪表放大器有高输入阻抗:10GΩ||2pF,高共模具斥比高(CMR):100dB,低输入抵补电压( Input offset Voltage):50uV,低输入偏移电流(Input bias current):1.0nA,低消耗功率:1.3 mA,以及过电压保护等特性应用十分广泛。
AD620 的规格特性总览表。然而会选用它,是因它价格还算可以、增益值大、漂移电位低等,正好符合成本合理及有效放大惠斯顿电桥所输出的微小变化讯号。
图3为将选用之仪表放大器IC-AD620 接脚示意图,其中的1、8 接脚要跨接一个电阻来调整放大倍率,然而方程式1为AD620的增益与可调电阻的关系式,由此二式我们即可推算出各种增益所要使用的电阻值GR值。
AD620和AD623有哪些区别?可以互换吗?
AD620和AD623都是单仪表放大器,引脚的排列也完全一样。
主要的差别是:AD620必须使用正负电源,AD623即可正负电源也可单电源。
原板是AD620,则可以用623替换;如果原板是AD623,则不一定能用620替换(要看原板电路的电源是双电源还是单电源)。
单片机产品中AD620和AD623替换后,程序不修改也能正常工作。
#p#AD620中AD705的作用的一些问题#e#
#p#AD620中AD705的作用的一些问题#e#
AD620典型应用电路中AD705的作用的一些问题?
AD705的作用是电压跟随,做个模拟地。如果电桥四个电阻匹配的话(即AD620正负输入关为0)6脚应该输出2V.。输出0.69V应该是电阻不匹配共模电压不为0所至(如果RG取120欧放大倍数得四百多,有1mV多共模电压就会导至这个结果,实际接压力传感器之类应做个恒流源取样,则不会这样),建议直接将放大器正负输入端短路试试。AD的数字地应接5V的GND上,不能接2V。图中AD参考电压是1V。
放大器AD623和AD620可以互换吗?AD705的输出接AD620的5脚。无信号输入时ADC接收为2V,由于ADC不能接收负信号,而电子枰之类的有时需要负信号,所以2V当做ADC的0 点,这样可以采集负信号。如果不需要负信号的话,AD705的输出可接ADC的COM端。(看ADS7841说明应该是这样,我做类似电路时用的ADC是单片机自带的,没用过ADS7841)
ADC数字与模拟信号是分开的(可用一个电源,也可用分开的两个电源),数字电源为V+、GND,模拟信号0点为COM输入,满幅为Vref输入。 ADS7841中CH0-CH3、COM、Vref脚为模拟输入,其余脚均为数字信号IO。如果数字模拟用一个5V电源(一般这样用),由于GND是数字地,则GND只能接0V。如果COM点接AD705,则图中AD数值0至最大值表示2-3V(这样好象意义不大)。
所以按楼主的图,如果想测负信号,COM接GND,Vref接5V,则采集的AD信号输入0-2V时信号为负,2-5V时为正。如果只测正信号,则AD705输出接COM,5V接Vref。
#p#AD620仪表放大器比op07好在哪里#e#
#p#AD620仪表放大器比op07好在哪里#e#
AD620仪表放大器比op07好在哪里?
桥式电路后面接差分放大。op07也可以单片实现差分放大。感觉ad620效果要好些,但比较了下手册,失调电压,失调电流,偏置电流等方面 ad620都略小于OP07
这是怎么回事?用620比07电路实现方面要简单,少了几个电阻。 但手册参数上为什么反而不如op07呢?
答:不能看单个器件的数据,因为如果采用运放构建仪放的话是一堆器件。其它不说,单就输入阻抗和对称性来讲,仪表放大器存在独特的优势,而这才是使用仪表放大器的初衷(差分对称输入)。
1片op07 加4个电阻 实现的 差分放大电路 ,这种电路和1片ad620实现放大,性能上差别主要体现在两者的输入端特性上。仪表放大器具有对称电特性的正负差分输入端且其输入阻抗非常大,这是接“平衡差分信号”的首要条件。而这些“1片op07 加4个电阻 实现的 差分放大电路”不具备。
#p#STC与AD620的小信号采集系统#e#
#p#STC与AD620的小信号采集系统#e#
典型案例分析:基于STC12C5A60S2与AD620的小信号采集系统
在许多电子设备中需要对微弱信号进行高精度处理,因此需要采用仪器放大器,常见的有传统三运放仪器放大器和单片仪器放大器。由于单片仪器放大器的高精度、低噪声及易于控制、设计简单等特点,深受设计者喜爱。
AD620作为一款单片仪器放大器,具有低功耗,通过外部电阻可实现高增益的芯片,同时具有低输入漂移和温漂等特点。
STC12C5A60S2是一款具有A/D转换功能的新一代8051单片机,指令代码完全兼容传统8051,但速度快8~12倍。具有8路高速10位输入型A/D转换(250 k/s),可做温度检测、电池电压检测、按键扫描、频谱检测等。用户可将任何一路设置为A/D转换,不需作为A/D使用的口可继续作为I/O口使用。
文中介绍了如何利用STC12C5A60S2和AD620等芯片设计并完成小信号(电压型)的采集系统。
1 系统硬件设计
1.1 系统原理框图
一般信号在使用前,需要先滤波后放大,或者先放大后滤波,然后经过A/D等手段获取(感知)信号。对于小信号而言,信号幅值只有几毫伏,甚至更小,如果先滤波,可能会将有用信号滤除,因此,在这种情况下,需要先进行放大,然后滤波,再进行A/D转换或其他处理。根据本系统特点,系统中存在的干扰可以忽略,因此不考虑信号滤波环节,因此,系统主要通过信号提取、信号放大、A/D采集3个重要环节实现。第3个环节产生的数据,可以指导人们的工作,或显示相关的信息。整个系统原理框图如图1所示。
2014年7月24日 星期四
STM32 PWM by TIM3 demo Note
TIM3 PWM 輸出定義 (CH1 ..4)
TIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR)* 100
TIM3 Channel2 duty cycle = (TIM3_CCR2/ TIM3_ARR)* 100
TIM3 Channel3 duty cycle = (TIM3_CCR3/ TIM3_ARR)* 100
TIM3 Channel4 duty cycle = (TIM3_CCR4/ TIM3_ARR)* 100
PA.06: (TIM3_CH1)
PA.07: (TIM3_CH2)
PB.00: (TIM3_CH3)
PB.01: (TIM3_CH4)
- PWM configuration
- TIM_Prescaler : 將TIMxCLK除以(TIM_Prescaler + 1)
- TIM_CounterMode : 選擇計數模式
- TIM_Period : TIMx_ARR,counter 週期
- TIM_OCPolarity: 設置輸出極性
- TIM_OCMode: PWM模式
- PWM 1 Mode :
- 在向上計數,TIMx_CNT
時,輸出為1,否則輸出為0; - 在向下計數,TIMx_CNT>TIMx_CCRx時,輸出為0,否則輸出為1。
- 在向上計數,TIMx_CNT
- PWM 2 Mode :
- 在向上計數,TIMx_CNT
時,輸出為0,否則輸出為1; - 在向下計數,TIMx_CNT>TIMx_CCRx時,輸出為1,否則輸出為0。
- 在向上計數,TIMx_CNT
- TIM_Pulse: 即TIMx_CCRx暫存器,設定脈衝寬度
- 輸出脈波週期 = (TIM_Period + 1) * (TIM_Prescaler + 1) / TIMxCLK

Demo Code
調試晶片:STM32F103C8T6
外部晶振:8MHz
功能介紹:使用Timer3實現兩路(可四路)PWM波形的輸出
代碼如下:
初始化:系統時鐘初始化,GPIO埠初始化,Timer初始化
[list Flow]
系統時鐘初始化:
1. /* 配置系統時鐘為72M */
2. SystemInit();
[ GPIO埠初始化:]
1. /****************************************************************
2. * 函數名:void GPIO_Config(void)
3. * 描述 :配置複用輸出PWM時用到的I/O
4. * 輸入 :無
5. * 輸出 :無
6. * 調用 :main()調用
7. ***************************************************************/
8. void GPIO_Config(void)
9. {
10. GPIO_InitTypeDef GPIO_InitStructure;
11.
12. /* GPIOA and GPIOB clock enable */
13. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
14.
15. /*GPIOA Configuration: TIM3 channel 1 and 2 as alternate function push-pull */
16. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
17. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 複用推挽輸出
18. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
19. GPIO_Init(GPIOA, &GPIO_InitStructure);
20. }
[ Timer初始化:]
1. /****************************************************************
2. * 函數名:void TIM3_Config(void)
3. * 描述 :配置TIM3輸出的PWM信號的模式
4. * CH1:輸出 T=2.5ms(f=1/2.5ms=400Hz) D=0.6的PWM波(高電平在前,低電平在後)
5. * CH2:輸出 T=2.5ms(f=1/2.5ms=400Hz) D=0.4的PWM波(高電平在後,低電平在前)
6. * 步驟一:通過T和TIMxCLK的時鐘源確定TIM_Period和TIM_Prescaler
7. * T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK=2.5ms
8. * 因為 TIM_Period<65535 span="">,所以 TIM_Prescaler>1,即 TIM_Prescaler=2 65535>
9. * 所以 TIM_Period=59999=0xEA5F
10. * 步驟二:根據TIM_Period的值,高低電平的先後D,確定CCR和TIM_OCPolarity
11. * CH1:因為D=0.6,先高後低;
12. * 所以CCR1=(TIM_Period+1)* D=36000;TIM_OCPolarity=TIM_OCPolarity_High
13. * CH2:因為D=0.4,先高後低;
14. * 所以CCR1=(TIM_Period+1)* (1-D)=36000;TIM_OCPolarity=TIM_OCPolarity_Low
15. * 步驟三:基礎寄存器初始化
16. * 步驟四:通道寄存器初始化
17. * 步驟五:使能TIM3重載寄存器ARR
18. * 步驟六:使能TIM3
19. * 輸入 :無
20. * 輸出 :無
21. * 調用 :main()調用
22. ***************************************************************/
23. void TIM3_Config(void)
24. {
25. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
26. TIM_OCInitTypeDef TIM_OCInitStructure;
27. /* PWM信號電平跳變值 */
28. u16 CCR1= 36000;
29. u16 CCR2= 36000;
30. /*PCLK1經過2倍頻後作為TIM3的時鐘源等於72MHz*/
31. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
32. /* Time base configuration */
33. TIM_TimeBaseStructure.TIM_Period =0xEA5F;
34. TIM_TimeBaseStructure.TIM_Prescaler = 2;
//設置預分頻:預分頻=2,即為72/3=24MHz
35. TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分頻係數:不分頻
36. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
//向上計數溢出模式
37. TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
38. /* PWM1 Mode configuration: Channel1 */
39. TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
//配置為PWM模式1
40. TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
41. TIM_OCInitStructure.TIM_Pulse = CCR1
//設置跳變值,當計數器計數到這個值時,電平發生跳變
42. TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_High;
//當計時器計數值小於CCR1時為高電平
43. TIM_OC1Init(TIM3, &TIM_OCInitStructure); //使能通道1
44. TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
45. /* PWM1 Mode configuration: Channel2 */
46. TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
47. TIM_OCInitStructure.TIM_Pulse = CCR2;
//設置通道2的電平跳變值,輸出另外一個占空比的PWM
48. TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
//當計時器計數值小於CCR2時為低電平
49. TIM_OC2Init(TIM3, &TIM_OCInitStructure); //使能通道2
50. TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
51. TIM_ARRPreloadConfig(TIM3, ENABLE); //使能TIM3重載寄存器ARR
52. /* TIM3 enable counter */
53. TIM_Cmd(TIM3, ENABLE); //使能TIM3
54. }
主函數代碼:
1. /***************************************************************
2. * 函數名:main
3. * 描述 :主函數
4. * 輸入 :無
5. * 輸出 :無
6. ***************************************************************/
7. int main(void)
8. {
9. SystemInit();
10. GPIO_Config();
11. TIM3_Config();
12. while (1)
13. {
14.
15. }
16. }
Labels:
ADC of STM32 M3,
ST32 M3 Note
訂閱:
文章 (Atom)



















