Elektronik-Wertnotationen mit Python normalisieren

English Deutsch

In der Elektronikentwicklung gibt es eine Vielzahl von Notationen für Werte, die von intuitiven Benutzeroberflächen erkannt werden müssen. Beispiele sind:

Die große Vielfalt an Optionen, einschließlich Tausendertrennzeichen, Komma als Dezimaltrennzeichen, Suffix als Dezimaltrennzeichen, optionalen Leerzeichen und wissenschaftlicher Notation, macht es schwierig, Werte ohne spezialisierte Bibliotheken zu normalisieren.

Das in diesem Beitrag aufgelistete Skript bietet eine Public-Domain-Bibliothek, um solche Werte zu normalisieren. Für den korrekten Betrieb ist eine Liste von SI-Präfixen und eine Liste gültiger Einheiten erforderlich. Diese müssen möglicherweise für verschiedene Anwendungen angepasst werden.

Ich habe die UliEngineering-Bibliothek geschrieben, eine reine Python3-Bibliothek für Elektronik, die unter anderem das Parsen dieser Notation sowie Widerstandsauswahl enthält.

Am Ende des Skripts ist ein Anwendungsbeispiel enthalten. Alle Funktionen geben None zurück, wenn ein Wert nicht interpretiert werden kann.

Installiere zunächst UliEngineering.

Dann kannst du die Funktionen aus EngineerIO.py verwenden, um die oben genannten Formate zu parsen und zu erzeugen. Neben den oben genannten Notationen können viele verschiedene Werte geparst werden.

Verwende normalize_engineer_notation(), um ein (value, unit)-Tupel zu erhalten.

engineerio_example.py
>>> from UliEngineering.EngineerIO import *
>>> normalize_engineer_notation("1 fA")
(1e-15, 'A')
>>> normalize_engineer_notation("4,500.123 A")
(4500.123, 'A')

Beachte, dass UliEngineering eine eingebaute Liste von Einheiten hat, die deine Einheit enthalten muss, damit sie korrekt validiert werden kann. Spezielle Einheitenkombinationen wie V/√Hz oder Unicode-Präfixe wie µV werden ebenfalls erkannt.

Du kannst auch format_value() verwenden, um einen menschenlesbaren String mit SI-Präfix aus einem Wert und einer Einheit zu erzeugen:

engineerio_format.py
>>> from UliEngineering.EngineerIO import *
>>> normalize_engineer_notation("4,500.123 A")
(4500.123, 'A')
>>> format_value(4.5e-6, "A")
'4.50 µA'
>>> format_value(4.5e-6, "V/√Hz")
'4.50 µV/√Hz'

Wenn du ein angepasstes Set von Einheiten, Präfixen etc. benötigst, kannst du eine eigene Instanz der EngineerIO()-Klasse initialisieren.

Für den häufigen Fall, dass du nur den numerischen Wert benötigst und dich nicht für die Einheit interessierst, kannst du normalize_numeric() verwenden:

engineerio_numeric.py
>>> from UliEngineering.EngineerIO import *
>>> normalize_numeric("4,500.123 A")
4500.123

Beachte, dass UliEngineering nur mit Python3.x funktioniert, da Python2 nur bis 2020 unterstützt wird.


Check out similar posts by category: Electronics, Python