居家实验:Arduino&ADS1115进行通、断电自感
居家实验:Arduino&ADS1115进行通、断电自感
一、常见几种通电自感和断电自感实验方案
1.教材方案
一种方案是教材上的方案,就是下面的图1。有仪器厂家的产品,或者有研究者建议线圈L使用演示用可拆变压器。RL电路时间常数L/R一般比较小,小灯泡又存在“热惰性”,需紧紧盯住小灯泡,才可能看到缓缓变亮(暗)、以及突然一亮的现象。
图1 教材上的传统通、断电自感实验方案
2.探讨方案
一种专门观察断电自感“亮一下”的较好的方案,是《物理教学探讨》2016年12月载青海刘成刚的探索,线圈用常见的小型变压器或小充电器上面的变压器线圈,用两只红色LED,干电池取两节3.0V。我曾亲测,效果相当明显。但电路结构复杂,仍有干扰。
图2 效果明显易于搭建的通、断电自感实验方案
3.传感器方案
借助专门的传感器。尽管目前传感器如DISLab等实验设备不断普及,但能否普遍的物理实验室都能拥有,这是个问题。
4.高端仪器方案
数字存储示波器,或专业数据采集器。这些高端的东西,中学实验室一般很难见到,除非有特殊的倾斜。不过面对这些东西也不必完全绝望,有一些电子爱好者发展了一些低端方案,正让专业DSO逐步让业余作者能够用得起。
二、Arduino&ADS1115居家通、断电自感实验方案
1.为什么选择ADS1115
Arduino和ADS1115对数据的高速采集,至少在中学物理实验范围内,能够让我们得以满足实验条件;并且,它们相对来说,使用要容易一些:强过小灯泡、LED指示,因为它具有鲜明的专业传感器的色彩,同时,它能够被增加到传统方案里,起到效果增强与数据持续的作用。事实上,图2中的R1替换成红光LED电路也是安全的,而且也能演示通电自感,如果介意D2会干扰它,可以在D2支路再加一个开关。
用ADS1115进行自感实验,实际上不去测量电流,而是测量电压,比如测R2上的电压,由于R2是定值电阻,换算或不换算结果都是明晰的。
2.电路原理图及讨论
ADS1115差分电压测量时,A0/A1是一对,A2/A3是一对,这样同时测量电压支路和电阻支路上的电压就方便了。另外,如果介意LED因电流变化而产生阻值变化,可以放一取样电阻。这个电路图从前面的图2替代来的,为避免干扰观察效果,元件都放在面包板上,用谁插谁,不用谁就拔了谁,比直接焊死了要方便太多了。
图3 通、断电自感基础变换电路
我曾尝试过3种方案在图3上面进行自感来采集数据,效果都不好。一种是使用线性霍尔元件SS495,用磁场强弱和方向替代电流,效果不错,但受磁场干扰严重。第二种是使用ACS712电流传感器直接测量电流,但这个东西受磁场影响大,数据漂浮大,而且,经常出现一个问题,当某次电流测得较大之后,会等一段时间才能正常测量。但是ACS712确实能做通、断电自感实验,电流要稍一点儿。第三种方案,是使用手机phyphox软件的磁力计,原理有些类似第一种,遇到的问题是,电流也要大一些,当电源电压不太大时,电流产生的磁场弱,磁力计数据质量不好。当然,得有一部好手机,否则磁力计数据采集速度太慢,一点效果也看不到。(多数手机磁力计数据采集速度在50Hz附近,能上到100Hz的手机并不太多。这个方案是可行的,并不是不可以,有时间可以整理)。2.ADS1115的两个Arduino库。ADS1115是用来测量自感电流的,虽然它没有用电压值做那一步除法,所以测电压是关键问题。ADS1115有影响力的Arduino库有两个,效果一致。
3.简单的ADS1115差分电压测量代码
为了能够万无一失的捕捉到断电自感的“亮一下”,代码里每隔1ms采集一次数据,即每秒1000次数据,送给串口绘图器直接画图。为跟上迅速的电压变化速度,波特率设为19200。
//使用i2cdevlib的库,并非Adafruit_ADS1X15
//两个库效果相同,但i2cdev开放设置更多
#include "ADS1115.h"
ADS1115 adc0(ADS1115_DEFAULT_ADDRESS);
void setup() {
Wire.begin(); // join I2C bus
Serial.begin(19200); // initialize serial communication
Serial.println("Initializing I2C devices...");
adc0.initialize(); // initialize ADS1115 16 bit A/D chip
Serial.println("Testing device connections...");
Serial.println(
adc0.testConnection() \
? "ADS1115 connection successful" \
: "ADS1115 connection failed");
#define ADS1115_SERIAL_DEBUG //这句可注释
adc0.showConfigRegister();
//使用连续模式
adc0.setMode(ADS1115_MODE_CONTINUOUS);
}
void loop() {
//ADS1115的A0/A1分别接Arduino的A4/A5
adc0.setGain(ADS1115_PGA_6P144);
//获得16-bits数值
int sensorOneCounts=adc0.getConversionP0N1();
//转成伏特直接送串口绘图器
Serial.println(sensorOneCounts*adc0.getMvPerCount()/1000);
delay(1);
}
三、实验效果
1.随时随地做实验
和沉重的可拆变压器说Bye-bye,和搬来抱去的自感现象示教板说Bye-bye。我们的实验器材特别简单:小型直流变压器一个,Arduino UNO一块,ADS1115一块,面包板一块,安卓手机USB充电线一条,直流电源一个(两节18650电池供电),LED、色环电阻、跳线、鳄鱼夹线若干,全部下来应该在50元钱左右,还要什么自行车呢?我们完全能够实验自如的专业传感器实验的效果。大部分电路并没有拍照实物图,只拍照了一个断电自感实验。
图4 ADS1115断电自感实验数据采集
2.尖峰的捕捉
断电自感实验最令人聚集目光的地方,当然是断电自感的电流尖峰了,数据采样率不够,采集不到尖峰;采样率过高,又会使显示出传感器的漂浮。不少专业传感器实验画很粗的线,一个目的也是为了掩盖漂浮;两条测试线间有个nF线电容器,我们没法向学生交待那是噶哈的,其实它是为了平滑。
好。图5是某一次数据采集,横轴上大约1830-1930毫秒间,我们看到了尖峰。
图5 1830-1930ms间出现了尖峰
图6是另一次实验,随便把开关通断、通断、通断几次,我们看到尖峰捕捉基本上都能成功。
图6 尖峰电流的捕捉基本上能够保证都成功
这个尖峰有多宽呢?我们知道,在RL电路里,大约5个L/R时间就可以认为自感结束了,所以我们多记录几次尖峰,选出尖峰最宽的那条折线,引入到几何画板中去,象图7那样,通过测量尖峰宽度,把它代入到时间常数里去(式子之中的140+660是上面实物图的两只电阻各约330Ω,变压器线圈直流电阻约140Ω),那我们能够大略估算这个小型变压器的线圈自感系数大约为0.64H,而小型变压器作为电感线圈使用,其自感能达到2H以上,可见这个大致估算还像那么回事儿。
图7 用自感尖峰估算线圈自感系数