Microcontroladores - Preguntas para principiantes

7
  • ¿Cómo determina cuántos sensores puede usar un microcontrolador?
  • Tengo entendido que no puede usar C # directamente en ningún microcontrolador, pero puede usar C # y comunicarse a través del USB y buscar un puerto específico. ¿Es esto cierto?

En mi caso, he reducido a los siguientes tres microcontroladores:

  • Arduino
  • Netdurino
  • AVR

Esto es lo que trato de hacer como primer proyecto y, por supuesto, podría no ser un proyecto fácil.

Quiero poder conectar un termómetro y cuando los grados obtengan + -3 de una temperatura base, abra o cierre una ventana de accesorios. Además, quiero poder almacenar la información del termómetro en una base de datos MySql.

Entonces, básicamente, si la temperatura base es 80, cuando la temperatura es mayor que 83, quiero abrir la ventana. Y si es el 77 quiero cerrar la ventana.

No estoy interesado en el mecanismo exacto que abre y cierra las ventanas, simplemente cómo enviar las señales para abrirlas o cerrarlas.

    
pregunta user2278106

5 respuestas

10

Información sobre el microcontrolador:

Mientras que Netduino usa C #, la mayoría de los otros microcontroladores están programados en C, esos son dos lenguajes de programación totalmente diferentes. Además de eso, Arduino usa una versión de C ++, que aún es diferente.

Los microcontroladores suelen programarse en C o en ensamblaje (ASM). Si eres nuevo, recomendaría C. Arduino no es un microcontrolador, es una placa de desarrollo (generalmente) basada en un microcontrolador AVR, aunque hay otros MCU en uso. Las MCU (unidades de microcontrolador) a bordo tendrán un cargador de arranque instalado. Esta es una sección especial de código que altera cómo funciona la MCU. En el caso de Arduino, permite la programación a través del puerto serie en lugar de los métodos de programación estándar, así como el acceso a funciones de biblioteca especiales. También en la placa (normalmente) habrá un convertidor de USB a serie porque muchos chips más pequeños no tienen hardware USB interno, por lo que el USB debe convertirse para una comunicación adecuada.

Pregunta 1:

Una MCU tendrá un número específico de pines de E / S. Estos son los pines que pueden ser entradas o salidas. Puede conectar directamente tantos sensores digitales como pines de E / S, pero los sensores analógicos están limitados al número de pines ADC (convertidor analógico a digital) disponibles. No todas las MCU tienen una unidad ADC. También puede conectar muchos, muchos más sensores utilizando expansores GPIO externos o registros de entrada en paralelo, salida en serie. Estos pueden controlarse utilizando unos pocos pines MCU y pueden ampliar considerablemente la cantidad de pines de E / S disponibles.

Pregunta 2:

Escribirá un programa en la computadora que está instalada en la MCU. Si el código le permite tener comunicaciones externas (a través de USB, serie, SPI, I2C, etc.), entonces puede comunicarse con el chip mientras se está ejecutando. Pero esa habilidad depende del código que escribas. El lenguaje que utiliza para comunicarse con la MCU es bastante abierto a lo que quiera, ya que la comunicación en realidad la realiza el hardware, no el lenguaje de programación. Tal vez eso es lo que quisiste decir con la mención de "C #".

Su proyecto:

De manera realista, su proyecto no suena tan complicado: lea un sensor de temperatura (suena como analógico) y active un motor para abrir / cerrar una ventana según la lectura de ese sensor. Cuando parar el motor probablemente se basará en otro sensor conectado a la ventana. Esto se puede hacer con una MCU muy pequeña con pocos pines y poco espacio para programas (como el ATtiny24 o ATtiny25). Pero creo que primero tendrás muchos problemas si no trabajas en algo un poco más pequeño. El "hola mundo" estándar de las MCU es hacer parpadear un LED. Luego construya sobre eso tratando de controlar la velocidad de parpadeo con un botón, luego maneje un motor, etc.

Opinión personal ...

No, ni tengo ningún deseo de utilizar Arduino. Construyo todos mis propios circuitos, normalmente con MCU AVR, pero entiendo la razón por la cual la gente los usa. Personalmente, creo que es mucho mejor aprender a diseñar su propio circuito y programarlo que a copiar el código de otras personas y armar cosas al azar, que es lo que veo que la mayoría de los usuarios de Arduino están haciendo. Hay MUCHOS tutoriales en línea para comenzar con microcontroladores que no involucran a Arduino, que es lo que sugeriría que analice si tiene planes de diseñar sus propios circuitos en el futuro. Si no tiene ningún deseo de aprender nada, entonces por todos los medios, copie, pero tenga en cuenta que a menudo hay formas mucho más simples y efectivas de hacer las cosas que nunca comprenderá si no sabe lo que está pasando.

    
respondido por el Kurt E. Clothier
4

La elección entre las plataformas

  • Arduino es una plataforma de código abierto creada (principalmente) alrededor de chips AVR (ATmega), con una excepción: el Arduino Due se crea alrededor de CPU Cortex-M3. Está programado en C, C ++.
  • Netduino es una plataforma construida en torno a los chips Cortex-M3 y Cortex-M4. Está programado en C #
  • AVR es una familia de microcontroladores de Atmel, programados en C, C ++ o Assembly. Los microprocesadores están en el corazón de la mayoría (pero no del todo) de los Arduinos.

El que elija es una cuestión de gusto personal. AVR es un nivel más bajo que en Arduino, por lo que si está empezando, Arduino es definitivamente más fácil comenzar rápidamente. Netduino es que realmente quieres C #, sin embargo, Arduino es mejor soportado que Netduino.

Interfaz con el puerto serie / USB de la PC

En el lado de la PC, independientemente de lo que elija, podrá conectarse a su chip / circuito AVR Arduino / Netduino / bare a través del puerto serie / USB. En el lado de la PC, puede utilizar el lenguaje de programación que desee, siempre que le dé acceso a los puertos serie. La forma en que esto funcionará es que Arduino / Netduino / bare AVR leerá / escribirá desde el puerto serial / USB y también lo hará su programa de PC. La comunicación se produce.

En el lado incrustado, la mayoría de las cosas que considerará tendrán un USART, lo que significa que la comunicación serie está establecida. Sin embargo, los chips AVR puros del hombre no tienen un puerto USB, per se fuera de la caja: tendrá que construir un soporte USB a través de un circuito separado, aunque como Kurt E Clothier señala algunos los chips AVR se han incorporado Compatibilidad con USB . Algunos chips AVR no tienen un USART incorporado, pero no es probable que los elijas.

Detección de temperatura

En cuanto a la detección de temperatura, todas las plataformas que sugirió le darán las capacidades para hacerlo. Leer una temperatura puede ser tan simple como leer un ADC si está usando LM34 o un sensor de temperatura LM35. En Arduino esto se logra con una línea: myReading = analogRead(pinNumber); Tendrá que transformar la lectura de temperatura en temperatura real, pero esto no es particularmente difícil.

Motores

Los motores son un poco más complicados: para la mayoría de los motores (casi todos) su chip Arduino / Netduino / AVR no podrá impulsar el motor directamente. Necesitará al menos un MOSFET / BJT (consulte aquí para obtener más información) y un diodo amortiguador, o, más robusto, un circuito de impulsión de motor. La plataforma Arduino tiene una gran variedad de periféricos (en general llamados escudos , aunque Olin prefiere el término placa base ) que incluye un protector de motor. Si está utilizando un motor de alta potencia, este es el camino a seguir.

    
respondido por el angelatlarge
2

El Netduino ejecuta una versión del tiempo de ejecución .NET conocido como el "micro runtime" IIRC. Usted escribe el código en C #, y se interpreta en Netduino. El netduino se entrega con bibliotecas para acceder a las diversas funciones del microcontrolador, y esas bibliotecas están escritas en C. El código C # que usted escribe será muy lento de ejecutar, aunque el código de la biblioteca es rápido. Escribo el código C # para ganarme la vida, pero no creo que el netduino sea una excelente opción para un microcontrolador; es más difícil de usar que un arduino de alguna manera, tiene mucho menos soporte (menos código de ejemplo, menos hardware compatible) y cuesta más. Tampoco creo que C # sea el idioma correcto para los controladores.

He realizado proyectos con código escrito a medida para AVR y otros proyectos con Arduinos. Si está comenzando, el arduino tiene muchas ventajas, y la única desventaja es el mayor costo que un AVR en bruto.

Recomiendo mirar algunas de las introducciones para el AVR y para el arduino. Creo que eso te dará una buena idea de cuál es mejor para ti.

    
respondido por el Eric Gunnerson
1
  

¿Cómo determina cuántos sensores puede usar un microcontrolador?

Eso dependería de lo creativo que pueda ser y de cuántas iopins tenga disponibles, y de cuántos pines requiera el sensor. Si tiene 4 sensores de 3 pines, eso no significa necesariamente que necesite 12 pines para controlarlos, puede multiplexarlos y usar 5 pines y guardar 7 pines. Así que todo depende realmente. Pero una forma de verlo es la cantidad de pines de io disponibles que tiene y la cantidad de pines que requieren sus sensores, lo que le daría un límite bajo de cuántos puede tener. La creatividad, la experiencia y la comprensión de cómo funciona todo, puede aumentar la cantidad de sensores.

  

Entiendo que no puedes incrustar C # directamente en ningún microcontrolador, pero puedes usar C # y comunicarte a través del USB y buscar un puerto específico ¿es esto cierto?

Si bien no he hecho mucho USB, sé que si lo está haciendo desde cero, eso implicaría escribir controladores en su máquina host. La forma más popular es usar un IC que ya maneja todos los protocolos USB y los controladores y se comporta como un puerto serie en su computadora. Básicamente, tiene un puente USB-Serial que puede conectarse a un puerto serie de su microcontrolador. Creo que el Arduino hace esto. No estoy seguro acerca de Netduino. Así que sí, puede usar C # para comunicarse a través de USB a través de un puerto específico (suponiendo que lo esté haciendo de la manera más fácil y utilizando un puente USB-Serial).

Lo que te propones hacer es definitivamente posible. Puede escribir un programa que se interconecte con su base de datos y que pueda enviar y recibir datos en serie a su microcontrolador.

    
respondido por el efox29
1

Para responder a un punto específico, un microcontrolador podría presumiblemente tener un (muy alto número) de sensores conectados. El uso de sensores de bus, como i2c, spi, un cable, serie o cualquier otro protocolo de bus, le permitiría tener muchos por bus, donde x es el límite para un bus determinado. Tendría que seguir algunas especificaciones técnicas para el cableado del bus, y con múltiples del mismo bus, podría expandirse aún más.

El límite es realmente en términos de velocidad y practicidad. Podría tener mil sensores en un solo arduino, pero ¿podría alimentar, leer, procesar y mostrar esa información en un tiempo razonable? Tal vez, depende de lo bien que pueda codificar o de lo imaginativo que sea.

Incluso los sensores analógicos se pueden hacer de esta manera, utilizando multiplexores o ics ADC. La mejor pregunta no es "cuántos sensores puede usar un microcontrolador" sino "cuántos sensores necesito" y tomarlos desde allí.

    
respondido por el Passerby

Lea otras preguntas en las etiquetas