Pines en un Arduino

Si me estoy quedando sin pines en un Arduino, aparte de comprar uno segundo o conseguir una placa Mega, ¿hay alguna forma de estar más conectado a una placa? ¿Debo preocuparme por sobrecargarlo?

Respuestas (8)

¿También has usado todos tus pines analógicos? También se pueden usar como entrada/salida digital simplemente refiriéndose a ellos como pines digitales pines 14 a 19.

Después de que los haya usado todos, también podría 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 generarán datos paralelos en 8 pines, lo que le dará 5 pines adicionales. Dave Clausen de NYC Resistor hace una muy buena explicación .

De hecho, existe la posibilidad de sobrecargar tu arduino. No usando demasiados pines, sino extrayendo demasiada corriente de los pines, conectando demasiadas cosas a tus 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 LED en paralelo. Todo lo que sea más de un LED (20 mA) debe cambiarse a través de un transistor o una matriz de transistores. Esto también se explica en el video mencionado anteriormente y por Tom Igoe .

Además, el ATMega168 tiene una corriente máxima de 200 mA a través de los pines Vcc y Gnd (cada uno), por lo que conducir o hundir más de diez LED a través de un Arduino probablemente también sea una mala idea (dada la corriente común de 20 mA utilizada para encender LED).

Sparkfun vende un multiplexor digital/analógico que permite que 16 pines sean controlados por cinco en el Arduino. Es bidireccional, por lo que también puede usarlo para la entrada.

He estado jugando con el uso de este... http://www.neufeld.newton.ks.us/electronics/?p=241 Expansión de E/S de Arduino usando I2C. Parece muy prometedor, todavía no he pedido las fichas. También es un muy buen tutorial sobre el uso de I2C.

Si termina comprando otro microcontrolador, me gusta el sanguino por al menos cuatro razones:

  1. tiene muchas más E/S que el Atmega 168/368 (32 pines de uso general, en lugar de 14). Al igual que Arduino, 8 pines pueden hacer ADC, 6 pueden hacer PWM, pero hay un puerto serie de hardware adicional.
  2. es $5 más barato*,
  3. con 64K de flash, nunca llegué a quedarme cerca de quedarme sin memoria, y
  4. puedes armarlo tú mismo a partir de un kit.

El Arduino Mega tiene más pines PWM: 14, pero no creo que los multiplexes.

--

* Sanguino parece costar $ 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 interruptores DS2406 1wire.

Con uno de estos, puede usar un solo pin para cambiar una cantidad mucho mayor de dispositivos. Será más lento que voltear el pin IO directamente, por supuesto, y usará más memoria ya que tiene que direccionar los dispositivos a través de ese puerto (esto puede cambiarse por más velocidad si lo desea).

Hay muchas opciones para ampliar el número 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 le permiten cambiar entre 8 fuentes analógicas usando 3 líneas digitales y 1 entrada analógica.

Una opción comúnmente utilizada para E/S digital es agregar registros de desplazamiento TTL (o CMOS). Los registros de desplazamiento vienen en dos variedades principales, "entrada en serie, salida en paralelo" (como el 74HC595 ) que son útiles para ampliar la cantidad de salidas digitales que tiene su proyecto y "entrada en paralelo, salida en serie" (como el 74HC165 ) que le permite para agregar más entradas digitales.

Tom Igeo tiene un buen artículo sobre el control de muchas salidas desde un microcontrolador

Puede sobrecargar la salida de Arduino al tratar de 'desaparecer' demasiado. Cada IC que conecta a una salida extrae corriente de esa salida. Si carga muchos circuitos integrados en la misma salida (o conjunto de salidas), es posible que intenten dibujar más de lo que pueden manejar las salidas de Arduino. Para remediar este problema, puede colocar chips de búfer no inversores (como el 74LS07) entre algunos de los circuitos integrados.

Si está manejando LEDS, puede considerar charlieplexing.

Este producto es una forma simple y económica de agregar pines a su Arduino. Hay una biblioteca de código abierto fácil de usar para acceder a los nuevos pines:

http://nootropicdesign.com/ez-expander/