collapse

* Links de Robótica

* Posts Recentes

RN42 e TP-Link MR3020 por doiga
[Ontem às 19:22]


Ajuda Projecto IR / RF por senso
[Ontem às 13:15]


Recomendação de um opamp para um DAC r2r por Njay
[Ontem às 12:33]


Ideias para construir um quadrúpede simples por dropes
[21 de Novembro de 2017, 22:43]


Ajuda com TRIAC por senso
[17 de Novembro de 2017, 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]


Amplificador audio por beirao
[12 de Novembro de 2017, 23:43]


Power_OK Enermax por edeweld
[12 de Novembro de 2017, 17:15]

Autor Tópico: Sensor QTR-8RC  (Lida 9527 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
Sensor QTR-8RC
« em: 25 de Maio de 2010, 14:43 »
Boas

Comecei a fazer experiencias com este sensor e deparei-me com algumas dúvidas.
Consegui liga-lo e funcionou como neste topico http://lusorobotica.com/index.php?topic=1971.45

Agora a questão. Como eu "ainda" não tenho um arduino, utilizo um PIC16f84a e não possui entradas analógicas e pelo que me apercebi as saidas deste sensor são analógicas, como faço, ou melhor, qual é a melhor forma para passar as saidas deste sensor para digital?
Eu fiz uma experiencia e funicionou mais ou menos bem, utilizei um comparador LM358 e um potencimetro e na saida do comparador um led que acendia quando tapava o led. Só não experimentei ligar ao PIC, mas fiquei com a sensação que não seria a melhor opção. Alguem tem alguma sugestão?
Visitem os Açores vale a pena.

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.642
    • Electronic Gear for Musicians
Re: Sensor QTR-8RC
« Responder #1 em: 25 de Maio de 2010, 15:07 »
Podes trocar esse PIC por um 16F88 ?  esse já tem entradas analógicas.


No entanto, este LINK tem uma boa explicação na zona "Interfacing the QTR-8RC Outputs to Digital I/O Lines"

Aí explica como ligar uma saída dessas analógica, a um pino de entrada. É o método de carga/descarga do condensador.


Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
Re: Sensor QTR-8RC
« Responder #2 em: 25 de Maio de 2010, 15:21 »
Boas

Infelizmente não consegui ver o link que colocaste (estou na escola e é bloqueado) vejo em casa.
Mas qual aconselhas utilizar? com o condensador ou o comparador ou trocar o pic?
Diz-me só o seguinte, esse PIC que aconselhas funciona de igual modo do que o 16f84, isto é, tem as mesmas interrupções, e esquema de ligações? Desculpa estar a fazer estas perguntas meio tolas, bastaria ir pesquisar mas onde estou agora não consigo ver quase nenhuma página, a escola bloqueia uase tudo, felizmente não bloqueia o da Lusorobotica. Já agora são faceis de arranjar esses Pics?
Mais uma vez peço desculpa por tanta questão.
Visitem os Açores vale a pena.

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.642
    • Electronic Gear for Musicians
Re: Sensor QTR-8RC
« Responder #3 em: 25 de Maio de 2010, 17:58 »
podes usar o condensador directo com o PIC16F84, se não quiseres trocar de PIC. Aliás... esse é óptimo para aprender as bases, mas falta-lhe quase tudo de periféricos.

Se pesquisares a série PIC16, vais ver que a arquitectura é toda idêntica. Até o pinout é igual nas caixas de 18pinos.

Os PICs podem ser comprados nas boas lojas de electrónica, ou então tentar as amostras directamente do faricante.

Offline fred gomes

  • Mini Robot
  • *
  • Mensagens: 238
Re: Sensor QTR-8RC
« Responder #4 em: 25 de Maio de 2010, 17:59 »
o sensor QTR 8RC têm as saídas são digitais.. mas funcionam de maneira difente do que a leitura digital normal, acho que têm haver com comprimento de impulso por condensadores, (no post que mensionates têm um código que eu fiz para efectuar a leitura dos sensores, tens de usar a biblioteca que a pololu fornece).. para que funcionalidade queres esses sensores? seguidor de linhas?, se for, que posso disponibilizar te um código que já tenho feito usando o controlo PID..,
cumprimentos,
Fred

Offline fred gomes

  • Mini Robot
  • *
  • Mensagens: 238
Re: Sensor QTR-8RC
« Responder #5 em: 25 de Maio de 2010, 18:03 »
http://www.pololu.com/docs/0J19/3

tens ai um exemplo de um código que a polou fornece..
cumprimentos,
Fred

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.642
    • Electronic Gear for Musicians
Re: Sensor QTR-8RC
« Responder #6 em: 25 de Maio de 2010, 18:09 »
o sensor QTR 8RC têm as saídas são digitais.. mas funcionam de maneira difente do que a leitura digital normal, acho que têm haver com comprimento de impulso por condensadores, (no post que mensionates têm um código que eu fiz para efectuar a leitura dos sensores, tens de usar a biblioteca que a pololu fornece).. para que funcionalidade queres esses sensores? seguidor de linhas?, se for, que posso disponibilizar te um código que já tenho feito usando o controlo PID..,

As saídas não são digitais, são analógicas. Podem é ler-se com um pino digital, se se medir o tempo que o condensador demora a descarregar.

# O pino do micro vira saída e carrega o condensador
# o pino vira entrada, reset do temporizador, e espera até o condensador descarregar
# qd o condensador descarrega, o estado lógico da entrada muda

Por isso é q se pode fazer leitura "analógica", com um pino digital.


Este sistema é bastante usado para medição grosseira de temperaturas, com micros de poucos recursos. Uma NTC/PTC é o suficiente para tal.

Se se pretender usar o sensor com comparadores analógicos, sempre se pode optar pelo PIC16F628A, ou outro mais moderno com comparadores internos.

Mas é um excelente desafio de treino usar uma entrada digital e medir a temporização :)

