Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Informe 5 EqD
Informe 5 EqD
Diseñar e implementar un circuito electrónico que Los aparatos en los que se lleva a cabo la
realice la función de una centrifuga, que contenga un centrifugación son las centrífugas, que son
sistema de alarma y que a través de un teclado matricial dispositivos móviles con alas en las braqueas. Una
se controle la velocidad de giro y el tiempo de duración, centrífuga tiene dos componentes esenciales:
que por medio de una pantalla LCD se logre visualizar rotor (donde se coloca la muestra a centrifugar) y
estas variables. motor. Existen dos tipos de rotores:
Motores Continuos
Caracterización del motor: Pero con esto solo se tiene el sentido de giro, para
la velocidad de rotación del motor, se hace por
Voltaje (v) RPM PWM medio del PWM proveniente del arduino, en el
3 460 65 esquemático (ilustración 4) se puede observar que
el pin 3 del arduino ingresa al pin 1 del integrado
4 1350 85 L293D, el pwm es la modulación por ancho de
5 2180 107 pulso, como función el arduino obtiene resultados
6 2850 128 analógicos con medios digitales, El control digital
7 3250 149 se utiliza para crear una onda cuadrada, una señal
activada y desactivada. Este patrón de encendido
8 3600 170
y apagado puede simular voltajes entre encendido
9 3900 192 total (5 voltios) y apagado (0 voltios) cambiando
10 4040 213 la parte del tiempo que la señal pasa en
11 4280 234 comparación con el tiempo que la señal no
12 4650 255 pasa. La duración de encendido se denomina
ancho de pulso. Para obtener valores analógicos
Tabla 1: Relación voltaje, rpm, pwm, Motor DC variables, se cambia o modula ese ancho de
pulso. Si se repite este patrón de encendido /
apagado lo suficientemente rápido el resultado es
RPM PWM como si la señal fuera un voltaje constante entre 0
460 65 y 5v que controla la velocidad del motor.
4650 255
Tabla 2: Relación rpm, pwm, Motor DC El control de la alarma se realiza mediante el uso
de un señor de herradura, este funciona por
infrarrojo mediante un comparador el cual tiene la
función de entregar un 1 y 0 lógico a través de un
Caracterizacion motor DC emisor y receptor de infrarrojo, por esta forma de
300
funcionamiento se decido implementarlo ya que si
250 y = 0.0453x + 44.141 255 la puerta de la centrifuga se encuentra cerrada el
sensor se encuentra entregando un 0 lógico, al
200 sacar el indicador del medio del sensor, este
PWM
¿Qué método de control uso para controlar la velocidad { '1', '2', '3', 'A'},
del motor? { '4', '5', '6', 'B'},
{ '7', '8', '9', 'C'},
{ '*', '0', '#', 'D'},
El método que se implementó para regular o controlar la
velocidad del motor fue por medio del pwm, es decir por };
modulación de ancho de banda.
byte pinesFilas[filas] = {12, 11,
10, 9}; //Pines donde van
conectadas las filas del teclado
byte pinesColumnas[columnas] = {8, 7, 6, lcd.clear();
5}; //Pines donde van conectadas las }
columnas del teclado }
//entra a hacer lo principal
//Inicializo el teclado con el número de despues de controlar o cuadrar lo
filas, columnas, los pines del Arduino q se necesita
utilizados y la matriz if(conselector>=2
Keypad teclado = Keypad( &&RPM!=0 && tepo!=0){
makeKeymap(matriz), pinesFilas, ejecutar();
pinesColumnas, filas, columnas); }
//rutina de leer y convertir a
void setup() entero
{ void leer(){
Serial.begin(9600); //Inicializo el lcd.setCursor(0,1);
puerto serie lcd.print("Aceptar(A)");
lcd.init(); // initialize while(h==0){
the lcd char tecla_presionada =
lcd.backlight(); teclado.getKey();//Almaceno en
cuentatiempo=millis()+demora; una variable la tecla presionada
pinMode(digPin,OUTPUT); if(tecla_presionada!=NO_KEY){
pinMode(buzzer,OUTPUT); if(tecla_presionada!='A'){
pinMode(barrera, INPUT); a=tecla_presionada-48;
} posiciones[contecla]=a;
contecla++;
void loop() //Serial.print(a);
{ lcd.setCursor(puntero,0);
empezar: lcd.print(a);
h=0; puntero++;
lcd.setCursor(0,0); delay(200);
lcd.print("RPM (C) 500-4500"); }
lcd.setCursor(0,1); else{
lcd.print("Tiempo (D) (seg))"); lcd.clear();
char tecla_presionada = puntero=8;
teclado.getKey();//Almaceno en una switch (contecla) {
variable la tecla presionada case 1:
if(tecla_presionada){ total=a;
if (tecla_presionada=='D' || break;
tecla_presionada=='C'){ case 2:
if(tecla_presionada=='D'){ total=posiciones[0]*10+posici
lcd.clear(); ones[1];
lcd.setCursor(0,0); break;
lcd.print("Tiempo="); case 3:
leer(); total=posiciones[0]*100+posic
tepo=total; iones[1]*10+posiciones[2];
conselector++; break;
delay(500); case 4:
} total=posiciones[0]*1000+posi
if(tecla_presionada=='C'){ ciones[1]*100+posiciones[2]*10+po
//Serial.print("RPM= "); siciones[3];
lcd.clear(); break;
lcd.setCursor(0,0); default:
lcd.print("RPM="); Serial.println("Valor no
leer(); valido");
RPM=total; total=0;
conselector++; break;
delay(500);
} }
} posiciones[0]=0;
else{ posiciones[1]=0;
lcd.clear(); posiciones[2]=0;
posiciones[3]=0;
lcd.print("Tecla contecla= 0;
incorrecta"); h=1;
delay(2000); }
//Esta hace lo que es
void ejecutar(){
leerbarrera=digitalRead(barrera)
;
lcd.clear();
while(leerbarrera==HIGH){
lcd.setCursor(0,0);
lcd.print("Cierre la tapa");
digitalWrite(buzzer,HIGH);
leerbarrera=digitalRead(barrer
a);
}
digitalWrite(buzzer,LOW);
velocidad=(0.0453*RPM)+49;
//Formula linealizacion
analogWrite(digPin,velocidad);
// Señal PWM en PIN 3
lcd.clear();
lcd.setCursor(0,0);
lcd.print("RPM= "+String(RPM));
lcd.setCursor(0,1);
lcd.print("Tiempo=
"+String(tepo));
demora=tepo*10;
for(int mantenedor =0;
mantenedor<=demora; mantenedor++){
leerbarrera=digitalRead(barre
ra);
if(leerbarrera==HIGH){//Pregu
nta si sensor esta en alto
lcd.clear();
lcd.print("Tapa abierta");
conselector=0;
RPM=0;
tepo=0;
mantenedor=demora;
demora=0;
analogWrite(digPin,0);
while(leerbarrera==HIGH){
leerbarrera=digitalRead
(barrera);
digitalWrite(buzzer,HIGH);
}
digitalWrite(buzzer,LOW);
}
delay(100);
}
conselector=0;
RPM=0;
tepo=0;
demora=0;
lcd.clear();
analogWrite(digPin,0);
lcd.clear();