Ir ao conteúdo
  • Cadastre-se

Tutorial : Introdução ao uso de PIC´s em BASIC com o PIC Simulator IDE - Parte 1/2


Posts recomendados

Olá Julio,

Fiz uma compra com esses caras aqui, ainda não recebi. O site deles é esse e os preços são bons. http://www.antarcomp.com.br. voce entra em contato por email ou faça um orçamento pois no site não consta todos os componentes.

voce pode usar para acender a lampada um darligton TIP122, direto sem relé desde que você não queira por exemplo acender a lampada com 110 ou 220 Volts ac, nesse caso tem que usar relé para isolar do sistema.

Link para o comentário
Compartilhar em outros sites

Então tchecara, preciso exatamente acender a lampada com 127V mesmo, porque ela vai esquentar uma espécie de estufa mesmo!

Por isso disse que precisaria de um relé, aí queria saber se qualquer relé 5v funciona, ou teria que ser um mais próprio! Mas muito obrigado assim mesmo e se souber sobre o rele agradeço a ajuda!

E agora quanto ao site, vou olhar la, mas tipo eu vou ter que ver que por enquanto vou precisar comprar só 2 componentes de outro lugar o LM35 e o PIC, ai vou ver se consigo alguma pessoa que vá fazer compra em outro site, ou entoa vou ver quem va em alguma cidade que venda pra trazer pra mim, porque pagar frete só pra isso vai compensar não!..

Aqui agora mudando de assunto, quanto ao seu projeto la do display de leds, como ele anda???

Abraços

T+

EDIT:

Aqui to com uma duvida cruel aqui.....

Na programação eu resolvi o fato de mudar do LCD de 2 linhas para o de 4...

Agora na ligação dele com o PIC fica da mesma forma???

E outra eu vi um esquema que liga o LM35 num LM35 pra amplificar a tensão...

Esse aí é o mais viavel mesmo???

Abraços t+...

valeu pelas ajudas!!!

Link para o comentário
Compartilhar em outros sites

Valeu eu consegui uns aqui de 5V coisas antigas... ahsduiahduihsaidhas...

Aqui quanto ao seu projeto aí boa sorte cara....

E aguardo viedozinhos demonstração hein...

Hehehe...

E Parabéns por esse projeto, isso num é coisa que qualquer hum faça não....

Depois podia escrever tipo um totorial com os procedimentos que usou....

Como é feito o display, se varrendo as linhas ou as colunas...

Tipo um tutorial explicando o funcionamento, do seu projeto...

Que alias acho que se voltarmos lendo o Tópico do foram aprendemos muita coisa...

Nessas feérias vou ver se consigo fazer uns projetinhos e se der certo....

Pretendo fazer esse no Fim do Ano, férias de 2 meses ai é só alegria, tempo e vontade de sobra...

Quanto tempo gastou até chegar no projeto final!!!!

Abraços!!!

Link para o comentário
Compartilhar em outros sites

Pessoal,

Quanto ao amplificado para o LM35, pode-se fazer com este circuito em anexo, e copio aqui uma resposta dada em um outro tópico :

A ideia é bem simples, faz um simples circuito amplificador diferencial com ganho 5, e coloca uma das entradas de tensão ligada ao terra, e a outra entrada ( a não-inversora ) é ligada direto ao LM35, entendeu ?

voce alimenta o AMP OP direto com o +5 Volts, e a saida dele vai ligada direto ao pino do PIC .

Segue na foto abaixo o exemplo de ligação, basta voce ligar a entrada V1 ao terra, e a entrada V2 voce liga no LM35. Mas lembre-se de usar um AMP OP do tipo RAIL TO RAIL mesmo, eu sugiro o LMC6484, que encontrei na Farnell.

Use os resistores com os valores abaixo :

R1 = R3 = 20K

R2 = R4= 100K

Alimente o seu AMP OP com fonte simples de + 5 Volts, e pronto, é um circuito com ganho 5 e saida entre 0 e 5 volts ( melhor dizendo, entre 0,2 e 4,8 volts, bem linear ! )

Bons usos !

Paulo

post-464954-13884955853529_thumb.jpg

Link para o comentário
Compartilhar em outros sites

Olá pessoal!

Estou iniciando na utilização dos PIC's e achei a ideia do tutorial do Paulo fantástica.

Conforme a proposta do Paulo, não saltei nenhum item e já estou rodando o primeiro programa, o pisca de dois led's. Como não podia ser diferente, com inicante tudo dá errado. Quando terminei de digitar todas as linhas e fui fazer a primeira compilação, veio uma mensagem que havia um erro na linha 16 (incorrect line label name - Goto inicio), dai por diante nada mais funcionou. Tentei mudar a instrução para o número da linha, mas de nada adiantou. Será que alguma coisa não está funcionando bem em meu simulador? Se não for abusar da boa vontade de vocês, por favor me ajudem.

Grato,

José de Matos.

Link para o comentário
Compartilhar em outros sites

Olá pessoal!

Estou iniciando na utilização dos PIC's e achei a ideia do tutorial do Paulo fantástica.

Conforme a proposta do Paulo, não saltei nenhum item e já estou rodando o primeiro programa, o pisca de dois led's. Como não podia ser diferente, com inicante tudo dá errado. Quando terminei de digitar todas as linhas e fui fazer a primeira compilação, veio uma mensagem que havia um erro na linha 16 (incorrect line label name - Goto inicio), dai por diante nada mais funcionou. Tentei mudar a instrução para o número da linha, mas de nada adiantou. Será que alguma coisa não está funcionando bem em meu simulador? Se não for abusar da boa vontade de vocês, por favor me ajudem.

Grato,

José de Matos.

Ola chara,

Tambem estou dando os primeiros passo com os pic e o Basic.

Mas este programa ai dos leds esta certinho, voce deve ter cometido algum erro de digitaçao na linha onde esta acontecendo o erro, de uma verificada ai pra ver.

Se nao conseguir posta o codigo aqui pra gente ver

Boa sorte

jfeliciano

Link para o comentário
Compartilhar em outros sites

Olá J Matos,

Bem-vindo ao nosso grupo !

Olha, eu recomendo voce fazer o seguinte : instale o Acrobat Reader, e quando voce abrir o tutorial, voce pode simplesmente COPIAR os programas sem nenhum erro de digitação.

Os programas estão todos testados e funcionaram, com certeza é alguma coisa que não está configurada no PSI.

Se continuar dando pau, desinstala o PSI , faz um reboot e instale novamente, ok ?

Um abraço !

Paulo

Link para o comentário
Compartilhar em outros sites

Paulo tipo eu tava olhando seu circuito aqui e eu já tinha encontrado uns semelhantes...

Só que estive pensando e tipo o ganho que preciso é 5???

Porque tipo a saida do LM35 vai de 0mV a 150mV, e eu preciso de uma saida de 0V a 5V ou seja, 0mV a 5000mV....

Fiz as contas aqui e o ganho necessitaria ser de:

5000mV/150mV = 33,33

Fiz alguma conta errada??

Mais uma coisinha que ia me esquencendo, na ligação do pic com a serial, com o RTC e tal os capacitores lá do esquema que tem lá no tutorial são quais???

Eletrolitico, Ceramico, Poliester.. Qual????

Cara tipo eu tenho dois modelos de AMP-OP aqui... Tenho o MC1458N e o LM1558N, só que olhei no datasheet num sei se foi eu que entendi errado mas eles funcionam com no minimo 12 volts...

Os links tão aqui pra caso alguem puder me dar alguma ajudinha........

http://www.datasheetcatalog.org/datasheet/stmicroelectronics/2172.pdf

http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/DS007886.PDF

Abraços e obrigado pela ajuda!

Link para o comentário
Compartilhar em outros sites

Oiluj,

Não, não fez conta errada não. Mas tem de dar uma mudada no conceito ! A teoria sua está certinha, mas a prática nos impõem limites, tipo não existe o amplificador diferencial ideal, sempre temos problemas quando a saída de um ampop precisa chegar perto dos limites de tensão de alimentação.

No seu caso, perto de 0 volts e perto de + 5 volts !

Na configuração básica, o LM35 vai de 2 a 150 graus, sendo que fornecerá tensões entre 20 mv e 1,50 volts.

Mas o que te importa é a faixa de temperatura que voce irá usar ! Isto é o que importa !

Por exemplo, se uma estufa vai ter temperaturas entre 20 e 40 graus, a faixa de tensão que nos interessa é entre 200 mV e 400 mV .

O circuto que postei é um amplificador diferencial. Eu faria da seguinte maneira :

Colocaria uma tensão fixa de X milivolts ( com baixíssima impedância, por exemplo, usando um outro amplificador operacional ) na entrada inversora, e ligaria a saída do LM35 na entrada não inversora.

Agora, é que vem o truque para encaixar a teoria dentro da realidade:

Lembra que eu te falei para usar um CI tipo RAIL - TO - RAIL , e te indiquei um modelo ?

É porque esses tipos são especiais e conseguem fornecer uma tensão de saida bem próxima dos limites das tensões de alimentação ! E muitos deles funcionam perfeitamente com 5 volts.

Eu já usei esse ampop que te passei, e ele foi bem linear com saidas entre 0,3 e 4,3 volts, quando alimentado com 5 volts . E , além disto, ele é quádruplo ! São os tipos que mais se aproximam do que chamamos de modelo ideal de amplificado operacional !

Se voce tentar usar esses ampops dinossauros que voce citou, eles não vão funcionar com 5 volts, a saida vai ser totalmente distorcida. Precisaria no mínimo uns 8 volts, e mesmo assim a tensão mínima de saída seria acima de 1.5 volts ( para ser razoavelmente linear... ) .

Agora que te exliquei o motivo de usar aquele CI Rail-to-Rail, lembre-se de que para termos uma saída linear, a saída do ampop deve estar sempre entre 0,3 e 4,3 volts.

Para facilitar, vamos fazer assim : quando a estufa estiver em 20 graus, quero ter 1 volt na saída.

E quando estiver em 40 graus, quero ter 4 volts na saida.

Assim, teremos uma boa variação na entrada do ADC, 3 volts em um total de 5 volts, e com isso teremos uma excelente leitura com variação de mais de 9 bits, muito mais do que o necessário para a estufa.

Agora, para fazer do jeito que expliquei, temos de fazer dois cálculos, um é a tensão que colocaremos fixa na entrada inversora, e o outro é o cálculo do ganho.

lembrando a fórmula da tensão de saída do amp op na configuração diferencial apresentada :

VOut = K * (V1-V2 ) onde K é o ganho de tensão, V1 é a tensão do LM35 e V2 é a tensão de referência fixa.

Temos :

1 = K * (0,2 - V2 ) e 4 = K * (0,4 - V2 )

1 = K*0,2 - K*V2 => -K*V2 = 1 - K*0,2 => K*V2 = K*0,2 - 1 =>

V2 = (K*0,2 - 1)/K

e substituindo na segunda :

4 = 0,4*K - V2*K => 4 = 0,4*K - 0,2*K +1 => 3 = 0,2* K => K = 15

Se K = 15 resulta em V2 = 2/15 = 0,133 volts

Lembra que eu definí que queria tensões entre 1 e 4 volts ?

Deixei uma margem de segurança, justamente porque é difícil ter os valores exatos de resistores que precisamos. Poderíamos obter valores entre 0,8 e 4,2 volts, por exemplo, sem nenhum problema, apenas teríamos uma outra escala para converter.

K = 15 ( ganho ) e V2 = 0,13 ( tensão de referencia fixa )

Agora, voce pode calcular os valores dos resistores do amp op :

Usando o menor como 22K, o maior terá de ser de 330 K. E por sorte, valores exatos !

