Go Down

Topic: Como sacar más voltios de los que permite arduino (Read 3688 times) previous topic - next topic

ivan_navas1

Hola a todos, me estoy iniciando en el mundo de arduino y estoy en un proyecto en el que se me plantea el siguiente problema. Se trata de usar arduino para recibir una señal de 0 a 10 Voltios y dependiendo de unas condiciones que comprobará el arduino, necesito que este saque de 0 a 10 voltios. Bien, he solucionado el tema de la entrada usando un divisor de tension con dos resistencias para bajar el máximo voltaje (10 voltios) al máximo permitido por arduino (5 voltios). El problema viene cuando quiero sacar más de 5 voltios. No se si existe alguna forma de hacer esto, así que espero que me ayudar.

Un saludo.

surbyte

Hipotética situación que quieres crear un DAC usando PWM que es algo factible.
Usas esto


ivan_navas1

Perdona, pero no entiendo muy bien lo que hace el circuito. Es posible hacer que arduino mande más de 5 voltios?

surbyte

Amigo, es un amplificador operacional con ganancia 2.
Entran 5 salen 10.
Entre 2.5 salen 5

La salida PWM del arduino es filtrada por el filtro pasabajos Resistor 10k y capacitor 1uF y luego esa tensión de la entrada NO INVersora del Operacional será amplificada 2 veces.
Simple. En un AO (amplificador operacional) lo que ve una entrada es lo que ve la otra. Si tienes 2.5V a la entrada la otra tendra 2.5V (idealmente) o sea que en el punto medio del divisor resistivo 10k + 10k tienes 2.5V y por ende a la salida del AO tendras 5V.
Asi para cualquier valor presente a la entrada.
Requieres una fuente de 15V y el AO LM358.
Simple y funciona.

todo lo que leas con valor = analogRead(A0); por ejemplo, tendrá valores entre 0 y 1023
Debes usar una función map que te convierte todo entre 0 y 255
Es como una regla de 3, proporcional. Todo lo que entre sera convertido a valores entre 0 y 255.
Lo terminas enviando por un pin supongamos el 9
usando analogWrite(9, ValorMapeado);

Espero se entienda

ivan_navas1

Perfecto, el problema es que no necesito en la salida el doble que en la entrada, me explico. Puedo tener en la entrada 4 voltios y en la salida por ejemplo necesitar mandar 6 voltios.

surbyte

Y donde dices eso en el post#1?
Yo te resolví el problema hasta 10.
Quieres menos reduce la ganancia.
No se cuanto menos.. no lo has dicho. Analiza con una entrada de 0-5 quiero tal cosa.
Por ejemplo si fuera 6 máximo
Ganancia 6/5 = 1.2 
Resistencias del mismo circuito. 
La de abajo a la salida 10k. La de arriba 12k.
Listo

ivan_navas1

Perdon surbyte, de primeras creo que no te entendí. A ver si lo he entendido. Imaginemos que leo un pin de entrada en el que me llegan ya mapeado 3 voltios. Ahora segun unos ciertos parámetros que analizaré en el programa necesito mandar una señal de 7 voltios con lo cual lo que tendría que hacer sería un analogwrite(9,3.5).
Mandaría al AO 3.5 voltios (mapeado entre 0 y 255) y el AO me daría como salida los 7 voltios que necesito, es así?
Perdón por mi desconocimiento pero soy informático y de circuitos eléctricos y electrónica en general se muy poco.

surbyte

Si es asi. Pero para el cálculo de la ganancia que determinará el valor máximo a la salida puedes determinarlo como en el ejemplo anterior o directamente pones un potenciometro o preset de 10k con el cursor unido a un extremo y agregando una R en serie de 1k para evitar que te quede en 0 ohms. me entiendes.
Entonces podras regularlo y para el máximo de tensión de entrada tendrás la tensión maxima que quieras hasta... aproximadamente 10V o algo mas.  
Tu velo de este modo
Ventrada = 0 a Vin
Vsalida = 0 a Vout

donde Vin es la máxima tensión de entrada y Vout es la correspondiente máxima tensión de salida.
Asi que aplicas la maxima tensión de entrada y cuando analogWrite(Pin, 255); o sea el máximo PWM eso dará el máximo Vin y por ende con el potenciometro ajustas el máximo que tu buscas.
Ahora si?

ivan_navas1

Perfecto! Lo probaré! Muchísimas gracias por todo!

Go Up