Computando capacitância de carga de cristal usando Python & UliEngineering

Quando você implementa um circuito oscilador de cristal, uma tarefa que é tanto essencial quanto frequentemente negligenciada é como computar os capacitores de carga do cristal.

TechOverflow calculators:
You can enter values with SI suffixes like 12.2m (equivalent to 0.012) or 14k (14000) or 32u (0.000032).
The results are calculated while you type and shown directly below the calculator, so there is no need to press return or click on a Calculate button.
F ⚠
F ⚠
F ⚠

Dica: Em muitos casos é mais fácil usar um oscilador de cristal integrado para o qual você não tem que se preocupar com capacitores de carga. Cristais são geralmente recomendáveis para aplicações de baixo consumo de energia e manufatura de alto volume onde osciladores são muito caros.

Neste exemplo, nós computaremos os capacitores de carga para um Abracon ABLS-16.000MHZ-B4-T (especificado com uma capacitância de carga de 18 pF de acordo com a folha de dados).

É fundamental entender que a especificação de capacitância de carga de 18 pF não significa que você pode usar capacitores de 18 pF ou 2x capacitores de 9 pF. Você precisa realmente calcular os valores corretos.

Você precisa das seguintes informações:

  • Capacitância de carga do cristal, especificada na folha de dados do cristal.
  • Uma estimativa da capacitância parasita, ou seja, a capacitância dos traços da placa de circuito impresso do cristal ao microcontrolador. Se você não sabe isso, eu recomendo usar 2 pF
  • A capacitância do pino do microcontrolador (ou qualquer dispositivo ao qual você quer conectar seu dispositivo) como especificado na folha de dados do microcontrolador. Frequentemente a capacitância dos pinos do oscilador não é a mesma dos outros pinos e é portanto especificada separadamente. 3 pF é uma boa primeira estimativa para a maioria dos circuitos integrados modernos. O valor deve ser especificado por pino!

Primeiro, instale UliEngineering.

Agora podemos computar os capacitores de carga corretos usando:

crystal_load_capacitors.py
from UliEngineering.EngineerIO import auto_print
from UliEngineering.Electronics.Crystal import *

# Imprimir capacitores de carga: imprime "29.0 pF"
auto_print(load_capacitors, cload="18 pF", cpin="3 pF", cstray="2 pF")

Neste caso, você precisa ter dois capacitores de carga de 29.0 pF cada.

Você deve usar o valor disponível mais próximo de capacitor de carga, mas sempre verifique a frequência resultante se você tem altos requisitos de precisão de clock.

Dica: Você pode passar tanto números (como 18e-12) ou strings (como 18 pF ou 0.018 nF) para a maioria das funções UliEngineering. Prefixos SI como p e n são automaticamente decodificados

Se você quer usar o valor programaticamente, chame load_capacitors() diretamente:

crystal_load_capacitors_value.py
from UliEngineering.EngineerIO import auto_print
from UliEngineering.Electronics.Crystal import *

# Computar o valor do capacitor de carga (para ambos os dois capacitores de carga):
load_caps = load_capacitors(cload="18 pF", cpin="3 pF", cstray="2 pF")
# load_caps = 2.9e-11

Check out similar posts by category: Calculadoras Eletrônica Python