Boa tarde.

Estou desenvolvendo um PWM para controlar um motor de 12v e 3A com um ESP8266. 

Estou utilizando um TIP41C para isso montado no esquema em anexo.

Meu problema é que quando eu coloco a saida do arduino em LOW ele não esta desligando o PWM, ele continua com o motor ligado a uma rotação baixa, mas continua. Mesmo aterrando o GATE do transistor continua funcionando. Ele funciona como PWM quando seto um duty cycle, mas com o saida em LOW ele está com aprocimadamente 8V.

Já testei trocar TIP41C e nada. Alguem sabe oque pode ser isso? 

Também o TIP esta esquentando bastante quando esta no PWM, a ponto de não conseguir colocar a mão.

Exibições: 648

Anexos

Responder esta

Respostas a este tópico

olá Pedro.

      Um pouco imprecisas as informações até aqui.  Observe que vc diz estar usando o ESP8266, mas na figura da sua montagem, aparece um Nano.  Qual deles afinal vc está usando?

      É importante isso, pois os Níveis Lógicos de saída digital  são diferentes para estas placas. A lógica "1"  no Nano (ATMega328 @5V)  estará próxima de 4V para uma corrente baixa sendo drenada. Já para o ESP8266 (@3.3V), este mesmo nível será próximo de 2.7V, em corrente semelhante.

      Sabendo qual é o Nível Lógico  na saída, é possível dimensionar o Resistor de Base do Transistor de forma adequada.  Mas sobre isso, veja estes dois pontos:

      1)  o Resistor de Base,  R1,  está incorretamente dimensionado.  Mesmo para percentuais baixos do PWM (ex. 10%),  o nível lógico "1"  na saída do Arduino será o mesmo, apenas o tempo que este nível "1" está presente é que muda com o % do PWM.  Isso significa que quando a saída está em "1",  vc irá drenar dela uma corrente excessiva, bem além do limite máximo absoluto (que nunca deveria ser alcançado, embora muita gente ache "normal" isso).  Veja: se é um Nano e a saída está em 4V, descontando-se o VBE do TIP (vamos considerar 1V, já que a corrente de base será alta),  a corrente drenada dessa saída será = (4V - 1V) / 22 Ohms = 136 mA,  ou seja, totalmente inadequada.  Se for um ESP8266, considerando a saída em 2.7V, a corrente drenada será 77 mA, também inadequada.

      2)  para diminuir a corrente drenada, pode-se aumentar R1,  mas de uma forma que a corrente de Base resultante multiplicada pelo HFE do TIP,  resulte em uma corrente de Coletor  ainda capaz de acionar o Motor.  Neste ponto duas coisas precisam ficar claras. Primeiro:  a Impedância equivalente do Motor (conforme rotação mínima e máxima) deve ser tal que não cause um VCE excessivo no TIP, do contrário este irá aquecer na mesma proporção do VCE.  E segundo: o HFE do TIP41C é relativamente baixo, na média entre 25 e 35, e este baixo HFE, exige uma corrente de Base maior, ou seja, o TIP41C  não parece ser uma boa escolha, não é?

      Assim parece que um circuito mais acertado,  usaria um TIP  "Darlington", que possui um HFE bastante alto.  Um boa opção pode ser o TIP122, cujo HFE mínimo é 1000.  Então isso possibilita um controle ON/OFF mais eficiente, drenando uma corrente baixa da saída digital do Arduino (seja um Nano, seja um ESP).

      Mas claro:  é preciso ver a impedância equivalente do Motor (obviamente em baixas rotações, onde esta impedância será mais baixa, mas o valor DC também deve ser observado). Se ela for muito baixa, irá causar um VCE mais alto,  e mais aquecimento no Transistor, exigindo um dissipador de calor  mais "pesado" (aliás eu não sei se vc está usando algum já que vc nada disse a respeito).

      Sobre o fato de não estar desligando o Motor (e consequentemente o TIP),  com as informações que vc passou, não dá pra concluir.  Mas seu TIP  pode ter ido pro beleléu, uma vez que as correntes de Base que vc está usando estão bem altas com este Resistor de 22 Ohms.

      Detalhe:  este TIP41C  é um BJT,  ou seja:  o terminal de controle não é  um "Gate",  mas sim a "Base".  O "Gate" é em  MOSFET,  e tem comportamento completamente diferente em relação às tensões e correntes de controle.

      Para facilitar o diagnóstico,  post aqui uma foto da sua montagem, de forma a podermos verificar as ligações (uma foto que permita isso de forma clara). E forneça informações adicionais sobre medições, se vc as tiver.

      Abrçs,

      Elcids

ah sim, complementando:

      Usar um MOSFET  para fazer essa comutação via PWM, certamente seria uma opção melhor que o BJT.  Por três motivos principais:

      1)  a corrente drenada da saída digital do Arduinoseria mínima. Efetivamente só há corrente durante as transições dos Níveis Lógicos, ou seja, por instantes de tempo muito curtos. E para limitar esses picos instantâneos de corrente, também deve-se usar um Resistor  limitador, que pode estar entre 1k e 10k Ohms. Este Resistor também protege o Arduino  caso o MOSFET  "pife" por algum motivo qualquer, evitando que a tensão de 12V alcance a saída digital.

      2)  a impedância "ON"  do MOSFET  é muito menor que a do BJT.  Isso implica que esta impedância também pode ser muito menor que a do Motor. Como a impedância DC do Motor  é 4 Ohms (12V / 3 A),  a impedância dinâmica (quando o Motor está girando) seria maior que este valor (maior que 4 Ohms). Logo não seria difícil encontrar um MOSFET (para corrente acima de 3A, é claro)  com uma impedância "ON"  10 vezes menor, ou seja, o VDS (equivalente ao VCE do BJT) seria menor ou próximo a 1V,  resultando em um aquecimento do MOSFET que é gerenciável com um dissipador de calor pequeno ou médio.

      3)  no mercado, há uma enorme variedade e disponibilidade de MOSFETs, e com preços bastante acessíveis.

      Claro, se optar por um MOSFET (o que eu aconselho),  também é preciso ligar o mesmo de forma adequada no seu circuito. Mas isso é tranquilo. Mas caso tenha alguma dúvida, pergunte aqui.

      Abrçs,

      Elcids

Boa noite.

Muito obrigado pela aula. 

1) Estou de fato usando o ESP8266, que tem nivel logico de 3,3v, só coloquei o Arduino na imagem porque no Fritzing não tinha o EPS8266. Mas de fato a corrente deve estar ecessiva em todos os casos.

2) Inicialmente eu estava usando o TIP122, alterei para o 41c porque achei que estava trabalhando muito no limite superior de corrente do TIP122 e gerando o aquecimento. Mas vendo as tuas considerações de fato esse não era o problema.

3) Acredito sim que torrei meu transistor, verifiquei agora e ele esta passando corrente do coletor para a base. 

Vou avaliar a utilização de um MOSFET para isso, nunca trabalhei com eles mas vou dar uma estudada. Teria algum modelo para indicar que atenda essa aplicação?

As ligações do circuito fisico estão corretas, já verifiquei algumas vezes. 

Meu problema é não ter uma loja de componentes aqui na cidade que eu moro, então tenho que me virar com os componentes que tenho. 

Muito obrigado pelo auxilio. 

Fazia tempo que não postava aqui e não tinha atualizado meu cadastro. Eu me mudei para Jaraguá do Sul, material eletronico só em Joinville.

Saudades quando morava em Floripa.

olá novamente Pedro.

      Sobre o uso do ESP8266 @3.3V, isto tem uma implicação simples: garantir o ON/OFF do elemento sendo controlado, quando este elemento está alimentado com uma tensão maior (como 5V ou 12V por exemplo). E sobre isso, falarei mais à frente (uso de um “driver” simples).

      Sobre vc ter usado o TIP122 inicialmente, veja que as características de Potência são parecidas com as do TIP41, e portanto vc também estava forçando a junção Base-Emissor com correntes um tanto altas. Se a junção Base-Emissor é danificada, então o Transistor não é mais confiável, pois não irá se comportar como esperado.

      Sobre a aquisição do MOSFET, verifique o famoso site de compras “ML” (pelas iniciais vc sabe qual é). Facilmente vc encontrará diversos modelos de MOSFET. Aconselho procurar anúncios que vendam múltiplos de 5 ou 10 unidades, pois neste caso compensará mais em termos de frete. E certamente vc encontrará lá no ML, anúncios de cidades de SC ou mesmo de Curitiba, o que implicará em custo de envio menor devido à sua proximidade geográfica.

      Para o seu caso, eu recomendo usar o IRF540. Ele é muito comum e popular, e suas características elétricas atendem seu caso, pois seu “RDS ON” (“impedância ON”) é menor que 100 mili-Ohms. Com esse baixo “RDS ON”, a Potência dissipada pelo IRF540 a uma corrente de 3A, seria menor que 1W, dispensando o uso de um dissipador de calor.

      Sobre o circuito, veja o exemplo mostrado na figura a seguir, que simulei no Proteus:

(clique na figura para “zoom”)

      Observe as formas de onda no Osciloscópio virtual, principalmente a amplitude. Note que para o sinal que emula um PWM (na figura o sinal com nome “Pulse”), usei um gerador de pulsos, onde pode-se mudar o percentual % (portanto o duty cycle).

      Veja que usei uma amplitude de 3.3V, para ficar conforme o ESP8266. Claro vc pode estar se perguntando: mas a amplitude não irá diminuir quando drenamos corrente? Sim, isso ocorre, porém no circuito mostrado o dreno de corrente da saída digital será muito baixo, e isso garante queda mínima na tensão correspondente ao Nível Lógico1”.

      Mas sobre este circuito, há outras características importantes que vc precisa estar a par. Seguem elas enumeradas:

      1)  veja que usei um BC337 como “driver” intermediário entre a saída digital do ESP8266 (o sinal “Pulse” no circuito), e o Gate do MOSFET. Isto é necessário para garantir sem falhas, que o MOSFET será acionado (explico logo adiante). Veja a figura a seguir onde marquei em verde claro o pior caso da tensão VGS do IRF540:

(clique na figura para “zoom”)

      Veja que no pior caso,  temos VGS = 4V. Isto significa que no pior caso, se a tensão de controle (o VGS) estiver acima de 4V, o MOSFET será acionado (irá conduzir). Além disso, é preciso garantir que o MOSFET conduza “bem”, ou seja, tenha um “RDS ON” realmente baixo. Com este “driver” via BC337, o “VGS ON” será de 12V, garantindo uma ótima condução do IRF540.

      Esta figura foi preparada a partir do datasheet do IRF540 do fabricante Vishay.  Os dados da figura estão na página 2 do datasheet, na Tabela de nome “SPECIFICATIONS”. O datasheet é este aqui:  "IRF540_Vishay.pdf"

      Atenção: não vá interpretar errado os valores mínimo e máximo mostrados na figura anterior para o VGS do IRF540. Eles se referem ao VGS(th) ou VGS de Threshold (ou VGS “limiar”). Quem não é especialista, vai achar que são valores limitantes para o VGS, mas esta interpretação está totalmente incorreta. Estes limites mínimo e máximo, se referem à produção (fabricação) do componente eletrônico, ou seja, se referem à estatística de fabricação. Assim, para os IRF540 produzidos e testados em fábrica, o pior caso medido para a tensão VGS(th), será 4V, o que significa que no pior caso, é preciso aplicar pelo menos 4V para o IRF540 conduzir. Obseve que no melhor caso estatístico, VGS(th) será de 2V, mas se vc considerar esse valor em um Projeto, pode dar “azar” e adquirir um componente que tem o VGS(th) mais próximo a 4V, e aí claro vai dar zica.

      Sobre o valor “extremo” do VGS, vc encontra isso na primeira página do datasheet, na TabelaABSOLUTE MAXIMUM RATINGS”. Este valor é de 20V,  e não deve  ser alcançado. Aliás, se qualquer valor dessa Tabela for alcançado, o Fabricante não mais garante que o componente terá o desempenho especificado no restante do datasheet. Note que para o VDS, o valor extremo é 100V.

      Pelas informações acima, vc pode concluir que se usar a saída digital do ESP8266  @3.3V diretamente no Gate do IRF540 (ou seja, sem o driver intermediário com BC337),  vc não terá como sempre garantir o acionamento do MOSFET, caso o VGS(th) de algum IRF540 que vc venha a adquirir seja acima de 3.3V.

      2)  note que o Diodo em paralelo com o Motor (ou “anti-paralelo” como alguns preferem dizer), é um 1N4937. Este é um Diodo de comutação rápida. Não use  diodos como 1N4007, ou da série 1N400x, pois estes são diodoslentos”, que são ótimos para a rede de 60Hz, mas que são inadequados para circuitos de alta-frequência ou onde a comutação deve ser rápida. O papel desse diodo é absorver a energia eletromotriz gerada pelo Motor quando o MOSFET corta a corrente. Assim que essa corrente é interrompida,  durante um curto instante de tempo, um spike de alta tensão será produzido nos terminais do Motor, e com polaridade contrária à tensão de 12V aplicada antes do corte. Como essa tensão gerada sobe muito rápido (em alguns micro-segundos ou até menos), é importante que o Diodo em paralelo, “perceba” rapidamente o surgimento dessa tensão, e absorva sua energia associada. E depois quando o MOSFET conduzir novamente, o Diodo ficará reversamente polarizado, e por ser rápido ele cortará também rapidamente, permitindo o acionamento do Motor.

      Não precisa ser o 1N4937. Pode ser qualquer outro Diodo rápido que tolere altas tensões reversas (ou seja, diodos como 1N4148  não servem neste caso, embora sejam rápidos). A tensão reversa repetitiva para o 1N4937 é de 600V  (lembrando que ao se colocar dois diodos em série, e com a polaridade correta, essa tensão dobrará).

      3)  observe que vc não deve  aplicar ao Motor,  um sinal PWM  com qualquer frequência.  A frequência que será efetiva, dependerá da Potência do Motor, ou seja, dependerá da Indutância que este Motor apresenta ao circuito. Motores mais potentes, terão maior indutância,  e a frequência adequada do PWM  diminui com o aumento dessa indutância. Maior indutância, menor frequência para o PWM.

      Isso ocorre, porque ao usar o PWM no Motor, vc também estará  chaveando uma indutância. Assim, conforme se aumenta a frequência do PWM, chegará a um ponto que o chaveamento não é mais eficiente, pois a inércia de energia do Motor girando não consegue acompanhar o liga/desliga do PWM. Assim é preciso usar uma frequência que permita aos enrolamentos do Motor  “perceber” de forma clara que a corrente foi cortada, e sentir o efeito disso.

      Este é um aspecto muito prático, pois além de depender da Potência do Motor, depende também da carga que está sendo acionada pelo eixo do Motor. Mas em geral, dificilmente vc precisará de mais que algumas centenas de Hz para o PWM. O ideal é começar com uma frequência intermediária, como por exemplo 500Hz, e então aumentar e diminuir a partir desse valor, observando se o controle PWM se comporta “suave”, ou se não responde mais. Claro, nesta avaliação, é preciso também variar o percentual do PWM, de 0% a 100%, para cada frequência avaliada, observando a resposta do Motor.

      4)  atenção:  o driver com BC337, inverte o sinal PWM (vc pode conferir isso nos sinais mostrados no Osciloscópio virtual na primeira figura).  Assim por exemplo para obter um PWM de 80%, vc deve programar o percentual PWM  na saída digital do ESP8266, para 20% (ou seja, 100% - 80% = 20%). Para isso vc pode criar uma função muito simples que faz este cálculo e também já programa o PWM com este resultado. Se tiver alguma dificuldade com isso, avise aqui que coloco um exemplo conforme o caso ser com valores percentuais (0 a 100%) ou com valores absolutos (0 a 255 na resolução padrão do Arduino).

      Caso use o Proteus e queira fazer algumas análises, segue o circuito que usei para simulação:   "Motor_IRF540_Proteus.zip"

      Observe no entanto, que o Motor que usei na simulação, é um dos que estavam disponíveis no Proteus. Mas vc pode ajustar os parâmetros do mesmo (como a indutância vista e a carga mecânica no eixo). Lembre-se também que a simulação “ocorre” num “tempo virtual” que sempre será mais lento que o “tempo real”.

      Espero ter ajudado.

      Abrçs,

      Elcids

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço