今天突发奇想,想到了以前测三极管放大倍数的电路,觉得异常的抽象,于是想重新做一下测三极管放大倍数的电路。 于是想用一个恒流源来测量三极管的放大倍数。
我们可以给予一个恒定的电流源,经过三极管放大一定倍数之后,测量Rc的电阻压降来计算放大倍数。 需要注意的是,这里的电阻Rc不能太大,否则会导致提前饱和。
这里关于恒流源的实现本来想使用很早很早的一期文章中的电路。 基于电流镜的高精度稳定电流源设计
但是一想,为什么需要电流镜呢,我只需要前面的电流源的部分就可以了,于是对这个电路进行简化,只取前面的电流源的部分。
不过这里我又出现了一个疑问,这个三极管是为了增大运放的驱动能力,但是我并不需要强大的驱动能力呀,我希望给三极管的电流甚至不到1mA,那么是不需要这个三极管的呀。
于是就是用了运放作为跟随器提供一个稳定的电压源,但是都稳定的电压源了,而且还是小电流,为什么不选择使用稳压二极管????
于是乎只用了四个器件的三极管放大倍数测试装置就完成啦。 这里解释一下为什么我们去测R3的电压,而不是在集电极上拉一个电阻去测集电极的电压。
假如我们直接测量集电极电压,那么就会发现当我们不接入三极管的时候, 这个点的电压是电源电压
,就会导致电压过高,可能损坏单片机的IO口,因此我们选择测量三极管的发射极电压。
我们只需要获取Re的电压和Rb的电压,计算出Ib和Ie即可获得我们的放大倍数。
之后我们使用STM32配置双通道采集,即可实现采集两路的电压值,之后根据我们的公式来计算放大倍数,当然也可以算一下导通压降,或者判断导通状态等。
while (1) { /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */ float Vb,Ve,Mag,Ib,Ie; Ve = HAL_ADC_GetValue(&hadc1);
HAL_ADC_Start(&hadc1); HAL_Delay(50); Vb = HAL_ADC_GetValue(&hadc1); Ve = Ve*3.3f/4096; Vb = Vb*3.3f/4096; Ib = (2.87-Vb)/15; Ie = (Ve)/0.15; Mag = Ie/Ib - 1; printf("Mag:%.4frn",Mag); HAL_ADC_Start(&hadc1); HAL_Delay(1000); }
利用万用表的三极管档测量一下三极管的放大倍数。
本来想写误差在百分之十左右的,突然想起来,上面串口的数据是在室温下测量的,但是写文章的时候万用表是开了空调,温度降了蛮多了,然后我就拿出板子又测了一遍,果然还是比较精确的。
本来还可以更简单的两个器件直接测就行了。
但是这样子就会导致不接三极管的时候,基极电压会到达5V,但是假如使用3.3V的电源的话,就会减小测量范围。所以选择加入一个稳压二极管。