PWM maior que 10bits

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

PWM maior que 10bits

Mensagempor _blackmore_ » 08 Out 2011 19:27

Existem microcontroladores com PWM por hard com resolução de 10 ou mais bits ... mas é possível aumentar essa resolução de um microcontrolador que possui um PWM de 10bits para mais bits? 12..13..14..quem sabe 16 bits? seja por software complementar ao hardware interno ... ou mesmo hardware externo ... alguma dica?
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor proex » 09 Out 2011 07:47

Arm Cortex, 16 a 32 bits.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Re: PWM maior que 10bits

Mensagempor andre_luis » 09 Out 2011 08:17

_blackmore_ escreveu:E...é possível aumentar essa resolução de um microcontrolador que possui um PWM de 10bits para mais bits?...seja por software complementar...?


Se tentasse fazer um PWM mais preciso por firmware, dependendo da base de tempo utilizada, o próprio processamento das instruções do microcontrolador iriam interferir na resolução, mesmo que usasse uma tabela de controle do On/Off por interrupção.

Por hardware parece ser a melhor opção, mas fica restrito á magnitude do o timer usado pelo módulo.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor _blackmore_ » 09 Out 2011 12:01

proex

Arm Cortex, 16 a 32 bits.

eu vi ... acho que um 2138 já me resolve ... mas eu estava pensando em usar PIC mesmo ... vou reconsiderar sua opnião ... valeu pela atenção.

andre_teprom

Se tentasse .... por interrupção

pois é ... não quero por software ...

Por hardware parece ser a melhor opção, mas fica restrito á magnitude do o timer usado pelo módulo.

por hard eu vi uns PIC24 (16bits) que me chamaram atenção ... mas eu não tenho como gravar pois não são compatíveis com ICD2 ... estou avaliando a opção de usar ARM, o proex até recomendou acima ... mas não tava muito afim. Valeu pela atenção.
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor MOR_AL » 09 Out 2011 12:29

_blackmore_
Você sabe que o ótimo é inimigo do bom!
Se você puder baixar a precisão seria melhor.
Você já atinou, que a sua fonte de referência tem que ser mais precisa, a medida que o número de bits do CAD aumenta?

Um exemplo:
Num. bits ..........VRefMin.....................VRefMax
.....10................4,9976V....................5,0024V
.....11................4,9988V....................5,0012V
.....12................4,9994V....................5,0006V
.....13................4,9997V....................5,0003V
.....14................4,99985V..................5,00015V

Você teria que ter uma tensão de referência com a faixa acima, para que a sua medida não tivesse problema quanto à tensão de referência.
Essa tensão precisaria ser válida dentro do limite de temperatura em que o aparelho vai trabalhar.
Você teria que ter um voltímetro que pudesse medir essa tensão com a precisão necessária.
Por isso é que o ótimo é inimigo do bom.
Se você puder reduzir a precisão no seu projeto, as coisas não seriam tão complicadas.
Qual precisão você precisaria?
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor andre_luis » 09 Out 2011 12:51

_blackmore_ escreveu:...mas eu não tenho como gravar pois não são compatíveis com ICD2...


Posso estar enganado, mas o ICD2 grava o PIC24 pelo ICSP sim.
Só não debuga, mas grava.

Se possível, tenta gravar, e coloca aqui a mensagem de erro que aparece.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor turuna » 09 Out 2011 14:41

Tudo de bom a todos, as ICD2BR faz debug em pic24 sim.

Turuna
turuna
Nibble
 
Mensagens: 97
Registrado em: 10 Mar 2008 12:50

Mensagempor _blackmore_ » 09 Out 2011 15:12

MOR_AL

me desculpe a ignorância, mas o que tem haver a tensão de referência com PWM? eu não pretendo usar valor de AD para definir o duty do PWM ... poderia me explicar? :)

Eu preciso "mandar" uma tensão de 0 a 50VDC com resolução de 0,01 volts no melhor caso .. estou averiguando a possibilidade de ser 0,05volts, e preciso "mandar" corrente tb .. de 10 a 3000A com resolução a cada 1 ampère ... chato isso não?

agradeço sua ajuda e atenção mestre!

andre_teprom e turuna

Eu ainda não tenho o controlador para fazer os testes, e este PIC24F32KA302 me atende tanto em AD (12bits) qto PWM (16bits), mas vejam ...

Imagem

devido a isso eu pensei que pudesse ser aplicado alguma técnica igual pode ser feito com AD para aumentar a resolução.

agradeço a atenção e ajuda de vocês tb

abraço!
Editado pela última vez por _blackmore_ em 09 Out 2011 18:32, em um total de 1 vez.
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor Djalma Toledo Rodrigues » 09 Out 2011 18:24

_blackmore_ escreveu: ...
Eu preciso ler uma tensão de 0 a 50VDC com resolução de 0,01 volts no melhor caso .. estou averiguando a possibilidade de ser 0,05volts, e preciso ler corrente tb .. de 10 a 3000A com resolução a cada 1 ampère ... chato isso não? ...

Mas, ler Tensão, e Intensidade de Corrente, com PWM ?

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor _blackmore_ » 09 Out 2011 18:31

Corrigido mestre ... não é ler .. é "mandar"!! hehe

Abraço!
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor MOR_AL » 09 Out 2011 18:45

Bom. Vamos lá!

Considerações iniciais:
^ - Elevado a
* - Vezes

Para se ter um PWM com resolução de n bits, significa que você dispõe de 2^n valores, certo? Para n = 8, são 256 valores. Para n = 10, são 1024 valores.
Um PWM é uma onda que tem um período T e um delta entre 0 e 1.
O semi-período Ton = delta*T e o semi-período Toff = (T-Ton) = (T – delta*T) = T*(1-delta).
Para um PWM com n bits, o delta terá 2^n valores.
Mas o PWM real é uma onda com Ton e Toff, onde a tensão média (considerando um delta quase constante durante um período em que o delta pode ser considerado constante) vale:

Vmédio = (Vmáx + Vmín) * delta + Vmín*(1-delta), onde:

Vmédio é o valor médio da tensão do PWM.
Vmáx é o valor máximo da tensão Ton.
Vmín é o valor mínimo da tensão Ton.
(Observar que durante Toff, a tensão vale Vmín)

Para Vmín = 0 e delta = 0,5, Vmédio = Vmáx/2, o que dá o valor esperado.

O que ocorre é que Vmín nunca dá zero, pois tem sempre um valor de saturação de um transistor ou VDSmín de um MOSFET.
O valor de Vmáx também não dá VRef, pelo mesmo motivo.
Como a finalidade de se aumentar o número de bits em um PWM é a de se poderem obter valores intermediários entre dois valores adjacentes para o PWM com menos bits, dificilmente isso será conseguido com precisão. Isso porque o valor Vmáx geralmente vem de uma fonte de alimentação com precisão menor que a que eu expus anteriormente para VRef. Além do mais, não se costuma fazer, por quase impossibilidade, uma fonte com potência com essa precisão. Vale ressaltar também, que o valor Vmín não é zero. Isso contribui para não se obter precisão no PWM.

Mas aí você pergunta.

Ok! Mas então como a coisa é feita? Boa pergunta!! Hehe!

Geralmente o PWM se encontra dentro de um loop em que se monitora o valor obtido (Vmonitorado) para uma variável em questão (tensão, corrente, temperatura, pressão, comprimento, área, volume, etc.) com um sensor apropriado.
Tem-se o valor que se deseja que a variável assuma (Vdesejado). Calcula-se o Erro entre as duas variáveis:

Erro = Vdesejado – Vmonitorado

Ora! Quanto menor for esse Erro, mais o valor monitorado se aproxima do valor desejado, certo?!

A coisa é feita para se reduzir o Erro para níveis tais, que seja menor que se deseja de precisão para o valor monitorado (Vmonitorado).

Como se reduz o Erro?!

O modo mais simples é:
Se o valor de Erro for positivo, significa que Vmonitorado < Vdesejado. Então aumenta-se o valor do delta do PWM, para aumentar o valor médio e aumentar Vmonitorado.
Caso o Erro seja negativo, significa que Vmonitorado > Vdesejado. Então reduz-se o valor do delta, para que o valor médio seja reduzido e com isso diminui Vmonitorado, tendendo a diminuir o Erro.
Mas esse procedimento não é o ideal e nem sempre funciona, podendo até se obter oscilação em Vmonitorado. O correto é se usar o controle PID, mas isso é outra história.
Voltando ao ponto.
Você então vai precisar medir o valor da variável (Vmonitorado). Isso, em um circuito digital, é feito com um CAD.
Aí é que entra a precisão da medida. Se o seu CAD tiver 8 bits, você terá 256 possíveis valores. Então o seu PWM deverá ter no máximo, também 256 valores possíveis. Se o seu PWM tiver mais bits, o CAD, no instante da leitura, vai interpretar os valores intermediários como um dos 256 valores, não dispondo de maior precisão.
Bom. Aí você conclui que, para aumentar a precisão, precisa aumentar a precisão do CAD. Assim, você pode aumentar o número de bits do PWM de acordo com o número de bits do CAD.
Mas a precisão do CAD é função, também, do valor da sua tensão de referência. Os limites dos valores foram apresentados anteriormente.
Bom!
Acho que consegui mostrar que o número de bits do PWM, vai depender da precisão que você vai medir a sua variável, que depende do valor da tensão de referência.

