TERMÔMETRO VIA SERIAL | Curso de PIC
HTML-код
- Опубликовано: 19 окт 2024
- Continuando nossos estudos do sistema UART do PIC16F877A, desenvolvemos um termômetro para visualizar a temperatura no terminal! Um termômetro via serial bem simples de implementar no curso de PIC de hoje!
Contribua com o projeto WR Kits: / wrkits
Loja WR Kits: wrkits.com.br/
Fanpage: / wrkits
Twitter/Instagram/Snapchat: @WagnerRambo
Download:
www.dropbox.co...
mega.nz/#!LJ5H...
www.wrkits.com.br
wrkits
@WagnerRambo
Grande Engenheiro Rambo, mais uma vez muitíssimo obrigado!!!
Deixo aqui duas contribuições que acredito serem úteis a quem passar pelos mesmos problemas que eu na execução deste exemplo:
1) Sobreaquecimento do MAX232 (ocasionando sua queima), o circuito nunca se comunica com o Putty:
Fiquem atentos ao datasheet do respectivo fabricante do MAX232 que estão utilizando. Acontece que existem muitos fabricantes genéricos que seguem diferentes esquemas de ligação para o capacitor C3: no meu caso, tenho o MAX232 da própria Maxim e nele o esquema de ligação tem que ser diferente do apresentado no circuito da aula, sendo que o negativo de C3 vai no 5V e o positivo vai no pino 2 do chip. Após me atentar a isso e trocar o chip queimado, tudo funcionou muito bem e sem qualquer sobreaquecimento!!! Obs: o circuito apresentado pelo Eng. Rambo não está errado, mas provávelmente se aplica a algum fabricande MAX232 que não seja a Maxim.
2) Meu Proteus 8.6 SP2 não tinha o modelo SPICE do LM35 e dava erro de +VS, -VS e VOUT, dizendo não haver modelo implementado: Procurei igual doido uma biblioteca para substituir ele, reinstalei e mesmo assim o problema persistiu. Quando resolvi desinstalar e apagar o LM35, notei que o Proteus também tem o LM34 (direcionado a temperatura em Fahrenheit). Porém se perceberem no datasheet, a resolução é exatamente a mesma 10mV/ °F. Ao usar este modelo, para minha surpresa tudo funcionou muito bem no simulador Proteus e muito provavelmente a diferença com seu modelo LM35 (°C) deve ser apenas os limites inferiores e superiores de temperatura, mas #ficaadica para quem tiver problemas.
Um grande abraço e sucesso a todos!
Eng. Wagner.
Todos os seus vídeos têm recebido o meu "like" pela sua didática e pelos assuntos que aborda.
Está ajudando muito no meu desenvolvimento.
Quanto à esta aula, tive dificuldade em fazer aparecer no Terminal Virtual as letras e números de forma legível, pois não especifiquei corretamente a frequência do PIC no Proteus e no MikroC.
Por isso peço uma "Dica", para já obter esses componentes no Proteus e especificar as suas frequências sem medo de errar.
Obrigado.
Boa tarde Wagner, já acompanho seus cursos e e sempre muito bom, agora terminando esta etapa já tenho muita coisa esclarecida, sucesso com seus cursos que são muito bons.
+ELIEZER FERNANDES , muito obrigado! Estudo sempre conosco!
PARABÉNS PELA AULA, MAIS UMA, ESTOU ACOMPANHANDO O CURSO DE PIC E DE LINGUAGEM C...
Muito bom como sempre...parabens!!!
cesar cristofoli , valeu! Passe a dica do canal para todos!
Olá Wagner mais uma vídeo aula legal
Jose carlos tavares ribeiro , obrigado!
Fala, Wagner! Muito boa a aula, estou sempre acompanhando!
Por acaso vc conhece o sensor de temperatura DS18B20, da Dallas? Se puder faça uma vídeo aula explicando como usar o mesmo com Pic algum dia, as suas bibliotecas no mikroC e etc, seria muito legal.
Abraços!
Parabéns pela bela aula! Continue assim!
Para colocar o símbolo de ° adicione acima de UART1_Write_Text(" Celsius"); a linha UART1_Write(248); certo professor!? Que bom aprender aqui no seu canal!
Wagner, boa noite!
Por que o vetor tem que ser de 7 posições, se o sensor só mede até 150°C, ou seja, só 3 dígitos?
Wagner, uma dúvida. Em programação C para PICs, supondo que uma variável (sem volatile) seja usada no loop principal, há diferença entre declará-la pública ou dentro do escopo da main()? Uso o MPLAB X e tenho usado as minhas dentro da main(), porém agora fiquei na dúvida se isso poderá me trazer problemas. Abração!
Alguém pode me ajudar? Estou tentando mandar dois conjuntos de dados com a uart, por exemplo, 45 65. Mas, não estou conseguindo juntá-los, 4565, ou seja, mandar sem espaço. Tem como fazer isso ? Obrigado!!!
Fala sério...sensacional!
No putty eu aperto teclado e não aparece nada não responde, mas esta havendo comunicação devo habilitar algo para o teclado funcionanr?
Perfeito!!
Como sempre mais uma vídeo aula incrível da série microcontroladores pic, Wagner tem como você fazer uma vídeo aula de como implementar um controlador PID com o pic? Seria de grande ajuda com um projeto que estou desenvolvendo. Obrigado.
Thiago Magalhaes , obrigado! Sim, excelente ideia. Entretanto pretendo abordar a teoria PID primeiro para poder passar a exemplos práticos, isso vai levar um tempinho.
WR Kits dei uma lida agora sobre controladores PID ,não sei o que é mas quero aprender
Ótima aula! Teria como eu utilizar apenas o AN1? Utilizando apenas o ADCON0 ou só posso utilizar o conversor A/D de acordo com a tabela do ADCON1? Obrigado!
+Rafael Mascarenhas Costa , sim, só precisa configurar o registrador ADCON1.
Ótima Aula Wagner! o canal esta me ajudando muito em meus estudos e projetos.Você poderia demonstrar em Delphi?
+Rafael Augusto Aiello , muito obrigado! Nos acompanhe sempre. Anotei sua sugestão.
Aula Top!
Como receber esse valor em outro pic por serial tx/rx e usar esses dados para mostrar no display lcd?
Olá Wagner!
Estou usando um conversor com o chip PL2303HX e um PIC18F4550. Na simulação do Proteus, meus dados aparecem corretamente, mas no putty recebo uma série de caracteres estranho. Sabe o que pode ser? Obrigado!
+Fernando Arai , teria que pesquisar sobre isso.
Muito bom
Olá Wagner! Vim aqui olhar esse vídeo pra me ajudar com o código que estou fazendo para usar o LM35 em um PIC16F73, e usei a regra de 3, mas não funcionou direito. Então olhei o datasheet e notei que esse PIC tem ADC de apenas 8 bits! O problema é que a temperatura muda de 2 em 2 graus. Posso ajustar isso no software? O que sugere?
temp = ADC_Read(0);
temp = temp * 500;
temp = temp / 256; //Pois é 8 bits
Abraços!
+Edson Staack Resolvi dessa forma:
temp = ADC_Read(0);
temp = temp * 250; //para 2,5V
temp = temp / 256; //Pois é 8 bits
Antes eu estava usando a tensão da fonte como referência, mas agora mudei o valor no registrador ADCON1 para que o pino RA3 seja a referência e usei um divisor de tensão para que a tensão de referência seja de 2,5V.
Parece funcionar certo agora! :)
+Edson Staack , show meu amigo, excelente solução! Eu não trabalhei ainda com o PIC16F73, bom saber que seu ADC é de 8 bits.
Ola wagner,fiz um programa simples utilizando uma entrada digital e uma saída para um led no pic16f688 mas montei ele tudo certinho no proteus e funcionou mas no protoboard ele não funcionou será que foi os códigos de desabilitar os conversores adc?? Não sei onde errei
Samuel Moraes , me parece algum problema com a configuração de registradores. Dê uma conferida no datasheet do MCU.
O comando if não funciona
As entradas digitais não funcionam no 16f688
Samuel Moraes , o código não está compilando?
o comando de entrada digital só funciona no proteus,na prática nao funciona,mas ja troquei o PIC estou utilizando o 18F252 ele é mais eficiente e tem mais I/O.Obrigado Wagner
SHOW!!!
+Pedro Igor , muito obrigado!!
Shoowwwww !!
👍
no calculo do vídeo 15:17, esse 5v é a tensão do pic?
***** , sim correto. É a tensão de alimentação do microcontrolador e a mesma que alimentaremos o LM35.
like