这是在给英国的一个学生讲课时用到的一个芯片,做一个dcdc的反馈电路,刚开始用的不是这个,后来发现国内这个芯片用的挺成熟,就选择了这个。
芯片说明
首先我买的是TPL0401A,我发现淘宝上卖的都是A,其实想用C,来作为DCDC的反馈电阻,但是A也能用,这个芯片一共分ABC 三个型号。
AB的区别在于地址不同,C的电阻值更大,50k,AB都是10k。
AB的H端接地,C的H端悬空,这个从手册上都可以看到。
内部结构图就是一个滑动变阻器,跟机械式的差不多。
通信是用IIC协议的,一共128个抽头,也就是在0-127这个范围内,给任意一个数值,就会对应一个阻值。电阻器量程是128,也就是10k / 128 ,大约是每个分度是78Ω,我们先用程序写入满量程,看一下对应的数值。
//共128个抽头,可以写入的范围为 0 - 127
TPL0401A_WriteOneByte(0x00,127); //控制数字电位器的电阻值
delay_ms(500); //非必要延时
printf("TPL0401: %2d\r\n",a); //串口打印字符串
通过stm32 我们来看一下实际的阻值,用万用表量一下。
再将数值0写入,看一下对应的数值。从实际测量可以看出大约是70Ω,也就是说,抽头也是有阻值的,阻值大约是70Ω。这个滑动变阻器不算精确,但是可以满足一般需要,如果是精密场合,就不合适了。
以上我们只做了电阻测试,机械式滑动变阻器可以改变阻值,也可以用来改变电压,刚才我们只是用万用表测了BH两端,输出的就是电阻,如果想输出电压,可以将A端接上电压即可,输出的就是电压值。
//共128个抽头,可以写入的范围为 0 - 127
TPL0401A_WriteOneByte(0x00,63); //控制数字电位器的电阻值
delay_ms(500); //非必要延时
printf("TPL0401: %2d\r\n",a); //串口打印字符串
将变阻器值设置为63,取中的位置,可以看到电压为1.65v,A端接入电压为3.3v
虽然电阻值有误差,但是做电压分压来说,精度还是蛮高的,结合自己的实际使用场景,看一下这个电阻器,是否符合自己的需求。
这个是针对stm32的测试例程。还有arduino stm32f407 msp430的例子,在这里不一 一展示了。