Kristall-Lastkondensatoren mit Python berechnen
Die UliEngineering-Bibliothek bietet eine bequeme Möglichkeit zu berechnen, welche Lastkondensatoren für eine gegebene Kristall-Oszillatorschaltung geeignet sind.
Installiere zunächst UliEngineering.
Nun musst du die folgenden Parameter herausfinden:
- Die Lastkapazität aus dem Datenblatt des Kristalls. Typische Werte sind
7pFoder12.5pFoder20pF - Die Pin-Kapazität
CPinaus dem Datenblatt des ICs, mit dem dein Kristall verbunden ist (z.B. dein Ethernet PHY oder dein RTC). Typische Werte liegen zwischen0.5pFund5pF - Schätze die Streukapazität
CStraydes Boards (das ist die Kapazität jedes Kristall-Oszillator-Pins zum PCB-Ground). Du triffst hier typischerweise nur eine fundierte Schätzung, hier sind einige Werte zum Starten:- Starte mit
3pF - Wenn du ein 4+ Lagen-Board hast (im Gegensatz zu einem 2-Lagen-Board), addiere
2pF(da der Abstand zur Ground-Ebene darunter auf 4-Lagen-Boards viel geringer ist) - Wenn du lange Leiterbahnen >1cm hast (lange Leiterbahnen zum Kristall sollten unter allen Umständen vermieden werden!), addiere
4pFfür jedes cm Leiterbahn über 1cm für 2-Lagen-Boards oder addiere6pFfür jedes cm Leiterbahn über 1cm für 4+ Lagen-Boards
- Starte mit
Nun werden wir diese Werte in UliEngineering einsetzen und die Lastkapazität berechnen:
from UliEngineering.Electronics.Crystal import load_capacitors
from UliEngineering.EngineerIO import auto_print
auto_print(load_capacitors, cload="9 pF", cpin="1 pF", cstray="5 pF")Dies gibt 7.00 pF aus
Wenn du nur den Wert und keinen auto-formatierten String möchtest, verwende load_capacitors() direkt:
capacitor = load_capacitors(cload="9 pF", cpin="1 pF", cstray="5 pF")In diesem Beispiel erhalten wir capacitor == 7e-12.
Beachte, dass 7pF bedeutet, dass du einen 7pF-Kondensator an jeder Seite des Kristalls hinzufügen musst. Ich empfehle, hier nur NP0/C0G-Kondensatoren zu verwenden, da X5R/X7R-Kondensatoren und andere Keramikkondensatoren mit hoher Dielektrizitätskonstante nicht nur einen hohen Temperaturkoeffizienten haben, sondern auch für analoge Anwendungen weniger geeignet sind, da ihre Kapazität sich mit der angelegten Spannung ändert.
Beachte, dass wir bei der PCB-Streukapazitätsschätzung oben viel geraten haben, sodass wenn du hohe Genauigkeit benötigst, du deinen Kristall-Oszillator abstimmen musst, um am besten mit deinem spezifischen Board zu funktionieren. Siehe unseren Folgebeitrag Kristall-Oszillator für bestmögliche Frequenzgenauigkeit abstimmen für weitere Informationen.