Estranho problema com o pic 18F1320

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Estranho problema com o pic 18F1320

Mensagempor Leomatias » 30 Mar 2012 23:31

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.
Leomatias
Bit
 
Mensagens: 35
Registrado em: 20 Fev 2008 09:20

Mensagempor FabioSom12 » 31 Mar 2012 07:24

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.
FabioSom12
Nibble
 
Mensagens: 94
Registrado em: 26 Nov 2009 14:01

Mensagempor brasilma » 31 Mar 2012 08:20

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.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor MOR_AL » 31 Mar 2012 09:28

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
"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_Cruz » 01 Abr 2012 00:18

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
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor Leomatias » 01 Abr 2012 01:34

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?
Leomatias
Bit
 
Mensagens: 35
Registrado em: 20 Fev 2008 09:20

Mensagempor FabioSom12 » 01 Abr 2012 02:00

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


Imagem
FabioSom12
Nibble
 
Mensagens: 94
Registrado em: 26 Nov 2009 14:01

Mensagempor Andre_Cruz » 01 Abr 2012 14:10

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
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor Leomatias » 01 Abr 2012 20:06

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.
Leomatias
Bit
 
Mensagens: 35
Registrado em: 20 Fev 2008 09:20

Mensagempor FabioSom12 » 01 Abr 2012 23:37

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.
FabioSom12
Nibble
 
Mensagens: 94
Registrado em: 26 Nov 2009 14:01

Mensagempor brasilma » 02 Abr 2012 10:25

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.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor Leomatias » 02 Abr 2012 18:02

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.
Leomatias
Bit
 
Mensagens: 35
Registrado em: 20 Fev 2008 09:20

Mensagempor Andre_Cruz » 02 Abr 2012 18:49

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
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor ze » 03 Abr 2012 09:09

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
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor Leomatias » 04 Abr 2012 18:30

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.
Leomatias
Bit
 
Mensagens: 35
Registrado em: 20 Fev 2008 09:20

Próximo

Voltar para PIC

Quem está online

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

x