Академический Документы
Профессиональный Документы
Культура Документы
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERIA ELECTRICA
DEPARTAMENTO DE ELECTRONICA Y COMUNICACIONES
LABORATORIO DE ELECTRONICA III
Informe
Proyecto Planta Llenadora de Botellas
Integrantes:
Walter Arguello C.I.: 19279708
William Castillo C.I.:20435208
Objetivos
Objetivo general: Construccin de una planta llenadora de botellas con el uso de un microprocesador.
Objetivos especficos:
Controlar el proceso de una planta mediante un microcontrolador (PIC) y as lograr una
automatizacin.
Aprender la herramienta de programacin para desarrollar proyectos que requieran su uso.
Alcances: Lograr el correcto funcionamiento de la planta, yendo desde el inicio cuando se detecta una
botella a la entrada, hasta el final una vez que se ha llenado y ha salido de la planta. Creando un
proceso verstil que permita realizar varias funciones a la vez sin la necesidad de hacerlo por vueltas
(una vez que la botella ha salido de la planta), es decir, que mientras una botella vaya saliendo de la
planta otra se vaya llenando o yendo al punto de llenado.
Diagrama de Bloques
Sensor 1
Detecta Botella
Sensor 2
Legada de botella al
punto de llenado
Microcontrolador
(PIC)
Toma de
decisiones
Sensor 3
Botella Llena
Ejecucin de Acciones:
ActivarDesactivar Motor1
ActivarDesactivar Motor2
ActivarDesactivar Bomba
Despus de haber estudiado el sensor QRD1114, se proceder a especificar que la salida del
sensor QRD1114 ir conectada a la entrada positiva (+) de un comparador LM393. En este comparador
la entrada negativa ira a una conexin de resistencias para obtener una diferencia de potencial, tal como
se muestra en la siguiente figura:
R1
RV1
10k
U1:A
80%
3
1
1k
LMV393M
53%
RV2
1k
Donde se confirma que V- > V+, es decir podemos establecer el potencimetro en su nivel medio y
obtendremos el valor deseado.
La salida del comparador (Sensor1) ir conectada al Pin a0 del PIC (PIC 18F4450), el cual
dependiendo de su configuracin, que se explicar mas adelante, proceder a la toma de decisiones
para ejecutar las acciones respectivas que se ameriten (Activar el motor1 para trasladar la botella al
punto de llenado).
Por otra parte podemos justificar que para esta etapa del proyecto se emple un sensor infrarrojo
(QRD1114), ya que es un sensor que nos permite obtener en un mismo integrado tanto el emisor como
el receptor, siendo este un sensor til para distancias cercanas. Adems se utiliz un comparador
LM393 por consejo del profesor ya que este mismo ayudara a disminuir los errores de salida y as
enviar un valor exacto al microcontrolador.
Llegada de botella al punto de llenado: Para realizar esta etapa se realizo la misma
configuracin de la etapa anterior, se utiliza un sensor infrarrojo QRD1114, un comparador
LM393 y unos potencimetros. En esta parte el sensor (Sensor2) se utiliza para enviarle
informacin al PIC, conectando la salida al Pin a1, si efectivamente llego la botella al punto de
llenado o no. Si la botella llego al punto de llenado el microcontrolador realiza su accin
respectiva (Activar la bomba de llenado), por otra parte si no ha llegado al punto el mismo
revisa que fue lo que paso o que esta ocasionando el error o el retraso.
Llenado de Botella: Una vez que la botella ha llegado al punto de llenado un sensor (Sensor2)
enva la informacin al PIC, el cual activar la bomba de llenado (mediante el pin e0) y
comenzar a llenarse la botella. Cuando la botella se llene al limite, lo cual se conocer debido a
la ubicacin de otro sensor (Sensor3), el cual presenta la misma configuracin de los sensores
anteriores, el mismo enviara la informacin al PIC, especficamente a la entrada del Pin e1,
ocurrido esto el microcontrolador realiza la accin respectiva, desactivar la bomba de llenado y
activar el motor2 para sacar la botella.
U1
Switch1
Findecarrera ida
Findecarrera vuelta
2
3
4
5
6
7
14
13
SW1
SW-SPST
33
34
35
36
37
38
39
40
SW2
SW-SPST
18
RA0/AN0
RC0/T1OSO/T1CKI
RA1/AN1
RC1/T1OSI/CCP2/UOE
RA2/AN2/VREF-/CVREF
RC2/CCP1/P1A
RA3/AN3/VREF+
RC4/D-/VM
RA4/T0CKI/C1OUT/RCV
RC5/D+/VP
RA5/AN4/SS/LVDIN/C2OUT
RC6/TX/CK
RA6/OSC2/CLKO
RC7/RX/DT/SDO
OSC1/CLKI
RB0/AN12/INT0/FLT0/SDI/SDA
RB1/AN10/INT1/SCK/SCL
RB2/AN8/INT2/VMO
RB3/AN9/CCP2/VPO
RB4/AN11/KBI0/CSSPP
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
RD0/SPP0
RD1/SPP1
RD2/SPP2
RD3/SPP3
RD4/SPP4
RD5/SPP5/P1B
RD6/SPP6/P1C
RD7/SPP7/P1D
RE0/AN5/CK1SPP
RE1/AN6/CK2SPP
RE2/AN7/OESPP
RE3/MCLR/VPP
VUSB
15
16
17
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
1
PIC18F4550
U2
2
3
4
5
6
7
14
13
33
34
35
36
37
38
39
40
18
RA0/AN0
RC0/T1OSO/T1CKI
RA1/AN1
RC1/T1OSI/CCP2/UOE
RA2/AN2/VREF-/CVREF
RC2/CCP1/P1A
RA3/AN3/VREF+
RC4/D-/VM
RA4/T0CKI/C1OUT/RCV
RC5/D+/VP
RA5/AN4/SS/LVDIN/C2OUT
RC6/TX/CK
RA6/OSC2/CLKO
RC7/RX/DT/SDO
OSC1/CLKI
RB0/AN12/INT0/FLT0/SDI/SDA
RB1/AN10/INT1/SCK/SCL
RB2/AN8/INT2/VMO
RB3/AN9/CCP2/VPO
RB4/AN11/KBI0/CSSPP
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
VUSB
RD0/SPP0
RD1/SPP1
RD2/SPP2
RD3/SPP3
RD4/SPP4
RD5/SPP5/P1B
RD6/SPP6/P1C
RD7/SPP7/P1D
RE0/AN5/CK1SPP
RE1/AN6/CK2SPP
RE2/AN7/OESPP
RE3/MCLR/VPP
15
16
17
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
1
Motores
U3
1
2
3
4
5
6
7
8
1B
2B
3B
4B
5B
6B
7B
8B
COM
1C
2C
3C
4C
5C
6C
7C
8C
10
18
17
16
15
14
13
12
11
+88.8
Motor1
ULN2803
PIC18F4550
+88.8
Motor2
Cabe destacar que el motor se activar (Dar un paso) cuando entren en contactos dos de sus
bobinas, como se puede ver en la siguiente tabla:
ABCD
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001
A
1010
B
1011
C
1100
D
1101
E
1110
F
1111
Tabla N1. Tabla de combinacin de bobinas del motor.
Como se muestra en la tabla anterior, siendo las bobinas del motor ABCD, los lugares donde
entran en contacto dos de ellas son los valores de 3,6,9 y C, estas combinaciones se utilizarn
para la programacin respectiva de los mismos en el PIC, la cual se explicar ms adelante.
U1
2
3
4
5
6
7
14
13
Switch2
Findecarrera ida
Findecarrera vuelta
SW4
33
34
35
36
37
38
39
40
RA0/AN0
RC0/T1OSO/T1CKI
RA1/AN1
RC1/T1OSI/CCP2/UOE
RA2/AN2/VREF-/CVREF
RC2/CCP1/P1A
RA3/AN3/VREF+
RC4/D-/VM
RA4/T0CKI/C1OUT/RCV
RC5/D+/VP
RA5/AN4/SS/LVDIN/C2OUT
RC6/TX/CK
RA6/OSC2/CLKO
RC7/RX/DT/SDO
OSC1/CLKI
RB0/AN12/INT0/FLT0/SDI/SDA
RB1/AN10/INT1/SCK/SCL
RB2/AN8/INT2/VMO
RB3/AN9/CCP2/VPO
RB4/AN11/KBI0/CSSPP
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
SW-SPST
SW5
SW-SPST
18
VUSB
RD0/SPP0
RD1/SPP1
RD2/SPP2
RD3/SPP3
RD4/SPP4
RD5/SPP5/P1B
RD6/SPP6/P1C
RD7/SPP7/P1D
RE0/AN5/CK1SPP
RE1/AN6/CK2SPP
RE2/AN7/OESPP
RE3/MCLR/VPP
15
16
17
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
1
PIC18F4550
U1
2
3
4
5
6
7
14
13
33
34
35
36
37
38
39
40
18
RA0/AN0
RC0/T1OSO/T1CKI
RA1/AN1
RC1/T1OSI/CCP2/UOE
RA2/AN2/VREF-/CVREF
RC2/CCP1/P1A
RA3/AN3/VREF+
RC4/D-/VM
RA4/T0CKI/C1OUT/RCV
RC5/D+/VP
RA5/AN4/SS/LVDIN/C2OUT
RC6/TX/CK
RA6/OSC2/CLKO
RC7/RX/DT/SDO
OSC1/CLKI
RB0/AN12/INT0/FLT0/SDI/SDA
RB1/AN10/INT1/SCK/SCL
RB2/AN8/INT2/VMO
RB3/AN9/CCP2/VPO
RB4/AN11/KBI0/CSSPP
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
RD0/SPP0
RD1/SPP1
RD2/SPP2
RD3/SPP3
RD4/SPP4
RD5/SPP5/P1B
RD6/SPP6/P1C
RD7/SPP7/P1D
RE0/AN5/CK1SPP
RE1/AN6/CK2SPP
RE2/AN7/OESPP
RE3/MCLR/VPP
VUSB
15
16
17
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
1
PIC18F4550
R1
200
RV1
10k
U2:A
R2
50%
RV2
D1
LED-GREEN
50%
1k
1
2
LMV393M
1k
if((sensor_detecta_botella_1==1)&&(sensor_fincarrera_m2_vuelta==1)&&(cont>50)&&(senso
r2_botella2==1)&&aux==false)
{
motor1_habilitado=true;
motor1_adelante=true;
}
En esta sentencia se deben cumplir cuatro condiciones, que el sensor1 sea un alto (No haya
botella), que el switch2 (sensor_fincarrera_m2_vuelta) sea un alto, este switch es el que se encuentra en
la segunda parte de la planta, adems la variable cont (contador) debe ser mayor a 50 y que el sensor2
(sensor2_botella2) sea igual a un alto, es decir que no haya botella en el punto de llenado. Si se
cumplen estas condiciones se ejecutan las siguientes funciones se habilitara el motor1 y la variable
motor1_adelante se establecer como verdadera y el motor1 ira hacia adelante. Por otra parte en esta
sentencia se establece la variable aux como false.
En esta sentencia If se debe cumplir que el switch1 sea un alto, activado debido a su segundo
paso, es decir que la botella ha llegado al punto de llenado. Cumplindose esta condicin se ejecutan
las siguientes acciones: motor1 va a estar habilitado y se colocara en falso el motor1 hacia adelante,
provocando que el motor1 se regrese al punto de inicio. Adems se establece la variable aux como
verdadero, para que cuando se cumpla esta condicin, el programa no vuelva a entrar en la sentencia
anterior, es decir se inhabilite. Esto se realizo debido a los problemas que se presentaron al momento de
montar el circuito.
Para esta sentencia se deben cumplir tres condiciones, que la botella se haya llenado
(sensor3_botella_llena==0), que efectivamente la botella se encuentre en el punto de llenado
(sensor2_botella2==0) y que el switch2 este activado en uno de sus pasos
(sensor_fincarrera_m2_vuelta==1). Si se cumplen las tres condiciones lgicas el microcontrolador
ejecutara las siguientes acciones: habilitara al motor2 y la variable motor2_adelante ser igual a
verdadera, por lo que el motor2 comenzara a moverse hacia adelante.
La quinta sentencia, cumple la misma funcin que la tercera sentencia, pero haciendo referencia
al motor2
if(sensor_fincarrera_m2_ida==1)
{
motor2_habilitado=true;
motor2_adelante=false;
}
Como se puede observar esta sentencia de repeticin presenta tres condiciones lgicas, que el
contador sea igual a 50 y que se cumpla que la botella este en el punto de llenado o que el switch2 no
haya sido activado. Si se cumplen estas condiciones el PIC deshabilitar el motor1
(motor1_habilitado=false).
Se deben cumplir con dos condiciones lgicas que el sensor1 no haya detectado botella y que el
switch1 este activado (sensor_fincarrera_m1_vuelta==1), si ocurre esto el PIC deshabilitara el motor1.
if((sensor_fincarrera_m2_vuelta==1)&&(sensor3_botella_llena==1))
motor2_habilitado=false;
En esta sentencia se tienen que cumplir dos condiciones lgicas, el switch2 este activado en uno
de sus pasos (sensor_fincarrera_m2_vuelta==1) y que la botella todava no se haya llenado
completamente. Si se cumplen ambas condiciones se deshabilitara el motor2.
if(sensor_fincarrera_m1_vuelta==1)
{
cont=0;
aux=false;
}
En esta estructura, la condicin lgica que se debe cumplir es que el switch1 este activado en
uno de sus pasos (sensor_fincarrera_m1_vuelta==1), si se cumple esto el PIC establecer el contador
en cero (cont=0). Adems se vuelve a establecer la variable aux como false, ya que se podra cumplir
de nuevo la condicin lgica de la segunda sentencia.
Aqu si se cumplen con las siguientes condiciones lgicas: el motor1 se encuentra habilitado y
el motor1 va hacia adelante, el contador sumara uno al valor que tena en ese momento (cont++), esto
se hace para que en cada vuelta que se produzca se le sume un uno al valor del contador y asi poder ir
llevando su conteo para cuando toque volver a activar el motor1, como se plante en las sentencias
anteriores.
Si se cumple que la botella est en el punto de llenado y se confirma que la botella no est llena,
se comenzar a llenar la misma (output_high(PIN_e0)), se activa la bomba de llenado, de lo contrario si
no se cumple con las condiciones lgicas no se activa la bomba (output_low(PIN_e0)).
if (motor1_habilitado==true)
strcpy( linea1lcd, "M1 ON");
if (motor2_habilitado==true)
strcpy( linea1lcd, "M2 ON");
if (motor1_habilitado==true && motor2_habilitado==true)
strcpy( linea1lcd, "M1 & M2 ON");
if (bomba_on==true)
strcpy( linea1lcd, "BOMBA ON");
if (motor1_habilitado==true && bomba_on==true)
strcpy( linea1lcd, "M1 & BOMBA ON");
if (motor1_habilitado==false && bomba_on==false && motor2_habilitado==false)
strcpy( linea1lcd, "ESPERA BOTELLA");
printf(lcd_putc,"\f%s", linea1lcd);
En este bloque de sentencias, se puede observar que dependiendo de cada condicin lgica que
se cumpla, la funcin strcpy asignara un determinado valor a la variable linea1lcd (la cual es una
variable tipo carcter). Luego segn la condicin que se cumpla con la funcin printf, se manda a
imprimir dicho valor en la lcd, lo que indica la sentencia que se encuentra entre comillas ("\f%s")
es: la \f, indica que se borra lo que haba en pantalla y %s indica que la variable a imprimir es una
variable tipo carcter, en este caso lleva el nombre de linea1lcd.
output_d(out);
}
Aqu se plantearon dos estructuras If anidadas, la primera presenta la condicin que el
motor1 se encuentre activado y la segunda que el motor1 vaya hacia adelante, si se cumplen con ambas
condiciones el programa cae en una funcin switch, la cual bsicamente estudia la posicin en que se
encuentra el motor despus de cada paso y lo lleva al siguiente paso, provocando as el movimiento del
motor hacia adelante en este caso.
La dcimo cuarta sentencia, tiene la misma estructura que la dcimo segunda, pero haciendo
referencia al motor2.
if (motor2_habilitado==true)
{
if (motor2_adelante==true)
{
switch (m2)
{
case 0x03: m2=0x06;break;
case 0x06: m2=0x0c;break;
case 0x0c: m2=0x09;break;
case 0x09: m2=0x03;break;
}
out=m2*16;
out=out+m1;
output_d(out);
}
La dcimo quinta sentencia, tiene la misma estructura que la dcimo tercer sentencia, pero esta
vez haciendo referencia al motor2.
if (motor2_adelante==false)
{
switch (m2)
{
case 0x09: m2=0x0c;break;
case 0x0c: m2=0x06;break;
case 0x06: m2=0x03;break;
case 0x03: m2=0x09;break;
}
out=m2*16;
out=out+m1;
output_d(out);
}
}
delay_ms(pausa);
}
Cabe destacar que al final del bloque de sentencias de esta estructura, se le proporciona un
tiempo de retardo al motor (delay_ms(pausa)) el cual sera de unos 100ms segn lo que se estableci
como variable al principio del algoritmo.
Listado de componentes:
Para la elaboracin de este proyecto se emplearon los siguientes elementos:
Un PIC18F4550.
3 sensores infrarrojos QRD1114.
2 comparadores LM393 ( Ya que cada integrado trae dos comparadores).
1 ULN2803.
2 Motores Paso a Paso Unipolares.
4 Potencimetros de 1k .
11 Resistencias de 10k .
1 Oscilador de cristal de 20MHz. 2 Capacitores de 22pF
2 Rsistencias de 220 .
1 Pantalla LCD 1602
Diagrama de Flujo
Inicio
No
Se activa el motor1 e
ira hacia adelante
Si la botella llego al
punto de llenado
Si
No
El motor1 estar
habilitado pero ira en
reversa
No
El motor2 se habilitara e
Una
vez adelante
que la
ira
hacia
botella ha llegado al
final
Si
El motor2 estar habilitado
pero ira en reversa
No
Fin
Es importante mencionar que el diagrama de flujo anterior solamente muestra las funciones
principales del programa, no presenta las condiciones cuando en el proceso ocurren dos acciones al
mismo tiempo, por ejemplo que se est llenando una botella y en el inicio del sistema se detecte otra,
ya que eso distorsionara la esttica del diagrama de flujo y no permitiera entender rpidamente la
lgica de programacin.
Esquemtico
Conclusin
Se puede decir que el proyecto Planta llenadora de Botellas abarca todo lo referente al rea
de electrnica, ya que va desde la utilizacin simple de un comparador, hasta la programacin de un
microcontrolador. Este proyecto se realiz por etapas, desarrollando primeramente los sensores con su
respectiva configuracin, utilizando los sensores infrarrojos (QRD1114) y los comparadores (LM393),
obteniendo buenos resultados de dichas configuraciones. Por otra parte para la programacin del PIC se
utiliz el lenguaje c en un nivel bsico, esta herramienta es muy til ya que el PIC permite realizar
numerosas funciones para diferentes configuraciones circuitales, lo cual permite ahorrar tiempo,
espacio y dinero.
Con este proyecto se quera lograr la automatizacin de un sistema, que pudiera servir a una
planta (industria, fbrica, etc) para agilizar el proceso y disminuir los posibles errores. El objetivo
principal se logr, es decir se construy a escala una planta llenadora de botellas, funcionando en torno
a la toma de decisiones de un microcontrolador. No obstante se presentaron ciertos inconvenientes que
impidieron alcanzar en su totalidad los objetivos que se haban propuesto en el anteproyecto, uno de
estos fue que no se pudo realizar la bomba de llenado, que efectivamente permitiera llenar las botellas,
en su lugar se dej el led con el que se fue trabajando durante todo el semestre.
Por otra parte se puede presentar la idea, para continuacin del proyecto de montar el
circuito en baquelita, para hacer ms verstil y prctico el funcionamiento del mismo. Adems de
lograr implementar la bomba de llenado.
Bibliografa
http://electronicayrobotica.files.wordpress.com/2012/09/qrd1114.jpg
http://www.aquihayapuntes.com/indice-programacion-pic-en-c.html
Anexos
A continuacin se muestra un modelo escrito, del proyecto: