ComponentCalc


NameComponentCalc JSON
Version 0.0.0 PyPI version JSON
download
home_pageNone
SummaryAn Electrical Engineering calculator suite
upload_time2025-08-24 02:48:15
maintainerNone
docs_urlNone
authorNone
requires_python>=3.13
licenseNone
keywords electronics engineering calculator circuit electrical electrical engineering design
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 1.27859s