Programa Para Cálculo de Transformadores de Áudio

Started by hgamal, 04 de April de 2020, as 01:24:52

Previous topic - Next topic

hgamal

*****
Hand MasterMind
Posts: 3,986
Logged
Eu fiz um pequeno programa, baseado no livro do Alfonso Martignoni - Transformadores, e o cálculo para este transformador está mostrado abaixo:



Para que o núcleo de 19 mm fosse usado, tive que limitar a frequência inicial do transformador a 120 Hz.

o fonte do programa pode ser baixado de:

http://gamal.com.br/public/calc_trafo.m

Ele é feito em Octave (talvez o mathlab funcione).

O Programa calcula o número de espiras e bitolas de fio. É um livro antigo, mas é bem útil. Já bati o resultado com cálculos de outros autores e não difere muito. Para fazer estas comparações, dois parâmetros tem que ser "pesquisados", o valor do Fluxo Máximo e da Densidade de Corrente. No fonte estão fixos estes dois valores, mas há sugestões dos valores utilizados pelo Wolpert.
Deus salva... e o Rock alivia! Ainda está em tempo do Rock 'n' Roll te salvar

xformer

Administrator
******
DIY Freak
Posts: 6,396
e^(i x pi)+1=0
Logged
#1
Haroldo, uma hora eu tento adaptar o programa para Python.   :tup


O que se escreve com "facilidade" costuma ser lido com dificuldade pelos outros. Se quiser ajuda em alguma coisa, escreva com cuidado e clareza. Releia sua mensagem postada e corrija os erros.

marcao_cfh

****
Handmaker
Posts: 1,708
Logged
Haroldo, bem legal o programa! A um tempo atrás eu fiz algo parecido no excel, também usando o Martignoni como referência, mas o meu era mais simples. Eu tinha fixado a frequência em 60Hz e não possuo conhecimento de excel o suficiente para mostrar as bitolas dos fios em AWG, o meu mostrava em cm² e eu tinha que procurar numa tabela. Infelizmente se perdeu pois fiz no computador do trabalho, que foi formatado sem me avisarem e eu não tinha feito backup >>(:.

Uma sugestão a acrescentar é mostrar um valor mínimo estimado para a largura da perna central da chapa considerando um núcleo quadrado, ou seja, a raiz da área do núcleo. Nesse caso, dá exatamente 1,9 cm. Claro que esse valor muda dependendo da altura do empilhamento de chapas, mas eu tinha feito isso para ter uma noção da chapa necessária e não perder tempo calculando, por exemplo, esse mesmo transformador para um núcleo 1,5 cm x 1,5 cm e no final, após descobrir dados e fios em AWG, verificar que a possibilidade de execução era menor que 3 )>|. Aliás, não sei o quão trabalhoso isso seria, mas colocar a possibilidade de execução tornaria o programa mais completo ainda.

hgamal

*****
Hand MasterMind
Posts: 3,986
Logged
Pessoal,

em termos de programação dá para fazer quase tudo.

Este programa eu fiz para comparar  os mecanismos de cálculo entre Wolpert e Martignoni. A meu ver, a comparação não revelou grandes vícios nos cálculos, eles são muito próximos em seus resultados, claro que isso é verdade se forem usadas os mesmos parâmetros de entrada, como fluxo máximo, densidade de corrente, etc.

Não fiz escolha automática de núcleos (ou automágica) pelo fato de que - diferente dos padrões de fio - existe uma míriade de núcleos e fabricantes, Outro fato é que aqui, muitas vezes, o núcleo que temos é "aquele" mesmo, não podemos mudar. Assim, eu preferi deixar ele assim mesmo. Para não engessar, o programa  sugere a área necessária para os dados iniciais sugeridos e espera que o usuário escolha a largura e profundidade da perna.

Hoje em dia, não vejo os cálculos como desafio, mas sim a execução do transformador. Mesmo assim, acredito que com todas as informações que temos aqui, já dá para concretizar um bom produto.

