Introduction: Transistor Tester V1.12K [updated 2021][Full Guide, How to Flash] & What U Can Measure
Keep it Simple I watched a couple of Youtube videos about transistor tester and figured out that it has a very less component count and the software is also open sourced so now you want to build it but Mind Me it is not as simple as it seems but I would like to focus more on software part cause it made me freak a lot and I wasted like a year figuring it out and I wanted to share what i learn and that's it , give suggestions if u want or any queries feel free to ask
AND YES THE CASE IS AWFUL BUT IT WORKS GOOD AND I AM BAD AT DeCORATING ThInGs :)
What can you measure :-
- Your patience if u can successfully built it :)
- Transistor pinouts
- Diodes and many more , even read the codes of IR detector if programmed properly
- ESR of capacitors (not for big caps but the readings are good for small ones capacity wise)
- Well there are a number of other people of made it successfully so please watch those instructibles, I am here after watching those and i posted here what I find is lacking in those tutorials. Well Others have successfully made the device but it lacks explanation about code and much more I did a thorough in-depth research on the topic and I tested almost every code in the tarball so when I say believe me then please do so
- Well personally I build it solely for measuring caps and inductors and pinouts of transistors so it works descent for that and I have tried my best to show you the most economical design which uses less power and can be recreated on large scale without hassle.
Step 1: My CONFIGURATION
See first of all I want to make sure that this is the bare minimum circuit which u can make and has the least component count and I'll Bold such items which I find is important and things you should know.
- Atmgea328p (please get it from good seller , avoid Chinese clones and don't use Arduino it simply doesn't work for me , and if u wanna go for it please run off a good 5v supplyplease believe me )
- Other parts are simply complementary decoupling caps , pullups and switches ,etc. (End of thinking capacity :)
- And there are 6 resistors 3 X 470k and 3x 680R resistors make sure to get these resistors accurate and don't try make it using combination it doesn't work or don't think you can change the code later I have tried it and it doesn't work and 5% resistors work for me after calibration
- 16x2 character LCD it is the most economical and works best cause it draws less current, I even didn't powered my real circuit's led backlight to save power
- And please get a 2.495V reference voltage source it increases the accuracy and if u cant buy it online get another ic with similar rating , you can find them in a ATX supply from pc if u can savage , I got it from there.
- I'll post the bare minimum circuit , and u can make the circuit and for flashing u would need another Arduino board or ISP programmer , I'll tell u soon keep intact
Step 2: Building Circuit
I wont tell u how to build the circuit the bare minimum circuit is already given and now ill just tell u concerns towards hardware designing
While making a pcb make sure that :-
- Make sure that you use diode for reverse voltage protection , just use it it saves burnt components like if u accidently put the battery wrong way it will burn or release the magic Smoke!
- Make sure to clean the flux with alcohol before flashing , please do it before self-test it will save a lot of hassle
- Make sure to use accurate resistors or your readings will be bad use atleast 5% or less 0.25W resistors please dont use high power resistors they are just terrible at accuracy .
- Make sure to keep the legs of the measurement resistors as small as possible and use thick pads to reduce resistance
Step 3: Here Comes the Software Part::
First of all Big thanks to Karl-Heinz Kübbeler and Markus Frejek and many other at the forum who made it possible Big SHOUT-OUT to them
You can see this thread https://www.mikrocontroller.net/topic/transistorte...
First u need the software so go to this site ,in the image or here https://www.mikrocontroller.net/articles/AVR_Trans...
And Download the tarball and extract it using 7 zip or any other software
Now goto this folder in the extracted file and believe me the one I show you is the best , you can use other screens too but with a little adjustments and ill talk about it later
Step 4: Software More.....
Now we need software to compile it and burn it
- Download and install Arduino ide and install it following instructions https://www.arduino.
- Download and install Winavr https://sourceforge.net/projects/winavr/
- Avrdudess https://blog.zakkemble.net/avrdudess-a-gui-for-avr...
- Download driver for your arduino(eg ch430G for chinese arduino nano clone) if necessary and try out blink code to be sure the connection is good
- That's it u need a bit more patience :)
****MY GITHUB REPO FOR THE FILES*****
Step 5: Modifications to the Main File [I'll Attach My Files Too If U Just Want to Burn It That Way 😀]
#are comments just for ur understanding
File one -- mega328_2X16_menu\MAKERFILE
Open the file with notepad change ::
PARTNO = m328p
#This the name of microcontroller your using mine is atmega328
CFLAGS += -DWITH_MENU
# This option lets you select you want the menu or not just select yes cause it is helpful
# The OP_MHZ option tells the software the Operating Frequency of your ATmega.
OP_MHZ = 16
******This is very important***** please don't upload it without changing it to 16 or else you are screwed [default 8MHZ], now you have to reflash it and when suing arduino you need isp programmer and it wasted a lot of my time believe me it is a bit pitfall
That's it ,all else should be good
****MY GITHUB REPO FOR THE FILES*****
Step 6: How to Compile : [if U Want to Flash My Code Just Skip This Section]
**You will need winavr already installed and need administrator priviledges for doing this better to have but it works without it also****
- Goto the folder mega328_2X16_menu and shift + right click [see images for reference]
- Click on open power shell and if ur on windows 7 or earlier versions just open command prompt and and go to the main directory where your maker file is located.
- Once opened type make all and hit enter
- once done you will see a screen showing how many percentage ur program is taken and then a number of xxx.o files will appear in the maker file directory and with that you will get a .eep file and .hex file copy the files we will need it later
- Now you have your files compiled and if you get errors please don't flash and only if you get the screen on the command prompt where it shows the percentage of memory used by your program only then your code has successfully compiled [Like flash 80% and eeprom 40% flash something like this ]
Step 7: Setting Up Your Programmer
MAKE SURE TO DISCONNECT ALL PINS TO THE ATMEGA328P programming pins like sda scl mosi miso etc when trying to program the target ic or you ll get a number of errors in avrdude
You will need a isp programmer and if you don't have one just borrow an Arduino cause there is a code where we can make a stk500 programmer or emulate it , Idk it jsut work.
Follow this guide
or this instructible
It is very east you will get a number of articles on the web so i am not telling you
Step 8: Time to BURN 🔥 the Code
First you will need 2 files avrtester.hex and avrtester.eep
And install avrdudess , you can also do it with command line but it is easy that way
- Fire up the program and select progammer as stk500
- Select the files avr.hex and avr.eep you compiled earlier [the file name may vary ]
- Make connections for using arduino as isp and select
- connect the arduino to pc
- ****Make sure nothing is connected to those pins you use to program the microcontroller or else you will get errors while programming******
- Select the appropriate baud you can check it by going to arduin as isp sketch and looking for baud for me itz 115200
- Select mcu as atmega328p and Dont change anything just click program and if ti doesn't work in first go then retry changing connections or make sure both boards are ground referenced [make sure to connect the grounds , overcomplicating things to look smarter :)
- Click upload and if it doesn't work try changing baud rate or prorgammer if your is different ....
Step 9: Selftest
I hope till here you make sure all the hardware and software is up and running , you ll need a 10nf cap and some jumper wires to make the selftest
- Don't connect anything to the test pads and let it make a test
- Now press button for 5-10 seconds
- Now menu will appear , short press the button (3-4 times)till you get selfest option
- Long press to start
- Now you will be asked to short the probes , do so
- And now just follow the instructions and remove the short when asked to
- Now you will need capacitors 10-30nf and a capacitor greater than 100nF
- Just follow the instructions till you get selftest successfully comleted
Step 10: Some Test Results
The tests were descent with a good accuracy and if you want to read more about accuracy and other information graphs related to deviation in values it has been provided in the documentation I attached
Step 11: Power Consumption
My variant of the circuit draws a peak of 25-30mA and a standby current of ~15mA
I disconnected my lcd backlight led to save power :)
The circuit uses 7805 so to provide 5V it need a minimum of 6.5V and a current of 30mA.
With this low current consumption it would last for 16 Hours which is a lot
When the circuit is switched off it draws literally zero current as i used a push switch and would last for years depending upon the battery brand , capacity etc
And please don't try to use 5v from adapter it is not good and has dropout and a lot of other stuff and it is better to use a measurement device with a battery cause it is not refenced to anything else but your battery(EMF).And remove the programming wires from the microcontroller before running it and use good 5V supplies like from battery dont use usb power from arduino it is bad.... not even 5 its ~4.5V
Step 12: Using Other Displays and Cpus....
See frankly I didn't use a atmgea644 cause t would be a total waste atmega328 just works fine for me. Just in case you want to use the code for other displays just open the tags folder and navigate to trunk folder of ttester_122k and there you will find a number of folder dedicated to those displays and configurations
You can possible change the same maker file to build the code for all Cpus and displays but the author was kind enough to put it in separate folder ,thus making life easier for us , big thanks to them :)
In a nutshell just open the desired folder and open the designated maker file with notepad or any text editor and you only need to check and see whether the crystal frequency your using is corect else all shoudl be good and make sure winavr is installed, also install arduino ide , I know avr compiler comes with arduino but do so casue i did it , it just makes life a lot easier.
Now just open power shell or command prompt and by shift+right_click on the folder containg makerfile and select open power shell here and you can browse the web about finding how to navigate to folders in cmd.
Now when you are in the folder just type make all and hit enter
You will see a number of .o files and a .eep and a .hex files the later two are only needed so copy to a safe location(e.g use d drive root location)
when the compilation is completed you will see some text showing it successfully completed and showing the memory usage of flash and eeprom in percent that how I figure it out that my code compiled succesfully
Step 13: Compiling Errors
If you have done everything good like installing software correctly and even then if you are getting error while compiling (this is usually caused by WinAvr in windows 8.1 and 10 which i am using currently), Thanks to Joop Boerma for pointing out this problem
PS C:\Users\Joop\Downloads\componenttester\avr_tester\source\trunk\mega328_2X16_menu> make all 0 [main] sh 7328 sync_with_child: child 6788(0x1E8) died before initialization with status code 0xC0000142
83 [main] sh 7328 sync_with_child: *** child state waiting for longjmp /usr/bin/sh: fork: Resource temporarily unavailable avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex TransistorTester.elf TransistorTester.eep || exit 0 0 [main] sh 7252 sync_with_child: child 6760(0x1E0) died before initialization with status code 0xC0000142 94 [main] sh 7252 sync_with_child: *** child state waiting for longjmp /usr/bin/sh: fork: Resource temporarily unavailable make: [TransistorTester.eep] Error 128 (ignored) avr-objdump -h -S TransistorTester.elf > TransistorTester.lss 0 [main] sh 3624 sync_with_child: child 3368(0x1E0) died before initialization with status code 0xC0000142 84 [main] sh 3624 sync_with_child: *** child state waiting for longjmp /usr/bin/sh: fork: Resource temporarily unavailable make: *** [TransistorTester.lss] Error 128 PS C:\Users\Joop\Downloads\componenttester\avr_tester\source\trunk\mega328_2X16_menu> sh version
Well this is a very common fix and you just need to copy mysys1.0.dll to winavr /util/bin direcrtory which can be downloaded from https://github.com/HTTPSAMANSINGH/avr_tester.git
Step 14: 𝔗𝔯𝔬𝔲𝔟𝔩𝔢𝔰𝔥𝔬𝔬𝔱𝔦𝔫𝔤
First u need more patience so do this the next day you build this :)
- Now if your code doesn't work , then first make sure all the voltages are correct like 5V after lm7805 and 2.495V at the voltage reference(please use it if you don't have then break a ATX POWER SUPPLY TO GET ONE) and also make sure there is a good pull up at the push button.
- Also turn the contrast before hands it helps
- And please do the selftest before hands you will need just some jumper wires a 100nf and a 1uf cap
- Make sure the atmega328p is a a genuine one , Chinese clones just suck avoid them.
- And don't use Arduino cause it has many problems like the led connected to pin 13 makes problem for measurements and also it uses 4.5 volts cause of the diode and rectifier stuff ,believe me I tried everything like removing leds and what not but couldn't get it to work properly I thought it was the problem with atmega328p chip
Step 15: 𝔗𝔯𝔬𝔲𝔟𝔩𝔢𝔰𝔥𝔬𝔬𝔱𝔦𝔫𝔤[Notes From the Author]
In most cases of problems you will miss the text output to the LCD-display. At first you should check, if the LED was illuminated weak, if you release the Test button.
Power does not switch on. If the LED is without light and the VCC power has correct 5V voltage during holding the Test button, the microcontroller does not switch the power correctly. The microcontroller should hold the power by switching the PD6 output to 5V , which is usually done as one of the first actions. If you hold the Test key pressed, the power is switched on anyway. So you can check the value of VCC power and additionally the voltage value of the PD6 output, if you hold the key pressed. If VCC voltage has correct value (5V ), but PD6 voltage is below 4V , your microcontroller does not start the program. In this case you should check if the microcontroller flash has been loaded with proper data for your installed type and if ATmega is correctly configured with the fuses. If your ATmega put the PD6 output to 5V and the power does not stay if you release the Test key, it is more difficult to find the reason. First you can shorten the LED and try again. If your Tester now starts, your LED may be faulty or mounted with wrong polarity. If this is not the reason, the current amplification factor of your T3 transistor (BC557C) is insufficient. The current to the base of T3 is lower in the microcontroller state as in the “key pressed” state.
Nothing is readable on the LCD display Check the voltage at the contrast pin at the LCD display (pin 3). Adjust to correct value specified in the data sheet of your display and optimize by viewing. If you have a high temperature display type, you must provide a negative contrast voltage for operation. In this case you can use the ICL 7660 device for generating a negative voltage from positive 5V . The tester software can be configured for many different controller with different connection types. You should check, if your software matches to your mounted display type. If there is no output readable on the LCD and the background light is on, you should disconnect the power and check all four data plus the two control signal connections. If all connection are well, the only reason I see is a uncorrect timing of control signals. This can be caused by a slower LCD controller than expected by the software or the ATmega software runs at wrong clock speed. Please check for which clock speed your programming data was compiled and if the fuses of the ATmega are correct set to that speed. You find the clock parameter in the corresponding Makefile. If the tester is build without the switch off electronic, you can test with a LED connected to the test pins, if the program operates normally. If the LED flickers, the program operates well. The missing text on the LCD must be caused by wrong connection or timing. For some graphical displays the contrast is changeable with a menu function. If you have changed the contrast value, that nothing is readable at the screen, you cannot handle the menu function any more. You can try to read the display from a slanting look to the display, not from the front side. In this case you can try to handle the menu function with this view. Otherwise you can write the EEprom data new with a ISP programmer to reset the contrast value.
Something but not all is readable on the LCD display Check if the .eep data are loaded to the EEprom memory of ATmega. If all data are loaded correctly, you should check the clock speed of your programming data (Makefile) and ATmega processor settings (fuses).
Measurement is slow and Capacitors are measured about 8 times too small You run software compiled for 8MHz clock at real clock speed of 1MHz. Please set the fuses of the ATmega correctly. 37
Measurement has strangely values Check if your programmer is still connected to the ISP-plug. The ISP interface should be disconnected for measuring. Very often the reason of wrong measurements is the use of software compiled with the AUTOSCALE ADC option and with the option NO REF CAP, but the capacitor at the AREF pin has still a value of 100nF. Wrong assembly of components or remaining soft solder flux can disturb the measurements too. Please check with the selftest function of your TransistorTester software if possible. Otherwise inspect your board visually and check the resistor values with a ohmmeter. You can use the pins of the ATmega for this check, for example to check the R1 you can measure between pin 23 and pin 14. There is no need to remove the microcontroller, only battery or power supply should be removed before.
The Tester switch off the power after 2 seconds display time This condition exists, if the external Pull-Up resistor at the PD7 input is missing or the key button is keep pressed. The software switch off the internal Pull-Up resistors to prevent a influence to the measurement results. Therefore a external Pull-Up resistor (27k) is required.
Der Tester shows only Vext=xx.xV in row 2 This problem exists, if the Pull-Up resistor at the PD7 input is missing or the key button is keep pressed. Additionally the software is configured without the serial output (without option WITH UART) and without the internal Pull-Up resistors (with option PULLUP DISABLE). You should install the Pull-Up resistor at pin PD7.
Step 16: Well Thanks for Reading Till the End... Have Suggestions or Queries Please Drop It Down :)
FOR MORE INFO please read the instruction manual from the author which I attached it is long and detailed..... and may Help you to find our queries
1 Person Made This Project!
- jmboerma made it!