Nosso amplificador diferencial vai trabalhar assim :

VOut= 15 * ( V1 - 0,133 )

Para fazer a tensão de referência fixa, use um trim-pot multivoltas ligado ao +5 volts, de valor de 10K, e ligue ele na entrada em um amp op , configurado como amplificador não inversor, de ganho 2, e ajuste até ter na saida do amp op a tensão exata de 0,133 volts.

Pronto, agora é só ligar essa saida na entrada inversora do seu amplificador diferencial, e o LM35 na entrada não inversora, e pronto !

Agora, o resto é só usar o que eu chamo de conversão de escala no seu programa em Basic.

Lembre-se : 1V no ADC = 20 graus ; 4V no ADC = 40 graus.

1V => leitura decimal de 204 ; 4V => leitura decimal de 818

Basta fazer a conversão de escalas, que está bem explicada tanto no tutorial, como aqui neste tópico, em algum post passado, ok ?

Isso tudo que escreví acima foi calculado para uma faixa útil na estufa de 20 a 40 graus.

Se voce precisar de uma outra faixa, é só refazer os cálculos, ok ?

Os capacitores são eletrolíticos quando estiverem com a tensão especificada, ou quando forem maiores de 1 uF.

Os de menor valor sempre são cerâmicos, ou de poliéster.

Ah, e jogue fora esses seus dois amp ops dinossauros ! Pelo menos para este caso ...

Boa montagem !

Paulo

Link para o comentário
Compartilhar em outros sites

Valeu Paulo brigadão e desculpa a minha demora cara....

Semana apertada na facul aqui, bicho, provas e mais provas....

Beleza intão mas tipo eu vou ver aqui e vou fazer esse circuito aí pra ver como fica to passando um aperto aqui cara...

aqui uma novidade descobri agora esse CI LM35 I2c...

Só que não entendi muito bem o funcionamento dele não....

Aí tá aqui o Datasheet tem como alguém me dar uma luz nesses bits dele aí..

http://www.nxp.com/documents/data_sheet/LM75A.pdf

Vou ver aqui acho que vou pegar uma faixa de tensão maior pra poder fazer isso!

T+ abraços...!

Link para o comentário
Compartilhar em outros sites

Prezados,

Não sei se estou no lugar certo (se não estiver, desculpem-me) mas preciso tirar uma dúvida: quero utilizar um Basic Step M8 com um módulo ZigBee. Existem placas na RogerCom (Adaptador PROTO-BEE ROGERCOM) que fazem comunicação de um micro (conversão 5V para 3V, inclusive) com um módulo XBee.

Minha pergunta é a seguinte: algúem já utilizou um Basic Step M8 com uma placa ZigBee? Estou trabalhando em um projeto de automação residencial e terei vários módulos remotos comunicando com um controlador central e, portanto, terei comunicação 1 para 1 (bidirecional) e 1 para n (só ida).

Grato,

Jesus

Link para o comentário
Compartilhar em outros sites

Paulo aqui umas duvidas na montagem do LM35 com o Amplificador...

primeiro, to usando o LM358N...

Queria saber se ele pode ser ligado com +/- 12...

E outra quais pinos devo colocar onde???

num to conseguindo entender o datasheet..

Por ultimo pela temperatura que ele opera, melhor deixar ele na placa do pic do que na placa do lm neah???

Datasheet LM358N:

http://www.datasheetcatalog.org/datasheet2/d/0krxqjyrr14uhy7yk1if661zzqwy.pdf

T+

Abraços..

Link para o comentário
Compartilhar em outros sites

Oiluj,

Se voce alimentar o CI com +-12V, vai queimar o PIC, pois ele só pode receber tensões entre 0 e 5 volts. Se for mais dio que 5, ou se for negativa, adeus PIC.

Já te falei que esse CI náo serve, pois não tem linearidade nenhuma nos extremos da faixa, ou seja, perto de 0 Volts ou acima de 3 Volts.

