This short program will use voltage measurements on the base and collector of a transistor and resistor values entered to calculate the current gain. Of course different value resistors will result in different beta values. I tried to use the smallest collector resistor possible without causing the collector voltage to rise too much. I used the USB (5V) output for the collector resistor, so make sure the collector voltage doesn't rise over 3.3V or I think bad things will happen.

Dependencies:   mbed

Committer:
RobOnk
Date:
Mon Apr 16 03:47:28 2012 +0000
Revision:
0:1dd4e19ed08e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RobOnk 0:1dd4e19ed08e 1 #include "mbed.h"
RobOnk 0:1dd4e19ed08e 2
RobOnk 0:1dd4e19ed08e 3 AnalogIn base_voltage(p15);
RobOnk 0:1dd4e19ed08e 4 AnalogIn coll_voltage(p16);
RobOnk 0:1dd4e19ed08e 5
RobOnk 0:1dd4e19ed08e 6 int base_resistor, coll_resistor;
RobOnk 0:1dd4e19ed08e 7 float base_current, adj_base_voltage;
RobOnk 0:1dd4e19ed08e 8 float coll_current, adj_coll_voltage, beta;
RobOnk 0:1dd4e19ed08e 9
RobOnk 0:1dd4e19ed08e 10 int main() {
RobOnk 0:1dd4e19ed08e 11
RobOnk 0:1dd4e19ed08e 12 printf ("Please enter a base resistor value\n");
RobOnk 0:1dd4e19ed08e 13 scanf ("%i", &base_resistor);
RobOnk 0:1dd4e19ed08e 14
RobOnk 0:1dd4e19ed08e 15 printf("Please enter a collector resistor value\n");
RobOnk 0:1dd4e19ed08e 16 scanf ("%i", &coll_resistor);
RobOnk 0:1dd4e19ed08e 17
RobOnk 0:1dd4e19ed08e 18 //calculate base current
RobOnk 0:1dd4e19ed08e 19 adj_base_voltage = (1 - base_voltage) * 3.3; //voltage across base resistor
RobOnk 0:1dd4e19ed08e 20 base_current = adj_base_voltage/base_resistor;
RobOnk 0:1dd4e19ed08e 21
RobOnk 0:1dd4e19ed08e 22 //calculate collector current
RobOnk 0:1dd4e19ed08e 23 adj_coll_voltage = (1.515 - coll_voltage) * 3.3; //1.515 is 5V as 1 is 3.3V
RobOnk 0:1dd4e19ed08e 24 coll_current = adj_coll_voltage/coll_resistor;
RobOnk 0:1dd4e19ed08e 25
RobOnk 0:1dd4e19ed08e 26 //calculate current gain
RobOnk 0:1dd4e19ed08e 27 beta = coll_current / base_current;
RobOnk 0:1dd4e19ed08e 28 printf ("Transistor beta is %f\n", beta);
RobOnk 0:1dd4e19ed08e 29 printf ("The voltage across Rb is %f\n", adj_base_voltage);
RobOnk 0:1dd4e19ed08e 30 printf ("The voltage across Rc is %f\n", adj_coll_voltage);
RobOnk 0:1dd4e19ed08e 31
RobOnk 0:1dd4e19ed08e 32 }
RobOnk 0:1dd4e19ed08e 33
RobOnk 0:1dd4e19ed08e 34
RobOnk 0:1dd4e19ed08e 35
RobOnk 0:1dd4e19ed08e 36
RobOnk 0:1dd4e19ed08e 37
RobOnk 0:1dd4e19ed08e 38
RobOnk 0:1dd4e19ed08e 39
RobOnk 0:1dd4e19ed08e 40
RobOnk 0:1dd4e19ed08e 41