Outro detalhe importante:

Como eu apresentei antes, o valor de Vmáx e de Vmín influenciam no valor médio da tensão do PWM. Isso tenderia a derrubar toda essa teoria, uma vez que esses valores não possuem a precisão necessária. O que ocorre é que você mede e corrige o valor do delta do PWM, de modo mais rápido que o valor de Vmáx e Vmín varia. Com isso, tudo se passa como se o valor de Vmáx e de Vmín fossem CONSTANTES. Esse tipo de correção é conhecido como correção de erros não lineares.
Ele corrige alterações na tensão Vmáx, que é proveniente da alteração da tensão de alimentação com a carga e com a temperatura, da variação da queda de tensão no dispositivo de chaveamento, etc. E tudo isso porque você está monitorando apenas a tensão Vmonitorada, o resultado, e não cada um desses erros intermediários. Eles tendem a ser compensados.

Bom. É isso aí.
Acho que deu para entender, né?!
Um abraço e bons projetos!
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor ze » 10 Out 2011 07:56

não sei se ajuda mas voce tem a opção de "mandar" esta tensão através de uma rede R2R de resistores de precisão. Se a corrente 0-50v não for muito alta pode até ser linear mesmo.
quanto aos 3000A que espero que seja outra fonte é outra história.
Se for pra criar seu proprio laboratório, por coincidência estou a mentalizar algo do gênero: gerar 50-60hz 110-220 20w senoidal puro.
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor _blackmore_ » 10 Out 2011 10:38

MOR_AL

Acho que deu para entender, né?!


Ficou claro ... :)
Obrigado pela aula!

lellis

não sei se ajuda mas voce tem a opção de "mandar" esta tensão através de uma rede R2R de resistores de precisão.


eu pensei nisso, penso que seria uma boa saída ... mas precisaria de muitos pinos do controlador e uma pá de resistores .. mas não está descartada a possibilidade (ainda) não ...

quanto aos 3000A que espero que seja outra fonte é outra história

sim é outra fonte ... eu apenas preciso fazer uma IHM (fácil e quase pronto) e enviar os dados programados para a placa controladora .. mas para dar uma boa reduzida no custo do equipamento através da leitura da corrente de 10 a 3000A e de tensão de 0,01 a 50,00VDC eu envio junto no pacote de dados para uma placa controladora que já está pronta e funcionando no produto ... já tem umas 200peças prontas, se não era melhor acrescentar essa IHM e leitura no próprio processador q está nesta placa ... mas dae teria q "desmontar" 200 placas ... "re-montar" 200 placas ... fazer novo lay-out ... nova produção de placa ... o preju seria maior que fazer esse bixim.
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Algumas ideias ...

Mensagempor rona123 » 10 Out 2011 11:56

Bom, usar rede R-2R para fazer o conversor DA depende de chaveamento reversivel entre VSS e VREF, caso contrário o peso dos bits não é linear. Pode-se usar uma porta de uC, mas consome muitos pinos de HW. De uma olhada na teoria de conversores DA.

Andei usando alguns conversores DA comandados por SW usando i2c com boa resolução usando menos pinos, mas não são tão baratos (Analog Devices) e como já tem HW pronto é complicado.

Uma técnica aplicável em controle é o PID que se encontra relativamente fácil nos dsPIC, talvéz valha a pena revirar as libs do PIC24 para ver o se acha.

[]'s
rona123
Byte
 
Mensagens: 214
Registrado em: 07 Mai 2009 20:01

Mensagempor _blackmore_ » 10 Out 2011 12:51

rona123

Obrigado por suas idéias ... as considero válidas também.


Pessoal,
Acabo de conversar com o "cliente" onde expus a dificuldade e consegui uma boa facilitada (para fazer com PIC comum) ... agraduação de tensão de 0,01 para 0,05volts ... com isso eu preciso apenas de 1000 divisões no PWM (10bits) ... então vou começar um protótipo aqui e levar para avaliação para ver se realmente atende o que ele deseja ... no caso da corrente (10 a 3000A) eu vou tentar usar o PWM de 10bits e um filtro passa baixa e considerar um PID no firmware para ver o que dá.
Caso não seja satisfatório com PIC eu partirei para ARM ou Cortex ...
Agradeço a todos o compartilhamento do conhecimento e experiências.
Abraço!
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x