Pregunta:
Cómo conectar más de 10 sensores a Arduino uno r3
Mr. Robot
2014-06-06 00:06:41 UTC
view on stackexchange narkive permalink

¿Cómo puedo conectar más de 10 sensores a Arduino Uno R3? Lo calculé y puedo conectar solo 4 sensores de llama de fuego (sensores que pueden encontrar un incendio (una vela, por ejemplo)) y tal vez 1 sensor ultrasónico. Necesito más para mi proyecto. Necesito un sensor de infrarrojos, un sensor de llama de fuego en cada lado y 1 sensor ultrasónico en el frente. Además, necesito conectar 2 motores DC, 1 ventilador y 1 servomotor para sensor ultrasónico. ¿Como puedo resolver esto? ¿Debo comprar Arduino Mega?

Hacer un bus con protocolo y algunos dispositivos de bus :)
Y si no quiere hacer un bus: cuente los pines / protocolos que necesita usar. Haz un buen diagrama con él. Y juzga tus requisitos
Quiero saber cómo leer la grabación en una computadora. Soy un principiante
¿Sabes cómo solucionar el problema mencionado anteriormente con el multiplexor TCA9548A?
Cuatro respuestas:
#1
+7
Dariusz
2014-06-08 16:07:37 UTC
view on stackexchange narkive permalink

Puede aumentar fácilmente el número de pines de E / S utilizando un expansor, p. ej. PCF8574. El expansor se puede conectar usando sus pines SCL / SDA ubicados junto a los pines GND / AREF. (Aquí puede encontrar una foto detallada: http://forum.arduino.cc/index.php?topic=84190.0) Puede conectar hasta 8 expansores de este tipo para ampliar el número de pines digitales a 64.
Una vez que lo conecte, aquí hay un fragmento de código de cómo usarlo:

  #include <PCF8574.h> // biblioteca disponible en: https://github.com/skywodd/pcf8574_arduino_libraryvoid setup () {sensores PCF8574; sensores.begin (0x20); // 0x20 significa que conectó los pines A0, A1, A2 de PCF8574 a los sensores de tierra.pinMode (0, INPUT_PULLUP); Sensores.pinMode (1, INPUT_PULLUP); /*...*/} bucle vacío () {byte sensorValue = sensores.digitalRead (0); // lee el valor digital del primer sensor conectado al pin 0 del expansor PCF8574 /*...*/}

Puede leer más con este tutorial (nota : utilizan una interfaz de cable, por lo que el código será diferente. Elija el que prefiera).

#2
+2
ryeager
2014-06-06 03:48:03 UTC
view on stackexchange narkive permalink

No recomendaría la multiplexación, pero estoy de acuerdo en que una forma es agregar una segunda MCU.

Otra mejor opción es utilizar un registro de desplazamiento de N bits. Estos son pequeños circuitos integrados que son exactamente lo que el nombre implica: registros de desplazamiento, y son mucho más fáciles de configurar e interconectar que desperdiciar otro microcontrolador para agregar E / S o multiplexación (lo que limita su aplicación). Efectivamente, cambia la configuración de E / S que desea y luego puede bloquear esos registros cuando tiene la secuencia de E / S adecuada cargada en el registro. En otras palabras, si quisiera tener 8 nuevos pines de E / S, podría conectar un registro de desplazamiento de 8 bits a mi MCU y si quisiera 4 de los primeros pines ALTO y los últimos 4 bajos, cambiaría en 00001111b, luego bloquee los datos para que aparezcan en la salida como si fuera un pin de E / S normal en la MCU.

Solo requieren unos pocos pines para operarlos (, por lo que esta es una manera fácil de agregar más sensores a su sistema. Como siempre, consulte la hoja de datos para asegurarse de que el IC cumpla con sus especificaciones (en términos de consumo de corriente, voltaje, etc.).

Una desventaja de esto es que para un registro de desplazamiento de N bits, quemará N ciclos de reloj para cargar los datos. Para la mayoría de las aplicaciones, esto debería estar bien, pero Vale la pena señalarlo. También crea un código un poco más complejo (aunque estoy seguro de que hay bibliotecas para ellos).

Nota: Vi que mencionaste controlar cosas como motores de CC, etc. Asegúrese de que no está tratando de manejarlos directamente con los pines de E / S y está usando un interruptor o transistor para controlar este tipo de periféricos.

#3
+1
Anonymous Penguin
2014-06-06 02:50:46 UTC
view on stackexchange narkive permalink

El Mega es la forma más fácil de conseguir muchos pines es, como dijiste, el Mega. Tiene muchas otras ventajas, como más amperaje, más memoria y más puertos UART. Recomiendo encarecidamente hacer esta ruta para un principiante, incluso si obtiene un clon en lugar de un tablero oficial. Si nada de esto sería una ventaja para usted, hay algunas cosas diferentes.

  • Segunda MCU. Puede obtener otro chip idéntico al Uno para conectarse. Esto se denomina ATmega independiente. Son bastante baratos. I 2 C es la forma más fácil de conectarlos, usando solo dos pines de cada chip. La configuración dependerá del proyecto.
  • Multiplexación. Hay una manera de conectar más cosas que pines en el Arduino. Esto se llama multiplexación . Afecta un poco el rendimiento, pero para algunas aplicaciones vale la pena. Nota: esto no funcionará bien con bibliotecas o SPI / I 2 C. El chip 4051 parece un chip decente. El patio de juegos de Arduino tiene un buen artículo de introducción sobre este chip..
#4
  0
Zeph
2016-03-15 14:27:59 UTC
view on stackexchange narkive permalink

Hay varias formas de obtener más entradas y salidas, con diferentes implicaciones. Y depende de los tipos de sensores y de las bibliotecas o fragmentos de código que desee utilizar.

Lo primero que debe hacer es enumerar los sensores que desea, junto con el tipo de interfaz que utiliza cada uno. ; Yo uso una hoja de cálculo.

Por ejemplo, un sensor de llama podría usar una sola salida digital (yendo a una entrada digital en el Arduino), con el umbral establecido con una olla en el módulo. O podría emitir una señal analógica que va a una entrada analógica en el Arduino, lo que permite que el código detecte la intensidad o establezca umbrales variables sin necesidad de mover la olla. Cada enfoque tiene implicaciones diferentes.

Hay otras interfaces de sensor y actuador además de estas dos (digital simple y analógica). Algunos dan un valor variable (como analógico) pero basado en el tiempo de un pulso en una señal digital; así es como funcionan los telémetros ultrasónicos más económicos. Y, por supuesto, hay sensores que usan estándar (I2C o SPI) o propietario (protocolo de un cable, o los sensores de humedad DHT-xx temp &).

Asimismo, algunas salidas necesitarán PWM u otra señal, más allá de un simple encendido / apagado.

Las entradas o salidas digitales extra simples se pueden obtener con bastante facilidad con extensores I2C o con registros de desplazamiento. Por ejemplo, verificar un sensor de llama de salida digital o encender una luz.

Se pueden realizar entradas analógicas adicionales con multiplexación analógica (como un interruptor electrónico), o mediante módulos ADC externos usando I2C o SPI.

Si se requiere tiempo, hay problemas potenciales mayores. A menudo, usaría una biblioteca para manejar tales cosas.

Bibliotecas. La mayoría de las bibliotecas de sensores y actuadores se escribirán para usar pines de entrada y salida directa en Arduino. Es posible que pueda pasar un número de PIN al inicializar, pero si está usando un registro de desplazamiento o un extensor, no hay forma de decirle a la biblioteca cómo usar su extensión personalizada. En este caso, tendrá que rodar nuestro propio código sin usar la biblioteca, o hacer una versión modificada de la biblioteca que haga E / S a través de su hardware de extensión de hardware.

Funciones especiales de los pines. Un segundo problema son las funciones especiales de los pines; si la biblioteca o el fragmento de código que desea usar espera usar una característica especial de un pin (como una interrupción de pin o una captura de entrada de temporizador), es posible que no esté disponible en su hardware de extensión o que sea un trabajo adicional de manejar. Por ejemplo, algunos extensores pueden señalar un pin de interrupción en el Arduino cuando cambia una de sus entradas, pero tendrá que escribir su propio controlador de interrupciones para detectarlo y reemplazar la funcionalidad de la interrupción directa del pin.

Tiempo. Y un tercer problema es que a veces es difícil administrar un tiempo ajustado a través del hardware de extensión.

La mayoría de estos se pueden resolver con el esfuerzo adecuado, a veces fácil ya veces no. Revise su lista de sensores y actuadores; Determine cuáles se pueden conectar más fácilmente al hardware de extensión (como un registro de desplazamiento) y cuáles deben conectarse directamente al Arduino para simplificar o mejorar el rendimiento. Podría tener suerte.

Recomendaciones

1) Si puede manejar sensores o actuadores sofisticados con pines directos, y cubrir los simples con registros de desplazamiento o chips extensores I2C, esa es una opción viable. Por ejemplo, si su código quiere verificar ocasionalmente si se ha detectado una llama (versión digital), o quiere encender un motor, no es tan difícil pasar por un registro de cambio en lugar de hacer un acceso directo al pin.

2) Si va más allá de eso y se queda sin pines para cosas que son mucho más fáciles de manejar cuando se conectan directamente, le sugiero que vaya a un Mega o Mega2560, tiene más pines digitales y más entradas analógicas y más PWM salidas. La mayoría (aunque no todas) las bibliotecas se adaptarán simplemente cambiando los números de pin. Es mucho más fácil que reescribir bibliotecas para usar pines analógicos y digitales externos.



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...