Si me estoy quedando sin pines en un Arduino, a menos que compre otro o adquiera una placa Mega, ¿hay alguna forma de conectar más pines a una sola placa? ¿Debo preocuparme por sobrecargarla?
Respuestas
¿Demasiados anuncios?¿Has usado también todos tus pines analógicos? También se pueden utilizar como entrada/salida digital simplemente refiriéndote a ellos como pines digitales pines 14 a 19.
Después de haber utilizado todos ellos también podría considerar el uso de un registro de desplazamiento IC. Estos chips convertirán los datos serie en datos paralelo. Las versiones de 8 bits tomarán datos serie en tres pines y saldrán datos paralelos en 8 pines, dándote 5 pines extra. Una muy buena explicación es hecha por Dave Clausen en NYC Resistor .
De hecho, existe la posibilidad de sobrecargar tu arduino. No por usar demasiados pines, sino por tomar demasiada corriente de los pines, por conectar demasiadas cosas a tus pines. La hoja de datos del Atmega168 dice que los pines tienen una corriente máxima absoluta de 40mA. Esto equivaldría a dos LEDs en paralelo. Cualquier cosa más de un LED (20mA) debe ser conmutado a través de un transistor o matriz de transistores. Esto también se explica en el vídeo mencionado anteriormente y por Tom Igoe .
Sparkfun vende un multiplexor digital/analógico que permite controlar 16 pines con cinco en el Arduino. Es bidireccional por lo que también se puede utilizar para la entrada.
He estado pensando en usar esto... http://www.neufeld.newton.ks.us/electronics/?p=241 Ampliación de E/S de Arduino mediante I2C. Parece muy prometedor, todavía no he llegado a pedir los chips. También es un muy buen tutorial sobre el uso de I2C.
Si usted termina consiguiendo otro microcontrolador, me gusta el sanguino por al menos cuatro razones:
- tiene un montón más de E/S que el Atmega 168/368 (32 pines de propósito general propósito general, frente a 14). Al igual que el Arduino, 8 pines pueden hacer ADC, 6 pueden hacer PWM, pero hay un puerto puerto serie por hardware.
- es 5 dólares más barato*,
- con 64K de flash, nunca ev cerca de quedarme sin memoria, y
- tienes que montarlo tú a partir de un kit.
El Arduino Mega hace tiene más pines PWM -- 14, pero no creo que los multiplexes.
--
*Sanguino parece ir a por $25, Arduino for $ 30, aunque necesitarás un cable USB-a-TTL de 20 $ si necesitas usar un puerto USB para programarlo, donde el Arduino tiene USB incorporado.
Hay muchas opciones para ampliar el número de entradas y salidas disponibles. Para una entrada analógica es habitual utilizar multiplexores analógicos (como el 4051 disponibles como 74HC4051 y CD4051) que permiten conmutar entre 8 fuentes analógicas utilizando 3 líneas digitales y 1 entrada analógica.
Una opción muy utilizada para las E/S digitales es añadir registros de desplazamiento TTL (o CMOS). Los registros de desplazamiento vienen en dos variedades principales, el "serial in, parallel out" (como el 74HC595 ) que son útiles para ampliar el número de salidas digitales que tiene tu proyecto y "parallel in, serial out" (como el 74HC165 ) que permite añadir más entradas digitales.
Tom Igeo tiene un buen artículo sobre Controlar muchas salidas desde un microcontrolador
Puedes sobrecargar la salida del Arduino si intentas "fanout" demasiado lejos. Cada circuito integrado que conectas a una salida consume corriente de esa salida. Si cargas muchos circuitos integrados en la misma salida (o conjunto de salidas) pueden intentar consumir más de lo que las salidas del Arduino pueden soportar. Para solucionar este problema puedes colocar chips de búfer no inversor (como el 74LS07) entre algunos de los circuitos integrados.
- Ver respuestas anteriores
- Ver más respuestas