Claro que há uma penca de truques não revelados, mas para os transformadores de guitarra e afins, esses truques podem não ser tão relevantes.

Espero ter ajudado com o programinha simples. Ele é uma pequena contribuição para este grupo de "handmakers" que sempre me ajudou muito.

Xfromer,

eu usei o Octave porque quando eu fiz esse treco, eu estava usando Octave para calcular uns filtros digitais. Mas acho que a conversão para python, para um programador experiente, não deve demorar mais que um hora.
Deus salva... e o Rock alivia! Ainda está em tempo do Rock 'n' Roll te salvar

A.Sim

****
Handmaker
Posts: 1,245
Location: São Leopoldo
Logged
#4
Wolpert... não é aquele autor que usa 18000 G como indução máxima no núcleo de um transformador de saída ?

Não, são 17000 G; "Audio Transformers" pág 46.

E 15000 G na pág. 64...
Transformadores Schatz
...The bitterness of poor quality [transformers] is remembered long after the sweetness of today's funny gadgets low price has faded from memory... (obsoletetellyemuseum)

- pelo retorno do tópico "Chinelagem" !

hgamal

*****
Hand MasterMind
Posts: 3,986
Logged
A.Sim,

estes dois são os autores que temos disponíveis que mostram especificamente (e de forma prática) como chegar ao objetivo que pretendemos.

No caso do Wolpert, eu acredito os valores de indução máxima usados, eram de  acordo com o núcleo escolhido. Não achei no livro, de forma clara, de onde ele ele tirava os valores. Talvez saiam dos manuais dos fabricantes.

Não sei se entra na área do segredo industrial ou coisa parecida, mas você poderia nos ajudar muito com números melhores ou pelo menos ensinar a forma prática de consegui-los.

Se não me falha a memória o Martignoni usa o valor de 11300 G e o Wolpert (no transformador de 100 Watts) usa 17000. Me parece que um peca por conservadorismo e o outro por excesso.

Só nos resta a questão: Qual é o valor que Simionovski usa?

Quote from: A.Sim on 04 de April de 2020, as 14:07:15
Wolpert... não é aquele autor que usa 18000 G como indução máxima no núcleo de um transformador de saída ?

Não, são 17000 G; "Audio Transformers" pág 46.

E 15000 G na pág. 64...
Deus salva... e o Rock alivia! Ainda está em tempo do Rock 'n' Roll te salvar

A.Sim

****
Handmaker
Posts: 1,245
Location: São Leopoldo
Logged
#6
Olá.

Sim, entra na área do segredo industrial, mas eu posso dar uma ajuda quanto a isso. Qualquer um que use mais de 10000 G em um transformador de saída não sabe o que está fazendo. Por essa razão, considero destituída de qualquer valor a obra do Wolpert já que um erro em um ponto básico como esse invalida todo o resto porque mostra que o autor "não sabe o que está fazendo".

Há uma discussão bastante profunda sobre o assunto da indução magnética num tópico desenvolvido em outro forum durante o Ostracismo ( ou seria o Desterro ) e que foi mencionada aqui http://www.handmades.com.br/forum/index.php?topic=11611.msg191768#msg191768.
Transformadores Schatz
...The bitterness of poor quality [transformers] is remembered long after the sweetness of today's funny gadgets low price has faded from memory... (obsoletetellyemuseum)

- pelo retorno do tópico "Chinelagem" !

hgamal

*****
Hand MasterMind
Posts: 3,986
Logged
Obrigado pela resposta. Eu discordo um pouco, mas trás mais um pouco de luz ao assunto. É sempre bom ter mais de uma opinião para levar em conta.

Quote from: A.Sim on 04 de April de 2020, as 18:14:42
Sim, entra na área do segredo industrial, mas eu posso dar uma ajuda quanto a isso. Qualquer um que use mais de 10000 G em um transformador de saída não sabe o que está fazendo. Por essa razão, considero destituída de qualquer valor a obra do Wolpert já que um erro em um ponto básico como esse invalida todo o resto porque mostra que o autor "não sabe o que está fazendo".
Deus salva... e o Rock alivia! Ainda está em tempo do Rock 'n' Roll te salvar

xformer

Administrator
******
DIY Freak
Posts: 6,396
e^(i x pi)+1=0
Logged
#8
A versão em Python:

QuotePw1 = input("Potência (watts) ?")
Zi1 = input("Impedancia do primario (ohms) ?")
Zo1 = input("Impedancia do secundario (ohms) ?")
F1 = input("Frequencia (Hz) ?")

Pw = float(Pw1)
Zi = float(Zi1)
Zo = float(Zo1)
F = float(F1)


Bm = 11300.0
DC = 3.0

# calculo
Vi = (Pw*Zi)**(1/2)
Ii = Pw/Vi

Vo = (Pw*Zo)**(1/2)
Io = Pw/Vo

Si = Ii/DC
So = Io/DC

Bitolai = 2*(Si/3.14159265)**(1/2)
Bitolao = 2*(So/3.14159265)**(1/2)
         
Sm = 7.5*((1.5*Pw)/F)**(1/2)
Sg = 1.1*Sm

print("secçao minima do nucleo:  (cm2)")
print (Sg)

L1 = input("Largura da perna central (cm) ?")
H1 = input("Empilhamento do nucleo (cm) ?")

L = float(L1)
H = float(H1)

Sgo = L * H
Smo = Sgo / 1.1
         
correct = False
AWG = 0
while correct == False:
   Bitola = 0.005*92**((36-AWG)/39)*25.4
   if Bitolai >= Bitola:
       Wi = AWG - 1
       correct = True
   else:
       AWG = AWG + 1

correct = False
AWG = 0
while correct == False:
   Bitola = 0.005*92**((36-AWG)/39)*25.4
   if Bitolao >= Bitola:
       Wo = AWG - 1
       correct = True
   else:
       AWG = AWG + 1


Ni = int(Vi * 100000000 / (4.44 * Bm * Smo * F))
No = int(Vo / Vi * Ni)

# Resultados
print ("Tensao primario (V):" + str(Vi))
print ("Corrente primario (A):" + str(Ii))
print ("Espiras primario:" + str(Ni))
print ("Bitola primario (AWG):" + str(Wi))
print ("Espiras secundario:" + str(No))
print ("Bitola secundario (AWG):" + str(Wo))

QuotePython 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:24:06) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
Potência (watts) ?15
Impedancia do primario (ohms) ?8000
Impedancia do secundario (ohms) ?8
Frequencia (Hz) ?120
secçao minima do nucleo:  (cm2)
3.5723547906108095
Largura da perna central (cm) ?1.9
Empilhamento do nucleo (cm) ?1.9
Tensao primario (V):346.41016151377545
Corrente primario (A):0.04330127018922193
Espiras primario:1753
Bitola primario (AWG):35
Espiras secundario:55
Bitola secundario (AWG):20

Fiquei com preguiça de digitar a tabela de busca das bitolas, então usei a fórmula do AWG x diâmetro no programa. O resultado deu igual na bitola.
O que se escreve com "facilidade" costuma ser lido com dificuldade pelos outros. Se quiser ajuda em alguma coisa, escreva com cuidado e clareza. Releia sua mensagem postada e corrija os erros.

hgamal

*****
Hand MasterMind
Posts: 3,986
Logged
#9
Explica essa tal fórmula? Onde está a referência para ela?

Quote from: xformer on 05 de April de 2020, as 09:30:39
Fiquei com preguiça de digitar a tabela de busca das bitolas, então usei a fórmula do AWG x diâmetro no programa. O resultado deu igual na bitola.

fiz uma subrotina com sua fórmula, mas fiz o parâmetro de entrada ser a área do fio


