Tabla de contenido:

Modelo de aire acondicionado Arduino: 6 pasos
Modelo de aire acondicionado Arduino: 6 pasos

Video: Modelo de aire acondicionado Arduino: 6 pasos

Video: Modelo de aire acondicionado Arduino: 6 pasos
Video: Controlar CUALQUIER aire acondicionado por WIFI | Alexa | Google - Tutorial Curso Smart Home #6 2024, Noviembre
Anonim
Modelo de aire acondicionado Arduino
Modelo de aire acondicionado Arduino

Como parte de una demostración de la capacidad de nuestro equipo para crear un modelo de un dispositivo de tren inteligente con fines de marketing, el objetivo era crear un sistema en el que un sensor de temperatura lea los datos del circuito y convierta la información en un valor de temperatura que sea a la vez se muestra en una pantalla iluminada y se enfoca en si un ventilador se enciende o apaga. El propósito es ayudar a adaptarse a las condiciones de conducción de los pasajeros mediante un sistema automatizado que también actúa para mostrar la temperatura en las inmediaciones.

Mediante el uso de un kit de microcontrolador Arduino y las versiones 2016b y 2017b de MATLAB, pudimos demostrar estos resultados con relativo éxito.

Paso 1: Equipo

Equipo
Equipo

Kit de microcontrolador con lo siguiente:

-Pizarra roja de Sparkfun

-Tablero de pruebasparkfun

-Tablero LCD

-Potenciómetro

-Sensor de temperatura

-Servo

-Adaptador USB / Arduino

-Alambres de puente (25, mínimo)

Laptop (Windows 10) con entrada USB

Objeto impreso en 3D (opcional)

Paso 2: Configuración del microcontrolador

Configuración del microcontrolador
Configuración del microcontrolador
Configuración del microcontrolador
Configuración del microcontrolador
Configuración del microcontrolador
Configuración del microcontrolador
Configuración del microcontrolador
Configuración del microcontrolador

Considere esto: todo el sistema está compuesto por unidades individuales, cada una de las cuales aplica un factor significativo hacia el resultado final. Por esta razón, es muy recomendable configurar una imagen del circuito antes de conectar los cables en un lío complicado.

Las imágenes de cada modelo individual se pueden encontrar en el manual del kit de herramientas del microcontrolador o en su sitio web en

Comience colocando el sensor de temperatura, el potenciómetro, los conectores de servo y la pantalla LCD en la placa. Se recomienda que debido al tamaño de la pantalla LCD y al requisito de la cantidad de cables, se debe colocar en su propia mitad de la placa de pruebas con las otras piezas en la otra mitad y que el potenciómetro esté en un área para que alguien pueda gire fácilmente su perilla.

Para referencia:

LCD: c1-16

Servo: i1-3 (GND + -)

Sensor de temperatura: i13-15 (- GND +)

Potenciómetro: g24-26 (- GND +)

A continuación, comience a conectar los cables de puente a cada pin de las unidades del microcontrolador; aunque arbitrario en el gran esquema general, el diseño se creó con estas importantes conexiones:

Conexión del potenciómetro a la pantalla LCD: f25 - e3

Cable servo GND: j1 - Entrada digital 9

Sensor de temperatura GND: j14 - Entrada analógica 0

Entradas LCD: e11-e15 - Entrada digital 2-5

e4 - Entrada digital 7

e6 - Entrada digital 6

(Nota: si tiene éxito, ambas luces en el borde de la pantalla LCD deben parpadear y el potenciómetro puede ayudar a ajustar su brillo una vez que se le suministre energía del adaptador).

Opcional: se utilizó un objeto impreso en 3D como parte de un requisito. Para evitar daños potenciales a las partes más frágiles, se colocó una carcasa extendida como funda alrededor de la pantalla LCD. Las medidas de la pantalla LCD resultaron ser de aproximadamente 2-13 / 16 "x 1-1 / 16" x 1/4 ", por lo que solo se modificó significativamente la altura. Si hay una impresora 3D disponible, considere agregar un objeto personal, aunque innecesario Además, tenga en cuenta que las medidas pueden diferir.

Paso 3: configuración de MATLAB

Configuración de MATLAB
Configuración de MATLAB
Configuración de MATLAB
Configuración de MATLAB

Instale una versión más actualizada de MATLAB (2016a y posteriores), disponible en el sitio web de MathWorks https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Una vez abierto, vaya a Complementos en la pestaña Inicio y descargue "Paquete de soporte de MATLAB para hardware Arduino" para que se pueda acceder a los comandos del microcontrolador.

Una vez completado, se puede hacer una prueba para encontrar la conectividad del microcontrolador a la computadora / computadora portátil. Después de conectarlos con el adaptador USB del kit de herramientas, inserte el comando "fopen (serial ('nada'))".

Aparecerá un mensaje de error que indica que el conector es "COM #", que será necesario para crear un objeto arduino siempre que sea la misma entrada en todo momento.

Debido a que la pantalla LCD no tiene una conexión directa a la biblioteca Arduino, se debe crear una nueva biblioteca para mostrar mensajes. Una recomendación es crear un archivo LCDAddon.m a partir del ejemplo de LCD que se encuentra en la ventana de ayuda de MATLAB después de buscar "Arduino LCD" y colocarlo en la carpeta + arduinoioaddons, o usar la carpeta comprimida adjunta y copiar todo su contenido en la carpeta antes mencionada. carpeta.

