01 电流镜电路
一、前言
这是一个电流镜电路。 如果希望输出电流小于参考电流。 可以在T2晶体管发射极增加一个电阻。 这样可以使得输出电流小于参考电流。 它们之间的函数关系。 在这篇文章中给出。 下面通过实验测试一下这个关系。
二、实验结果
在面包板上搭建测试电路。 R1使用固定电阻, 4.722kΩ。 R2 使用一个可编程电阻箱, QR10, 可以通过编程设置不同的电阻。 下面测试不同R2电阻对应的输出电流。
测量R1上的电压, 为 4.3698V。 可以计算出参考电流为 0.9254mA。 通过测量结果来看, 随着电阻增加, 输出电流急剧下降。 这其中的间断点, 有可能是数字万用表切换档位引起的变化。 由此, 可以看到输出电流的确比参考电流小了很多。
▲ 图1.2.1 不同电阻R2对应的输出电流
rdim=[100.0000,149.7487,199.4975,249.2462,298.9950,348.7437,398.4925,448.2412,497.9899,547.7387,597.4874,647.2362,696.9849,746.7337,796.4824,846.2312,895.9799,945.7286,995.4774,1045.2261,1094.9749,1144.7236,1194.4724,1244.2211,1293.9698,1343.7186,1393.4673,1443.2161,1492.9648,1542.7136,1592.4623,1642.2111,1691.9598,1741.7085,1791.4573,1841.2060,1890.9548,1940.7035,1990.4523,2040.2010,2089.9497,2139.6985,2189.4472,2239.1960,2288.9447,2338.6935,2388.4422,2438.1910,2487.9397,2537.6884,2587.4372,2637.1859,2686.9347,2736.6834,2786.4322,2836.1809,2885.9296,2935.6784,2985.4271,3035.1759,3084.9246,3134.6734,3184.4221,3234.1709,3283.9196,3333.6683,3383.4171,3433.1658,3482.9146,3532.6633,3582.4121,3632.1608,3681.9095,3731.6583,3781.4070,3831.1558,3880.9045,3930.6533,3980.4020,4030.1508,4079.8995,4129.6482,4179.3970,4229.1457,4278.8945,4328.6432,4378.3920,4428.1407,4477.8894,4527.6382,4577.3869,4627.1357,4676.8844,4726.6332,4776.3819,4826.1307,4875.8794,4925.6281,4975.3769,5025.1256,5074.8744,5124.6231,5174.3719,5224.1206,5273.8693,5323.6181,5373.3668,5423.1156,5472.8643,5522.6131,5572.3618,5622.1106,5671.8593,5721.6080,5771.3568,5821.1055,5870.8543,5920.6030,5970.3518,6020.1005,6069.8492,6119.5980,6169.3467,6219.0955,6268.8442,6318.5930,6368.3417,6418.0905,6467.8392,6517.5879,6567.3367,6617.0854,6666.8342,6716.5829,6766.3317,6816.0804,6865.8291,6915.5779,6965.3266,7015.0754,7064.8241,7114.5729,7164.3216,7214.0704,7263.8191,7313.5678,7363.3166,7413.0653,7462.8141,7512.5628,7562.3116,7612.0603,7661.8090,7711.5578,7761.3065,7811.0553,7860.8040,7910.5528,7960.3015,8010.0503,8059.7990,8109.5477,8159.2965,8209.0452,8258.7940,8308.5427,8358.2915,8408.0402,8457.7889,8507.5377,8557.2864,8607.0352,8656.7839,8706.5327,8756.2814,8806.0302,8855.7789,8905.5276,8955.2764,9005.0251,9054.7739,9104.5226,9154.2714,9204.0201,9253.7688,9303.5176,9353.2663,9403.0151,9452.7638,9502.5126,9552.2613,9602.0101,9651.7588,9701.5075,9751.2563,9801.0050,9850.7538,9900.5025,9950.2513,10000.0000]
idim=[0.3050,0.2477,0.2105,0.1870,0.1672,0.1545,0.1424,0.1326,0.1239,0.1183,0.1117,0.1068,0.1022,0.0976,0.0945,0.0908,0.0913,0.0881,0.0858,0.0826,0.0805,0.0782,0.0758,0.0744,0.0721,0.0704,0.0686,0.0672,0.0656,0.0654,0.0638,0.0628,0.0614,0.0603,0.0591,0.0582,0.0569,0.0560,0.0549,0.0541,0.0532,0.0522,0.0515,0.0506,0.0500,0.0492,0.0489,0.0480,0.0475,0.0467,0.0461,0.0456,0.0448,0.0444,0.0437,0.0432,0.0425,0.0422,0.0416,0.0412,0.0414,0.0408,0.0404,0.0400,0.0395,0.0391,0.0387,0.0382,0.0378,0.0373,0.0371,0.0367,0.0362,0.0360,0.0355,0.0352,0.0349,0.0348,0.0344,0.0342,0.0339,0.0335,0.0332,0.0329,0.0327,0.0323,0.0320,0.0318,0.0315,0.0312,0.0312,0.0309,0.0307,0.0304,0.0302,0.0300,0.0297,0.0296,0.0292,0.0290,0.0288,0.0286,0.0284,0.0282,0.0280,0.0278,0.0276,0.0276,0.0273,0.0272,0.0270,0.0268,0.0267,0.0264,0.0264,0.0261,0.0259,0.0257,0.0257,0.0206,0.0204,0.0204,0.0203,0.0202,0.0201,0.0201,0.0200,0.0200,0.0198,0.0198,0.0197,0.0197,0.0196,0.0195,0.0195,0.0193,0.0193,0.0193,0.0193,0.0191,0.0190,0.0190,0.0189,0.0188,0.0188,0.0187,0.0186,0.0185,0.0185,0.0183,0.0182,0.0182,0.0181,0.0180,0.0180,0.0178,0.0178,0.0177,0.0177,0.0175,0.0175,0.0174,0.0174,0.0172,0.0172,0.0172,0.0170,0.0169,0.0168,0.0168,0.0167,0.0166,0.0166,0.0165,0.0165,0.0164,0.0163,0.0163,0.0162,0.0161,0.0161,0.0159,0.0159,0.0158,0.0158,0.0157,0.0157,0.0156,0.0155,0.0155,0.0155,0.0154,0.0153,0.0153,0.0152,0.0151,0.0151,0.0150,0.0150,0.0149]
```python
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2024-01-28
#
# Note:
#============================================================
from headm import *
from tsmodule.tsvisa import *
import serial
from _ast import Or
from serial.serialutil import SerialException
#------------------------------------------------------------
sport = serial.Serial()
sport.baudrate = 115200
sport.timeout = 0.05
try:
sport.port = 'COM5'
except:
printf('Set sport port COM5 error. ')
try:
sport.open()
except serial.serialutil.SerialException:
printf('Open sport port COM5 error.')
else:
printf('Open sport port COM5 Ok.')
#------------------------------------------------------------
rdim = linspace(100, 10e3, 200)
idim = []
dm3068open()
for r in rdim:
sport.write(b'AT+USER.SP=%5.1f\n'%r)
time.sleep(2)
c = dm3068cdc()*1e3
printff(r, c)
idim.append(c)
tspsave('current', rdim=rdim, idim=idim)
plt.plot(rdim, idim, lw=3)
plt.xlabel("R2(Omega)")
plt.ylabel("Current(mA)")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
如果输出增加了发射极的电阻, 测试一下它恒流特性。 固定R2为500欧姆。 下面, 改变工作电压, 从0.5V增加到 10V, 查看一下输出电流的变化。
增加了发射极电阻之后的电压曲线就比较简单了, 随着工作电压的上升, 输出电流单调上升。 由于电流比较微小, 数据中存在着跳动。 根据 0.5V 和 10V之间电流的差别, 可以大体估算出, 此时输出电流端口对应的内阻为 4MΩ。
▲ 图1.2.2 工作电压与输出电流
vdim=[0.5000,0.5960,0.6919,0.7879,0.8838,0.9798,1.0758,1.1717,1.2677,1.3636,1.4596,1.5556,1.6515,1.7475,1.8434,1.9394,2.0354,2.1313,2.2273,2.3232,2.4192,2.5152,2.6111,2.7071,2.8030,2.8990,2.9949,3.0909,3.1869,3.2828,3.3788,3.4747,3.5707,3.6667,3.7626,3.8586,3.9545,4.0505,4.1465,4.2424,4.3384,4.4343,4.5303,4.6263,4.7222,4.8182,4.9141,5.0101,5.1061,5.2020,5.2980,5.3939,5.4899,5.5859,5.6818,5.7778,5.8737,5.9697,6.0657,6.1616,6.2576,6.3535,6.4495,6.5455,6.6414,6.7374,6.8333,6.9293,7.0253,7.1212,7.2172,7.3131,7.4091,7.5051,7.6010,7.6970,7.7929,7.8889,7.9848,8.0808,8.1768,8.2727,8.3687,8.4646,8.5606,8.6566,8.7525,8.8485,8.9444,9.0404,9.1364,9.2323,9.3283,9.4242,9.5202,9.6162,9.7121,9.8081,9.9040,10.0000]
idim=[0.1220,0.1220,0.1221,0.1221,0.1221,0.1222,0.1223,0.1222,0.1222,0.1222,0.1223,0.1223,0.1223,0.1223,0.1223,0.1224,0.1224,0.1224,0.1224,0.1225,0.1225,0.1225,0.1227,0.1225,0.1226,0.1226,0.1227,0.1226,0.1226,0.1226,0.1227,0.1227,0.1228,0.1228,0.1229,0.1229,0.1229,0.1230,0.1231,0.1230,0.1230,0.1230,0.1230,0.1231,0.1231,0.1231,0.1232,0.1232,0.1232,0.1233,0.1233,0.1233,0.1234,0.1234,0.1234,0.1234,0.1234,0.1234,0.1234,0.1235,0.1235,0.1235,0.1236,0.1235,0.1236,0.1236,0.1236,0.1237,0.1235,0.1235,0.1236,0.1236,0.1236,0.1237,0.1237,0.1237,0.1238,0.1238,0.1238,0.1238,0.1239,0.1239,0.1239,0.1241,0.1240,0.1240,0.1240,0.1242,0.1241,0.1241,0.1242,0.1242,0.1242,0.1242,0.1242,0.1242,0.1243,0.1243,0.1243,0.1243]
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY -- by Dr. ZhuoQing 2024-01-28
#
# Note:
#============================================================
from headm import *
from tsmodule.tsvisa import *
dm3068open()
vdim = linspace(0.5, 10, 100)
idim = []
for v in vdim:
dh1766volt1(v)
time.sleep(1.5)
i = dm3068cdc()*1e3
printff(v, i)
idim.append(i)
tspsave('voltage', vdim=vdim, idim=idim)
plt.plot(vdim, idim, lw=3)
plt.xlabel("Voltage(V)")
plt.ylabel("Current(mA)")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
# END OF FILE : TEST2.PY
#============================================================
下面, 固定R2为500欧姆, 改变参考电流的工作电压, 对比此时, 对应的输出电流和参考电流之间的关系。 根据这个公式来看, 它们之间似乎不再是线性关系, 而是对数关系了。
从实际测试的结果来看, 的确输入输出电流之间不再是线性关系了。 将输入电流数值取对数, 绘制的曲线接近于直线, 但还不是直线。
▲ 图1.2.3 发射极电阻500欧姆时对应的输入电流与输出电流
vdim=[0.5000,0.5960,0.6919,0.7879,0.8838,0.9798,1.0758,1.1717,1.2677,1.3636,1.4596,1.5556,1.6515,1.7475,1.8434,1.9394,2.0354,2.1313,2.2273,2.3232,2.4192,2.5152,2.6111,2.7071,2.8030,2.8990,2.9949,3.0909,3.1869,3.2828,3.3788,3.4747,3.5707,3.6667,3.7626,3.8586,3.9545,4.0505,4.1465,4.2424,4.3384,4.4343,4.5303,4.6263,4.7222,4.8182,4.9141,5.0101,5.1061,5.2020,5.2980,5.3939,5.4899,5.5859,5.6818,5.7778,5.8737,5.9697,6.0657,6.1616,6.2576,6.3535,6.4495,6.5455,6.6414,6.7374,6.8333,6.9293,7.0253,7.1212,7.2172,7.3131,7.4091,7.5051,7.6010,7.6970,7.7929,7.8889,7.9848,8.0808,8.1768,8.2727,8.3687,8.4646,8.5606,8.6566,8.7525,8.8485,8.9444,9.0404,9.1364,9.2323,9.3283,9.4242,9.5202,9.6162,9.7121,9.8081,9.9040,10.0000]
idim=[0.0045,0.0164,0.0326,0.0504,0.0690,0.0877,0.1070,0.1264,0.1457,0.1654,0.1851,0.2049,0.2114,0.2444,0.2643,0.2842,0.3040,0.3240,0.3440,0.3639,0.3839,0.4040,0.4241,0.4439,0.4640,0.4842,0.5043,0.5242,0.5444,0.5646,0.5848,0.6047,0.6249,0.6451,0.6650,0.6852,0.7054,0.7256,0.7457,0.7659,0.7861,0.8063,0.8263,0.8465,0.8668,0.8868,0.9071,0.9273,0.9475,0.9676,0.9878,1.0081,1.0284,1.0484,1.0687,1.0889,1.1090,1.1293,1.1496,1.1698,1.1899,1.2102,1.2305,1.2507,1.2708,1.2910,1.3113,1.3316,1.3517,1.3720,1.3922,1.4123,1.4326,1.4529,1.4732,1.4933,1.5135,1.5338,1.5542,1.5742,1.5945,1.6147,1.6349,1.6553,1.6756,1.6959,1.7160,1.7363,1.7566,1.7769,1.7970,1.8173,1.8376,1.8579,1.8780,1.8983,1.9186,1.9387,1.9590,1.9793]
vrdim=[0.0213,0.0776,0.1541,0.2381,0.3256,0.4143,0.5050,0.5967,0.6881,0.7809,0.8739,0.9673,0.9981,1.1542,1.2481,1.3422,1.4355,1.5299,1.6244,1.7181,1.8128,1.9076,2.0025,2.0963,2.1912,2.2863,2.3813,2.4755,2.5707,2.6660,2.7612,2.8554,2.9507,3.0460,3.1402,3.2356,3.3310,3.4265,3.5210,3.6164,3.7119,3.8073,3.9019,3.9974,4.0928,4.1874,4.2831,4.3787,4.4743,4.5689,4.6646,4.7603,4.8559,4.9507,5.0464,5.1420,5.2368,5.3325,5.4282,5.5239,5.6187,5.7145,5.8102,5.9059,6.0006,6.0962,6.1921,6.2878,6.3825,6.4784,6.5741,6.6690,6.7649,6.8606,6.9564,7.0512,7.1469,7.2428,7.3387,7.4335,7.5293,7.6246,7.7202,7.8161,7.9120,8.0079,8.1028,8.1986,8.2945,8.3903,8.4853,8.5811,8.6772,8.7731,8.8681,8.9639,9.0598,9.1546,9.2505,9.3463]
cdim=[0.0102,0.0204,0.0300,0.0378,0.0444,0.0496,0.0544,0.0586,0.0623,0.0657,0.0689,0.0718,0.0744,0.0769,0.0793,0.0814,0.0835,0.0856,0.0875,0.0893,0.0911,0.0928,0.0944,0.0960,0.0976,0.0991,0.1004,0.1018,0.1030,0.1044,0.1057,0.1069,0.1080,0.1093,0.1104,0.1115,0.1126,0.1136,0.1147,0.1158,0.1167,0.1177,0.1186,0.1196,0.1204,0.1213,0.1223,0.1232,0.1240,0.1248,0.1256,0.1265,0.1272,0.1279,0.1288,0.1296,0.1303,0.1309,0.1316,0.1324,0.1331,0.1338,0.1344,0.1350,0.1356,0.1362,0.1369,0.1374,0.1381,0.1386,0.1392,0.1399,0.1404,0.1410,0.1415,0.1420,0.1427,0.1432,0.1438,0.1442,0.1448,0.1451,0.1458,0.1462,0.1468,0.1473,0.1478,0.1481,0.1486,0.1493,0.1496,0.1501,0.1505,0.1510,0.1514,0.1517,0.1523,0.1526,0.1531,0.1534]
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST3.PY -- by Dr. ZhuoQing 2024-01-28
#
# Note:
#============================================================
from headm import *
from tsmodule.tsvisa import *
from tsmodule.tsstm32 import *
vdim = linspace(0.5, 10, 100)
idim = []
R = 4.722e3
vrdim = []
cdim = []
dm3068open()
for v in vdim:
dh1766volt1(v)
time.sleep(1.5)
meter = meterval()
vr = meter[0]
vrdim.append(vr)
i = vr/R*1e3
idim.append(i)
c = dm3068cdc()*1e3
cdim.append(c)
printff(v, vr, i, c)
tspsave('ratio', vdim=vdim, idim=idim, vrdim=vrdim, cdim=cdim)
plt.plot(idim, cdim, lw=3)
plt.xlabel("Iref(mA)")
plt.ylabel("Out(mA)")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
# END OF FILE : TEST3.PY
#============================================================
▲ 图1.2.4 输入电流取对数绘制的曲线
根据理论推导, 输出电流与参考电流之间的关系是下面公式所给出的。 下面利用已经测量得到的数据, 来验证一下这个公式的正确性。 我们已经知道输入的参考电流 以及输出电流的数值, 利用函数拟合, 得到公式中A,B的参数, 可以看到B非常接近于1, 它实际上对应输出对数项前面的系数。 理论上应该是1。 电路中, 发射极电阻为 500欧姆, 由此, 可以根据参数A计算出参数Vth, 它是在室温下对应电子热运动电压。 可以看到与 绝对温度 300时对应的 26mV非常接近。 由此, 利用实际测量的数据验证了第一个公式的正确性。
02 总
本文讨论了不对称电流镜电路, 根据实际测试的数据, 验证了参考电流与输出电流之间的公式关系。