Ir ao conteúdo
  • Cadastre-se
fabiano aladin

PIC Porta analógica no pic 12F683

Posts recomendados

Bom dia , estou  tendo problemas ao implementar um código  par ao Pic12F683 onde tenho que pegra a leitura de um sensor em milivolts e fazer acionar uma porta  quando esta leitura estiver  entre 31mV e 37mV , eu iria usar um amop em histerese , mas como tenho problema de espaço  resolvi usar o  microcontrolador q tenho aqui, no caso de uma tensão baixa eu teria q amplificá-la antes ou  leria diretamente  do sensor ?

Obs.: Estou usando  a linguagem c e o CCS.

Segue o código abaixo:

#include <AlarmeAnalisadorOxigenio.h>
void main() 
{
   setup_adc_ports(sAN0 |VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL);
   float analogico ;
   while(TRUE)
   {
       SET_ADC_CHANNEL(0) ;
      delay_us(100);
      analogico = READ_ADC ();
      delay_ms(10);
      if (analogico >=7  &&  analogico <= 100)
      {
         output_low(pin_a5);
         output_low(pin_a4);
         output_low(pin_a2);
         output_low(pin_a1);  
      }
      else  
      {
         output_high(pin_a4);
         output_low(pin_a5);
         output_low(pin_a2);
         output_low(pin_a1);
      }
   }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Melhor ...

agora, fabiano aladin disse:

amplificá-la antes

... pois a variação de 6mV é pequena pro ad de 10bits deles detectar. A grosso modo 5/1023=5mV/bit ou unidade de ad.

Já um attiny26 possui amplificador interno inteligentemente pensado pro seu caso.

Pra um projeto simples como o que deduzo ser o seu, o tal ampop tende a ser mais melhor. A não ser que o mc seja necessário pra outras funções...

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Isadora Ferraz Como  estou meio apertado com tempo , aqui na cidade não  encontrarei o attiny26  e além do mais  não tenho  gravador para ele disponível aqui ,vou  ter q pensar em algo e vê o uso do amop para isso , já q espaço físico é um problema!

Obrigado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meio xatinho mas a princípio você poderia até mesmo amplificar este sinal com transistor e aplicar no mc mas de fato se só o ampop resolve, toca o barco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Isadora Ferraz Como eu teria q fazer  uma placa nova para não ficar  gambiarra , fiz com microcontrolador e usei o amop como amplificador  x 10 , na bancada funcionou quando fui instalar no equipamento percebi que o terra é separado  , então me tira uma dúvida se eu colocar o terra do sensor como referência no  lugar do vss irá funcionar? e como faço para colocar  outra porta com o terra do sensor como referência?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi bem pouco.(se é que entendo algo). Queira por gentileza publicar seu esquema.

 

3 horas atrás, fabiano aladin disse:

colocar  outra porta com o terra do sensor como referência

Veja no d.s. do mc como usar um pino como ref. Veja a seção do conversor ad. É algo como escrever um byte apropriado num registro qualquer.

 

Mas antes disso tudo, verifique que tipo de sensor é o seu, que tipo de dado ele fornece, qual sua linearidade, como/onde é conectado no equipamento, que equipamento é, se é 'limpo', etc. Consulte também seu d.s.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Isadora Ferraz O grande problema é um datasheet detalhado do sensor ,  o que encontrei  não tem muitas informações do que necessito , entrei até em contato com o fabricante e até agora nada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que tipo de sensor ele é? Ele tem nome? É de temperatura? Seria um termopar? Tipo J? K? ntc? PT100? Que equipamento é este? Onde é usado? Pra que serve? Que temperatura ele mede? è de pressão? Peso? etc? É alta impedância? É dc? você fez algum desenho esquemático? Consegues perceber a importância de se ter estas informações?

 

Se desejares ajuda de verdade de quem for te ajudar de verdade, sugiro que não guardes segredo e publiques tudo que puder, desenhos, fotos, videos e afins. Informação a conta gota força e desgasta a bola de cristal.

 

boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Isadora Ferraz É um sensor de O2 , ligado em um display  dpm-125  para mostrar  a porcentagem de oxigênio no ambiente , o ckt é para pegar o sinal q sai do sensor   e fazer quando chegasse a certo nível acender um led e disparar um buzzer , o terra do sensor é separado do terra do ckt , coloquei o positivo do sensor passando pelo amop para amplificá-lo antes de ir ao pic , só q está com valor meio alterado muito mais alto  uns 6 volts ,sendo q ue o amplificador lm 358 foi alimentado com 5 volts. Obs.: O pic usado foi o 12F683.

sensor.jpg

sensor2.jpg

sensor3.jpg

sensor4.jpg

sensor 5.jpg

CKTALARME.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok amigo melhorou 1 pouquinho...

Talvez 1 simples amplificador x10 não seja muito bom. Talvez este sensor prefira amplificador diferencial ou de instrumentação. De fato é melhor você ter as especificações dele antes de assumir um chute qualquer.

 

E tem +... esta configuração de ampop pode não estar muito boa. Alem dos que já te disse, tenta usar VCC/2 como referência pro ampop e pro mc. Ou consiga uma V negativa pra alimentar o ampop. Este lm358 não é muito preciso. Tenta com p.ex. op07,17,27,37. Estes sim com V simétrica. Proteja o mc contra V negativa. Aquele diodo na alimentação dele pode estar degradando a leitura ad. Liga direto no +5

 

O sensor deste que trabalhei um dia tinha vida útil. Algo como ao abrir, o oxigênio vai queimando a parte sensível. Por isso você tinha que ajustar a leitura quase o tempo todo com relação à uma referência. Este daí me parece igual. Aí sim momento do mc com memória eeprom por as garrinhas pra fora. Tá vendo a importância de se ter informações técnicas corretas e não só sair chutando o balde? E olha que você nem chegou na parte dos ruídos que o ambiente vai te oferecer de "brinde". Aí sim fica legal. Você pode ter que trabalhar e condicionar o sinal a nível de hw antes de aplicar no ad do mc. Ou pensava que tudo era software?? É isso amigo.. aqui fora o sistema é bruto...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem mais um probleminha chato ... esses amp ops comuns com tensão simples não trabalham bem com tensões tão baixas, eles ficam muito fora da linearidade. Melhor dizendo, a saída só fica razoavelmente linear para tensões acima de 200 milivolts.

A melhor solução é usar um amp op do tipo Rail to Rail , existem alguns que trabalham muito bem com alimentação simples de 5V.

Ou usar algo como a @Isadora Ferraz , um microcontrolador que tenha amplificador interno, e de preferência que possa operar também no modo diferencial ! Assim, não importa o tipo de sinal do sensor.

 

Mesmo assim, tem o problema do ruído .... para conseguir medir confiávelmente sinais abaixo de 10 milivolts, tem de ter um layout da placa feito por um especialista em sinais de baixa amplitude, pois tem muito truque nisso...

 

Paulo

 

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu testei antes com um injetor de milivolts no lugar do sensor , a única diferença  foi q os terras estavam todos juntos e aqui está separado do sensor e da alimentação ainda pensei em colocar tudo junto antes de ir para o display , mas não sei  se vai implicar em algo já q não tenho o esquema do  display , e datasheet do fabricante desse sensor ou da teledyne não possuem mais de uma página e não trazem muitas informações!

adicionado 4 minutos depois

@aphawk Pior q aqui na cidade não tem  onde encontrar  , fiz com o q tinha em mãos , tenho um ne5532  disponível , e pedir  pela internet vai demorar um pouco a chegar!

 

adicionado 14 minutos depois

Vou tentar fazer um amplificador industrial para tentar  resolver a situação !

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
34 minutos atrás, fabiano aladin disse:

diferença  foi q os terras estavam todos juntos e aqui está separado do sensor e da alimentação

Amigo isso leva a crer que os cara usam ampl. diferencial mesmo. Portanto de forma alguma você pode unir os terras. Ao usar ampl. diferencial ou de instrumentação, o circuito do mc num tá nem aí pro terra. Ele deve "amplificar a diferença" de sinal entende?

 

AmpDS.png

 

Aplique os fios vermelho e preto em v1 e v2 e ve que merdadá. Lembrando que o gnd do R2 é o do seu mc e não deve ser unido com o pra onde o sensor vai, ou seja do display.. E claro, fonte independente. A questão do layout é importante. Aquele gnd deve estar "sozinho" e em contato com o gnd do mc e deste pra fonte. O mesmo pro vcc.

 

Talvez o de instrumentação seja mais apropriado. O diferencial pode zoar o resultado que vai pro display.. Só testando mesmo...

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Isadora Ferraz , os ruídos e demais mazelas costumam afetar os 2 condutores de forma idêntica. Nem sempre se consegue fio trançado. A solução de amp diferencial que apontaste costuma resolver na grande maioria das vezes. Li nos posts do autor que muitas vezes o zero do sensor fica uns 6V acima do GND do leitor, isso talvez seja um problema se não houver disponível uma fonte de pelo menos 9V para manter o modo comum dentro do  range.

adicionado 13 minutos depois

Acabo de ler o data do NE5532. Excelente operacional para áudio mas para ler tensões tão próximas do GND irá precisar de fonte simétrica. Isso nos traz o problemas de ter fonte simétrica e adiciona o problema de abrir a possibilidade do amp enviar tensão negativa para o ADC.

Resumo: o NE5532 não serve ao propósito.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 horas atrás, fabiano aladin disse:

Vou tentar fazer um amplificador industrial para tentar  resolver a situação !

 

Você está se referindo ao clássico circuito com 3 amp ops ?

 

Vai precisar de fonte simétrica, e vai ter um problema bem chato : como vai zerar o offset ? Pois usar amp ops comuns tem esse inconveniente....  teria de usar amp ops feitos para essa finalidade, que também são bem difíceis de se achar por aí ..... o NE5532 pode ter até 5 mV de offset, isso acaba com a sua medida !

Eu acho que o melhor seria usar 3 amp ops antigos que tenham ajuste de offset externo, como o velho 741 ....

 

Paulo

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
14 horas atrás, Sérgio Lembo disse:

possibilidade do amp enviar tensão negativa para o ADC.

o mc meio que "tolera" v negativa. Ele tem um diodo nas entradas. Assim sendo um R de 3k3 em série na entrada quase o deixa suportar -12V. Mesmo assim eu (eu) coloquei um diodo zener de 4V7 que de quebra o deixa suportar 12V.

7 horas atrás, aphawk disse:

Você está se referindo ao clássico circuito com 3 amp ops ? 

Vocẽ está se referindo ao amplificador de instrumentação?

ft150110.gif

 

7 horas atrás, aphawk disse:

ajuste de offset externo

Ajustes com trimpot são um p.n.s. e coisa do passado (de velho mesmo kk). Penso que este seria + um momento pro

16 horas atrás, Isadora Ferraz disse:

mc com memória eeprom por as garrinhas pra fora

com uma rotininha de ajuste e calibração com dados de ofset, ganho, linearidade e afins gravados na eeprom. Mas claro, esta é a visão da eficiência, custo, produtividade e afins deste lado daqui de fora (já falei que aqui o sistema é bruto?). Pra protótipo, hobbies e afins talvez valha a pena o velho e ruim ajuste na "hard" mesmo...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os problemas das plantas industriais. Grandes espaços, vários GNDs. A vareta espetada no solo é excelente para eletrotécnica mas limitada para eletrônica. Numa janela de 31mV~37mV que é o desafio do autor tais varetas não funcionam. Creio que a solução apontada pelo autor de ter um comparador de janela terá que ser adotada. Teremos então um sinal lógico (dentro/fora da janela). Para interligação do sensor ao controle proponho um opto-acoplador, elimina a questão dos GNDs distintos. Comparador de janela posicionado próximo ao sensor e opto junto ao controle.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Sérgio Lembo ,

 

Isso que eu chamo de solução radical !!!

 

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

@aphawk @Sérgio Lembo @Isadora Ferraz O analisador é portátil e já funciona perfeitamente , o que tenho que fazer é adicionar um alarme sonoro e/ou visual com led , montei o circuito e ao ligar ao invés de mostrar a leitura de 21 mostra 7 o, ao desconectar o ckt que fiz de alarme  tudo volta ao normal  , no módulo do display não tem como eu pegar o sinal de lá !

Compartilhar este post


Link para o post
Compartilhar em outros sites
26 minutos atrás, fabiano aladin disse:

e já funciona perfeitamente , o que tenho que fazer é adicionar um alarme sonoro e/ou visual com led , montei o circuito e ao ligar ao invés de mostrar a leitura de 21 mostra 7 o, ao desconectar o ckt que fiz de alarme  tudo volta ao normal

Supondo que o tal circuito de alarme sejam o LED ou o BUZZER, cá entre nós, eles não influenciam o sinal que está sendo enviado para um operacional (alta impedância). Então a única influência do alarme é o aumento da corrente consumida. No sensor vi uma ligação unifilar o que me faz supor que o segundo fio do sensor vai ao GND do seu circuito portátil. Então o que diferencia o comportamento normal (sem alarme) do funcionamento anormal (com alarme) é o consumo que passa no GND. Verifique o layout do circuito, tente colocar o emissor de Q1 bem próximo a saída da fonte e o GND do sensor, 7805, PIC e OPAMP tão próximos entre si quanto possível.

Tudo indica erro de layout no trato do GND e no trato de sinal tão delicado quanto o vosso qualquer distração dá nisso mesmo! Faz parte.

adicionado 10 minutos depois

Um teste simples: supondo que Q1 não seja SMD, levante a perna do emissor e faça uma ligação aérea deste ao GND da pilha.

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 minutos atrás, Sérgio Lembo disse:

Supondo que o tal circuito de alarme sejam o LED ou o BUZZER, cá entre nós, eles não influenciam o sinal que está sendo enviado para um operacional (alta impedância). Então a única influência do alarme é o aumento da corrente consumida. No sensor vi uma ligação unifilar o que me faz supor que o segundo fio do sensor vai ao GND do seu circuito portátil. Então o que diferencia o comportamento normal (sem alarme) do funcionamento anormal (com alarme) é o consumo que passa no GND. Verifique o layout do circuito, tente colocar o emissor de Q1 bem próximo a saída da fonte e o GND do sensor, 7805, PIC e OPAMP tão próximos entre si quanto possível.

Tudo indica erro de layout no trato do GND e no trato de sinal tão delicado quanto o vosso qualquer distração dá nisso mesmo! Faz parte.

Obrigado vou revisar tudo !Eu tinha procurado algum curto ou ligação errada , mas vou revisar todo layout.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro que está procurando é: está passando corrente na trilha que liga o GND do sensor ao opamp? A passagem de corrente pela trilha provoca queda de tensão, normalmente pequena, mas seu sinal é pequeno também. Já que o circuito funciona bem sem o alarme isso já indica um bom circuito e se o erro só ocorre quando o alarme dispara isso tem a ver com o emissor de Q1 (por onde passa a corrente de alarme). O teste sugerido deve resolver essa dúvida.

26 minutos atrás, Sérgio Lembo disse:

Um teste simples: supondo que Q1 não seja SMD, levante a perna do emissor e faça uma ligação aérea deste ao GND da pilha.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na minha concepção artístico-teórica da coisa, o amplificador de instrumentação (cansei de sugerir e nunca usei) resolve seu problema. Perceba a alta impedância das entradas, ao contrário do seu onde me lembro vagamente que a impedância é no mínimo R2. E de novo a alimentação deve ser independente.

 

5 horas atrás, fabiano aladin disse:

no módulo do display não tem como eu pegar o sinal de lá !

de onde pega então? como você pega? Se usa o mesmo gnd e quer zero influência, passe o sinal por um seguidor de tensão e depois amplifique. Algo como faz o amp...de instr...

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Isadora Ferraz O sinal foi pego diretamente do sensor , o gnd do sensor fica iso lado do gnd de alimentação do display , eu tirei o pic , o led  , portanto q1 ficou de fora e o resultado foi o mesmo , segue abaixo um esboço de onde tento pegar o  sinal.

 

ALARME.thumb.png.6919ef5ea902e6b3f71ddd46cf8f8f0a.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Melhorou amigo. Como te disse o ampl. de inst. deve te atender. E se for usar o seu (que pode estar zoando a medição), o gnd dele não deve ir no V-(GND) e sim no IN LO COM REF LO.

Dica use outra bateria 9V.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!