collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[27 de Março de 2024, 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: [Duvida]Ler entradas analogicas PIC16f877  (Lida 7845 vezes)

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

Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
[Duvida]Ler entradas analogicas PIC16f877
« em: 14 de Julho de 2010, 00:07 »
Boas

Comecei a fazer experiencias num PIC16f877 e estava a correr tudo bem até que decidi ler uma entrada analogica.
Descobri este código na internet

Código: [Seleccione]
#include <16F877.H>
#device adc=10
#include <STDLIB.H>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock= 8000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)

//============================
void main()
{
int16 adc_value;
float volts;

setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
delay_us(20);

while(1)
  {
   output_high(pin_b2);
   printf("Ola");
   delay_us(10);
   adc_value = read_adc();

   volts = (float)(adc_value * 5)/1023.0;   
   printf( "%3.2f \n\r", volts);
   printf("A/D value = %2x\n\r",adc_value );
   delay_ms(500);
   output_low(pin_b2);
   printf("Fui");
   delay_us(10);
  }

}

Supostamente devolve o valor em volts e tambem o valor em decimal.

Digo supostamente porque não consigo obter nenhuns valores.
Coloquei um led a piscar e fiz uns printf() para ver se ele se mexia e nada, limita-se a acender o led e não envia informação nenhuma.

Estarei a esquecer-me de alguma coisa?

Cump
Visitem os Açores vale a pena.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: [Duvida]Ler entradas analogicas PIC16f877
« Responder #1 em: 14 de Julho de 2010, 00:13 »
De onde vêm as funções para brincar com o adc?
Não falta nenhum include?
Avr fanboy

Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
Re: [Duvida]Ler entradas analogicas PIC16f877
« Responder #2 em: 14 de Julho de 2010, 00:28 »
Boas

Segundo a ajuda da função não falta nenhum #include
Já lá está o #include<STDLIB.H>

As funções setup_adc_ports(); setup_adc() e set_adc_channel() servem para iniciar a leitura adc.
Não tenho a certeza, mas por aquilo que li, não falta nada, mas supostamente deveria dar.
Por isso a minha duvida. Onde estará a falhar?

cump
Visitem os Açores vale a pena.

Offline jagsilva

  • Mini Robot
  • *
  • Mensagens: 125
    • jagsilva
Re: [Duvida]Ler entradas analogicas PIC16f877
« Responder #3 em: 14 de Julho de 2010, 10:43 »
Este codigo foi feito para o ccs

Código: [Seleccione]
#include <16F877A.H>
#device ADC=10

#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP

#use delay(clock = 20000000)
#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7, ERRORS)


void main()
{
int16 a;
float v;

printf("Teste adc\r");

setup_adc_ports(all_analog);
setup_adc(ADC_CLOCK_INTERNAL);

while(1)
   {

   set_adc_channel(1);
   delay_ms(150);

   a=read_adc();

   printf("a=%ld     ",a);

   v=(a*5.0/1023);

   printf("v=%3.2f\r",v);

   delay_ms(200);

   }
}

Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
Re: [Duvida]Ler entradas analogicas PIC16f877
« Responder #4 em: 14 de Julho de 2010, 11:38 »
Boas

Obrigado Jagsilva funciona 5* e pelo que vi bastava colocar a função setup_adc_channel dentro do loop.
Experimentei ligar a 0v e deu a=0     v= .00 e depopis a 5v e deu a=1023     v=5.00.
Depois tentei ligar o famoso QTR-8RC e deu-me sempre 0v não percebo porque?
Liguei a saida 1 do sensor directamente ao pino AN1 do PIC. A ligação está bem feita?
Como estou a utilizar PIC não consigo utilizar as bibliotecas que a polulu disponibiliza não é?
Agradecia que dessem umas luzes.

Cump

Visitem os Açores vale a pena.

Offline jagsilva

  • Mini Robot
  • *
  • Mensagens: 125
    • jagsilva
Re: [Duvida]Ler entradas analogicas PIC16f877
« Responder #5 em: 14 de Julho de 2010, 12:32 »
Confesso que não conhecia o "famoso".
No entanto o nosso amigo google encaminhou-me para o sitio certo e estive a passar os olhos no datasheet. Pelo que vi para ler o sensor usas um entrada digital e contas o tempo que a saída está activa. A saída do sensor não é analógica.

jagsilva

Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
Re: [Duvida]Ler entradas analogicas PIC16f877
« Responder #6 em: 14 de Julho de 2010, 13:01 »
Boas

Pois tambem vi isso, mas pelo que vejo aqui no forum com o arduino eles ligam o sensor a uma entrada analogica e conseguem retirar valores analogicos (ex: Robo busca e salvamento), mas a polulu disponibiliza umas bibliotecas para o arduino com funções especificas.
Tambem fiz a experiencia de ligar um led ao pino 1 do sensor e ele tem um comportamento analogico, por isso acho que devo estar a liga-lo mal ao PIC, mas tambem não sei como ligar de outra maneira.
Em relação a ligar este sensor a pino digital já o consegui ligar com sucesso com a ajuda dos membros do forum.

Cump
Visitem os Açores vale a pena.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: [Duvida]Ler entradas analogicas PIC16f877
« Responder #7 em: 14 de Julho de 2010, 13:04 »
Isso deve ser o pior sensor do mundo, é gente em tudo quanto é forum a atrofiar para o meter a trabalhar seja com o que for.
Mostra ai o teu esquema de ligações.
Avr fanboy

Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
Re: [Duvida]Ler entradas analogicas PIC16f877
« Responder #8 em: 14 de Julho de 2010, 13:20 »
Boas

Aqui está o esquema de ligações.



Uploaded with ImageShack.us
Visitem os Açores vale a pena.

Offline Arknum

  • Mini Robot
  • *
  • Mensagens: 84
Re: [Duvida]Ler entradas analogicas PIC16f877
« Responder #9 em: 15 de Julho de 2010, 10:50 »
Boas

É assim que vocês ligam ao arduino?

cump
Visitem os Açores vale a pena.