Beruflich Dokumente
Kultur Dokumente
Mauricio Espinoza B.
Julio, 2018
1 Elementos del sistema
En la figura 1 se muestra la ubicación de los componentes de la banda clasificadora DEGEM. Se determinó
que todos los motores, actuadores, y sensores estaban en funcionamiento, pero no se encontraron las piezas
por clasificar.
//Declaración de variables
int FinalCarrera = 0;
int OUTPUT2 = 2;
int OUTPUT3 = 3;
int OUTPUT4 = 4;
int OUTPUT5 = 5;
int IN6 = 6;
int IN7 = 7;
int IN8 = 8;
int IN9 = 9;
int IN10 = 10;
void setup()
{ Serial.begin(9600); //Configuración del puerto de comunicaciones
//Salidas para puentes H
pinMode (OUTPUT2, OUTPUT); //Salida efectiva del motor del pistón
pinMode (OUTPUT3, OUTPUT); //Salida efectiva del motor del pistón
pinMode (OUTPUT4, OUTPUT); //Salida efectiva del motor de la banda
pinMode (OUTPUT5, OUTPUT); //Salida efectiva del motor de la banda
pinMode (IN6, INPUT); //Salida inicial del motor del pistón
pinMode (IN7, INPUT); //Salida inicial del motor del pistón
pinMode (IN8, INPUT); //Salida inicial del motor de la banda
pinMode (IN9, INPUT); //Salida inicial del motor de la banda
pinMode (IN10, INPUT); //Final de carrera
}
void loop()
{
//Lectura del final de carrera
FinalCarrera = digitalRead (IN10); //Se lee la señal de los finales de carrera
if(FinalCarrera == 0){ //Si los finales de carreca se activan, los motores se detienen
digitalWrite (OUTPUT2, LOW);
digitalWrite (OUTPUT3, LOW);
digitalWrite (OUTPUT4, LOW);
digitalWrite (OUTPUT5, LOW);
}
else{ //Si los finales de carrera no se han activado, el Arduino Maestro reproduce los comandos
del Arduino Esclavo
digitalWrite (OUTPUT2, digitalRead (IN6));
digitalWrite (OUTPUT3, digitalRead (IN7));
digitalWrite (OUTPUT4, digitalRead (IN8));
digitalWrite (OUTPUT5, digitalRead (IN9));
}
}
A continuación, se muestra el código que el Arduino Esclavo tiene en este momento, el cual corresponde
a una prueba de todos los sensores, actuadores y motores del sistema DEGEM.
//sensores
float Pot = 0, PotEscalado = 0, SetPot = 0;
int FinalCarrera = 0, Proximidad1 = 0, Inductivo = 0, Proximidad2 = 0;
int OUTPUT2 = 2;
int OUTPUT3 = 3;
int OUTPUT4 = 4;
int OUTPUT5 = 5;
int IN6 = 6;
int IN7 = 7;
int IN8 = 8;
int IN9 = 9;
int OUTPUT10 = 10;
int OUTPUT11 = 11;
int OUTPUT12 = 12;
int OUTPUT13 = 13;
void setup()
{ Serial.begin(9600);
pinMode (OUTPUT2, OUTPUT); //Motor del pistón
pinMode (OUTPUT3, OUTPUT); //Motor del pistón
pinMode (OUTPUT4, OUTPUT); //Motor de la banda
pinMode (OUTPUT5, OUTPUT); //Motor de la banda
pinMode (IN6, INPUT); //Sensor de proximidad 1
pinMode (IN7, INPUT); //Sensor inductivo
pinMode (IN8, INPUT); //Sensor de proximidad 2
pinMode (IN9, INPUT); //Finales de carrera
pinMode (OUTPUT10, OUTPUT); //LED 1
pinMode (OUTPUT11, OUTPUT); //LED 2
pinMode (OUTPUT12, OUTPUT); //LED 3
pinMode (OUTPUT13, OUTPUT); //LED 4
}
void loop()
{
/*Lectura de los sensores*/
//Potenciómetro
Pot = analogRead(A0) ; //Lectura del potenciómetro
PotEscalado = Pot*(5.0/1023.0); //Escalado del potenciómetro
//Sensor Proximidad 1
Proximidad1 = digitalRead (IN6);
//Sensor Inductivo
Inductivo = digitalRead (IN7);
//Sensor Proximidad 2
Proximidad2 = digitalRead (IN8);
//Final de carrera
FinalCarrera = digitalRead (IN9);
/*Ver variables*/
Serial.print("Pot = ");
Serial.print(PotEscalado);
Serial.print("\tProximidad1 = ");
Serial.print(Proximidad1) ;
Serial.print("\tProximidad2 = ");
Serial.print(Proximidad2);
Serial.print("\tInductivo = ");
Serial.print(Inductivo);
Serial.print("\tSetPot = ");
Serial.print(SetPot);
Serial.print("\tFinal = ");
Serial.println(FinalCarrera);
//Motor para
delay(1000);
digitalWrite (OUTPUT2, LOW);
digitalWrite (OUTPUT3, LOW);
//Motor retrocede
delay(1000);
digitalWrite (OUTPUT2, HIGH);
digitalWrite (OUTPUT3, LOW);
digitalWrite (OUTPUT10, LOW); //Se apaga el LED
digitalWrite (OUTPUT11, LOW); //Se apaga el LED
digitalWrite (OUTPUT12, LOW); //Se apaga el LED
digitalWrite (OUTPUT13, LOW); //Se apaga el LED
//Motor para
delay(1000);
digitalWrite (OUTPUT2, LOW);
digitalWrite (OUTPUT3, LOW);