Boa tarde, 

Aspirantes a Cientistas desse país!

Pessoal dei uma olhada rápida nos tutoriais e realizei a pesquisa por aqui e não encontrei nada relacionado a PWM no AT89S52. Bom, se eu cometer alguma gafe técnica, me perdoem pois estou começando agora nesse assunto. Não sei se alguém aqui trabalha ou já fuçou esse MCU. Meu questionamento é sobre o processo de PWM, eu entendo que esse processo é temporal e seria ligar e desligar o pino que desejamos aplicar esse comportamento, ligar e desligar de forma rápida. Mas seria só isso mesmo? Descobri que esse MCU não vem com PWM interno, isso influencia no grau de dificuldade de aplicar esse mecanismo no meu projeto? Vocês teriam alguma boa dica de fonte de pesquisa?

 

Muito Obrigado Garagistas!

Exibições: 1048

Responder esta

Respostas a este tópico

Olá.

  PWM é isso mesmo... Se vc deixar o pino 10% do tempo ligado e 90% desligado (ciclicamente) já esta fazendo um PWM.

  Quando temos um PWM em hardware as vantagens são:

- O processador não precisa fazer nada, fica livre.

- Eh possivel fazer em frequencias maiores

- Nunca para. (para alguns MCUs que tem por ex USB as vezes pode acontecer um ruido em função de interrupçoes desligadas ou de prioridade mais alta).

Mas se não temos é possivel fazer por software, usando um timer.

São 2 formas:

Forma simples) Considere uma variavel chamada contador e outra chamada setup.

Contador vai contar as interrupcoes e setup é a largura desejada.

Vamos considerar que dividimos o tempo em 100 posições.

Vc interrompe rápido, quanto rápido puder, por ex 1KHz.

A cada interrupção incrementa um contador.

Quando setup=contador vc seta o pino de saida o PWM (ou reseta, como preferir)

Quando contador = 100 vc zera o contador e reseta o pino de saida.

Isso deve gerar um pulsinho estreito por ex se setup=2 e largo se setup=98 e 50% se setup=50.

Forma boa para o processador) Vc cria uma tabela ou uma equação (melhor tabela) que devolva a programação que deve ser colocada no timer para ele interromper depois de n intervalos de tempo.

Se interrompe vc incrementa contador

Se contador =1 vc seta a saida e agenda uma interrupção (programa o timer conforme tabela) para n=setup tempo;

se contador =2 vc zera contador, reseta saida e agenda uma interrupção para n=(100-setup) tempo. Isso vai fazer o pulso ficar o resto do tempo necessário para inicio do px ciclo.

Na familia 8051 tem vários que possuem PWM, vide os fabricados pela www.nxp.com e pela ww.silabs.com (eu uso silabs).

Aqui:

http://www.digikey.com/product-search/en/integrated-circuits-ics/em...

(selecione com o control apertado só os 8051 e tecle aply)

Vc ve algumas variantes. 

Os NXP também tem ISP. Mais fácil ainda pq é pela serial (UART) mesmo.

Obrigado Eduardo!

Vou dedicar um tempo a pesquisar isso e gostei muito dos links que você indicou!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço