Si me estoy quedando sin pines en un Arduino, a falta de comprar un segundo o de obtener una tarjeta Mega, ¿hay alguna manera de estar más conectado a la tarjeta? ¿Debo preocuparme por sobrecargarla?
Si me estoy quedando sin pines en un Arduino, a falta de comprar un segundo o de obtener una tarjeta Mega, ¿hay alguna manera de estar más conectado a la tarjeta? ¿Debo preocuparme por sobrecargarla?
¿También has usado todos tus pines analógicos? También se pueden utilizar como entrada / salida digital simplemente refiriéndose a ellos como pines digitales 14 a 19.
Después de usarlos todos también, puede considerar usar un IC de registro de desplazamiento. Estos chips convertirán los datos en serie en datos paralelos. Las versiones de 8 bits tomarán datos en serie en tres pines y emitirán datos en paralelo en 8 pines, lo que le otorga 5 pines adicionales. Una muy buena explicación la realiza Dave Clausen en la Resistencia de la Ciudad de Nueva York .
En realidad, existe la posibilidad de sobrecargar tu arduino. No utilizando demasiados pines, sino extrayendo demasiada corriente de los pines, conectando demasiadas cosas a sus pines. La hoja de datos de Atmega168 dice que los pines tienen una corriente máxima absoluta de 40 mA. Esto sería equivalente a dos LEDs en paralelo. Cualquier cosa más que un LED (20mA) debe cambiarse a través de un transistor o matriz de transistores. Esto también se explica en el video mencionado anteriormente y en Tom Igoe .
Sparkfun vende un multiplexor digital / analógico que permite que 16 pines estén Controlado por cinco en el Arduino. Es bidireccional, por lo que también puede usarlo para la entrada.
Si terminas por otro microcontrolador, me gusta el sanguino por al menos cuatro razones:
El Arduino Mega tiene más pines PWM - 14, pero no creo que los multiplexes.
-
* Sanguino parece ir por $ 25, Arduino por $ 30, aunque necesitará un cable USB a TTL de $ 20 si necesita usar un puerto USB para programarlo, donde Arduino tiene USB incorporado.
Escribí una biblioteca para controlar los conmutadores 1wire DS2406.
Con uno de estos, puedes usar un solo pin para cambiar un número mucho mayor de dispositivos. Por supuesto, será más lento que voltear el pin IO directamente, y usará más memoria, ya que tiene que dirigir los dispositivos a través de ese puerto (esto puede cambiarse por más velocidad si lo desea).
Hay muchas opciones para ampliar la cantidad de entradas y salidas que tiene disponibles. Para una entrada analógica es común usar multiplexores analógicos (como el 4051 , disponible como 74HC4051 y CD4051) que permiten cambiar entre 8 fuentes analógicas utilizando 3 líneas digitales y 1 entrada analógica.
Una opción comúnmente utilizada para IO digital es agregar registros de desplazamiento TTL (o CMOS). Los registros de turnos vienen en dos variedades principales, el "serial in, paralelo out" (como el 74HC595 ) que son útiles para ampliar el número de salidas digitales que tiene su proyecto y "entrada paralela, salida en serie" (como 74HC165 ) que le permite agregar más entradas digitales.
Tom Igeo tiene un buen resumen en Control de muchas salidas de un microcontrolador
Puedes sobrecargar la salida de Arduino intentando 'fanout' demasiado lejos. Cada IC que se conecta a una salida extrae la corriente de esa salida. Si carga muchos circuitos integrados en la misma salida (o conjunto de salidas), podrían intentar dibujar más de lo que pueden manejar las salidas de Arduino. Para solucionar este problema, puede colocar chips de búfer sin inversión (como el 74LS07) entre algunos de los circuitos integrados.
Si está conduciendo LEDS, puede que tenga que ver con charlieplexing.
Este producto es una forma sencilla y económica de agregar pins a su Arduino. Hay una biblioteca de código abierto fácil de usar para acceder a los nuevos pines: