Ir ao conteúdo
  • Cadastre-se

CeDahmer

Membro Pleno
  • Posts

    209
  • Cadastrado em

  • Última visita

Tudo que CeDahmer postou

  1. Obrigado mais uma vez projetos_afg e vtrx por terem colaborado. Localizei uma fonte provável dos problemas: Ao aquecer a parte posterior do LCD os problemas começar (mais ou menos 25 graus celsius), ao afastá-lo da fonte de calor, o LCD funciona normalmente. A rotina lcd_init(); eu uso na inicialização do programa, agora posso usá-lo de tempos em tempos para reinicar o LCD? infelizmente não tenho mais pinos suficientes para poder usar a função RW do LCD. Bom pelo que sei a função usb_task é necessária para manter a comunicação USB ativa, mas pelo que li aqui mesmo no fórum, não poderia estar dentro de um timer, agora não sei o porquê, e realmente depois que fiz isso coloquei-o dentro do loop principal, a comunicação ficou totalmente estável, comunicando com o PC por mais de semanas. Eu uso HID. Desta forma se for dado um time, a conexão cairá. Acredito que isso não seja verdade, mas eu não gostaria de mudar, pois demorou muito tempo para testar, e não possuo mais tempo para testar a comunicação USB. Me preocupou bastante a falta de qualidade do displays, pois os dois são exatamente iguais, e um deles apresenta esse problema por aquecimento, agora se eu for usar em escala, precisarei testar um a um antes para ver se apresenta problemas. Mas esses são os percalços. Mas uma vez obrigado, e caso puderem me dar mais idéias me será muito útil.
  2. Obrigado projetos_afg pela colaboração... Agora que você comentou da alimentação regulada e estável, verifiquei um detalhe na placa que está apresentando o problema estou usando um capacitor de 16V após os diodos, e na outra um de 25V, ambos por 1000uF, sendo que o transformador é de 12V, mas após a retificação, a corrente sobe para 16V, antes do regulador. Acho que este capacitor possa estar em curto por estar no limite, mas vou testar isso. Em qual local você recomenda o delay? na inicialização do mesmo ou toda vez que escrever algo no LCD, pois não posso travar a aplicação por esse tempo senão a porta USB se desconecta. O pino RW eu aterei por estar usando todos os pinos do PIC, e desculpe minha ignorância mas não sei o que é busy flag. Uso no modo 4 bits tambérm por economia de pinos. Uso a biblioteca padrão do CCS, com algumas adaptações que achei na internet, para funcionar com RW aterado e com as quatro linhas. Não estou usando nada indutivo, apenas o transformador, 4 diodos em ponte, um capacitor e um regulador LM7812 e em seguida um LM7805 para formar a fonte. Como eu posso fazer para reiniciar o LCD sem reinicar o PIC? Acho que isso solucionaria o problema.
  3. Boa tarde. Montei um sistema que utiliza um display de LCD de 20X4 que ao ligar funciona perfeitamente. Mas ao passar o tempo, dois ou mais dias ligado, o mesmo começa a mostrar caracteres estranhos, no local de algumas letras começa a piscar estes caracteres. O mais estranho é que montei outro sistema igual, pois a placa é fresada em uma fresadora CNC, usei os mesmos componentes e o mesmo firmware no PIC, e este segundo não mostrar esta alteração. Sendo que tanto o display como os outros componentes são iguais, e comprados do mesmo fornecedor. Como linguagem estou usando o C pelo CCS, e o uC é o 18F4550, a marca do LCD não sei mas tem o código MGD2004D-FL-YBS-02. Se alguém tiver a solução ou uma ideia do que pode ser este problema, por favor comparti-lhe.
  4. Boa noite... Desculpem minha ignorância, mas estou precisando modificar um projeto, onde uso como sensor de temperatura o LM35, e estou pensando em utilizar um termitor NTC, mas o problema é que o mesmo não é linear, e apesar de várias horas de pesquisa na internet não consegui encontrar uma forma de anexar a fórmula do termistor no programa do pic. Encontrei a seguinte fórmula: R(T) = R(T0) * [ 1 + a(T - T0) ] Precissaria da ajuda para entender como montá-la. Eu utilizo o microprocessador PIC 16F877A, na linguagem C com o compilador CCS. Aproveitando o tópico, como o produto do termistor é resistência, é possível conectá-lo no pic, da mesma forma que o LM35? Colocando uma ponta no +5V e a outra diretamente no PIC? Obrigado...
  5. Martins eu tive o mesmo problema, e de tanto tentar usar interrupções desisti e consegui fazer sem... Vou descrever mais ou menos como fiz Declarei esta variável de escopo global, para receber, só consegui sendo do tipo char, e recebendo um caracter por vez. char xx[1]=0; Criei um função fora do Main, antes dele. Void Receber_RS232() //Função para comunicação com o PC { if (kbhit()) { gets(xx,1); } } E dentro do main mais precisamente, dentro do loop infinito faço uma chamada a função: Receber_rs232(); Ele testa se tem alguma coisa pra receber, caso positivo joga na variável xx o caracter recebido pelo pic. Como a variável é de escopo global, posso utilizá-la em qualquer ponto do programa para testa-la. Obs. Ainda não criei a rotina para receber uma string inteira, mas para minha aplicação é necesário apenas de 0 a 9, e neste caso ele recebe o abc completo. Ah... ainda para facilitar os testes você pode converter a variável xx para valores inteiros, mas só funciona de 0 a 9. SE = atol(xx); SE é uma variável inteiro de 8 bits, mas é necessário estar marcado a biblioteca: #include "stdlib.h" Conheço pouco e a pouco tempo sobre PIC, mas no meu caso funcionou.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!