Página 1 de 1

Programa travando ao acionar motor AC

MensagemEnviado: 30 Mai 2014 10:01
por itamar
Caros amigos, estou com um problema ao acionar um motor AC utilizando o PIC (16f877A). Meu circuito utiliza uma das saídas do PIC conectada à um MOC3021 que por sua vez é conectado à um TRIAC (com snubber) que aciona o motor. O circuito funciona normalmente acionando o motor AC em intervalos regulares e não sofre os efeitos da EMI durante esta atividade. Coloquei um LCD e fiz um contador para verificar quantas vezes ocorreria o acionamento sem travar... funcionou legal durante cerca de 1h. Contudo, ao ativar a interrupção do TIMER1 e fazer uma conversão AD o programa TRAVA após uns 5 a 10 acionamentos do motor. Quando retiro a interrupção funciona normalmente... Não sei o que pode estar acontecendo pois, ao meu ver, se o problema fosse EMI o programa deveria travar independente de interrupção ou não. Peço ajuda dos nobres

Re: Programa travando ao acionar motor AC

MensagemEnviado: 30 Mai 2014 20:06
por andre_luis
Pela descrição do problema, parece mais relacionado ao programa do que ao circuito.


+++

Re: Programa travando ao acionar motor AC

MensagemEnviado: 31 Mai 2014 06:05
por itamar
Esqueci de mencionar que quando desconecto a rede 220 AC do circuito o programa roda normal.

Resumindo:

Motor AC + programa com interrupções e conversão AD = TRAVA
Motor AC + e programa SEM interrupções ou conversão AD = FUNCIONA
Programa com interrupções e conversão AD sem o motor ou rede AC conectada = FUNCIONA

Quem tiver alguma referência sobre como prevenir EMI em placas e PIC já ajuda.
Os materiais que encontrei na internet ainda não ajudaram muito

Re: Programa travando ao acionar motor AC

MensagemEnviado: 31 Mai 2014 07:35
por andre_luis
Se não houver impedimento, coloca aí mais algum detalhe aí do Circuito ou do Layout da placa.


+++

Re: Programa travando ao acionar motor AC

MensagemEnviado: 31 Mai 2014 08:28
por vtrx
Voce esta usando alguma referencia AC da rede no seu programa?

Re: Programa travando ao acionar motor AC

MensagemEnviado: 31 Mai 2014 20:58
por itamar
No momento não tenho como postar o esquemático... mas é coisa simples saída digital do PIC-->MOC3021->>TRIAC

Respondendo à pergunta
Voce esta usando alguma referencia AC da rede no seu programa?

Não há nenhum contato entre a rede e o microcontrolador. Ainda vou implementar esta etapa... tenho a intenção de colocar um detector de passagem por zero para controlar a velocidade do motor... mas só no futuro.

Fiz alguns testes e acho que identifiquei a causa do problema: durante a interrupção do TIMER1 eu estava realizando uma conversão AD, quando removi essa conversão o problema parou. Fiz uma aquisição AD em uma rotina fora da interrupção e quando o motor está ligado o PIC trava, ou seja, conversão AD com motor ligado faz o PIC travar. Agora que acho que identifiquei a causa gostaria de sugestões para solução. Valew

Re: Programa travando ao acionar motor AC

MensagemEnviado: 02 Jun 2014 22:52
por avenito
Tive um problema parecido uma vez e era como eu tratava a interrupção, ou seja:

1. Olhe com cuidado sua rotina do conversor AD e de interrupção.
2. Verifique se as variáveis estão sendo tratadas de forma adequada, se não há alguma que não esteja sendo "resetada" ou que dê "overload" 3. Você tá trabalhando com alguma variável como ponteiro?
4. Existe alguma possibilidade da interrupção estar sendo "atendida" de pontos diferentes do programa que possa "atrapalhar" alguma rotina?
5. Você está salvando todas as variáveis afetadas durante o tratamento da interrupção? Status principalmente?
6. Pode ser um problema de paginação?

Bem, espero ter ajudado! Boa sorte!

Re: Programa travando ao acionar motor AC

MensagemEnviado: 03 Jun 2014 09:21
por ze2
devido ao opto, suponho que a alimentação do mc não é 'rabo quente'. o sinal que estás a ler no ad tem alguma relação com o motor? algo como corrente? o motor está já sendo controlado com o mc? caso afirmativo, um filtro rc simples na entrada do ad deve ajudar ou/a resolver. também a 'desaproximação' ou blindagem do circuito do motor pode ajudar. no sw uma coisa que pode fazer é dar um tempinho antes e depois de acionar o motor: momento exclusivo. neste tempinho não faça nada e coloque TODOS os pinos temporariamente como saída. teoricaintuitivamente o momento de ligar motor é quando o mc não pode ficar sensível. aqui não entra nada. só sai. tem que ser macho. mesmo que de vez em quando...