7 votos

Microcontroladores - Preguntas para principiantes

  • ¿Cómo se determina el número de sensores que puede utilizar un microcontrolador?
  • Según tengo entendido, no se puede usar C# directamente en ningún microcontrolador, pero sí se 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 tres siguientes microcontroladores:

  • Arduino
  • Netdurino
  • AVR

Esto es lo que estoy intentando hacer como primer proyecto y, por supuesto, puede que no sea un proyecto fácil.

Quiero poder conectar un termómetro y cuando los grados lleguen a +-3 de una temperatura base abrir o cerrar una ventana de utilería. Además, quiero ser capaz de almacenar la información del termómetro en una base de datos MySql.

Así que, básicamente, si la temperatura base es de 80, cuando la temperatura es superior a 83 quiero empujar a abrir la ventana. Y si es 77 quiero cerrar la ventana.

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

10voto

azhar Puntos 21

Información sobre el microcontrolador:

Mientras que Netduino utiliza C#, la mayoría de los otros microcontroladores se programan en C - son dos lenguajes de programación totalmente diferentes. Además, Arduino utiliza una versión de C++, que también es diferente.

Los microcontroladores suelen programarse en C o en ensamblador (ASM). Si eres nuevo, te recomendaría C. Arduino no es un microcontrolador, es una placa de desarrollo (normalmente) basada en un microcontrolador AVR, aunque hay otros MCUs en uso. Los MCUs (unidades de microcontroladores) a bordo tendrán un cargador de arranque instalado. Se trata de una sección especial de código que altera el funcionamiento de 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 las funciones especiales de la biblioteca. También en la placa habrá (normalmente) un convertidor de USB a serie porque muchos chips pequeños no tienen hardware USB interno, por lo que el USB tiene que ser convertido para una comunicación adecuada.

Pregunta 1:

Una MCU tendrá un número específico de pines de E/S. Estos son pines que pueden ser entradas o salidas. Puedes conectar directamente tantos sensores digitales como pines de E/S haya, pero los sensores analógicos están limitados al número de pines ADC (convertidor analógico-digital) disponibles. No todos los MCUs tienen una unidad ADC. También puedes conectar muchos, muchos más sensores utilizando expansores GPIO externos o registros de entrada paralela y salida serial. Estos pueden ser controlados usando unos pocos pines de la MCU y pueden ampliar en gran medida el número de pines de E/S disponibles.

Pregunta 2:

Escribirás un programa en el ordenador que se instala en la MCU. Si el código te permite tener comunicaciones externas (a través de USB, serie, SPI, I2C, etc) entonces puedes comunicarte con el chip mientras está funcionando. Pero esa capacidad depende del código que escribas. El lenguaje que utilices para comunicarte con el MCU está bastante abierto a lo que quieras, ya que la comunicación real la realiza el hardware, no el lenguaje de programación. Tal vez eso es lo que querías decir con la mención de "C#".

Su proyecto:

Siendo realistas, tu proyecto no parece tan complicado: leer un sensor de temperatura (suena a analógico) y accionar un motor para abrir/cerrar una ventana basándose en la lectura de ese sensor. El momento de detener el motor probablemente se basará en otro sensor conectado a la ventana. Esto se puede hacer con un MCU muy pequeño con pocos pines y poco espacio de programación (como el ATtiny24 o ATtiny25). Pero creo que te encontrarás con muchos problemas si no trabajas primero en algo un poco más pequeño. El "hola mundo" estándar de los MCUs es hacer parpadear un LED. Luego se construye sobre eso tratando de controlar la velocidad de parpadeo con un botón, luego manejar un motor, etc.

Opinión personal...

No tengo, ni tengo ningún deseo de utilizar nunca Arduino. Construyo todos mis circuitos, normalmente con MCUs AVR, pero entiendo la razón por la que la gente los utiliza. Personalmente, creo que es mucho mejor aprender a diseñar tu propio circuito y programarlo que copiar el código de otras personas y juntar cosas al azar, que es lo que veo que hacen la mayoría de los usuarios de Arduino. Hay un montón de tutoriales en línea para empezar con los microcontroladores que no implican Arduino, que es lo que yo sugeriría que busque en si usted tiene algún plan de diseño de sus propios circuitos en el futuro. Si no tienes ganas de aprender nada, entonces por todos los medios, copia, pero ten en cuenta que a menudo hay formas mucho más simples y más eficaces de hacer las cosas que nunca comprenderás si no sabes lo que está pasando.

3voto

La elección entre las plataformas

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

La elección de uno u otro es una cuestión de gusto personal. AVR es más de bajo nivel thatn Arduino, así que si usted está empezando, Arduino es definitivamente más fácil de empezar con rapidez. Netduino está ahí si realmente quieres C#, sin embargo, Arduino está mejor soportado que Netduino.

Conexión al puerto serie/USB del PC

En el lado del PC, no importa lo que elijas, podrás interactuar con tu chip/circuito Arduino/Netduino/bare AVR a través del puerto serie/USB. En el lado del PC puedes utilizar cualquier lenguaje de programación que desees siempre que te dé acceso a los puertos serie. La forma en que esto funciona es que Arduino/Netduino/bare AVR leerá/escribirá desde el puerto serie/USB y también lo hará tu programa de PC. La comunicación se produce.

En el lado embebido, la mayoría de las cosas que usted considerará tendrán un USART, lo que significa que la comunicación en serie se establece. Sin embargo, el hombre puro chips AVR no tienen un puerto USB, por sí mismo 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 tienen soporte USB incorporado . Algunos chips AVR no tienen una USART incorporada, pero no es probable que los elijas.

Detección de la temperatura

En cuanto a la detección de la temperatura, todas las plataformas que has sugerido te permitirán hacerlo. La lectura de una temperatura puede ser tan simple como leer un ADC si está utilizando 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 la temperatura en temperatura real, pero esto no es especialmente difícil.

Motores

Los motores un poco más complicados: para la mayoría (casi todos) de los motores tu chip Arduino/Netduino/AVR no podrá accionar el motor directamente. Necesitarás al menos un MOSFET / BJT interruptor (ver aquí para más información) y un diodo snubber, o, de forma más robusta, un circuito controlador de motor. La plataforma Arduino dispone de una gran variedad de periféricos (en general llamados escudos Aunque Olin prefiere el término placa secundaria ) incluyendo un escudo de motor. Si se utiliza un motor de alta potencia, este es el camino a seguir.

2voto

Bart Silverstrim Puntos 28092

El Netduino ejecuta una versión del tiempo de ejecución de .NET conocida como "micro runtime", según parece. Escribes código en C#, y se interpreta en el Netduino. El Netduino viene con bibliotecas para acceder a las diversas funciones del microcontrolador, y esas bibliotecas están escritas en C. El código C# que escribas será muy lento de ejecutar, aunque el código de la biblioteca es rápido. Yo escribo código C# para ganarme la vida, pero no creo que el netduino sea una gran elección para un microcontrolador; es más difícil de usar que un arduino en algunos aspectos, tiene mucho menos soporte (menos código de ejemplo, menos hardware compatible), y cuesta más. Tampoco creo que C# sea el lenguaje adecuado para los controladores.

He hecho proyectos con código escrito a medida para AVRs, y otros proyectos con Arduinos. Si usted está empezando el arduino tiene toneladas de ventajas, y la única desventaja es el costo más alto que un AVR crudo.

Te recomiendo que mires 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.

1voto

gulbaek Puntos 123

¿Cómo se determina el número de sensores que puede utilizar un microcontrolador

Eso dependerá de lo creativo que seas y de la cantidad de iopins que tengas disponibles, así como de la cantidad de pins que requiera el sensor. Si tienes 4 sensores de 3 pines, eso no significa necesariamente que necesites 12 pines para controlarlos, puedes multiplexarlos y usar 5 pines y ahorrar 7 pines io. Así que todo depende realmente. Pero una forma de verlo es, cuántos pines io disponibles tienes, y cuántos pines requieren tus sensores, eso te daría un límite bajo de cuántos puedes tener. La creatividad, la experiencia y la comprensión de cómo funciona todo, puede aumentar el número de sensores.

Tengo entendido que no se puede incrustar C# directamente en cualquier microcontrolador, pero se puede utilizar C# y comunicarse a través del USB y buscar un puerto específico, ¿es esto cierto?

Aunque no he hecho mucho de USB, sé que si usted está haciendo USB desde cero, que implicaría la escritura de los conductores en su máquina de acogida. La forma más popular es usar un IC que ya maneja todo el protocolo USB y los drivers y se comporta como un puerto serie en tu ordenador. Básicamente tienes un puente USB-Serial que puede conectarse a un puerto serie en tu microcontrolador. Creo que el Arduino hace esto. No estoy seguro de Netduino. Así que sí se puede utilizar C # para comunicarse a través de USB a través de un puerto específico (suponiendo que usted está haciendo de la manera fácil y el uso de un puente USB-Serial).

Lo que usted propone hacer es definitivamente posible. Puedes escribir un programa que interactúe con tu base de datos y que pueda enviar y recibir datos en serie a tu microcontrolador.

1voto

Passerby Puntos 28913

Para responder a un punto concreto, se supone que un microcontrolador podría tener un número (muy elevado) de sensores conectados. Usando sensores de bus, como i2c, spi, one wire, serial, o cualquier otro protocolo de bus, te permitiría tener x muchos por bus, donde x es el límite para un bus dado. Usted tendría que seguir algunas especificaciones técnicas para el cableado del bus, y con múltiples del mismo bus, podría ampliar aún más.

El límite está realmente en la velocidad y la 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 sepas codificar o de lo imaginativo que seas.

Incluso los sensores analógicos pueden hacerse así, utilizando multiplexores o ADC ics. La mejor pregunta no es "cuántos sensores puede utilizar un microcontrolador" sino "cuántos sensores necesito" y partir de ahí.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X