Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DE ARDUINO
LM35 & DIMMER
ROBOTDYN
MSC. ING JUAN APESTEGUIA
ARDUINO UNO
ES RECOMENDABLE
SOLDAR LOS CABLES
AL SENSOR
DIRECTAMENTE Y
LUEGO PORTEGER LOS
TERMINALES CON
CINTA AISLANTE O
TERMOCONTRAIBLE
ARDUINO UNO (LM35)
void loop() { // Con analogRead leemos el sensor, recuerda que es un valor de 0 a 1023
tempC = analogRead(pinLM35);
tempC = (5.0 * tempC * 100.0)/1024.0; // Calculamos la temperatura con la fórmula
Serial.print(tempC); // Envía el dato al puerto serial
Serial.println(""); // Salto de línea también es valido Serial.print(“\n");
delay(1000); // Esperamos un tiempo para repetir el loop |1000 MILISENGUNDOS| (1 segundo)
}
ARDUINO UNO (LM35)
AHORA PASAMOS EL CODIGO AL ARDUINO , LO COMPILAMOS Y LO GUARDAMOS EN UNA CARPETA , ARDUINO IDE ES
LENGUAJE C++, EL ARDUINO DEBE SER RECONOCIDO COMO ARDUINO UNO Y PUERTO COM1, COM2 ó COM3~COM7
EN PREFERENCIAS LE PODEMOS CAMBIAR EL IDIOMA A ESPAÑOL.
ARDUINO UNO (LM35)
LO COMPILAMOS Y LO SUBIMOS AL ARDUINO , SI HAY ERRORES ES SEGURO POR QUE NO ESTA CONECTADO
CORRECTAMENTE O POR QUE SE COMETIERON ERRORES AL TIPEAR EL CODIGO , CORREGIRLO Y SUBIR EL PROGRAMA
ARDUINO UNO (LM35)
VAMOS A PROBAR NUESTRO CODIGO CON EL MONITOR SERIE QUE TRAE EL ARDUINO VER LOS DATOS RECOLECTADOS
ARDUINO UNO (LM35)
VAMOS A PROBAR NUESTRO CODIGO CON EL PLOTTER SERIE QUE TRAE EL ARDUINO VER LOS DATOS GRAFICADOS
ARDUINO UNO (LM35)
VAMOS A EXPORTAR LOS DATOS DEL PUERTO SERIAL PARA PODER GRAFICARLO EN EXCEL :
• COPIANDO LOS DATOS DIRECTAMENTE DE LA VENTANA DE ARDUINO IDE (NO MUY EFICIENTE CUANDO SON MUCHOS DATOS)
• RECOMENDABLE USAR UN SOFTWARE DE TERCEROS QUE DESCARGA TODO EN UN ARCHIVO TXT (MONITOR SERIAL)
ARDUINO UNO (LM35)
(MONITOR SERIAL) PARA ESTO NECESITAMOS QUE EL ARDUINO IDE NO ESTE EJECUTANDO EL MONITOR SERIE YA QUE NO PUEDE HABER 2
APLICACIONES USANDO EL MISMO PUERTO
AL ABRIR EL PROGRAMA DEBEMOS CONFIGURAR EL PUERTO SERIAL QUE USA NUESTRO ARDUINO EN MI CASO EL COM3 Y 9600 BAUDIOS,EN
LOGGING DEBE ESTAR CONFIGURADO DE ESTA MANERA PARA QUE ME GENERE AUTOMATICAMENTE EL ARCHIVO TXT QUE SE LLAMARA
MONITOR SERIAL.LOG , CUANDO ESTE LISTO TODO GUARDAMOS NUESTRA CONFIGURACION EN SAVE “ DEFAULTS SETTINGS
ARDUINO UNO (LM35)
(MONITOR SERIAL) FINALMENTE LE DAMOS OPEN Y NOS MOSTRARA ESTO; UNA VENTANA CON LOS DATOS QUE SE ESTAN GENERANDO EN EL
ARDUINO Y SE HABRA CREADO UN ARCHIVO LLAMADO MONITOR SERIAL.LOG CUANDO TERMINEMOS DE CAPTURAR LOS DATOS
SIMPLEMENTE CERRAMOS LA VENTANA Y AL ABRIR EL ARCHIVO VEREMOS TODAS LAS LECTURAS , CADA VEZ QUE REPITAMOS LA CAPTURA DE
DATOS SE SOBREESCRIBIRA EL ARCHIVO MONITOR SERIAL.LOG
ARDUINO UNO (LM35)
EL CONTENIDO DE MONITOR SERIAL.LOG LO EXPORTAMOS A EXCEL, COMO SABEMOS QUE CADA EVENTO ES UN SEGUNDO LE COLOCAMOS
UNA COLUMNA CON LOS SEGUNDOS DESDE EL SEGUNDO CERO. ESCOGEMOS EL GRAFICO DE LINEAS Y OBTENEMOS ALGO ASI.
ARDUINO UNO (DIMMER ROBOTDYN)
EL DIMMER ROBOTDYN NECESITA DE UNA LIBRERÍA PARA FUNCIONAR EN ARDUINO LA CUAL SE LLAMA RBDdimmer.h PARA INSTALARLA HAY
QUE SEGUIR LOS SIGUIENTES PASOS :
• DESCARGARA LA LIBRERÍA ROBOTDYN.ZIP Y COLOCARLA EN EL ESCRITORIO
• ABRIR ARDUINO Y EN SKETCH LA OPCCION INCLUIR BIBLIOTECA Y FINALMENTE AÑADIR BIBLIOTECA.ZIP Y SELLECIONAMOS LA BIBLIOTECA
ROBOTDYN.ZIP QUE ESTA EN NUESTRO ESCRITORIO , UNA VEZ INSTALADA APARECERA UN MENSAJE QUE DICE LIBRERÍA INSTALADA,
FINALMENTE CERRAMOS ARDUINO Y LO VOLVEMOS A ABRIR. LA ENCONTRAREMOS AL FINAL DE LAS BIBLIOTECAS APORTADAS.
ARDUINO UNO (DIMMER ROBOTDYN)
EL DIMMER ROBOTDYN PERMITE CONTROLAR EL BRILLO DE UN FOCO ATRAVEZ DE LA SEÑAL PWM DE ARDUINO , PARA ELLO SE CONECTARA
EL ARDUINO CON EL DIMMER ATRAVEZ DE LOS PINES DIGITALES 2 Y 8 DEL ARDUINO PARA EL ZC Y EL PWM RESPECTIVAMENTE , ASI COMO LA
ALIMENTACION DE 5V Y GND Y FINALMENTE LA CONEXIÓN DE 220 VOLTIOS A UN TOMACORRIENTE Y A UN FOCO DE 100 WATTS.
ARDUINO UNO (DIMMER EJEMPLO 1)
void loop() {
delay(10000); //Tiempo de espera hasta que prenda el foco en milisegundos (en este caso 10 seg)
int preVal = outVal; //la variable preVal activa el PWM
dimmer.setPower(outVal); // setPower(0-100%); el valor de la potencia 20~95
}
ARDUINO UNO (DIMMER EJEMPLO 2)
//dimmerLamp dimmer(outputPin, zerocross); //initialase port for dimmer for ESP8266, ESP32, Arduino due boards
dimmerLamp dimmer(outputPin); //initialase port for dimmer for MEGA, Leonardo, UNO, Arduino M0, Arduino Zero
void setup() {
USE_SERIAL.begin(9600);
dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE)
USE_SERIAL.println("El Dimmer se encuentra activo...");
USE_SERIAL.println("Coloque un valor mayor a 24 y menor a 96");
}
ARDUINO UNO (DIMMER EJEMPLO 2)
void printSpace(int val)
{
if ((val / 100) == 0) USE_SERIAL.print(" ");
if ((val / 10) == 0) USE_SERIAL.print(" ");
}
void loop() {
int preVal = outVal;
if (USE_SERIAL.available())
{
int buf = USE_SERIAL.parseInt();
if (buf != 0) outVal = buf;
delay(200);
}
dimmer.setPower(outVal); // setPower(0-100%);
if (preVal != outVal)
{
USE_SERIAL.print("Porcentaje de Brillo -> ");
printSpace(dimmer.getPower());
USE_SERIAL.print(dimmer.getPower());
USE_SERIAL.println("%");
}
delay(50);
}
ARDUINO UNO (LM35 & DIMMER ROBOTDYN)
AHORA HAREMOS UN PROYECTO EN ARDUINO UTILIZANDO LOS 2 ELEMENTOS EN SIMULTANEO Y DESCARGAREMOS LA INFORMACION PARA
ENCONTRAR LA FUNCION DE TRANSFERENCIA DE UN SISTEMA DE PRIMER ORDEN
ARDUINO UNO (LM35 & DIMMER ROBOTDYN)
PARA ELLO ARMAREMOS EL CIRCUITO COMO EL MOSTRADO DONDE INCORPORAMOS EL LM35 EN EL PUERTO A0 Y EL DIMMER EN LOS PUERTOS
D2 Y D8 EN EL ARDUINO CON SUS ALIMENTACIONES DE 3.3V Y 5V RESPECTIVAMENTE
ARDUINO UNO (LM35 & DIMMER ROBOTDYN)
COLOCAR EL CIRCUITO EN UN BASE DE MADERA Y FIJAR LOS COMPONENTES PARA QUE NO SE MUEVAN , COLOCAR EL SENSOR LM35 LO MAS
CERCA DEL FOCO DE 100 WATTS PERO SIN TOCARLO PARA ELLOS UTILIZAR UN ALAMBRE Y SUJETARLO A LA MADERA.
*OPCCIONAL COLOCAR UN VENTILADOR DE PC PARA HACER QUE ENFRIE MAS RAPIDO EL SENSOR LM35.
ARDUINO UNO (PROGRAMA PARTE 1)
void setup() {
Serial.begin(9600); // Puerto serial en 9600 Baudios
dimmer.begin(NORMAL_MODE, OFF); //dimmer initialisation: name.begin(MODE, STATE)
pinMode(ledPin, OUTPUT); // set the digital pin as output
}
ARDUINO UNO (PROGRAMA PARTE 2)
void loop() {
/*-------------------SENSOR LM35------------------------------------------*/
tempC = analogRead(pinLM35); //Leemos el Sensor Lm35 valores entre 0 y 1023
tempC = (5.0 * tempC * 100.0)/1024.0; //Calculamos la temperatura en grados °C
delay(1000); //Tiempo entre lecturas 1000 milisegundos ( 1 segundo)
Serial.print(tempC); // Envia el dato al puerto serial
Serial.println(""); // Salto de línea
/*----------------------DIMMER ROBOTDYN----------------------------------*/
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = HIGH;
}
// set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);
}
}
ARDUINO UNO (LM35 & DIMMER ROBOTDYN)
𝒕
−
𝒚 𝒕 = 𝑲 ∗ ∆𝒖(𝟏 − 𝒆 ) 𝝉
ARDUINO UNO (LM35 & DIMMER ROBOTDYN)
CUANDO VEAMOS QUE LA TEMPERATURA ALCANZA UN VALOR CONSTANTE EL CUAL YA NO VARIA PROCEDEMOS CERRAR EL MONITOR SERIAL
Y PASAMOS A ABRIR LOS DATOS CAPTURADOS EN EXCEL
ARDUINO UNO (LM35 & DIMMER ROBOTDYN)
EN EXCEL PROCEDEMOS A AGREGAR UNA COLUMNA A QUE CONTENDRA LO SEGUNDOS INICIANDO DESDE 0 HASTA EL ULTIMO VALOR LUEGO
PROCEDEMOS A GRAFICAR LOS DATOS PARA OBTENER UNA PRIMERA APROXIMACION QUE COMO VEMOS ES DE PRIMER ORDEN
ARDUINO UNO (LM35 & DIMMER ROBOTDYN)
AHORA AGREGAREMOS UNA NUEVA COLUMNA DONDE ESTARA EL VALOR DE LA RESTA DE LA COLUMNA B ( TEMPERATURAS) MENOS EL VALOR
MINIMO DE LA TEMPERATURA PARA HACER QUE NUESTRO NUEVO ORIGEN NO SEA EN 26 GRADOS COMO RESULTO EN MIS MEDICIONES, SINO
EN 0 GRADOS CENTIGRADOS. ( ESTO SE HACE PARA PASARLO A VARIABLES DE DESVIACION
FINALMENTE MOVEMOS NUESTRA GRAFICA A LA SERIE DE DATOS DE LA COLUMNA A Y LA COLUMNA C
ARDUINO UNO (LM35 & DIMMER ROBOTDYN)
EN MI CASO ESA TEMPERATURA SE DIO A LOS 50 SEGUNDOS ENTONCES ESE SERIA MI TAU = 50
AHORA PROCEDEMOS A GRAFICAR ESA SEGUNDA SERIE DE DATOS Y COMO VEMOS ESA ES NUESTRA FUNCION DE TRANSFERENCIA
ARDUINO UNO (LM35 & DIMMER ROBOTDYN)