Página 1 de 2
Estranho problema com o pic 18F1320

Enviado:
30 Mar 2012 23:31
por Leomatias
Boa noite pessoal!
Estou reformando fontes DC antigas. Como mostrador, estou utilizando um pic e um lcd simples de 16x2. Estou na oitava fonte, e é claro projetos por melhores elaborados sempre apresentam algum problema. Nesta oitava fonte, ao ligar a chave on-off da mesma em algumas ocasiões, o display do lcd fica sem mostrar os caracteres ou mesmo fica oscilando caracteres estranhos. Ao desligar e aguardar um instante, a leitura volta a ser normal novamente. Estou lendo tensão e corrente. Nas outras fontes não ocorreu este problema. Já fiz testes, revisei o programa, troquei o Pic, troquei o cristal de 4mega e os caps de 33 pico, o lcd também e o problema persiste. Alguém têm alguma dica ou já passou por algo parecido? Revisei as trilhas da placa, alimentação sem praticamente nada de ruído. Difícil, ´se aluém tiver alguma dica sou imensamente grato. Uma boa noite a todos.

Enviado:
31 Mar 2012 07:24
por FabioSom12
Parece ser ruido da fonte.
_Diminui o cabo do lcd para o menor possível.
_Capacitores de desacoplamento no pic e no LCD.
_Coloque um osciloscopio no pino enable do LCD e fica monitorando.

Enviado:
31 Mar 2012 08:20
por brasilma
Tenta trocar o display também - se tiver marcas diferentes melhor ainda - já percebi que alguns são mais sensiveis que outros.
Insere um resistor pull-up de 10k nos pinos de controle.

Enviado:
31 Mar 2012 09:28
por MOR_AL
Faça o PIC começar após um segundo do equipamento ser energizado. Neste momento as tensões já estarão estáveis.
MOR_AL

Enviado:
01 Abr 2012 00:18
por Andre_Cruz
Leo,
Tive problema parecido, o tempo entre a inicialização do LCD e do clear estavam fora do especificado pelo datasheet e as vezes o LCD inicializava e mostrava tudo de maneira errônea, outras vezes funcionava normal.
Da uma conferida ai com o osciloscópio.
Abraço

Enviado:
01 Abr 2012 01:34
por Leomatias
Obrigado a todos pelas mensagens.
Vou tentar colocar mais capacitores, inclusive no lcd como disse o Fabio. Diminuir o cabo flat que liga o LCD talvez seja uma boa.
Alguma outra dica pessoal? Resistores Pull-up também são uma boa?
Caro André Cruz, qual foi a solução que você encontrou para resolver este seu problema?

Enviado:
01 Abr 2012 02:00
por FabioSom12
Ao inicializar o LCD precisa respeitar alguns tempos mínimos.
Por isso foi falado de esperar um tempo maior na inicialização.
Se estiver utilizando um lcd alfa numerico deve ser este datasheet.
http://pdf1.alldatasheet.com/datasheet- ... 7066U.html


Enviado:
01 Abr 2012 14:10
por Andre_Cruz
Leo,
A solução que eu adotei foi esperar o triplo do tempo necessário para o controlador do LCD apagar a tela do LCD.
Estou falando de cabeça, senão me engano o tempo que o controlador do LCD leva para executar o comando clear é de 1,5mS, coloquei um delay por instrução de + ou - 5mS, ou seja o PIC manda o comando para o controlador do LCD para limpar a tela do LCD e depois disso espero + ou - 5mS para mandar qualquer dado pro LCD.
Como o Fabio disse o controlador do LCD deve ser inicializado com tempos e comandos pré definidos, confira no datasheet do LCD que eu saiba tem dois controladores mais comuns no mercado o HD44780 e um outro que me fugiu o código agora rsrsrsss
Abraço

Enviado:
01 Abr 2012 20:06
por Leomatias
Desde já muito obrigado pela atenção de vocês.
Bem, pelo o que entendi André (corrija-me por favor se eu estiver errado) é necessário um tempo maior depois que o controlador do LCD apaga o mesmo, antes de escrever algo novo.
Estou utilizando o Mikrobasic, creio qe vocês trabalham ou já trabalharam com ele, portanto após a inicialização do mesmo pelo comando LCD_init e depois o LCD_clear, após o clear devo criar um delay de alguns milissegundos superior ao transcrito pelo datasheet. É isso mesmo?
O LCD que estou usando é o mesmo que o Fabio comentou, um HD44780 bem genérico.
Vou acrescentar esse tempo extra após o comando do Clear... qualquer nova dica agredeço desde já.
Boa semana a todos.

Enviado:
01 Abr 2012 23:37
por FabioSom12
Olá Leo,
Não conheço o Mikrobasic, mas acho que seria algo parecido com isso
- Código: Selecionar todos
(void) main (void)
{
Delay_ms(1000) // timer 1 seg como sugerido pelo MOR_AL
Lcd_Init()
Lcd_Cmd(_LCD_CLEAR)
Delay_ms(5) // timer 5ms como sugerido pelo Andre_Cruz
Caso use o comando
Clear em outra parte do programa, não esqueça de colocar o delay de 5ms depois.

Enviado:
02 Abr 2012 10:25
por brasilma
Humm o MikroBasic possui ferramentas prontas para o acionamento do LCD, acredito que se os dados do cristal estiverem corretos, os tempos também devam estar, porem não custa dar um "delayzinho" antes do LCD_init.

Enviado:
02 Abr 2012 18:02
por Leomatias
Pessoal, agradeço a todos pelos conselhos e ajudas.
Adicionei um delay antes do comando LCD_Init() e após o LCD_Clear como sugestões.
Melhorou muito mesmo o problema que antes estava ocorrendo ao fechar a chave on/off. Contudo, em algumas ocasiões o LCD fica sem mostrar nenhum caracter ou mesmo apresentando caracteres estranhos.
Pelo menos do jeito que estava, melhorou uns 70%.
Também acionei os resistores pull-up internos do Pic18F1320 que estão no PORTB.
Alguma outra dica agradeço desde já, mas o problema foi praticamente sanado acrescentando estes tempos - delays extras como sugerido neste tópico.
Obrigado a todos, uma boa noite e bom início de semana.

Enviado:
02 Abr 2012 18:49
por Andre_Cruz
Leo,
Faz um teste ai pra ver se quando acontece este problema do LCD, o PIC esta funcionando corretamente e apenas o LCD apresenta problema.
Faz um teste simples liga um led em um pino que não esta sendo usado e depois que inicializa o LCD você coloca o pino que esta ligado o led em nível lógico alto, monitora ele com o osciloscópio e repita o processo que faz de vez em quando o LCD funcionar de maneira incorreta.
Se o led acender e o LCD não funcionar corretamente, verifique os bits de configuração BOR, Power Up time.
Abraço

Enviado:
03 Abr 2012 09:09
por ze
tente 10R(ou+) série e 100pF(ou+) pro gnd nas linhas E e RS do diplay. Eu não uso a RW (deixo no gnd) mas se usar, nela também. Se aumentar o tempo do enable pode usar até 10nF na linha E.
Caps. de desacoplamento 10u 100n obvios.
deixe o dispositivo longe dos campos da fonte

Enviado:
04 Abr 2012 18:30
por Leomatias
Boa noite a todos.
Caro André_Cruz, fiz o teste com o led e verifiquei novamente que o PIC está O.K, inclusive os configurations bits estão em ordem.
Tentei inserir nas linhas do EN e RS o resistor e o capacitor como sugeriu o lellis mas também não houve melhoras. Capacitores de desacoplamento também foram inseridos.
Por enquanto a melhor solução foi os delays inseridos no software, mexi um pouco mais nos tempos e o problema praticamente não ocorre mais.
Como eu disse no início deste tópico, foram construídas 7 fontes anteriores sem apresentar esse "danado" de problema. Com esse lote de LCD que chegou por aqui no serviço, o primeiro que utilizei ocorreu a falha. Tentei trocar o LCD por outro mas como não temos outro diferente, coloquei um do mesmo lote que também gerou falhas na leitura.
Tivemos problemas anteriores em alguns outros lotes de LCD novos que apresentavam super-aquecimento, mesmo com as ligações e tensões corretas em projetos pré-existentes ou mesmo novos.
Agora novamente, neste novo lote de LCD duas unidades apresentaram isso.
Desde já agradeço a atenção e dicas de todos vocês. Na próxima unidade a ser montada, vou arrumar um LCD diferente e verificar se ocorre tal defeito, aí coloco uma nova mensagem por aqui relatando se ocorreu algo de estranho, mesmo que demore um pouco o post, na próxima testarei com um LCD sem ser deste lote de 10 unidades que a nossa seção de compras adquiriu.
Grande abraço a todos vocês, uma boa noite, bom feriado e boa páscoa.