free responsive site templates



SEMANA 9


DISEÑO DE DIAGRAMA MODULAR


MODULO PRINCIPAL


MODULO SECUNDARIOS


CIRCUITOS DEL PROYECTO


VENTILADOR Y SENSOR DE TEMPERATURA

Mobirise

MOTOR PASO A PASO

Mobirise

CAMARA RASPBERRY 5MP Y CÁMARA TERMOGRÁFICA

Mobirise

CÓDIGO DEL PROYECTO

//El sensor detecta cierta temperatura dentro del sistema [dependiendo de los parámetros que se establezcan en los testeos] se activa
//o desactiva el foco para que luego ventilar esta temperatura en todo el contenedor.
// En caso el medico tenga que digitar el angulo de giro, girará los grados que se le indiquen
// La programacion del motor Paso a Paso ajustado a grado fue realizado por : www.elprofegarcia.com
//Definir las variables
const int pwm = 3; // Pin del Ventilador (modulación por ancho de pulsos)
int Pin = 12; //Pin de la bombilla
const int LM35 = 0; // Sensor de temperatura
float temperatura = 20;
int ADClido = 0;
int retardo=5; // Tiempo de retardo en milisegundos (Velocidad del Motor)
int dato_rx; // valor recibido en grados
int numero_pasos = 0; // Valor en grados donde se encuentra el motor
String leeCadena; // Almacena la cadena de datos recibida
int a = 0; // Inicializa la otra parte del sistema
void setup(){
Serial.begin(9600);
pinMode(pwm, OUTPUT);
pinMode(Pin, OUTPUT);
analogReference(INTERNAL);
// Los in1 al in4 pertenecen al driver ULN200
pinMode(11, OUTPUT); // Pin 11 conectar a IN4
pinMode(10, OUTPUT); // Pin 10 conectar a IN3
pinMode(9, OUTPUT); // Pin 9 conectar a IN2
pinMode(8, OUTPUT); // Pin 8 conectar a IN1
}
void loop(){
//Programacion del sensor de temperatura, bombilla y ventilador
ADClido = analogRead(LM35);
temperatura = ADClido * 0.1075268817204301;
delay(1000);
//Los números dentro de la condicion serán modificados después del testeo
  Serial.print("La temperatura es: \n" + String(temperatura));
  if(temperatura > 30){
  Serial.print("\n La temperatura es muy alta por lo tanto apagar la bombilla \n");
  digitalWrite(Pin, LOW); //Relay encendido
  Serial.println("Homogenizando la temperatura ventilador gira a 250 pwm \n");
  analogWrite(pwm, 250);
  delay(1000);
}
if(temperatura > 25 && temperatura <= 30){
  Serial.print("\n La temperatura esta cerca del rango adecuado por lo tanto apagar la bombilla \n");
  digitalWrite(Pin, LOW); //Relay encendido
  Serial.println("Homogenizando la temperatura ventilador gira a 170 pwm \n");
  analogWrite(pwm, 170);
  delay(1000);
  a = 1;
}
if(temperatura < 20){
  Serial.print("\n La temperatura es muy BAJA por lo tanto encender la bombilla \n");
  digitalWrite(Pin, HIGH); //Relay encendido
  Serial.println("Homogenizando la temperatura ventilador gira a 250 pwm \n");
  analogWrite(pwm, 250);
  delay(1000);
}
//Programacion del motor de paso
// Tengo una duda. Siempre y cuando la homogenizacion de la temperatura sea correcta se activa el codigo motor de paso (a == 1){
// pero al colocar este if ( a == 1) desconoce la función paso_izq Giro hacia la izquierda. ¿Por que sucede eso? {
while (Serial.available()) { // Leer el valor enviado por el Puerto serial
    delay(retardo);
    char c = Serial.read(); // Lee los caracteres
    leeCadena += c; // Convierte Caracteres a cadena de caracteres
  }
  if (leeCadena.length()>0){
        dato_rx = leeCadena.toInt(); // Convierte Cadena de caracteres a Enteros
         Serial.print(dato_rx); // Envia valor en Grados
         Serial.println(" Grados");
        delay(retardo);
        dato_rx = (dato_rx * 1.4222222222); // Ajuste de 512 vueltas a los 360 grados
  }
   while (dato_rx>numero_pasos){ // Girohacia la izquierda en grados
       paso_izq();
       numero_pasos = numero_pasos + 1;
   }
   while (dato_rx<numero_pasos){ // Giro hacia la derecha en grados
        paso_der();
        numero_pasos = numero_pasos -1;
   }
  leeCadena = ""; // Inicializamos la cadena de caracteres recibidos
  apagado(); // Apagado del Motor para que no se caliente
} ///////////////////// Fin del Loop ///////////////////////////
void paso_der(){ // Pasos a la derecha
 digitalWrite(11, LOW);
 digitalWrite(10, LOW);
 digitalWrite(9, HIGH);
 digitalWrite(8, HIGH);
   delay(retardo);
 digitalWrite(11, LOW);
 digitalWrite(10, HIGH);
 digitalWrite(9, HIGH);
 digitalWrite(8, LOW);
   delay(retardo);
 digitalWrite(11, HIGH);
 digitalWrite(10, HIGH);
 digitalWrite(9, LOW);
 digitalWrite(8, LOW);
  delay(retardo);
 digitalWrite(11, HIGH);
 digitalWrite(10, LOW);
 digitalWrite(9, LOW);
 digitalWrite(8, HIGH);
  delay(retardo);
}
void paso_izq() { // Pasos a la izquierda
 digitalWrite(11, HIGH);
 digitalWrite(10, HIGH);
 digitalWrite(9, LOW);
 digitalWrite(8, LOW);
  delay(retardo);
 digitalWrite(11, LOW);
 digitalWrite(10, HIGH);
 digitalWrite(9, HIGH);
 digitalWrite(8, LOW);
  delay(retardo);
 digitalWrite(11, LOW);
 digitalWrite(10, LOW);
 digitalWrite(9, HIGH);
 digitalWrite(8, HIGH);
  delay(retardo);
 digitalWrite(11, HIGH);
 digitalWrite(10, LOW);
 digitalWrite(9, LOW);
 digitalWrite(8, HIGH);
 delay(retardo);
}
       
void apagado() { // Apagado del Motor
 digitalWrite(11, LOW);
 digitalWrite(10, LOW);
 digitalWrite(9, LOW);
 digitalWrite(8, LOW);
 }
//}
//}

Equipo 15 - PHOENIX