A única maneira seria voce mudar o projeto, esquece o LM358, e liga o LM35 direto no PIC. Lembre-se de que voce vai ter de medir valores entre 0 e 1,5 volts no máximo.

Já falei que não serve usar esses amp ops dinossauros, use só o LM35 que pelo menos vai ter linearidade na leitura, ok ?

Um abraço.

Paulo

Link para o comentário
Compartilhar em outros sites

O negocio é que aqui na minha cidade só tinha 741, pior que 358....

Ai consegue esse aí, e pensei que iri dar mas tá bom..

em hipotese alguma esse CI vai funcionar neah???

E aqui se eu colocar ele direto minha sescala num vai conter muito erro não??

T+ abraços!

E desculpa o encomodo!

Link para o comentário
Compartilhar em outros sites

Oiluj,

Bom, até vai funcionar, desde que voce mantenha a tensão de saida dele entre 1 e 3 volts, tem de refazer os cálculos que mostrei acima.

Mas nada te impede de ligar o LM35 direto no pino do ADC, lembre-se de que para cada variação de um grau na temperatura ( 10 mV ), voce vai ter uma variação máxima de 3 no valor lido do conversor.

Só para te exemplificar :

Para 20 graus, teremos na saida 0,2 volts, e iremos ter uma leitura no adc no valor de 40. Se a temperatura subir 1 grau, voce vai ter o valor de 42. E se a temperatura for de 22 graus, teremos o valor 45 ....

Repare que oscila sempre entre 2 e 3 a variação para cada grau, isso pode te dar um pequeno erro, inferior a 1 grau, mas dá para trabalhar, ok ?

O problema neste caso é que estamos lidando com um terreno perigoso, pois variações de 10 mV são muito difíceis de serem detectadas com precisão, pois quase sempre os ruídos presentes no lay-out da montagem são bem maiores do que isto, e vão fazer suas medidas parecerem loucas.

Como dica, faz o seguinte :

O ruido da rede elétrica pode fazer sua leitura variar bastante, o ideal é voce usar uma técnica de redução de ruido.

A rede elétrica tem um ruido de 60 Hz, então a ideia é voce fazer a leitura do ADC, guardar ela numa variável tipo Word, esperar o tempo suficiente para passar meio ciclo da senóide, e fazer uma nova leitura, somar o valor lido ao anterior naquela variável , espera passar mais um semiciclo, leia de novo, some, e assim em diante, até completar 10 leituras. Entáo, voce pega o valor daquela variável, e divide ele por 10 !!!!!

Esta é uma excelente maneira de cancelar estatísticamente as variações induzidas pela rede elétrica !

Para te facilitar, o tempo entre as leituras consecutivas tem de ser de 8333 microsegundos, use a instrução WAITus .

Faça a atualização do valor da temperatura a cada 5 segundos, ok ?

Manda bala logo nesse projeto !!!!

Paulo

Paulo

Link para o comentário
Compartilhar em outros sites

Paulo eu queria saber de você o seguinte:

Junto com o cabo que vai receber a leitura da estuva, vai estar passando mais cabos, tipo...

GND, Vcc+, que ao para alimentar o LM35 e o relé!