Si tiene éxito, entonces el código para crear un objeto Arduino en MATLAB es como se muestra a continuación.

a = arduino ('com #', 'uno', 'Bibliotecas', 'ExampleLCD / LCDAddon');

Paso 4: funciones

Funciones
Funciones
Funciones
Funciones

Cree una función MATLAB. Para las entradas, usamos las variables "eff" y "T_min"; para las salidas, aunque innecesarias en el diseño general, usamos la variable "B" como una forma de contener datos de los resultados. La entrada "eff" permite gestionar la velocidad máxima del servo, y la entrada "T_min" controla la temperatura mínima deseada. El valor "B" debería producir una matriz que contenga tres columnas para el tiempo, la temperatura y la eficiencia del ventilador. Además, como una ventaja para los detalles, el código que se enumera a continuación también tiene una declaración if tal que la velocidad del ventilador se reducirá en un cincuenta por ciento cuando se acerque a la temperatura mínima deseada.

Si todas las entradas y los cables de puente se colocan exactamente y asumiendo que el puerto de la conexión arduino es COM4 y el nombre de la función es "fanread", el siguiente código debería ser suficiente:

función [B] = fanread (Tmin, eff)

claro a; clear lcd; a = arduino ('com4', 'uno', 'Bibliotecas', 'ExampleLCD / LCDAddon');

t = 0; t_max = 15; % de tiempo en segundos

lcd = addon (a, 'ExampleLCD / LCDAddon', {'D7', 'D6', 'D5', 'D4', 'D3', 'D2'});

initializeLCD (lcd, 'Filas', 2, 'Columnas', 2);

si ef> = 1 || e <0

error ('El ventilador no se activará a menos que eff se establezca entre 0 y 1')

fin

para t = 1:10% número de bucles / intervalos

claro c; % evitar la repetición de errores

v = readVoltage (a, 'A0');

TempC = (v-0.5) * 100; Estimación de% para rangos de voltaje 2,7-5,5 V

si TempC> Tmin si TempC

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff / 2); % enciende el servo a la mitad de la velocidad

spd = 50;

demás

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff); % enciende el servo a la velocidad dada

spd = 100;

fin

demás

c = ['Temp', num2str (TempC, 3), 'C Off'];

writePWMDutyCycle (a, 'D9', 0); % apagado si ya está encendido

spd = 0;

fin

printLCD (lcd, c);

pausa (3); % transcurren tres segundos por bucle

tiempo (t) = t. * 3;

tempplot (t) = TempC;

acto (t) = spd;

subtrama (2, 1, 1)

plot (time, tempplot, 'b-o')% gráfico lineal

eje ([0 33 0 40])

xlabel ('Tiempo (segundos)')

ylabel ('Temperatura (C)')

esperar

plot ([0 33], [Tmin Tmin], 'r-')

esperar

plot ([0 33], [Tmin + 2 Tmin + 2], 'g-')

subtrama (2, 1, 2)

barra (tiempo, acto)% gráfico de barras

xlabel ('Tiempo (segundos)')

ylabel ('Eficiencia (%)')

fin

B = transponer ([tiempo; trama temporal; acto]);

fin

Ahora que la función está completa, es hora de probar.

Paso 5: prueba

Pruebas
Pruebas
Pruebas
Pruebas

Ahora pruebe la función en la ventana de comandos insertando "nombre_función (valor_entrada_1, valor_entrada_2)" y observe. Asegúrese de que no exista ningún objeto Arduino; si es así, use el comando "borrar a" para eliminarlo. Si ocurren errores, verifique y vea si algún conector está en el lugar incorrecto o si se utilizan las entradas digitales o analógicas incorrectas. Se espera que los resultados varíen, aunque esto puede deberse a la colocación de ciertos cables de puente y el sensor de temperatura.

Las expectativas de los resultados deberían producir cambios en el rendimiento del servo y los datos en la pantalla LCD. Con cada intervalo de tres segundos, una línea de texto debe mostrar la temperatura en grados Celsius y si el ventilador está activo o no mientras el ventilador funciona a máxima velocidad, la mitad de la velocidad o sin velocidad. Lo más probable es que los datos no sean consistentes, aunque si desea obtener más resultados diversos, coloque el valor "Tmin" cerca de la temperatura promedio producida por el circuito.

Paso 6: Conclusión

Conclusión
Conclusión

Aunque fue una tarea ardua de realizar mediante ensayo y error, los resultados finales demostraron ser bastante interesantes y satisfactorios. Un sistema como tal ayuda a ilustrar cuántas máquinas complicadas, o incluso algunas de sus partes, pueden verse como una colección de partes independientes colocadas juntas para lograr un objetivo específico.

Debido al diseño bastante simplista del proyecto final, aquellos que tengan interés en mejorar su rendimiento pueden hacer ajustes y alteraciones en el producto final que pueden hacer que el proyecto sea mejor y más elaborado. Sin embargo, sí revela debilidades en el circuito, como la activación del servo que resulta en fluctuaciones esporádicas en la lectura de voltaje del circuito, lo que puede hacer que el sistema nunca produzca resultados idénticos. Además, ha habido problemas al ver un cambio en la velocidad del servo cuando "eff" se establece en 0.4 y más. Si se hubiera utilizado un sensor de temperatura y humedad, el modelo final sería más complicado pero presentaría valores más consistentes. Sin embargo, esta es una experiencia que muestra que una máquina compleja puede funcionar como una combinación de sus partes simples.

Recomendado: