¿Cómo puedo usar una entrada de 12 V en un pin Arduino digital?

38

Estoy creando un controlador para un sistema de 12 V usando un microcrontrolador Arduino Uno. Para las salidas, estoy usando un escudo de relé para cambiar los componentes de 12 V. Tengo un interruptor de alternancia de 12 V que enciende algunos componentes de 12 V en el sistema y quiero usar una señal de activación de este mismo interruptor para enviar a una entrada digital Arduino. Sé que el Arduino solo puede manejar 5 V máx. ¿Cuál sería la mejor manera de reducir los 12 V que salen del interruptor a los 5 V para la entrada?

EDITAR: El sistema es para usar en un automóvil. ¿Debería reducirse el amperaje de la batería del automóvil de alguna manera para no hacer estallar los componentes?

DW
fuente
3
el amperaje del automóvil es irrelevante: los componentes solo usan la cantidad de corriente que necesitan. La batería del automóvil es capaz de suministrar cientos de amperios, como los necesarios para el motor de arranque. Esto no significa que siempre haya cientos de amperios fluyendo y podría dañar las cosas. :)
KyranF

Respuestas:

44

¡Buenas noticias! ¡Esto va a ser barato! :-)

Un simple divisor de resistencia reducirá los 12 V a los 5 V que un Arduino puede digerir. El voltaje de salida se puede calcular como

VOUT=R2R1+R2VInorte

Los valores de resistencia en el rango de 10 kΩ son una buena opción. Si su R2 es de 10 kΩ, entonces R1 debería ser de 14 kΩ. Ahora 14 kΩ no es un valor estándar, pero 15 kΩ sí. Su voltaje de entrada será 4.8 V en lugar de 5 V, pero el Arduino lo verá como un nivel alto. También tiene un poco de margen en caso de que los 12 V sean demasiado altos. Incluso 18 kΩ todavía le proporcionarán un 4.3 V suficientemente alto, pero luego debe comenzar a pensar que los 12 V son demasiado bajos. ¿Se seguirá viendo el voltaje como alto? Me quedaría con los 15 kΩ.

editar
Usted menciona un entorno automotriz y luego necesita protección adicional. Los 12 V del automóvil nunca son del todo 12 V, pero la mayoría de las veces son más altos, con picos de varios voltios por encima de los 12 V nominales (en realidad, el nominal es más como 12.9 V, a 2.15 V por celda). diodo en paralelo con R2, y esto debería cortar cualquier voltaje más alto que los 5 V. del zener. Pero un voltaje zener varía con la corriente, y a la baja corriente de entrada que le dan las resistencias se cortará a voltajes más bajos. Una mejor solución sería tener un diodo Schottky entre la entrada del Arduino y el suministro de 5 V. Entonces, cualquier voltaje de entrada superior a aproximadamente 5.2 V hará que el diodo de Schottky conduzca, y el voltaje de entrada se limitará a 5.2 V. Realmente necesita un diodo de Schottky para esto, un diodo PN común tiene un 0.


El optoacoplador Better Michael es una buena alternativa, aunque un poco más caro. A menudo usará un optoacoplador para aislar la entrada de la salida, pero también puede usarlo para proteger una entrada como desee aquí.

ingrese la descripción de la imagen aquí

Cómo funciona: la corriente de entrada ilumina el LED infrarrojo interno, lo que provoca una corriente de salida a través del fototransistor. La relación entre la corriente de entrada y salida se llama CTR , para la relación de transferencia de corriente. El CNY17 tiene un CTR mínimo del 40%, lo que significa que necesita una entrada de 10 mA para una salida de 4 mA. Vamos por la entrada de 10 mA. Entonces R1 debería ser (12 V - 1.5 V) / 10 mA = 1 kΩ. La resistencia de salida tendrá que causar una caída de 5 V a 4 mA, entonces eso debería ser 5 V / 4 mA = 1250 Ω. Es mejor tener un valor un poco más alto, el voltaje no caerá más de 5 V de todos modos. Un 4.7 kΩ limitará la corriente a aproximadamente 1 mA.

