¡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+R2VIN
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í.
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.