Offline fred gomes

  • Mini Robot
  • *
  • Mensagens: 238
Re: Sensor QTR-8RC
« Responder #7 em: 25 de Maio de 2010, 18:33 »
eu não sabia bem como funcionava, sabia que tinha haver com isso dos condensadores, e disse que a leitura era digital pq se efectuam nos pinos digitais, 

mas já fiquei a perceber como funciona essa leitura, :)
cumprimentos,
Fred

Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
Re: Sensor QTR-8RC
« Responder #8 em: 26 de Maio de 2010, 13:38 »
asena podias dar um exemplo em C de como fazer isso?


# O pino do micro vira saída e carrega o condensador
# o pino vira entrada, reset do temporizador, e espera até o condensador descarregar
# qd o condensador descarrega, o estado lógico da entrada muda

Visitem os Açores vale a pena.

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.642
    • Electronic Gear for Musicians
Re: Sensor QTR-8RC
« Responder #9 em: 26 de Maio de 2010, 14:22 »
asena podias dar um exemplo em C de como fazer isso?

# O pino do micro vira saída e carrega o condensador
# o pino vira entrada, reset do temporizador, e espera até o condensador descarregar
# qd o condensador descarrega, o estado lógico da entrada muda

A página do sensor dá uma boa explicação de como o fazer.

RB0 é o pino usado. TMR0 sem divisor e incrementado pelo clock interno, no caso do PIC incrementa a Fosc/4.
A ideia é carregar o condensador, e depois contar o tempo que demora a sua descarga.

C para PIC ::


   TRISB = TRISB & 0b11111110;     //torna o RB0 uma saída, e não mexe nos outros pinos
   RB0 = 1;          //saida a 1, para carregar o condensador
   DelayUs(50);   //espera 50us

   TRISB = TRISB | 0b00000001;     //torna o RB0 uma entrada de alta impedância

   TMR0 = 0;     //limpa o contador

   while (RB0);   //enquanto o pino estiver a nivel lógico 1, mantém-se aqui

   TMR0_lido = TMR0;   //guarda o valor do tempo passado


Consoante o tempo que demora a descarregar, podemos saber se estava na linha, ou não. É uma questão de testes, consoante as condições do terreno.

Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
Re: Sensor QTR-8RC
« Responder #10 em: 30 de Maio de 2010, 01:19 »
Boas

Estive a fazer experiencias para ver se conseguia ver a saida do qtr num pino digital e não consegui.

1º- Liguei uma saida do qtr(saida 1) a um pino do condensador 10nF e o outro pino a uma entrada do Pic (entrada RB0).
2º- Utilizei este programa para tentar ver os tempos do condensador

