Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

05/12/2012 #1


Detección de 3V en vez de 5V - ADC en ATMEGA88
Hola a todos,

Quería agradecer al foro por brindar un espacio para los diseñadores y poder apoyarnos a fin de lograr mejorar nuestros proyectos y aprender siempre nuevas cosas.

El motivo por el que ahora hago consulta es debido a la prueba que hago de un circuito en PROTEUS con un microcontrolador ATMEGA88, el detalle es este:

-Programa configurado para detectar ADC del voltaje de una resistencia variable de 1k, conectado por un extremo al VCC=5v (predeterminado por el PROTEUS), el otro extremo a GND (tierra) y el punto variable es la entrada a mi pin ADC1 del atmega88 (PC1)

-cuando simulo el software me detecta la variación de voltaje, pero el detalle esta en que cuando coloco la resistencia al 60% va ok, pero valores mayores a este (>61%), se resetea parece los valores y para 61% en vez de detectar el valor continuo, inicia nuevamente como si fuera 0V, cuando si sacamos cálculos es aproximadamente 3V.

Quería saber si ha alguien le paso esto y como lo soluciono.

Espero su ayuda y gracias por su comprensión.

Saludos.

Diego.
05/12/2012 #2

Avatar de Ajna

Lo mas probable es que configuraste mal el ADC del atmega88, checa bien la referencia que estas utilizando para el ADC, no me acuerdo que referencias tiene, si mal no recuerdo su referencia interna es de 2.5 V, entonces cuando pasas de ese nivel te muestra mal los valores
05/12/2012 #3


eso es lo que creo que esta mal mira por ejemplo estoy usando esta configuración

void ini_ADC()
{
ADMUX=(1<<REFS0); // For Aref=AVcc;
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); //prescalar div factor =128
}

se supone que ahí toma mi voltaje de referencia con el que se alimenta y esta sería la conexión



05/12/2012 #4

Avatar de Ajna

ADMUX = (1<<REFS0) esto deja todo el registro de ADMUX en cero y solamente en 1 el bit REFS0
ADMUX |= (1<<REFS0) esto pone a 1 el bit REFS0 y deja todos los demas bits iguales
Toma en cuenta ese dato, ahorita no tengo lector de PDF para checar la hoja de datos del atmega88
Pero lo unico que tienes que asegurar es:
Que la frecuencia de muestreo sea menor que 200Khz, esto si quieres lograr los 10 bits de resolucion.
Asegurate que el bit ADLAR no esta activado, si es que quieres la resolucion de 10 bits, si no es el caso entonces activa esta funcion
Seleccionar la referencia correcta, puedes probar a usar la referencia interna
Seleccionar el pin de entrada para el ADC

Si Aref=AVcc la conexion que tienes del hardware esta bien, solo checa bien en la hoja de datos que este bien la seleccion de la referencia y de la frecuencia de muestreo que sea menor a 200Khz si quieres la resolucion de 10 bits y que no estes activando el bit ADLAR o en su defecto si estas usando resolucion de 8 bits, entonces checa que la frecuencia de muestreo sea superior a 200Khz y que el bit ADLAR este activo, y que leas solamente el byte alto del registro ADC, osea ADCH.

Justo me agarraste en un momento en el que no tengo disponible ninguno de mis documentos, porque vendi mi compu y esta es prestada y no tiene nada mas que windows xp jejeje
05/12/2012 #5


Verdad no? xD veo la corrección del ADMUX que me mencionaste y te juro que casi me orino de risa porque es un error un poco básico xD.

pero voy a probar según lo que me comentas porque según la configuración que estoy haciendo si esta dentro de la frecuencia permitida para los 10 bits y el voltaje entonces estaría OK.

A ver voy a probar y comento si funciono.

Muchas gracias.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.