Vcc es el suministro de 5 V del Arduino, Vout va a la entrada del Arduino. Tenga en cuenta que la entrada será inversa: será baja si los 12 V están presentes, alta cuando no lo está. Si no quiere eso, puede cambiar la posición de la salida del optoacoplador y la resistencia pull-up.

edit 2
¿Cómo no resuelve la solución de optoacoplador el problema de sobretensión? El divisor de resistencia es radiométrico: el voltaje de salida es una relación fija de la entrada. Si ha calculado 5 V de salida a 12 V de entrada, entonces 24 V de entrada dará 10 V de salida. No está bien, de ahí el diodo de protección.

En el circuito del optoacoplador puede ver que el lado derecho, que se conecta al pin de entrada del Arduino, no tiene ningún voltaje superior a 5 V en absoluto. Si el optoacoplador está encendido, entonces el transistor tomará corriente, utilicé 4 mA en el ejemplo anterior. Un 1.2 kΩ causará una caída de voltaje de 4.8 V, debido a la Ley de Ohm (corriente por resistencia = voltaje). Entonces el voltaje de salida será de 5 V (Vcc) - 4.8 V a través de la resistencia = 0.2 V, eso es un nivel bajo. Si la corriente fuera menor, la caída de voltaje también sería menor, y el voltaje de salida aumentará. Una corriente de 1 mA, por ejemplo, provocará una caída de 1.2 V, y la salida será de 5 V - 1.2 V = 3.8 V. La corriente mínima es cero. Entonces no tiene un voltaje a través de la resistencia, y la salida será de 5 V. Ese es el máximo, allí '

¿Qué pasa si el voltaje de entrada sería demasiado alto? Conecta accidentalmente una batería de 24 V en lugar de 12 V. Luego, la corriente del LED se duplicará, formando de 10 mA a 20 mA. El 40% CTR causará una corriente de salida de 8 mA en lugar de los 4 mA calculados. 8 mA a través de la resistencia de 1.2 kΩ sería una caída de 9.6 V. Pero desde un suministro de 5 V eso sería negativo, y eso es imposible; No puede ir por debajo de 0 V aquí. Entonces, aunque al optoacoplador le gustaría mucho dibujar 8 mA, la resistencia lo limitará. La corriente máxima a través de él es cuando los 5 V completos lo atraviesan. La salida será entonces realmente 0 V, y la corriente 5 V / 1.2 kΩ = 4.2 mA. Entonces, sea cual sea la fuente de alimentación que conecte, la corriente de salida no será mayor que eso, y el voltaje se mantendrá entre 0 V y 5 V. No se necesita más protección.

Si espera sobretensión, deberá verificar si el LED del optoacoplador puede manejar el aumento de corriente, pero los 20 mA no serán un problema para la mayoría de los optoacopladores (a menudo tienen una capacidad máxima de 50 mA), y además, eso es para el doble voltaje de entrada, que probablemente no sucederá IRL.

stevenvh
fuente
El sistema es para usar en un automóvil. ¿Debería reducirse el amperaje de la batería del automóvil de alguna manera para no hacer estallar los componentes? Soy nuevo en esto. Gracias
DW
@DW Uh-oh, auto! :-(. Actualizaré mi respuesta.
stevenvh
@DW - No, la capacidad de la batería del automóvil no importa. La corriente estará determinada por el voltaje (12 V) y la resistencia (25 kohm en total). Luego, de acuerdo con la Ley de Ohm, la corriente será de 12 V / 25 kohm = 0.5 mA. No importa si la batería es del tipo 40 Ah o del tipo 400 Ah; Las resistencias no permitirán más.
stevenvh
Eso es genial. Gracias por tu ayuda. Simplemente curioso, pero ¿funcionaría algo así? robotshop.com/ca/productinfo.aspx?pc=RB-Spa-750&lang=en-US
DW
2
@stevenvh Gracias Steve. Espero volver a favorecer a alguien que es nuevo en electrónica una vez que estoy seguro de ello. Gracias
DW
15

Una buena manera de aislar la señal del interruptor de 12 V sería pasarla a través de un optoacoplador. El circuito se configuraría de forma similar a la siguiente.

ingrese la descripción de la imagen aquí

Vi en el diagrama representa los 12V en su circuito que es conmutado por su interruptor (S1). Seleccione R1 para limitar la corriente a través de la parte D1 del optoacoplador a un nivel que esté dentro de las clasificaciones del componente que seleccione.

Los optoacopladores no son los componentes más rápidos del mundo, especialmente los más baratos, pero para el caso de una acción lenta como un interruptor controlado por humanos, la velocidad del acoplador es poco preocupante.

Michael Karas
fuente
15

También puede usar un diodo y una resistencia, de la siguiente manera:

esquemático

simular este circuito : esquema creado con CircuitLab

Haría que la resistencia sea bastante rígida, de lo contrario, estarás hundiendo mucha potencia de este circuito. La belleza de este circuito (en comparación con el divisor de voltaje) es que no le importa si su voltaje original es de 12V, 14V o 15V: será de 5V (en realidad 5.2-5.3V dependiendo del diodo) independientemente de El voltaje de entrada.

angelatlarge
fuente
eso es bastante inteligente, ¡+1 para la independencia de voltaje!
Florian Castellane
55
Cuidado con la sobretensión en la clasificación máxima absoluta del pin. Por ejemplo, la hoja de datos ATmega32u4: Voltaje en cualquier Pin con respecto a Tierra (8): -0.5V a VCC + 0.5V. Si usa un diodo regular, el voltaje será mayor que VCC + 0.5V si usa cualquier resistencia menor a 170kOhm. Creo que los diodos Schottky son los más seguros para esto.
cyberponk
13

Para la independencia del voltaje, use una resistencia para regular la corriente y un Zener para regular el voltaje, así:

esquemático

simular este circuito : esquema creado con CircuitLab

Con una resistencia de 30k, esto generará 4.99V y usará solo alrededor de 234uA @ 12Vin.
En este caso:
R1 consume 234uA x (12V - 4.99V) = 1.64mW
D1 consume 234uA x 4.99V = 1.17mW

Consumo total de energía: 2,81 mW (cuando la entrada es alta)

cyberponk
fuente
Para cualquier cosa visible, usaría LED + divisor de resistencia en serie para dar una señal de 5V a 12V y colocar el diodo zener en paralelo con la mitad inferior del divisor y el LED para proteger contra sobretensión. De esa manera, el LED se ilumina cuando tiene una señal de entrada y proporciona retroalimentación visual.
Goswin von Brederlow
@GoswinvonBrederlow, ¿puede dibujar el circuito led / diodo / circuito de resistencia?
chisporroteo
En el esquema anterior, configure R1 a 770 Ohm y agregue un 330Ohm y un LED rojo en paralelo al diodo Zener. Luego, a una entrada de 12 V ~ 9 mA fluirá a través del LED y obtendrá una señal de salida de 5 V. Si el voltaje de entrada sube, aunque el diodo zener limitará la señal de salida a 5.1V y protegerá tanto el arduino como el LED.
Goswin von Brederlow
-2

Un poco tarde pero en mi auto uso el LM7805. Funciona muy bien y es barato.

Ton Nies
fuente
1
No es tan barato como 2 resistencias o una resistencia y un diodo.
Dave Tweed
77
@TonNies Te equivocaste en la pregunta. OP no está buscando una tensión de alimentación para su controlador. Se trata más del acondicionamiento de señal.
Ariser
1
No hay nada de malo en usar el LM7805 para cambiar de nivel las señales de 12v.
chugadie
1
@chugadie: Pero un enfoque de exageración muy poco común y relativamente "costoso" si todo lo que quieres es bajar los 12V para un pin IO.
Rev1.0