¡Buenas noticias! ¡Esto va a ser barato! :-)
Un simple divisor de resistencias bajará los 12 V a los 5 V que puede digerir un Arduino. La tensión de salida se puede calcular como
\$ V_{OUT} = \dfrac{R2}{R1+R2} V_{IN}\$
Los valores de las resistencias en el rango de 10 kΩ son una buena opción. Si tu 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í lo es. Su voltaje de entrada será de 4,8 V en lugar de 5 V, pero el Arduino verá que todavía como un alto nivel. También tienes un poco de margen de maniobra en caso de que los 12 V sean demasiado altos. Incluso 18 kΩ todavía le dará un nivel suficientemente alto 4,3 V, pero entonces usted tiene que empezar a pensar en el 12 V un poco demasiado bajo. Se verá el voltaje todavía como alto? Yo me quedaría con los 15 kΩ.
editar
Mencionas un entorno automovilístico, y entonces sí necesitas algo de protección extra. Los 12 V del coche nunca son del todo 12 V, sino que la mayoría de las veces son más altos, con picos de varios voltios por encima de los 12 V nominales. (En realidad, los nominales son más bien 12,9 V, a 2,15 V por célula.) Puedes colocar un diodo zener de 5 V en paralelo con R2, y esto debería cortar cualquier tensión superior a los 5 V del zener. Una mejor solución sería tener un diodo Schottky entre la entrada del Arduino y la alimentación de 5 V. Entonces, cualquier tensión de entrada superior a unos 5,2 V hará que el diodo Schottky conduzca, y la tensión de entrada se limitará a los 5,2 V. Realmente necesitas un diodo Schottky para esto, un diodo P-N común tiene una caída de 0,7 V en lugar de los 0,2 V del Schottky, y entonces la tensión de entrada máxima de 5,7 V puede ser demasiado alta.
Mejor
El optoacoplador de Michael es una buena alternativa, aunque un poco más caro. A menudo se utiliza un optoacoplador para aislar la entrada de la salida, pero también se puede utilizar para proteger una entrada como se quiere 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 la de salida se denomina CTR para el Ratio de Transferencia 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 a 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 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 la alimentación de 5 V del Arduino, Vout va a la entrada del Arduino. Ten en cuenta que la entrada será inversa: estará baja si los 12 V están presentes, y alta cuando no lo estén. Si no quieres eso, puedes intercambiar la posición de la salida del optoacoplador y la resistencia de pull-up.
editar 2
¿Cómo es que la solución del optoacoplador no resuelve el problema de la sobretensión? El divisor de resistencias es ratiométrico: la tensión de salida es una proporción fija de la entrada. Si has calculado para 5 V de salida a 12 V de entrada, entonces 24 V de entrada darán 10 V de salida. No está bien, de ahí el diodo de protección.
En el circuito del optoacoplador puedes ver que el lado derecho, que se conecta al pin de entrada del Arduino no tiene ningún voltaje superior a 5 V. Si el optoacoplador está encendido entonces el transistor consumirá corriente, he utilizado 4 mA en el ejemplo anterior. Un 1,2 kΩ provocará una caída de tensión de 4,8 V, debido a la Ley de Ohm (corriente por resistencia = tensión). Entonces la tensión 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 tensión también sería menor y la tensión de salida aumentaría. 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 tienes un voltaje a través de la resistencia, y la salida será de 5 V. Ese es el máximo, no hay nada ahí que te dé un voltaje mayor.
¿Y si la tensión de entrada fuera demasiado alta? Accidentalmente conectas una batería de 24 V en lugar de 12 V. Entonces la corriente del LED se duplicará, de 10 mA a 20 mA. El CTR del 40 % provocará 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 una alimentación de 5 V eso sería negativo, y eso es imposible; aquí no se puede bajar de 0 V. Así que mientras el optoacoplador querría consumir 8 mA, la resistencia lo limitará. La máxima corriente a través de él es cuando los 5 V completos están a través de él. La salida será entonces realmente 0 V, y la corriente 5 V / 1,2 kΩ = 4,2 mA. Así que, sea cual sea la fuente de alimentación que conectes, la corriente de salida no subirá más que eso, y el voltaje se mantendrá entre 0 V y 5 V. No hace falta más protección.
Si esperas una sobretensión tendrás que comprobar si el LED del optoacoplador puede soportar el aumento de corriente, pero los 20 mA no serán un problema para la mayoría de los optoacopladores (suelen tener una capacidad máxima de 50 mA), y además, eso es para doble tensión de entrada, lo que probablemente no ocurrirá en la vida real.
4 votos
el amperaje del coche es irrelevante: los componentes sólo utilizan la corriente que necesitan. La batería del coche es capaz de suministrar cientos de amperios, como los que necesita el motor de arranque. Esto no significa que siempre haya cientos de amperios fluyendo y que puedan dañar las cosas :)