Código: [Seleccione]
#include <16F84.h>
#fuses hs,noprotect,nowdt
#use delay (clock=4000000)                                         // igual ao cristal
#use RS232(baud=2400, bits=8, parity=N, xmit=pin_a1, rcv=pin_a0)

int TMR0_lido;

main()
{

while (1){

   set_TRIS_B(11111110);     //torna o RB0 uma saída, e não mexe nos outros pinos
   output_high(pin_B0);          //saida a 1, para carregar o condensador
   Delay_Us(10);   //espera 10us
   set_TRIS_B(00000001); //TRISB = TRISB | 0b00000001;   
   set_timer0(0); //TMR0 = 0;     //limpa o contador
   while (input(PIN_B0));   //enquanto o pino estiver a nivel lógico 1, mantém-se aqui
   TMR0_lido=get_timer0();  //TMR0_lido = TMR0;   //guarda o valor do tempo passado
   printf("HiThere");//só para escrever alguma coisa
   printf(get_timer0());//para ver se escrevia desta forma
   printf(TMR0_lido);
   Delay_ms(1000);
}
}

O resultado foi só HiThere de 1 em 1 segundo, não me aparecia nenhum valor.

Devo estar a fazer alguma coisa mal mas não sei o que é.
ALguem me pode ajudar?

Obrigado
Visitem os Açores vale a pena.

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.642
    • Electronic Gear for Musicians
Re: Sensor QTR-8RC
« Responder #11 em: 31 de Maio de 2010, 10:06 »
# estás a usar o esquema de ligação que o fabricante aconselha?  o condensador liga ao sensor e à alimentação

# os pinos não usados do PIC, devem ser configurados como SAÍDA. Qualquer pino configurado como entrada, e q não esteja ligado, é propenso a gerar confusão.

# tens q converter os valores binários/décimais, para ASCII, antes de os mandares para a porta série

# "printf" é tudo menos bom para programar. Só serve para encher a memória do PIC. Usa  porta série directa.


Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
Re: Sensor QTR-8RC
« Responder #12 em: 31 de Maio de 2010, 16:22 »
Boas

O esquema que utilizei foi este:


Uploaded with ImageShack.us

Mas pelo que dizeste asena já vi que está mal. Estive à procura do esquema do fabricante mas não descobri, consegues-me enviar o esquema correcto? se sim porreiro agradeço desde já.

Não sei se deste uma vista de olhos no código, está correcto?
tentei fazer como tu dizeste e como estava no site do fabricante.

O set_tris_b(xxxxxx) configura os pinos como entrada ou saida conforme é 0 ou 1.

Não faço mesmo ideia como converter os valores para ascii, pensei que não era preciso fazer nada bastava enviar por rs232. Os valores do TMR0 não são de 0 a 255?quando faço get_timer0()?

E em vez de utilizar printf() dizes que é melhor o puts()?
Visitem os Açores vale a pena.

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.642
    • Electronic Gear for Musicians
Re: Sensor QTR-8RC
« Responder #13 em: 31 de Maio de 2010, 16:43 »
#
Segundo esta imagem ::

podes ver como está o condensador de 10nF ligado. Está entre o VCC e o COLECTOR do transistor. O PIC vai apenas ler a tensão nesta junção, através de uma resistência para limitar a corrente de carga.

#
Se as ligações estão correctas? assim de repente sim. mas não confirmei o pinout do MAX. Assim que puderes, muda para um PIC16F628A (no mínimo), para não teres que usar cristal e para usares a USART por hardware interna

#
Tens aqui a TABELA ASCII. Vê como podes converter os valores. É simples.

#
Uma função ou outra... depende de como a puts() está escrita. Isso são funções da biblioteca STDIO e a  outra do compilador...  eu prefiro usá-las escritas por mim. São mais rápidas e ocupam pouco espaço. Tive que as fazer, na altura em que comecei a aprender PIC e só havia 16C54 e 16C84.
Procura por bit-bang software usart pic. O google é teu amigo.



Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
Re: Sensor QTR-8RC
« Responder #14 em: 31 de Maio de 2010, 17:19 »
asena não consigo ver a imagem.

em relação ao resto vou a google o nosso amigo :P
 e mais uma vez obrigado.
Já agora asena não fazes formação nos açores(São Miguel)?
se fizeres avisa-me.
Visitem os Açores vale a pena.