TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: GabrielD en 26 de Enero de 2015, 14:11:19
-
Buenos dias compañeros quisiera que me ayudaran con una duda que tengo
Estoy trabajando con un PIC 16F877A y quiero leer con el adc un voltaje que va entre 0 - 200mV
El adc lo tengo configurado a 10 bits y de la siguiente manera
setup_adc_ports( AN0_AN1_VSS_VREF );
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel( 1 );
y la conversion del dato en el codigo es la siguiente
data = read_adc();
voltaje = ( (float)data * 200 / 1023.0);
A la entrada del adc le estoy enviando un voltaje que varia entre 0-200mV a traves de un potenciometro que esta siendo alimentado por una fuente que la tengo ajustada para 200mV. Mas sin embargo no estoy obteniendo la lectura que deberia ser ya que lo estoy comparando con un multimetro y no me marcan lo mismo.
En hardware tengo conectado el pin 5 del pic o sea Vref+ a 700mV que es lo que he logrado bajar el Voltaje de entrada y el Vss o sea Vref- lo tengo conectado a tierra.
Mi duda esta en lo siguiente: no se si hay necesidad de conectar el Vss ( Vref-) al GND del circuito o ya va internamente conectado a traves del pic
o no se cual consideren que es mi problema.
y sucede que cuando no le tengo conectado nada a la entrada del adc me marca tambien el voltaje maximo, cosa que pienso no deberia suceder.
Espero me puedan ayudar, gracias.
-
Hola, a mi la fórmula me da de la siguiente manera
data = read_adc();
voltaje = ( (float)data * 700 / 1024);
si configuras la opción setup_adc_ports( AN0_AN1_VSS_VREF ); el pic toma como referencia gnd
Saludos
-
Alguna idea de porque marca el voltaje maximo cuando no lo tengo conectado a nada?
-
Bueno he estado investigando un poco con mi compañera y encontramos que el Vref+ no se puede bajar de Vdd - 2.5v, o sea que como tenemos una alimentacion de 5v no podemos bajarnos de 2.5v por lo tanto ahi ya estabamos mal.
Asi que pusimo el Vref+ a 3.6v y el Vref- a 2.7v ya que Vref- no se puede subir mas de Vdd-2v (3v en este caso) y tambien toca cumplir con la regla de Vref+ - Vref- <= 2v.
Pero ahora no se nos mueve nada la lectura; se nos quedo en 0v :s
Alguien sabe que podria estar pasando, algo en que nos puedan ayudar please.
-
Por que el A/D no es diferencial, sino single ended
si queres medir 200mV respecto a 0V entonces o pones Vref- a 0V y bajas lo mas posible Vref+ ( a pesar que pierdas un buen rango )
o te conseguis un A/D diferencial ( no se si llegara al rango ese de voltaje pero lo mas seguro que si se pueda, obviamente un ADC externo )
o aumentas la tension de entrada si podes ( amplificado con AO (no inversor, diferencial de instrumentacion,etc) o podes aumentar la tension de entrada ). Asi tu realacion quedaria multiplicada por la ganancia del AO.
o usas un conversor tension-frecuencia ajustado a 200mV, para simular lo mas posible al doble rampa de los voltimetros. Y podes simular lo que ocurre cuando se excede los 200mV de los voltimetros.
o Utilizar un micro con una VDD menor
Es lo unico que se me ocurre :)
Me explico:
(http://www.maximintegrated.com/en/images/appnotes/1108/DI150Fig08.gif)
Tu caso al ser single ended, lo que estas haciendo es poner AGND a 2.7V por lo tanto nunca va a existir una corriente que entre y cargue el capacitor del AD por que tenes como maximo 700mv de entrada. A no ser que puedas poner el comun de lo que vas a medir a 2.7V pero lo mas seguro es que traiga problemas.
-
A mi me ha pasado que si bajo mucho la referencia el conversor se vuelve muy inestable, no te queda fácil utilizar un AOP de instrumentación, puede ser el AD620,
-
No entiendo entonces para que ponen la opcion de referenciar el Vref- si solo va a funcionar estando conectado a gnd :s
-
No entiendo entonces para que ponen la opcion de referenciar el Vref- si solo va a funcionar estando conectado a gnd :s
Por que por ejemplo podes tener una entrada de 2.5V y que varia muy poco entonces pones tu referencia entren 2.2 y 2.8 por ejemplo ( aunque no se si es valido el rango de tension, pero se entiende el ejemplo )
Tambien tenes que pensar que es un micro de 5V por lo que se presupone que todo va a estar en un rango de 5V al menos.
A mi me ha pasado que si bajo mucho la referencia el conversor se vuelve muy inestable, no te queda fácil utilizar un AOP de instrumentación, puede ser el AD620,
Al menos creo que la solucion mas simple es con un AO, si es de instrumentacion como el que pasaste mejor, si es para un proyecto de una escuela o algo por el estilo podria utilizar cualquier AO a mano que posea, poner las resistencias de 5% de forma que 200mV se tradusca a 5V ( el maximo y que indicaria que se paso de escala cuando de 0x3FF el ADC ).
-
:s ok me toco cambiar la pcb que ya tenia
Gracias killer y diego por su tiempo para explicarme y aconsejarme :) Diego muchas gracias por tu recomendacion y killer muy amable como siempre con tus explicaciones.
Esta mañana ya acabo de ir por el ad620 y afortunadamente lo consegui :) ahora me pondre a leer y a trabajar con el.
Les queria pedir que me aconsejaran ya que tienen experiencia trabajando con este amp, como haria la conexion del circuito.
Hare lo que me dijeron de cuadrar la ganancia para obtener 5v a la salida teniendo una entrada de 200mV. Para esto necesito una ganancia de 25 y segun la formula del datasheet necesitare una resistencia de 2058 ohm.
Pero tengo dudas de como conectar, pongo los 200mV al in+ y al in- que iria?
Gracias y que pena la ignorancia.
-
Hola, lleva los 200mV al +in y el -in llévalo a GND
Saludos.
-
Hola Diego, he logrado que me bote 4.16v teniendo los 200mV en la entrada pero al mover esta señal de 0 a 200mV con un trimmer no noto ningun cambio en la salida del ampl.
Sabes que podria ser?
-
El AD620 debe estar configurado como lo muestra esta imagen y recuerda que para poder entregar 5V debe estar polarizado con 2 voltios más
-
El AD620 debe estar configurado como lo muestra esta imagen y recuerda que para poder entregar 5V debe estar polarizado con 2 voltios más
+VS − 1.2 (Maximo)
Hola Diego, he logrado que me bote 4.16v teniendo los 200mV en la entrada pero al mover esta señal de 0 a 200mV con un trimmer no noto ningun cambio en la salida del ampl.
Sabes que podria ser?
Que ganancia estas usando, tene en cuenta lo del limite de tension de salida del AO , creo que con 2.61Kohm te da una ganancia de casi 20, dejandote a 4V maxima escala, no tendrias problemas con el limite de tension del AO , pero deberias modificar la referencia de tu ADC, buscando AO rail-to-rail aun asi tienen una pequeña caida de tension, por lo que si queres llegar a 5V mejor alimentarlo con mas, tomando las precauciones necesarias en la entrada del ADC
-
Mmmmm ok ok entiendo, gracias nuevamente muchachos.
Por cierto acabo de cambiar el trimmer por el el sensor que voy a usar que es un SP-110, es un sensor de radiacion solar muy bueno por si les interesa para algun proyecto, ya logre que funcionara alimentandolo con +5v y -5v. Al parecer el trimmer era el que me estaba poniendo problemas ya que el voltaje nunca llegaba a 0 a la salida.
Tengo el Vref del ad620 conectado a tierra y el Vin- tambien. Estoy obteniendo una ganancia de 28 pero voy a modificarla para bajarla a 20 ya que con esos 28 se me pasa del rango del voltaje analogico que le puede entrar al pin segun el las referencias electricas del datasheet.
Y voy a usar un cargador que entrega 15vdc para alimentar el amp entonces y bajarlo con un regulador a 5v para alimentar el pic.
Alimentare entonces el amp con +15v y a gnd, ahi no tendria problemas cierto?
Hare esas pruebas esta tarde y les ire comentando como voy, gracias nuevamente :)
-
Bueno ya hice pruebas y no tuve resultados positivos :(
Alimente con +15v y el pin 4 lo envie a tierra y no trabaja bien no se porque me parece que solo funciona con V+ y V-
como hago para saber si mi ad620 funciona correctamente? estoy empezando a dudar de su buen estado.
adjunto el esquematico de como lo estaba conectando.
-
Prueba conectando el pin7 a +5V y el pin4 a -5V
-
Prueba conectando el pin7 a +5V y el pin4 a -5V
Hola Diego, ya asi era como lo probe antes y efectivamente funciono. Pero queria probar con una alimentacion V+ y gnd porque es mas sencillo implementar eso en pcb a tener que sacar los -5v adicionales pero pues hasta ahora no ha funcionado :s
-
Yo utilizo este circuito cuando requiero fuente dual a partir de una fuente sencilla, si necesitas más corriente cambia los transistores
-
Hola Diego, gracias lo probare :) estoy buscando que otros transistores podria necesitar por si acaso.
Por cierto estuve buscando sobre ese lm y me parece que sea muy bueno que sea single supply. No podria utilizarlo como amplificador para mi sensor en vez del ad620?
Que tantas ventajas trae el amp. de instrumentacion con respecto a un amp operacional normal?
-
Hola, he estado ocupado y no habia podido entrar nuevamente.
Bueno les comento que termine usando el LM358. La amplificacion de ganancia fue exitosa, estable y el integrado me sirvio con una sola alimentacion lo cual lo hizo mas sencillo.
Muchas gracias killer y diego por sus ayudas y recomendaciones, fueron de gran ayuda.
Les deseo lo mejor y que esten muy bien :)