Ayuda Usando 2 ADC 16F887 mucha oscilacion

#1
Hola Gente volví con esto de los pic, estoy intentando hacer un seguidor solar.
Estuve informándome que usaban para "medir" la luz y vi en muchos lugares que utilizan leds ambar de alta intensidad, ya que al iluminarlos entregan 1,5v de tensión en sus patas.
Lo primero que hice fue conectarlos directamente a 2 entradas analógicas del pic que yo había declarado A0 y A1 seteando la +Vref en 1,5 pero, al mostrar en un lcd los valores obtenidos, oscila muchisimo. :unsure:

luego arme un amp no inversor con un lm324 y usando una R1 = 10k, R2=3900, cuando en la entrada tengo 1,5 v a la salida tengo 5,3, puse un zener 5.1v para que la tensión no se pase y me queme el pic.

pero tengo un problema ya que al tapar totalmente los led la tensión entregada por ellos no se pone en 0 y no entiendo porque.

Resumiendo
Como evito la oscilacion y que puedo usar para medir la luz?

aca dejo los diagramas:

1) Amp Operacional



eso que dice 2,5v no le den importancia me quedo sin editar

2) al pif 16f887 tengo conectado un display de 2x16 al PORTB

En la A0 y A1 tengo 2 entradas analogicas, a la que se conectan los amp operacionales.
Uso el oscilador interno del pic a 8mhz.

3) Codigo MikroBasic

Código:
program lee2adc

dim text as char[20]

dim ld,li as string

dim ldt,lit as string[4]



main:

ANSEL = %00000011          ' PIN A0 A1 como analogicos

ANSELH = 0                 ' todos los demas digitales

ADCON1= 0x80

TRISB = 0                   ' PORTB is output

Lcd_Init(PORTB)             ' Initialize LCD on PORTB

Lcd_Cmd(Lcd_CURSOR_OFF)     ' Turn off cursor

text = "Midiendo la LU"

Lcd_Out(1, 1, text)         ' Print text at LCD

Delay_ms(1000)

Lcd_Cmd(Lcd_Clear)

Lcd_Out(1,1,"ld:")

Lcd_Out(2,1,"li:")



While 1

ld = ADC_Read(0)

wordtostr(ld,ldt)

Lcd_Out(1,4,ldt)

Delay_ms(150)



li = ADC_Read(1)

wordtostr(li,lit)

Lcd_Out(2,4,lit)

Delay_ms(150)



Wend

end.

dejo un video tambien

 
#2
hola,
no se de donde sacaste la idea de que con un LED puedes medir la intensidad de luz cuando este solo la emite; tal vez te confundiste y sea un FOTODIODO lo que debas usar o en su defecto un fototransistor , en segundo si usas cualesquiera de estos dos elementos lo mas recomendable seria usar OA como comparadores para tener voltajes de referencia y puedas procesar los voltajes de salida,ya que si lo usas en la configuraion que lo muestras lo unico que haces es "amplificar" la senal,
yo te sugeriria una simple fotoresistencia y usar el ADC si lo unico que quieres medir es la intensidad de la luz, la resistencia es proporcional a la intensidad de la luz que recibe
p.ej
luz 100% ----> LDR--->ADC= 1111
luz 50% ----> LDR--->ADC= 1000
luz 0% ----> LDR--->ADC= 0000
suponiendo que el adc es de 4 bits
unsaludo
 
#3
hola,
no se de donde sacaste la idea de que con un LED puedes medir la intensidad de luz cuando este solo la emite; tal vez te confundiste y sea un FOTODIODO lo que debas usar o en su defecto un fototransistor , en segundo si usas cualesquiera de estos dos elementos lo mas recomendable seria usar OA como comparadores para tener voltajes de referencia y puedas procesar los voltajes de salida,ya que si lo usas en la configuraion que lo muestras lo unico que haces es "amplificar" la senal,
yo te sugeriria una simple fotoresistencia y usar el ADC si lo unico que quieres medir es la intensidad de la luz, la resistencia es proporcional a la intensidad de la luz que recibe
p.ej
luz 100% ----> LDR--->ADC= 1111
luz 50% ----> LDR--->ADC= 1000
luz 0% ----> LDR--->ADC= 0000
suponiendo que el adc es de 4 bits
unsaludo
:D vi eso de los led por varios lados de internet, tambien probe con un LDR directo al ADC y tambien hay oscilacion (n)
 