def lookupWire(area):
    rc = -1
    len = 2*(area/3.14159265)**(1/2)
    for AWG in range(40,0,-1):
        Bitola = 0.005*92**((36-AWG)/39)*25.4
        if len <= Bitola:
            rc = AWG
            break
    return rc


Isso limpa um pouco o código:


Wi = lookupWire(Si)
Wo = lookupWire(So)
Deus salva... e o Rock alivia! Ainda está em tempo do Rock 'n' Roll te salvar

xformer

Administrator
******
DIY Freak
Posts: 6,396
e^(i x pi)+1=0
Logged
#10
https://en.wikipedia.org/wiki/American_wire_gauge

Por definição o AWG36 tem diâmetro de 0.005 polegadas, e o AWG0000 tem 0.46 polegadas de diâmetro. A razão entre estes diâmetros é 1:92, e existem 40 bitolas entre o AWG36 e o AWG0000, ou 39 passos. Como cada número sucessivo de bitola aumenta a área da secção transversal por um fator multiplicador constante (linearmente), os diâmetros variam numa razão geometrica.

A fórmula para os AWG entre 0 e 44 é:
diâmetro (em mm) = (0.005 x 92 ^((36-AWG)/39)) x 25.4  

Essa é a fórmula usada no programa. O "25.4" apenas converte de polegadas para milímetros.  Para AWG entre 0 e 0000 veja no link (ou use -1 para AWG00, -2 para AWG000 e -3 para AWG0000).
O que se escreve com "facilidade" costuma ser lido com dificuldade pelos outros. Se quiser ajuda em alguma coisa, escreva com cuidado e clareza. Releia sua mensagem postada e corrija os erros.

hgamal

*****
Hand MasterMind
Posts: 3,986
Logged
Bem legal. Viu que eu alterei um pouco a minha resposta. Coloquei uma subrotina no seu programa.

Quote from: xformer on 05 de April de 2020, as 13:47:52
https://en.wikipedia.org/wiki/American_wire_gauge
Deus salva... e o Rock alivia! Ainda está em tempo do Rock 'n' Roll te salvar

xformer

Administrator
******
DIY Freak
Posts: 6,396
e^(i x pi)+1=0
Logged
Quote from: hgamal on 05 de April de 2020, as 14:09:04
Bem legal. Viu que eu alterei um pouco a minha resposta. Coloquei uma subrotina no seu programa.


Assim fica mais parecido com os procedimentos do seu programa original.
:tup
O que se escreve com "facilidade" costuma ser lido com dificuldade pelos outros. Se quiser ajuda em alguma coisa, escreva com cuidado e clareza. Releia sua mensagem postada e corrija os erros.

hgamal

*****
Hand MasterMind
Posts: 3,986
Logged
A intenção era outra, podemos usar esta rotina em outros lugares.

Além de ficar mais fácil de depurar e melhorar.

Se uma subrotina tem um defeito, você só conserta em um lugar.

Quote from: xformer on 05 de April de 2020, as 14:13:30
Assim fica mais parecido com os procedimentos do seu programa original.
:tup
Deus salva... e o Rock alivia! Ainda está em tempo do Rock 'n' Roll te salvar

marcao_cfh

****
Handmaker
Posts: 1,708
Logged
Interessante, não conhecia essa. Obrigado pela explicação.

Para desenferrujar a matemática, isolei o AWG na equação. Antes, chamei toda a potência de incógnita a, para simplificar.

d = (0,005*92^a)*25,4
0,005*92^a=d/25,4
92^a=d/0,127
Reescrevendo como logaritmo:

a = log(b92) (d/0,127) -> aqui é log de base 92, não sei como se escreve corretamente usando essa notação
(36-awg)/39 = log(b92) (d/0,127)
36-awg = 39*log(b92) (d/0,127)
awg = 36 - 39*log(b92) (d/0,127)

Correto? Se sim, bem mais complexo que resolver a equação na forma inicial e comparar com o valor de diâmetro calculado :D.