Isso ir[a ocacionar algum ruido serio?

E quanto a medir aquilo que está ali em cima, aquela serie de medidas...

Eu tenho que gerar interrupções ou não precisa...

eu meio que travo o programa, nesse ponto, até ele fazer todas leituras??

O que seria mais viável, já que tenho que controlar a temperatura de acordo com o tempo?

E no LCD também estará sendo mostrado o tempo!

Abraços e muito obrigado pela ajuda!!

Júlio César!

Link para o comentário
Compartilhar em outros sites

Oiluj,

Sugiro usar um cabo blindado apenas para o LM35 ( terra, alimentação e sinal de saída dele ), e um outro cabo comum para levar os sinais do relé. É para evitar mais possíveis problemas.

Não precisa gerar inerrupçoes, dá para confiar apenas nos Waitus que te passei.

O ideal é que voce use um cristal oscilador para uma frequência bem alta, tipo pelo menos 8 Mhz, para garantir que a execução do programa não atrapalhe os intervalos.

A própria instrução Waitus vai travar o programa pelo tempo necessário.

E para te facilitar o programa, ao final dele, antes de voltar novamente para o loop de sempre, coloque algo tipo Waitms 4500 , assim ele só irá atualizar o controle a cada 5 segundos. Acho melhor fazer isto para diminuir a oscilação dos valores medidos, pois o display não vai ficar mexendo a toda hora.

Agora, o tempo no display ..... voce deve estar usando algo tipo de RTC externo, então se quiser programe uma interrupção para ficar pelo menos lendo o RTC e atualizando o relógio pelo menos umas 5 vezes por segundo. Mas apenas faça isso nessa interrupção, para facilitar o código.

Um abraço !

Paulo

Link para o comentário
Compartilhar em outros sites

Bom cara, tudo que tu explicou ai eu entendi blzin..

Aí agora vem os pequenos problemas...Hehehe...

1º: Cabo blindado aqui na minha cidade eu num vou achar nem a pau.....

2º: O cristal eu já comprei de 4MHz.. tem como usar esse mesmo??? Porque Acho que nãoa charei de 8MHz na minha cidade!

3º: E agora quanto as interrupções aqui, fiz as contas todas e tal... pra achar o prescaler lá, e ainda tá dando um valor maior que 256!!1 Com que eu faço??

Abraços, e mals o incomodo..

P.S.: Minha cidade é um buraco no fim do mundo?!!

Link para o comentário
Compartilhar em outros sites

Bom ..... voce gosta de complicar ein ????????????????????

Faz o seguinte, compra um bom cabo coaxial de áudio tipo stereo, para uso em som mesmo, só procure um que seja bem grosso, deve dar certo sem maiores problemas.

O cristal manda bala nesse de 4 Mhz mesmo.

Agora, prá que prescaler ??????????????

Me explica o que que voce quer fazer, ok ?

Um abraço !

Ah, só como comentário, dá uma olhada no TUTORIAL EM BASIC PARA AVR'S , coloquei lá um projeto de controlador de aquário, vale a pena ler para entender o que que voce pode fazer ok ?

Tem muita coisa em comum com o teu projeto !

Paulo

Link para o comentário
Compartilhar em outros sites

Cara beleza, cabo coaxial acho que vai ser de boa de arrumar, agora stereo que eu já num sei, porque sempre vejo aqui até nas bandinhas de minhas cidade os mono(com 2 vias só), mas vou correr atrás e se deus quiser arrumo...

Agora quanto ao prescaler... É porque lembrando do seu tutorial e como se faz interrupções em Basic,...

eu pensei nessa rotina aqui:

OPTION_REG.T0CS = 0 
OPTION_REG.PSA = 0
OPTION_REG.PS2 = 1
OPTION_REG.PS1 = 0
OPTION_REG.PS0 = 1
TMR0 = 0x00
INTCON.T0IE = 1
INTCON.GIE = 1
Enable

E ali na linha 3 é onde escolho o prescaler e faço umas continhas pra isso, aí fui fazendo...

Como quero 5 interrupções em 1 segundo então.. seriam interrupções a cada 200mseg.

Como o clock interno vai ser 1MHz por causa do cristal de 4MHz....

E em 200mseg. vão ocorrer 200.000 ciclos de clock...

ai como só conta ate 256 tem que dividir usado o prescaler..

só que dividindo 200.000 por 256 da 781, ainda é maior...

Eu to fazendo coisa demais???

como seria o certo??

Abraços....

EDIT:

Olhando o datasheet do MAX232 aqui fala que tem que usar Caps de 1uF e não 4.7uF...

E lá fala também de um 5 cap ligado ao pino 16-Vcc+... Precisa Dele?

E o LCD lá no post onde o seu está VD é o mesmo que VEE??

Tô usando um LCD com Part Number:JHD 162A

Qual tá certo ou ambos estão???

Abraços!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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!