Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SENSORES Y PROCESADORES
PROYECTO:
CONTROL DE FLUJO
ING. ELECTROMECÁNICA
EQUIPO:
DOCENTE:
ING. ESCAMILLA SOZA JORGE.
INTEGRANTES:
HERNÁNDEZ VARGAS OSCAR ALEXANDER
VALENCIA PÉREZ JOSÉ FERNANDO
AÑORVE MUCHACHO LUZ ARELY
GUTIÉRREZ LANDA ISAY
BRAVO GUERRERO ARMANDO RAMSÉS
MACEDO JAIME ISAÍ
En dinámica de fluidos, caudales es la cantidad de fluido que circula a través de una sección
del ducto (tubería,cañería, oleoducto, río, canal,...)por unidad de tiempo. Normalmente se
identifica con el flujo volumétrico o volumen que pasa por un área dada en la unidad de
tiempo.
Un micro controlador es un circuito integrado que en su interior contiene una unidad central
de procesamiento (CPU), unidades de memoria (RAM y ROM), puertos de entrada y salida
y periféricos. Estas partes están interconectadas dentro del micro controlador, y en conjunto
forman lo que se le conoce como microcomputadora. Se puede decir con toda propiedad
que un micro controlador es una microcomputadora completa encapsulada en un circuito
integrado.
El propósito fundamental de los micro controladores es el de leer y ejecutar los programas
que el usuario le escribe, es por esto que la programación es una actividad básica e
indispensable cuando se diseñan circuitos y sistemas que los incluyan. El carácter
programable del micro controlador simplifica el diseño de circuitos electrónicos.
OBJETIVOS.
Construir de manera didáctica un prototipo para medir el flujo que pasa por una tubería
utilizando como programador UN MICROCONTROLADOR.
MATERIAL.
Pic16F877a
Bomba sumergible 12v
Sensor de flujo
Diodo in 4007
Tip 41c
Resistencias
LCD
Protoboard
Cable dupont
MARCO TEÓRICO.
MICROCONTROLADOR PIC16F877A
La gama PIC16F de microcontroladores de Microchip son MCU de 8 bits que incorporan la
arquitectura PIC® de Microchip de una gran variedad de opciones de encapsulado y
contactos, desde los dispositivos de 14 contactos que permiten ahorrar espacio hasta los
dispositivos de 64 contactos con múltiples funciones. Hay dispositivos con arquitectura
básica, media o media mejorada disponibles con diversas combinaciones de periféricos, lo
que proporciona a los diseñadores tanto flexibilidad como diversidad de opciones para sus
aplicaciones.
El sensor de flujo permite medir el caudal de agua en una tubería y así poder conocer el
consumo. Un sensor de flujo o Caudalímetros es un instrumento para la medición de caudal
o gasto volumétrico de un fluido. El caudal es la cantidad de líquido o fluido (volumen) que
circula a través de una tubería por unidad de tiempo, por lo general se expresa en: litros por
minutos (l/m), litros por hora (l/h), metros cúbicos por hora (m³/h), etc.). Los Caudalímetros
suelen colocarse directamente en la tubería que transporta el fluido. También suelen
llamarse medidores/sensores de caudal, medidores de flujo o flujómetros.
SENSOR DE FLUJO
Características del pulso de flujo: 4.8 x Q (Q es L / min), por ejemplo, es 4.8 a 1 litro x 1 x
60 = 288 litros de agua que fluye a través de la salida es el número de pulsos, es decir 1
litro de salida de pulso 288, 60 es un tiempo (sec).
ESPECIFICACIONES
TIP 41C
El TIP41C es un transistor de potencia de plástico diseñado para usarse en
aplicaciones de amplificación y conmutación. Voltaje de colector-emisor a 100 V y
disipación de colector de 65W.
Descripción
Todas las resistencias tienen impresas de 4 a 5 bandas de colores. Estas bandas son
vitales, debido a que podemos utilizar un código de color y compáralas y saber su valor
óhmico.
Con el tercer método es más elaborado ya que tenemos que involucrar la ley de ohm.
y utilizar las fórmulas correspondientes para saber el valor de la resistencia eléctrica.
LCD
Un display LCD (Liquid Crystal Display) es un display alfanumérico de matriz de puntos
(dot-matrix) que sirve para mostrar mensajes a través de caracteres como letras,
números o símbolos. La placa del display viene equipada con un microcontrolador
(normalmente el modelo HD44780) que se encarga de generar los caracteres, polarizar
la pantalla, desplazar el curso. Además, también viene equipado con una memoria ROM
donde están almacenados los caracteres a través de una matriz de puntos, y una
memoria RAM donde se pueden almacenar caracteres creados por nosotros. Estos
displays disponen de unos pins para conectar un microcontrolador.
PROTOBOARD
Una protoboard es una base que sirve para optimizar el cableado de tu circuito electrónico,
minimizando el número de cables con el objetivo de que lo tengas lo más limpio y ordenado
posible, lo cual te ayudará a montar mejor tu circuito.
Internamente, una protoboard, tiene conexiones preestablecidas que te ayudarán a
conectar unos componentes con otros. El esquema de conexiones internas de un
protoboard.
Fig. 4 Protoboard.
Con este cable dupont macho macho 20 cm realiza tus conexiones de forma más
profesional, sin soldaduras, sin falsos contactos y sin desorden. Los cables vienen en un
arnés de cable plano de 40 conductores, cada uno con su conector independiente. Puedes
separarlos todos y utilizarlos de manera individual.
Un cable dupont para prototipos, es un cable con un conector en cada punta, que se usa
normalmente para interconectar entre sí los componentes en una placa de pruebas. Se
utilizan de forma general para transferir señales eléctricas de cualquier parte de la placa de
prototipos.
Fig. 5 Cable dupont.
PIC C COMPILER
PIC C Compiler es un inteligente y muy optimizado compilador C que contienen operadores
estándar del lenguaje C y funciones incorporados en bibliotecas que son específicas a los
registros de PIC, proporcionando a los desarrolladores una herramienta poderosa para el
acceso al hardware las funciones del dispositivo desde el nivel de lenguaje C.
El compilador CCS contiene más de 307 funciones integradas que simplifiquen el acceso al
hardware, mientras que la producción eficiente y altamente optimizado código. Se incluyen
funciones de hardware del dispositivo de características tales como:
METODOLOGÍA
Para la realización de esta práctica hicimos uso de la herramienta tecnológica del software
Pic c compiler la cual nos permite realizar unas series de programaciones para los
microcontroladores de la marca PIC, del cual nosotros utilizamos el PIC16F877A que es un
microcontrolador muy usado.
A continuación, se mostrara como vienen distribuidos cada uno de los pines del
Microcontrolador PIC16F877A.
En la siguiente imagen se puede apreciar las dos variables que se están manejando en este
prototipo la cual se manejan dos variables de medición set point que es en valor deseado o
demandado por el sistema y la variable de medición real que proviene del sensor de flujo.
http://www.asifunciona.com/fisica/ke_led/ke_led_2.htm
https://naylampmechatronics.com/atmel/111-atmega328.html
https://www.microchip.com/mplab/avr-support/atmel-studio-7
ANEXOS
Programación
#include <16F877.h>
#FUSES hs, wdt, brownout, NOWDT
#DEVICE ADC=10
#USE delay(clock=16M)
void main(){
output_drive(PIN_C1);
setup_timer_2(t2_div_by_16,249,1);
setup_ccp2(ccp_pwm);
set_pwm2_duty(5);
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER1);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
set_timer1(28036);
output_float(PIN_A4);
enable_interrupts(INT_TIMER0);
setup_timer_0(RTCC_DIV_1 | RTCC_EXT_L_TO_H);
set_timer0(0);
setup_adc_ports(AN0);
setup_adc(adc_clock_div_8);
set_adc_channel(0);
delay_ms(10);
set_timer0(0);
lcd_init();
printf(lcd_putc, "\f");
lcd_gotoxy(3, 1);
printf(lcd_putc, "CONTROLANDO");
lcd_gotoxy(2,0);
printf(lcd_putc, "FLUJO DE AGUA");
delay_ms(2000);
printf(lcd_putc, "\f");
delay_ms(200);
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER1);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
set_timer1(28036);
while( true ){
set_timer0(0);
delay_ms(2000);
flujo = get_timer0();
flujo = (flujo/2.0)*(1.0/16.0)*(2.0);
set_adc_channel(0);
delay_us(11);
sp = read_adc();
spf = sp*(2.25/1023.0);
wt = 1.0*flujo;
err = (1.0)*(spf-wt);
ut = -kp*(wt-wta) + ki*err +uta;
if (ut <= 10.0 ){ ut = 10.0; }
else if (ut>=600.0){ ut = 600.0; }
pwm = (1.0)*(ut);
if (pwm<=10){ pwm=10; }
else if (pwm>=600){ pwm = 600; }
wta = wt;
uta = ut;
set_pwm2_duty(pwm);
}
}
#int_timer0
void timer0_ovf()
{ num_encoder++; }