#4
puede ser que en el reg ADCON0 CHS<3:0> por default esta en el canal 0, no lo modificas, no se en que canal hayas conectado tu senal?? podria ser eso , con respecto a lo del LED no lo creo al menos que lo irradies con rayos Beta jaja pero ps pasa los links saludos
 
#6
puede ser que en el reg ADCON0 CHS<3:0> por default esta en el canal 0, no lo modificas, no se en que canal hayas conectado tu senal?? podria ser eso , con respecto a lo del LED no lo creo al menos que lo irradies con rayos Beta jaja pero ps pasa los links saludos
Ahora que miro la hoja de datos yo seleccione A0 y A1 como entrada analogica escribiendo ANSEL= %00000011. o lo debo hacer con ADCON0???

con el adcon0 como seleciono 2 entradas analogicas??

con respecto a los led xd lo conecte a un multimetro y le di con una linterna y mide 1.5v:eek:

aca esta la hoja en español

http://www.mikroe.com/eng/chapters/...-basic-capitulo-3-microcontrolador-pic16f887/



tampoco se porque el conversor funciona en 8bits y no en 10bits
 
Última edición:
#8
Hola, prueba a poner una resistencia elevada entre la entrada + y masa. Un saludo
Gracias voy a probar con esta opción :unsure::LOL:



si eso esta correcto por RA0 y RA1 como entradas analogas pero cual de los 11 canales que tiene el ADC es el usadoi ?
no entiendo, que son los canales? según la hoja de datos este pic tiene 13 entradas analógicas, yo utilice solo dos: RA0 y RA1 la pata 2 y 3 del pic, las cual configure con el comando ANSEL=%00000011
con el adcon0 que hago?
 
Última edición:
#10
y la info del LED magico??? o cual es su simbolo??? datasheet?
Cuando vuelva de mi casa al trabajo lo busco, pero yo estoy seguro que lo vi por algun lado, y para confirmarlo agarre un tester y alumbre el led ambar con la linterna y me tiro 1.5voltios.
Tambien probe con un led verde difuso creo que era y me dio 1.2v

---------------------------------------------------

aca estaaaaaaaaa!!!!!!!

http://www.neoteo.com/proyecto-girasol-orientando-un-panel-solar
 
#11
esque ANSEL solo es para configurar los pines de los puertos como entrada analoga o E/S digitales, lo primero que es lo que hiciste esta bien ya que puedes usar cualquiera de esos 2 pines co el ADC, ahora el modulo ADC del pic tiene 11 canales de conversion es decir que puedes conctar 11 senales independientes analogas a convertir por el ADC ,(solo una a la vez) por eso es que tienes que seleccionar RA0, o RA1 en ru caso
 
#12
esque ANSEL solo es para configurar los pines de los puertos como entrada analoga o E/S digitales, lo primero que es lo que hiciste esta bien ya que puedes usar cualquiera de esos 2 pines co el ADC, ahora el modulo ADC del pic tiene 11 canales de conversion es decir que puedes conctar 11 senales independientes analogas a convertir por el ADC ,(solo una a la vez) por eso es que tienes que seleccionar RA0, o RA1 en ru caso
no entiendo, lo de los 11 canales. No se a que te referís, la conversión me esta funcionado pero solo en 8bits.

Con el adc_Read(0) leo RA0 espero un tiempo y luego con adc_read(1) leo RA1
 
#13
entonces define bien tus preguntas porque creas lios!
pues si quieres leer valores en 10 bits eso es dependiente de tu compilador no se si te lo permita, o puede hacer tu propia libreria para ADC 10 bits. un saludo y hasta luego .
 
#15
ok gracias por el link aunque no hay info clara , no digo que no se pueda ,por que existe el efecto foto electrico , pero no lo creo!!! y ahora si fin de la discusion por que no estamos para debatir aqui si no para ayudarnos :D bye
 
Arriba