# ComponentCalc: The Electrical Engineering Calculator
Sometimes your TI-89 isn't enough, and an ideal 483.42Ω resistor doesn't exist.<br>
I'm an Electrical Engineer who does a *lot* of discrete design, which means I can often have ~20 browser tabs open to resources like [jansson.us](https://jansson.us/resistors.html), [Analog Devices' dBm Calculator](https://www.analog.com/en/resources/interactive-design-tools/dbconvert.html), [TI's Designing Gain and Offset in 30s](https://www.ti.com/lit/an/sloa097/sloa097.pdf?ts=1755961810243&ref_url=https%253A%252F%252Fwww.google.com%252F), and my company's part catalog, all just to design a simple active filter.
My **goal** is to consolidate and enrich these tools into a single program that, above all else, **documents and simplifies** some design choices like component selection, making circuit designs **easy to modify** in the future.<br>
*You know, for when it takes 8 weeks to get PCBAs back and you realize that an opamp doesn't actually have infinite input impedance.*
<!-- This section is automatically updated from ~/docs/planning/Planning Overver.md -->
<!-- ANY EDITS HERE WILL BE REMOVED -->
<!-- START-PLANNED-FEATURES -->
# Planned Features
**🔵Core Features** <br>
**🔷<span style="color:#077d15">Priority Features</span>**<br>
**🔹<span style="color:#a68723">Eventual Features</span>**<br>
**🔸<span style="color:#cc7229">Possible Features</span>**<br>
**🔻<span style="color:#c9401e">A **bit** down the road but I'm *tempted*</span>**<br>
## Organization
- [ ] **🔵Projects:** Stored as directories with human-readable-ish data
- [ ] **🔸<span style="color:#cc7229">Power Rail Configuration</span>:** Store available power rails with tolerance, stability, and use preference.
- [ ] **🔻<span style="color:#c9401e">Load Estimation</span>:** Use calculators and other contributions to figure out power loads.
- [ ] **🔵(sub)Circuits:** Organize your calculations within a project!
- [ ] **🔷<span style="color:#077d15">Reuse</span>:** Use a circuit within another circuit (subcircuits)
- [ ] **🔻<span style="color:#c9401e">Dependent Optimization</span>:** Optimize two subcircuits to work together, accounting for factors like loading.
- [ ] **🔵Try-Then-Commit:** Tinker with any value, use it in other circuits, and **then** choose to change things up.
## All Components:
- [ ] **🔵Global Part Library:** Save characteristics and information about parts to reuse them.
- [ ] **🔵Internal Naming:** Add aliases for parts (i.e. Company Part Numbers).
- [ ] **🔹<span style="color:#a68723">Double Click to Add</span>:** See a generic 1kΩ 0402? You'll probably use a lot of those, so it should be easy to add it to your custom library.
- [ ] **🔷<span style="color:#077d15">Project Library</span>:** See what parts you're already using in a project (and prefer them).
- [ ] **🔻<span style="color:#c9401e">Complex Nonlinearities and Nonidealities</span>:** Amplitude dependence, bias dependence, anything that pushes math far out of the S-domain.
## Basic Passive Components (RLC)
- [ ] **🔵Standardization:** Automatic respect of the E-series using `eseries` for any automatic calculations.
- [ ] **🔵Tolerancing**
- [ ] **🔷<span style="color:#077d15">Prioritization</span>:** Let's keep BOM lines down, if a part's in your project library or global library, let's see if we can make it work.
- [ ] **🔷<span style="color:#077d15">A sense of reality</span>:** A `1F` SMD capacitor doesn't exist. This won't suggest one.
- [ ] **🔹<span style="color:#a68723">Parasitics</span>:** Basic user-defined RLC parasitics.
- [ ] **🔹<span style="color:#a68723">Estimation</span>:** Estimation of standard package (0201, 0402, ...) parasitics.
## Other Component Support
- [ ] **🔹<span style="color:#a68723">Ferrite Beads</span>** (with parameter extraction)
- [ ] **🔹<span style="color:#a68723">Opamps</span>**
- [ ] **🔻<span style="color:#c9401e">Diodes</span>**
- [ ] **🔸<span style="color:#cc7229">Black Box Sources</span>:** VCVS, VCCS, CCVS, CCCS
- [ ] **🔸<span style="color:#cc7229">Static Subcircuits</span>**
## Actual Calculators and Utilities
- [ ] **🔵Resistor Combination:** Parallel / series to hit specific tolerance and/or power rating. Ala [jansson.us](https://jansson.us/resistors.html)
- [ ] **🔵Capacitor Combination:** Parallel / series to hit specific tolerance and/or voltage rating.
- [ ] **🔵Inductor Combination:** Parallel / series to hit specific tolerance and/or current rating.
- [ ] **🔵Opamp Gain/Offset Circuits:** I manually use [TI's Designing Gain and Offset in 30s](https://www.ti.com/lit/an/sloa097/sloa097.pdf?ts=1755961810243&ref_url=https%253A%252F%252Fwww.google.com%252F) far too much *(and it usually takes me more than 30s)*
- [ ] **🔷<span style="color:#077d15">Worst-Case Analysis</span>**
- [ ] **🔷<span style="color:#077d15">Plot Digitizer</span>:** Ala [WebPlotDigitizer](https://plotdigitizer.com/), but tailored down for datasheet translation *(and for sanity during development)*.
- [ ] **🔷<span style="color:#077d15">Filter Designer</span>:** Topologies TBD.
- [ ] **🔹<span style="color:#a68723">Worst-Case Analysis</span>**
- [ ] **🔸<span style="color:#cc7229">Side-by-Side Comparison</span>**
- [ ] **🔻<span style="color:#c9401e">Custom Metrics</span>:** Create your own performance criteria.
# Some More Details
### Calculation Methods
- **(Preferred)** Analytical calculation, where reasonable, using `SymPy` and `Lcapy`
- *Light* SPICE simulation using `PySpice` with an `Ngspice` backend
- Limited to Small Signal, Noise, and *maybe* some AC Large Signal.
<!-- END-PLANNED-FEATURES -->
Raw data
{
"_id": null,
"home_page": null,
"name": "ComponentCalc",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.13",
"maintainer_email": null,
"keywords": "electronics, engineering, calculator, circuit, electrical, Electrical Engineering, design",
"author": null,
"author_email": "Adam Exley <34522460+AdamExley@users.noreply.github.com>",
"download_url": "https://files.pythonhosted.org/packages/e5/8a/2144ecec22d457e19980ffa3eb23e9de544c9231ace52536cbba7edf5912/componentcalc-0.0.0.tar.gz",
"platform": null,
"description": "# ComponentCalc: The Electrical Engineering Calculator\r\n\r\nSometimes your TI-89 isn't enough, and an ideal 483.42\u03a9 resistor doesn't exist.<br>\r\n\r\nI'm an Electrical Engineer who does a *lot* of discrete design, which means I can often have ~20 browser tabs open to resources like [jansson.us](https://jansson.us/resistors.html), [Analog Devices' dBm Calculator](https://www.analog.com/en/resources/interactive-design-tools/dbconvert.html), [TI's Designing Gain and Offset in 30s](https://www.ti.com/lit/an/sloa097/sloa097.pdf?ts=1755961810243&ref_url=https%253A%252F%252Fwww.google.com%252F), and my company's part catalog, all just to design a simple active filter.\r\n\r\nMy **goal** is to consolidate and enrich these tools into a single program that, above all else, **documents and simplifies** some design choices like component selection, making circuit designs **easy to modify** in the future.<br>\r\n*You know, for when it takes 8 weeks to get PCBAs back and you realize that an opamp doesn't actually have infinite input impedance.* \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- This section is automatically updated from ~/docs/planning/Planning Overver.md -->\r\n<!-- ANY EDITS HERE WILL BE REMOVED -->\r\n<!-- START-PLANNED-FEATURES -->\r\n\r\n# Planned Features\r\n\r\n**\ud83d\udd35Core Features** <br>\r\n**\ud83d\udd37<span style=\"color:#077d15\">Priority Features</span>**<br>\r\n**\ud83d\udd39<span style=\"color:#a68723\">Eventual Features</span>**<br>\r\n**\ud83d\udd38<span style=\"color:#cc7229\">Possible Features</span>**<br>\r\n**\ud83d\udd3b<span style=\"color:#c9401e\">A **bit** down the road but I'm *tempted*</span>**<br>\r\n\r\n\r\n## Organization\r\n- [ ] **\ud83d\udd35Projects:** Stored as directories with human-readable-ish data\r\n - [ ] **\ud83d\udd38<span style=\"color:#cc7229\">Power Rail Configuration</span>:** Store available power rails with tolerance, stability, and use preference.\r\n - [ ] **\ud83d\udd3b<span style=\"color:#c9401e\">Load Estimation</span>:** Use calculators and other contributions to figure out power loads.\r\n- [ ] **\ud83d\udd35(sub)Circuits:** Organize your calculations within a project!\r\n - [ ] **\ud83d\udd37<span style=\"color:#077d15\">Reuse</span>:** Use a circuit within another circuit (subcircuits)\r\n - [ ] **\ud83d\udd3b<span style=\"color:#c9401e\">Dependent Optimization</span>:** Optimize two subcircuits to work together, accounting for factors like loading.\r\n- [ ] **\ud83d\udd35Try-Then-Commit:** Tinker with any value, use it in other circuits, and **then** choose to change things up.\r\n\r\n\r\n\r\n## All Components:\r\n- [ ] **\ud83d\udd35Global Part Library:** Save characteristics and information about parts to reuse them.\r\n - [ ] **\ud83d\udd35Internal Naming:** Add aliases for parts (i.e. Company Part Numbers).\r\n - [ ] **\ud83d\udd39<span style=\"color:#a68723\">Double Click to Add</span>:** See a generic 1k\u03a9 0402? You'll probably use a lot of those, so it should be easy to add it to your custom library.\r\n- [ ] **\ud83d\udd37<span style=\"color:#077d15\">Project Library</span>:** See what parts you're already using in a project (and prefer them).\r\n- [ ] **\ud83d\udd3b<span style=\"color:#c9401e\">Complex Nonlinearities and Nonidealities</span>:** Amplitude dependence, bias dependence, anything that pushes math far out of the S-domain.\r\n\r\n\r\n\r\n## Basic Passive Components (RLC)\r\n- [ ] **\ud83d\udd35Standardization:** Automatic respect of the E-series using `eseries` for any automatic calculations.\r\n- [ ] **\ud83d\udd35Tolerancing** \r\n- [ ] **\ud83d\udd37<span style=\"color:#077d15\">Prioritization</span>:** Let's keep BOM lines down, if a part's in your project library or global library, let's see if we can make it work.\r\n- [ ] **\ud83d\udd37<span style=\"color:#077d15\">A sense of reality</span>:** A `1F` SMD capacitor doesn't exist. This won't suggest one.\r\n- [ ] **\ud83d\udd39<span style=\"color:#a68723\">Parasitics</span>:** Basic user-defined RLC parasitics.\r\n - [ ] **\ud83d\udd39<span style=\"color:#a68723\">Estimation</span>:** Estimation of standard package (0201, 0402, ...) parasitics.\r\n\r\n## Other Component Support\r\n- [ ] **\ud83d\udd39<span style=\"color:#a68723\">Ferrite Beads</span>** (with parameter extraction)\r\n- [ ] **\ud83d\udd39<span style=\"color:#a68723\">Opamps</span>** \r\n- [ ] **\ud83d\udd3b<span style=\"color:#c9401e\">Diodes</span>**\r\n- [ ] **\ud83d\udd38<span style=\"color:#cc7229\">Black Box Sources</span>:** VCVS, VCCS, CCVS, CCCS\r\n- [ ] **\ud83d\udd38<span style=\"color:#cc7229\">Static Subcircuits</span>**\r\n\r\n\r\n\r\n\r\n## Actual Calculators and Utilities\r\n- [ ] **\ud83d\udd35Resistor Combination:** Parallel / series to hit specific tolerance and/or power rating. Ala [jansson.us](https://jansson.us/resistors.html)\r\n- [ ] **\ud83d\udd35Capacitor Combination:** Parallel / series to hit specific tolerance and/or voltage rating.\r\n- [ ] **\ud83d\udd35Inductor Combination:** Parallel / series to hit specific tolerance and/or current rating.\r\n- [ ] **\ud83d\udd35Opamp Gain/Offset Circuits:** I manually use [TI's Designing Gain and Offset in 30s](https://www.ti.com/lit/an/sloa097/sloa097.pdf?ts=1755961810243&ref_url=https%253A%252F%252Fwww.google.com%252F) far too much *(and it usually takes me more than 30s)*\r\n - [ ] **\ud83d\udd37<span style=\"color:#077d15\">Worst-Case Analysis</span>**\r\n- [ ] **\ud83d\udd37<span style=\"color:#077d15\">Plot Digitizer</span>:** Ala [WebPlotDigitizer](https://plotdigitizer.com/), but tailored down for datasheet translation *(and for sanity during development)*.\r\n- [ ] **\ud83d\udd37<span style=\"color:#077d15\">Filter Designer</span>:** Topologies TBD.\r\n - [ ] **\ud83d\udd39<span style=\"color:#a68723\">Worst-Case Analysis</span>**\r\n - [ ] **\ud83d\udd38<span style=\"color:#cc7229\">Side-by-Side Comparison</span>**\r\n- [ ] **\ud83d\udd3b<span style=\"color:#c9401e\">Custom Metrics</span>:** Create your own performance criteria.\r\n\r\n\r\n\r\n\r\n# Some More Details\r\n\r\n### Calculation Methods\r\n- **(Preferred)** Analytical calculation, where reasonable, using `SymPy` and `Lcapy`\r\n- *Light* SPICE simulation using `PySpice` with an `Ngspice` backend\r\n - Limited to Small Signal, Noise, and *maybe* some AC Large Signal.\r\n\r\n\r\n\r\n<!-- END-PLANNED-FEATURES -->\r\n",
"bugtrack_url": null,
"license": null,
"summary": "An Electrical Engineering calculator suite ",
"version": "0.0.0",
"project_urls": {
"Repository": "https://github.com/AdamExley/ComponentCalc/"
},
"split_keywords": [
"electronics",
" engineering",
" calculator",
" circuit",
" electrical",
" electrical engineering",
" design"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e2b0196c3afb7d021490640ca0edc1622c5cc40e2de4e30acd523a582acbf411",
"md5": "70320a96d957de40912a3db42508d98e",
"sha256": "9f39f9032084f8b0900eff01f3b96326ecfdfa9c873c2d8f30d372970fdfe8a7"
},
"downloads": -1,
"filename": "componentcalc-0.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "70320a96d957de40912a3db42508d98e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.13",
"size": 8639,
"upload_time": "2025-08-24T02:48:14",
"upload_time_iso_8601": "2025-08-24T02:48:14.671430Z",
"url": "https://files.pythonhosted.org/packages/e2/b0/196c3afb7d021490640ca0edc1622c5cc40e2de4e30acd523a582acbf411/componentcalc-0.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e58a2144ecec22d457e19980ffa3eb23e9de544c9231ace52536cbba7edf5912",
"md5": "6f091443429e812fa113a4de8b1dd699",
"sha256": "f44d9c987ec02085ba075e2dc1bfd42849397663f27c8978b102597d9f14f394"
},
"downloads": -1,
"filename": "componentcalc-0.0.0.tar.gz",
"has_sig": false,
"md5_digest": "6f091443429e812fa113a4de8b1dd699",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.13",
"size": 8319,
"upload_time": "2025-08-24T02:48:15",
"upload_time_iso_8601": "2025-08-24T02:48:15.888693Z",
"url": "https://files.pythonhosted.org/packages/e5/8a/2144ecec22d457e19980ffa3eb23e9de544c9231ace52536cbba7edf5912/componentcalc-0.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-24 02:48:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "AdamExley",
"github_project": "ComponentCalc",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "componentcalc"
}