Mostrar voltaje sin usar ADC

Si venia usando el adc pero use el on off del lm2576 para controlar el encendido y apagado de mi fuente y me di cuenta que no puedo setear el voltaje al estar apagado, entonces tengo que cambiar el sistema de poder cambiar voltaje siempre y cuando piso el pedal y enciendo el integrado que este lo más parecido al valor que tenia el adc!
 
No sólo se apaga la muestra de tensión, se pone en cero, aprieto los pulsadores para poner una tensión y no marca nada pero esta funcionando, se ve recién cuando aprieto el pedal y enciendo el Lm2576.
 
Si, lo voy a buscar o tendría que hacelo otra vez, ya hace bastante que hice ésta fuente, quería cambiar lo de la muestra del voltaje en el lcd, si mantengo el pedal apretado y activo el Lm2576adj se ven voltaje y lo puedo modificar, cuando le saco masa al lm y lo apagó ahi tengo el problema de la muestra, por eso quería ya mostrarlo en el lcd directamente sin tomar la lectura del adc! Y no me queda, siempre se me pasa, no se como mover el ciclo activo y mostrar una tensión sin usar el adc !
 
Lo estoy armando otra vez, ésta fuente la hicimos hace bastante tiempo y no encuentro los esquemas, tengo el programa y la fuente armada, en breve voy a subir el esquema en Proteus!

Aquí está el esquema y lo que voy haciendo del programa, felicidades para todos.

Consulta, se puede tomar la medición, ejemplo adc con un optoacoplador?
 

Adjuntos

  • prueba.rar
    386.9 KB · Visitas: 9
Hola miembros del grupo, pude hacer lo más cercano la medición sin adc, lo único que puedo hacer es que corra cuando dejo apretado el botón!

Código:
void establecer_ciclo (int8 ciclo)
{
  


   set_pwm1_duty(ciclo);   // Establecer el ciclo activo
    lcd_gotoxy(1,2);
  
    porcentaje2 =(float) (ciclo * 70.0) / 1023;

   printf(lcd_putc," %.1f ",(double)porcentaje2);
}

ahí pude avanzar un poco en lo que estoy haciendo , me falta que lo que muestra en pantalla vaya con el voltaje y porque me lo da invertido en cero es el máximo , pero bueno gracias por la ayuda.
 
Hola grupo !! tengo un problema que no puede resolver no me da el conocimiento para hacerlo y no me doy la idea de como implementarlo, quiero hacer que el ciclo activo de mi fuente muestre el valor en pantalla del lcd sin usar el adc como medición, ya probé todas las formas y siempre me mete ruidos por el adc , puse todo los capacitores que hay !! le dejo el código y proteus en el archivo , mil gracias al que me pueda ayudar , busque algún ingeniero que me ayude y nada , saludos

cambien a usar el adc y lo estabilice bastante bien ahora cambie el display al Nokia 5110 y se me tilda cuando quiero usar las memorias del pic 18f2550 , dejo simulación y código !!!
 

Adjuntos

  • nokia5110.rar
    333.1 KB · Visitas: 5
  • nokia5110.rar
    332.5 KB · Visitas: 4
Buenas noches, estamos pasando por momentos difíciles, espero todos estén bien.

Hace algún tiempo estoy haciendo estabilizadores de tensión de red usando lectura ADC de un pic, resulta que me encontré un par de estabilizadores averiados y estos usaban un pequeño Pic12f508 para medir la tension y elegir la derivación correcta. Me di cuenta que este Pic NO tiene ADC me preguntaba cómo puede medirse la tensión sin ADC .

Pdt:el Pic12f508 tiene protección de lectura. :-\
 
Sin circuito donde ver, se hace imposible.
Para mi que lee 2 o 3 puertos donde tiene colocado una par de zener, si uno de los zener sobrepasa X voltaje, conduce y el PIC interpreta como voltaje elevado. Si el otro zener deja de conducir, entonces interpreta como bajo voltaje...
Es lo que se me ocurre
 
Sin circuito donde ver, se hace imposible.
Para mi que lee 2 o 3 puertos donde tiene colocado una par de zener, si uno de los zener sobrepasa X voltaje, conduce y el PIC interpreta como voltaje elevado. Si el otro zener deja de conducir, entonces interpreta como bajo voltaje...
Es lo que se me ocurre
Es algo difusa mi pregunta, invariablemente de los miles de circuitos que podrían funcionar en mi caso, diré de formaas específica.... Se puede medir y tension solo con el Pic antes mencionado? Si fuere así explicar la forma de hacerlo...,...
Mensaje automáticamente combinado:

Sin circuito donde ver, se hace imposible.
Para mi que lee 2 o 3 puertos donde tiene colocado una par de zener, si uno de los zener sobrepasa X voltaje, conduce y el PIC interpreta como voltaje elevado. Si el otro zener deja de conducir, entonces interpreta como bajo voltaje...
Es lo que se me ocurre
Pdt:no no tiene más que un puerto para lectura
 
¿Esto es una broma, un concurso de adivinanzas...?
No lo entiendo.
Es algo difusa mi pregunta, invariablemente de los miles de circuitos que podrían funcionar en mi caso, diré de formaas específica.... Se puede medir y tension solo con el Pic antes mencionado? Si fuere así explicar la forma de hacerlo...,...
Mensaje automáticamente combinado:


Pdt:no no tiene más que un puerto para lectura
No,tu pregunta es absolutamente difusa.
¿Un puerto de ocho pines o un GPIO de un pin?. El 12f508 tiene ocho pines, será un GPIO, osea un pin.

¿Se puede leer una tensión analógica con un pin digital sin mas? NO, NO SE PUEDE.
¿Y haciendo cosas ingeniosas?, si que se puede.
Básicamente implementando un ADC en el sentido amplio del término, no necesariamente un flash ni un sigma delta ni un... hay bastantes enfoques para conseguirlo.

Ahora bien ¿Cual es la pregrunta? ¿Que adivinemos que hizo nosequien en noseque circuito montado nosecomo que no podemos ni ver?
Si tienes dudas de un circuito, postea el circuito, saca el esquema, pon fotos, no sé preguntar por preguntar me parece absurdo.

Este hilo es de hace tiempo pero me parece recordar que en él hay comentados posibles métodos de leer un valor digital sin un "ADC al uso".
Por ejemplo un generador de rampa, un comparador y midiendo el tiempo. Osea implementando un conversor ADC de rampa.
 
Se me ocurre algún arreglo conversor tensión frecuencia o cualquier cosa similar... Llegados a ese punto se pone un pic un poco mejor que cuesta menos.
 
Última edición:
El viejo gameport de las PC incluia la lectura de la resistencia de un potenciómetro y lo hacía sin usar ADC. El principio de funcionamiento era simplemente medir el tiempo de carga de un condensador.

No es un ADC como se puede llegar a pensar, la lectura no es lineal , depende fuertemente de las variaciones de la tensión de umbral y de las variaciones por temperatura de la capacidad del condensador. Pero como es algo muy sencillo, para aplicaciones de baja resolución como es un estabilizador donde solamente hay que ver en qué rango se está para conmutar los relays --> sirve.

Con microcontroladores lo que se puede hacer es programar un puerto como salida para descargar un condensador y luego reprogramarlo como entrada para medir el tiempo que demora en cargarse hasta leer un '1'
No está en el ejemplo, pero luego se debe comparar la lectura con valores de una tabla para saber en rango se está y actuar en consecuencia.

sinAD.jpg

En el ejemplo el programa del micro es:
Código:
#include <12f508.h>
#FUSES NOWDT          //No Watch Dog Timer
#FUSES NOMCLR         //Master Clear pin used for I/O
#use delay(internal=4MHz)
#use FAST_IO(all)

#bit pinB0 = getenv("SFR:PORTB").0

int16 N  ;
//-----------------------------------
int16 Tcarga(){
int16 k ;

    set_tris_b(1) ;
    for(k=0 ; pinB0 == 0 ; k++);

    set_tris_b(0) ;
    pinB0=0 ;

    return k ;
}
//-----------------------------------

void main(void){

    set_tris_b(0) ;
    pinB0 = 0 ;

    while(1){

        N = Tcarga() ;    // Leo el tiempo de carga
                          // del condensador
/*
    Otras operaciones dentro del bucle ppal
.........
.........
*/
        delay_ms(200) ;  // Un retardo cualquiera para este ejemplo
    }
}


Hay que tener cuidado con la simulación porque al menos Proteus usa un modelo de entrada que llama "Digital" y vaya uno a saber por qué pero no mantiene constante el umbral donde la entrada pasa de detectar '0' a '1' y en consecuencia la lectura durante la simulación es inestable

Con compuertas, Proteus tiene la opción de usar un modelo 'Analógico" o 'Digital' para las entradas (obviamente el que funcionaría en este ejemplo es el 'Analógico') pero para micros NO.
 
@Eduardo: Eso que tu has definido es un ADC, de rampa concretamente. Pero no sabemos si es eso lo que usa.
Lo puedes hacer incluso "automático" usando interrupciones para medir el tiempo.

Normalmente se usan conversores de "doble rampa" porque son menos sensibles a si la señal de entrada se modifica mientras se está efectuando la conversión.

La ventaja es que son muy baratos y muy precisos. La desvantaja es que son muy lentos.

Hay vida mas allá de los conversores de aproximaciones sucesivas:
Este pdf está pero que muy bien, lo acabo de encontrar por casualidad.
 
Última edición:
No me refería a la definición de ADC sino a lo que uno espera de un ADC "normal", que es una lectura proporcional a la tensión. Esto te devuelve un número proporcional al tiempo transcurrido ligeramente no lineal respecto a la tensión.

El 12F508 solamente tiene 25 bytes de RAM, un timer de 8bits, solo 2 niveles de stack y no soporta interrupciones, lo que hagas tiene que ser en el bucle principal y no anidar subrutinas ni ser ambicioso con la RAM.
 
Arriba