{"id":13728370,"url":"https://github.com/upb-lea/transistordatabase","last_synced_at":"2025-05-05T01:31:11.169Z","repository":{"id":37451635,"uuid":"327936380","full_name":"upb-lea/transistordatabase","owner":"upb-lea","description":"A unified software engineering tool for managing and evaluating power transistors","archived":false,"fork":false,"pushed_at":"2025-04-28T17:43:08.000Z","size":22421,"stargazers_count":52,"open_issues_count":21,"forks_count":11,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-28T18:40:58.174Z","etag":null,"topics":["datasheet-calculations","datasheets","power-electronics","transistors"],"latest_commit_sha":null,"homepage":"https://upb-lea.github.io/transistordatabase/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/upb-lea.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","contributing":"Contributing.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-01-08T15:12:54.000Z","updated_at":"2025-04-28T17:42:14.000Z","dependencies_parsed_at":"2023-11-10T13:03:55.602Z","dependency_job_id":"b82c1e87-3ac1-44f4-9d3f-40871cfd1dd1","html_url":"https://github.com/upb-lea/transistordatabase","commit_stats":{"total_commits":599,"total_committers":19,"mean_commits":"31.526315789473685","dds":0.4958263772954925,"last_synced_commit":"3d3b3b85fefde2475426609c6c3f9783460b08c4"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Ftransistordatabase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Ftransistordatabase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Ftransistordatabase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upb-lea%2Ftransistordatabase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/upb-lea","download_url":"https://codeload.github.com/upb-lea/transistordatabase/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252423061,"owners_count":21745539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["datasheet-calculations","datasheets","power-electronics","transistors"],"created_at":"2024-08-03T02:00:41.330Z","updated_at":"2025-05-05T01:31:06.152Z","avatar_url":"https://github.com/upb-lea.png","language":"Python","funding_links":[],"categories":["Circuit Simulation and Calculation"],"sub_categories":[],"readme":".. sectnum::\n\n###########################\nTransistordatabase\n###########################\n\nThe Transistordatabase is a tool developed by LEA from the University Paderborn which helps working with choosing transistors for the developement of electronics.\nWhen it comes to the point of choosing a transistor, there is typically a lot of trouble with different programs. Often there are multiple programs for\ncalculating transistor parameters and a schematic simulator to verify the results.\nNow your colleague is working on a different electronics topology and may use different programs. This is a problem because in most cases your transistors will never be\ncompatible with the ones from your colleague. The Transistordatabase now solves this problem:\nHere Transistors can be saved in a database and makes them easy to interchange between platforms. It is possible to export\nTransistor data to various simulation software and share it to a colleague using a .json-File.\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/images/Why_transistordatabase.png\n    :align: center\n    :alt: Why transistor database?\n\n\nFunctionality overview\n***********************\n\nHere are some examples on the functionality of the Transistordatabase:\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/images/Workflow.png\n    :align: center\n    :alt: Workflow\n\n* digitize transistor datasheet parameters and graphs and save it to the TDB (Transistordatabase)\n* use this data for calculations in python (e.g. some loss calulations for a boost-converter)\n* export this data to matlab for calculations in matlab\n* export transistors to GeckoCIRCUITS simulation program\n* export transistors to Simulink simulation program\n* export transistors to PLECS simulation program\n\n.. note::\n    Development status: Alpha\n\n\n###########################\nFeatures\n###########################\n\nThere are 3 features implemented in the Transistordatabase. First is the python interface which can be used to manage the Database and\ntheir Transistors. The python interface can also be used to implemement optimization routines.\nThen there is a GUI which is mostly used to manage the Database and visualize different properties of the stored Transistors.\nAs the third feature the Transistordatabase can be updated by an Online-Database. You can choose to work with our Online Repository or create your own if needed. \n\nPython interface\n*******************************\n\nUse the transistor data in you self-written optimization program, see figure:\n\n* Automatic calculate your converter losses with many different transistors\n* Search the database for usable transistors for your application\n* Functions provided, to search for closest operating point\n* Functions provided, to linearize the transistor/diode conduction behaviour\n* Functions provided, to calculate the output capacitances Energy from the C_oss-curve \n* Use own loss measurements for above features (coming soon)\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/documentation/workflow_wp.png\n    :align: center\n    :alt: optimization\n\nGUI\n*******************************\n\n* Manage, store and search the transistors\n* Export transistor models to programs like GeckoCIRCUITS, PLECS, Matlab/Octave\n* Compare transistors (interpolate switch loss data for new gate resistors and temperatures, ...)\n\nHere are some screenshots of the GUI:\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/images/gui_database.png\n    :align: center\n    :alt: gui_database\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/images/gui_comparison.png\n    :align: center\n    :alt: gui_comparison\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/images/gui_create_transistor.png\n    :align: center\n    :alt: gui_create_transistor\n\n\nTransistordatabase Fileexchange\n*******************************\n\n`This \u003chttps://github.com/upb-lea/transistordatabase_File_Exchange\u003e`__ repository contains the Transistors currently added to the Transistordatabase.\nEvery Transistor from this repository can be automatically downloaded to your local Database. Since this only relies on the index.txt containing the links\nto each transistor which shall be downloaded it is possible to create your own repository. Next to the Transistor updates there is a list of housing types and\nmodule manufacturers which are supported by the Database which are also set in the Fileexchange respository.\n\nYou can publish your own Transistors to this repository by generating a pull request.\nIf you don't want to create a github account, you can also send the .json file to this :email:`email address \u003ctdb@lea.upb.de\u003e`.\n\n\n############\nInstallation\n############\n\nWindows\n*******\n\nInstall Python\n--------------\nInstall latest Python version: `Link \u003chttps://www.python.org/\u003e`__.\n\nInstall Pycharm (optional)\n--------------------------\n`Installation file \u003chttps://www.jetbrains.com/pycharm/download/download-thanks.html?platform=linux\u0026code=PCC\u003e`_.\n\nDownload and run executable\n---------------------------\nDownload exe-file `here \u003chttps://groups.uni-paderborn.de/lea/public/downloads/transistordatabase.zip\u003e`_\n\n\nLinux\n*****\nUbuntu\n\n.. code-block::\n\n   sudo apt install python3 python3-pip\n\n.. note::\n    Install pycharm from Snapstore\n\nAll Operating systems: Install the transistor database\n******************************************************\nInside pycharm, create a new project. Select 'new environment using' -\u003e 'Virtualenv'. |br|\nAs a base interpreter, select 'C:\\Users\\xxxxxx\\AppData\\Local\\Programs\\Python\\Python39\\Python.exe'. Click on create. |br|\nNavigate to file -\u003e settings -\u003e Project -\u003e Python Interpreter -\u003e '+' -\u003e search for 'transistordatabase' -\u003e 'Install Package' |br|\n\n\n##########################\nComplete documentation\n##########################\nThe complete documentation can be found `here \u003chttps://upb-lea.github.io/transistordatabase/main/transistordatabase.html\u003e`__.\n\n\n##########################\nUsage\n##########################\n\nMinimal python example\n*******************************\n\n.. code-block::\n\n    from transistordatabase.database_manager import DatabaseManager\n\n    # Path for json files\n    path = os.path.join(os.path.dirname(os.path.abspath(__file__)), \"tdb_example\")\n\n    # Create DatabaseManager instance and set it to json format\n    tdb_json = DatabaseManager()\n    tdb_json.set_operation_mode_json(path)\n\n    # Print database\n    tdb_json.print_tdb()\n\n    # load a transistor from the database\n    transistor_loaded = tdb_json.load_transistor('CREE_C3M0016120K')\n\nIn addition to that in `this file \u003chttps://github.com/upb-lea/transistordatabase/blob/main/transistordatabase/housing_types.txt\u003e`_ there are\nmore simple examples.\n\n\nGenerate a new transistor\n*************************\n\nTransistor object basics\n------------------------\nTransistor |br|\n| |br|\n+-Metadata |br|\n| |br|\n+-Switch |br|\n| +-Switch Metadata |br|\n| +-Channel Data |br|\n| +-Switching Data |br|\n| |br|\n+-Diode |br|\n| +-Diode Metadata |br|\n| +-Channel Data |br|\n| +-Switching Data |br|\n| |br|\n+-wp (temporary storage for further calculations) |br|\n\nReading curves from the datasheet\n---------------------------------\nFor reading datasheet curves, use the tool `WebPlotDigitizer \u003chttps://apps.automeris.io/wpd/\u003e`_. There is a online-version available. Also you can download it for Linux, Mac and Windows. WebPlotDigitizer is open source software.\n\nChannel data for switch and diode always needs to be positive. Some Manufacturers give diode data in the 3rd quadrant. Here is an example how to set the axes and export the data inside WebPlotDigitizer:\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/images/Diode_channel_data_negative.png\n    :align: center\n    :alt: diode channel data negative\n\nUse the template to generate a new transistor object\n----------------------------------------------------\n\nAfter digitizing the curves, you can use a template to generate a new transistor object and store it to the database. For this, see the  `template \u003c/template_example/template_example.py\u003e`_.\n\nSome values need to follow some rules, e.g. due to different spelling versions, the manufacturers name or housing types must be written as in the lists below. Some general hints to fill the template:\n\n    * `List of manufacturers \u003chttps://github.com/upb-lea/transistordatabase/blob/main/transistordatabase/module_manufacturers.txt\u003e`_\n    * `List of housing types \u003chttps://github.com/upb-lea/transistordatabase/blob/main/transistordatabase/housing_types.txt\u003e`_\n    * `Fuji housing overview \u003chttps://www.fujielectric.com/products/semiconductor/model/igbt/2pack.html\u003e`_\n\nIn many cases, two capacity curves are specified in the data sheets. One curve for the full voltage range, and one with zoom to a small voltage range. To represent the stored curves in the best possible way, both curves can be read in and then merged.\n\n.. code-block::\n\n    c_rss_normal = csv2array('transistor_c_rss.csv', first_x_to_0=True)\n    c_rss_detail = csv2array('transistor_c_rss_detail.csv', first_x_to_0=True)\n\n    transistor_args = {\n                   ...\n                   'c_rss': {\"t_j\": 25, \"graph_v_c\": c_rss_merged},\n\t\t\t\t   ...\n                   }\n\n\n\n\nUsage of Transistor.wp. in your programs\n*********************************************\nThere is a subclass .wp where you can fill for further program calculations.\n\nFull-automated example\n----------------------\n**Use the quickstart method to fill in the wp-class**\n\nThere is a search function, that chooses the closes operating point. In the full-automated method, there are some predefined values\n\n    * Chooses transistor.switch.t_j_max - 25°C as operating temperature to start search\n    * Chooses transistor.i_abs_max/2 as operating current to start search\n    * Chooses v_g = 15V as gate voltage to start search\n\n.. code-block::\n\n   transistor_loaded.quickstart_wp()\n\nHalf-automated example\n----------------------\n**Fill in the wp-class by a search-method to find the closes working point to your methods**\n\nInsert a working point of interest. The algorithm will find the closest working point and fills out the Transistor.wp.-class\n.. code-block::\n\n   transistor_loaded.update_wp(125, 15, 50)\n\nNon-automated example\n---------------------\n**Fill in the wp-class manually**\n\nLook for all operating points manually. This will result in an error in case of no match.\n.. code-block::\n\n    transistor_loaded.wp.e_oss = transistor_loaded.calc_v_eoss()\n    transistor_loaded.wp.q_oss = transistor_loaded.calc_v_qoss()\n\n    # switch, linearize channel and search for losscurves\n    transistor_loaded.wp.switch_v_channel, transistor_loaded.wp.switch_r_channel = transistor_loaded.calc_lin_channel(25, 15, 150, 'switch')\n    transistor_loaded.wp.e_on = transistor_loaded.get_object_i_e('e_on', 25, 15, 600, 2.5).graph_i_e\n    transistor_loaded.wp.e_off = transistor_loaded.get_object_i_e('e_off', 25, -4, 600, 2.5).graph_i_e\n\n    # diode, linearize channel and search for losscurves\n    transistor_loaded.wp.diode_v_channel, transistor_loaded.wp.diode_r_channel = transistor_loaded.calc_lin_channel(25, -4, 150, 'diode')\n\nCalculations with transistor objects\n************************************\n\nParallel transistors\n--------------------\nTo parallel transistors use the function.\n\n  * In case of no parameter paralleling is for 2 transistors\n  * In case of parameter, paralleling is for x transistors. Example here is for three transistors.\n\n.. code-block::\n\n    parallel_transistorobject = tdb_json.parallel_transistors(transistor_loaded, 3)\n\nAfter this, you can work with the transistor object as usual, e.g. fill in the .wp-workspace or export the device to Matlab, Simulink or GeckoCIRCUITS.\n\n#########################\nExport transistor objects\n#########################\n\nUsing transistors within pyhton you have already seen. Now we want to take a closer look at exporting the transistors to other programs. These exporters are currently working. Some others are planned for the future.\n\nExport a Virtual datasheet\n***************************\nThis function exports a virtual datasheet to see stored data in the database. Function display the output path of .html-file, which can be opened in your preferred browser.\n\n.. code-block::\n\n    # Windows users: export datasheet\n    transistor_loaded.export_datasheet()\n\n    # Linux users: export datasheet as html\n    # look for CREE_C3M0016120K.html in your current working directory\n    html_str = transistor_loaded.export_datasheet(build_collection=True)\n    Html_file = open(f\"{transistor_loaded.name}.html\", \"w\")\n    Html_file.write(html_str)\n    Html_file.close()\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/images/Virtual_Datasheet.png\n    :align: center\n    :alt: Generated virtual datasheet example\n\nExport to GeckoCIRCUITS\n***********************\nGeckoCIRCUITS is an open source multi platform schematic simulator. Java required. Direct `download link \u003chttp://gecko-simulations.com/GeckoCIRCUITS/GeckoCIRCUITS.zip\u003e`_.\nAt the moment you need to know the exporting parameters like gate resistor, gate-voltage and switching voltage. This will be simplified in the near future.\n\n.. code-block::\n\n    transistor_loaded.export_geckocircuits(True, 600, 15, -4, 2.5, 2.5)\n\nFrom now on, you can load the model into your GeckoCIRCUITS schematic.\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/images/Example_Gecko_Exporter.png\n    :align: center\n    :alt: GeckoExporter usage example\n\n.. hint::\n    It is also possible to control GeckoCIRCUITS from python, e.g. to sweep transistors. In this case, linux users should consider to run `this \u003chttps://github.com/tinix84/gecko/releases/tag/v1.1\u003e`_ Version of GeckoCIRCUITS instead the above one (port to OpenJDK).\n\nExport to PLECS\n***************\nFor a thermal and loss simulation using PLECS simulation tool, it requires the transistor loss and characteristic curves to be loaded in XML(Version 1.1) file format. More information on how to load the XML data can be found from here. To export the transistor object from your database to plecs required xml file format, following lines need to be executed starting with loading the required datasheet.\n\n.. code-block::\n\n    transistor_loaded.export_plecs()\n\nOutputs are xml files - one for switch and one for diode (if available), which can be then loaded into your schematic following the instructions as mentioned `here \u003chttps://www.plexim.com/support/videos/thermal-modeling-part-1\u003e`__. Note that if channel curves for the default gate-voltage are found missing then the xml files could not be possible to generate and a respective warning message is issued to the user. The user can change the default gate-voltage and switching voltage by providing an extra list argument as follows:\n\n.. code-block::\n\n    transistor_loaded.export_plecs([15, -15, 15, 0])\n\nNote that all the four parameters (Vg_on, Vg_off) for IGBTs/Mosfets and (Vd_on, Vd_off) for reverse/body diodes are necessary to select the required curves that needs to be exported to switch and diode XMLs respectively.\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/images/PLECS_thermal_editor.png\n    :align: center\n    :alt: PLECS thermal exporter usage example\n\nExport to Simulink\n******************\nFor a loss simulation in simulink, there is a IGBT model available, which can be found in this `simulink model \u003chttps://de.mathworks.com/help/physmod/sps/ug/loss-calculation-in-a-three-phase-3-level-inverter.html\u003e`_ . Copy the model to you schematic and fill the parameters as shown in the figure. Export a transistor object from your database by using the following command. Example for a Infineon transistor.\n.. code-block::\n\n    transistor_loaded = db.load_transistor('Infineon_FF200R12KE3')\n    transistor_loaded.export_simulink_loss_model()\n\nOutput is a .mat-file, you can load in your matlab program to simulate. Now, you are able to sweep transistors within your simulation. E.g. some matlab-code:\n\n.. code-block::\n\n    load Infineon_FF200R12KE3_Simulink_lossmodel.mat;\n    load Infineon_FF300R12KE3_Simulink_lossmodel.mat;\n    load Fuji_2MBI200XBE120-50_Simulink_lossmodel.mat;\n    load Fuji_2MBI300XBE120-50_Simulink_lossmodel.mat;\n    Transistor_array = [Infineon_FF200R12KE3 Infineon_FF300R12KE3 Fuji_2MBI200XBE120-50 Fuji_2MBI300XBE120-50];\n    for i_Transistor = 1:length(Transistor_array)\n        Transistor = Transistor_array(i_Transistor);\n        out = sim('YourSimulinkSimulationHere');\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/images/Example_Simulink_Exporter.png\n    :align: center\n    :alt: Simulink exporter usage example\n\nExport to Matlab/Octave\n***********************\nPython dictionary can be exported to Matlab, see the following example:\n\n.. code-block::\n\n    transistor_loaded = db.load_transistor('Fuji_2MBI100XAA120-50')\n    transistor_loaded.export_matlab()\n\nA .mat-file is generated, the exporting path will be displayed in the python console. You can load this file into matlab or octave.\n\n.. image:: https://raw.githubusercontent.com/upb-lea/transistordatabase/main/sphinx/images/Matlab.png\n    :align: center\n    :alt: Matlab .mat exporter usage example\n\n\n#######\nOthers\n#######\n\nFor developers\n***********************\n\nCurrently the transistordatabase does not only support a json format but also a mongodb database.\nTherefore mongodb needs to be installed:\nInstall with standard settings. Use the MongoDB community server, as platform, choose windows `Link \u003chttps://www.mongodb.com/try/download/community\u003e`__.\n\nRoadmap\n*******\nPlanned features in 2024\n\n* Focus on adding self-measured data to the database\n* Working with self-measured data in exporters\n* Usability improvements\n* Stable software\n\nOrganisation\n************\nBug Reports\n-----------\nPlease use the issues report button within github to report bugs.\n\nChangelog\n---------\nFind the changelog `here \u003chttps://github.com/upb-lea/transistordatabase/blob/main/CHANGELOG.md\u003e`__.\n\nContributing\n------------\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. For contributing, please refer to this `section \u003chttps://github.com/upb-lea/transistordatabase/blob/main/Contributing.rst\u003e`_.\n\nAbout\n*****\nHistory and project status\n--------------------------\nThis project started in 2020 as a side project and was initially written in matlab. It quickly became clear that the project was no longer a side project. The project should be completely rewritten, because many new complex levels have been added. To place the project in the open source world, the programming language python is used.\n\nIn January 2021 a very early alpha status was reached. First pip package was provided in may 2021. First GUI is provided in June 2022.\n\nLicense\n-------\nLicensed under `GPLv3 \u003chttps://choosealicense.com/licenses/gpl-3.0/\u003e`_\n\n\n\n.. |br| raw:: html\n\n      \u003cbr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fupb-lea%2Ftransistordatabase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fupb-lea%2Ftransistordatabase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fupb-lea%2Ftransistordatabase/lists"}