• No se han encontrado resultados

Reporte general

N/A
N/A
Protected

Academic year: 2020

Share "Reporte general"

Copied!
83
0
0

Texto completo

(1)

Departamento de Ingeniería Industrial

Instrumentación

Reportes de Prácticas con Sensores

Aquino Alvarado Miguel Balbi González Michele Ramón

Jaramillo Cajica Ismael Pacheco Zepeda Juan Rafael

Pineda Torres Julio Adolfo

(2)

Contenido

Construcción de amperímetro analógico...3

Construcción de un Medidor de ángulos...7

Construcción de un amperímetro digital...17

Construcción de un sensor de nivel de agua...23

Construcción de un contador de personas...29

Sensor de luz...36

Construcción de un voltímetro digital...45

Construcción de un sensor de giro de motor...50

Termómetro con circuito integrado...57

Construcción de voltímetro analógico...65

Construcción de un sensor de posición de objetos...68

(3)

Construcción de amperímetro analógico

Aquino Alvarado Miguel Balbi González Michele Ramón

Jaramillo Cajica Ismael Pacheco Zepeda Juan Rafael

Pineda Torres Julio Adolfo

INTITUTO TECNOLÓGICO DE COLIMA Departamento de Ingeniería Mecatrónica

Av. Tecnológico No.1. C.P. 28976. Villa de Álvarez, Col. Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx

Objetivo

Diseñar, construir y acondicionar un circuito que tenga como función la de un amperímetro analógico que mida hasta 4 A.

Material

 Protoboard: Tablero con orificios conectados eléctricamente en una configuración estándar. Se utiliza para conectar y probar conexiones de circuitos electrónicos sin tener que soldar o montar de manera permanente los componentes.

 Cables

 Potenciómetro de 1 MΩ: El potenciómetro es un dispositivo de resistencia variable mediante una perilla.

 Potenciómetro de precisión: En este tipo de potenciómetros el ajuste de la resistencia se puede realizar de manera muy precisa gracias al pequeño tornillo de ajuste que traen por un lado.

(4)

 Galvanómetro: Se trata de un transductoranalógico electro mecánico que produce una deformación de rotación en una aguja o puntero en respuesta a la corriente eléctrica que fluye a través de su bobina.

 Resistencias cerámicas: De baja resistencia, y diseñadas para soportar una disipación de potencia relativamente alta a comparación de las resistencias “normales”, que son de carbón.

Desarrollo

Se tomó el límite de 4 A al igual que en el amperímetro digital. La corriente que genera una deflexión completa en la aguja del galvanómetro se conocía ya cuando se armó el voltímetro analógico, y es i¿=¿ 0.17 mA.

De la misma manera, se utilizaron las mismas resistencias cerámicas en paralelo para dividir la corriente que se emplearon en el amperímetro digital: 4 en paralelo que hacen un total de 5.5Ω.

Ahora la corriente deseada en la otra rama del divisor es de 0.17 mA cuando se alimenta el circuito con 20 V, por lo tanto la resistencia necesaria es:

R= 20V

0.00017A=116666.67Ω

para ir en serie con el galvanómetro. Siendo 4 A la máxima medición posible, y con la escala negra del galvanómetro que tiene 10 segmentos con 5 subdivisiones = 50 marcas, cada marca debe indicar un cambio de 4

50=¿ 0.08 A.

El circuito se armó como se muestra en el diagrama de Proteus en los anexos.

(5)

Conclusiones

Este amperímetro cumplió con su función, con una exactitud aceptable. Contrario a lo que sucedió con el digital, el límite no se vio rebajado, se mantuvo a los 4 A.

Con esta práctica aprendimos a manejar un galvanómetro, lo delicado que es, y algunas técnicas para determinar sus valores internos de resistencia y de corriente máxima.

De querer modificar el rango de medición, lo que se debe hacer el variar el valor de la resistencia en serie con el galvanómetro, de manera que la corriente que pasa por él nunca sobrepase los 0.17mA.

Estamos hablando de un error de alrededor de 2 marcas * 0.08 A = 0.16 A.

Anexos

Simulación en proteus

(6)

Fotos del circuito físico

Se conectó el amperímetro y se alimentó de tal manera que circularan 2 A por él, siendo la medición del galvanómetro la que muestra la magen:

(7)

Construcción de un Medidor de ángulos

Aquino Alvarado Miguel Balbi González Michele Ramón

Jaramillo Cajica Ismael Pacheco Zepeda Juan Rafael

Pineda Torres Julio Adolfo

INTITUTO TECNOLÓGICO DE COLIMA Departamento de Ingeniería Mecatrónica

Av. Tecnológico No.1. C.P. 28976. Villa de Álvarez, Col. Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx

Objetivo

Diseñar, construir y acondicionar un circuito capaz de detectar el sentido de giro de un motor y desplegarlo en una pantalla para hacerlo más amigable al usuario.

Material

 Protoboard: Tablero con orificios conectados eléctricamente en una configuración estándar. Se utiliza para conectar y probar conexiones de circuitos electrónicos sin tener que soldar o montar de manera permanente los componentes.

 Cables

 Potenciómetro: El potenciómetro es un dispositivo de resistencia variable mediante una perilla.

Transportador de 360°

 Microcontrolador: Circuito

integrado programable. Es capaz de ejecutar las instrucciones que

(8)

se le guardan en memoria, transferidas a él mediante un programador de PIC’s (se explica más adelante). Las instrucciones para el microcontrolador se programan en lenguaje C y se compilan para generar el código .hex que se guarda en el PIC. PIC 16F877A: Es un microcontrolador de la familia 16FXXXX de Microchip. Su arquitectura es de 8 bits, tiene una RAM de 368 bytes. El encapsulado PDIP, que fue el utilizado, le proporciona 40 pines de conexión. Tiene un conversor analógico/digital de 8 canales. Su voltaje de operación es de 2V a 5.5 V (siempre se trabajó muy cercano a 5V).

 Resistencias

Cristal

 Capacitor: Es un componente que sirve para almacenar energía. El uso práctico en los circuitos eléctricos es el filtrado del voltaje de alimentación que entra al circuito. Existe en presentaciones diferentes: de “lenteja” (el de la izq. de los que se muestran) y el electrolítico. Sus diferencias radican en que el primero no está polarizado y en los valores comerciales de capacitancia que se venden (los de lenteja se venden de menor capacitancia pero a voltajes más altos).

Desarrollo

Para “generar” un ángulo optamos por un transportador y una aguja que marca sobre éste el ángulo a medir respecto a un cero establecido arbitrariamente. La aguja está adosada a un potenciómetro, de manera que el giro genera una variación en la resistencia, ocasionando una variación en el voltaje presente en dicha resistencia, y con esto un cambio en la lectura que hace el PIC, pues se está

(9)

utilizando el conversor analógico/digital, o ADC, de 10 bits. Con el ADC establecido a 10 bits tenemos 1024 niveles de medición, aunque en la práctica la variación del potenciómetro no es lineal y la lectura no es tan precisa. Eso se solucionó con una linealización, como se presenta en los anexos.

Conclusiones

Con esta práctica aprendimos y/o reafirmamos la comprensión de una serie de conceptos:

 La utilidad de la medición de ADC y su uso con escala lineal

para determinar el valor de otra magnitud de manera indirecta (calculamos el ángulo en base a un cambio de voltaje generado por una variación en la resistencia).

 La variación de la resistencia en un potenciómetro no es lineal.

El angulómetro que construimos tuvo un desempeño bueno en la medición del rango de 0° a 220°, con un error máximo de 5° que se presentó de manera puntual. El error típico fue de 1 a 2 grados.

Anexos

Linealización

Se tomó medición manual del ADC que generaban ciertos ángulos escogidos a intervalos regulares. Posteriormente, se graficaron en Matlab los parámetros obtenidos. Se obtuvieron funciones representativas de los 20 intervalos en que se partió la función original, mediante la ecuación de la recta:

y=y2−y1

x2−x1

x+b

Se aproximaron 20 funciones para tratar de linealizar al máximo la función original, como se muestra en la siguiente imagen, donde los colores se superponen. Esto debido a que el uso previo de menos funciones había resultado insatisfactorio en algunos tramos, con errores de hasta 10 grados.

(10)

El siguiente código fue el utilizado para presentar la gráfica anterior:

adc=[0 3 7 10 13 17.5 22 27 34 41 51.5 77 113 146 186 218 256 290 319 350 381.5 414 448 480 513 544 578 614 646 678 714 748 778 812 846 880 918 956 972 980 986 992 998 998 1002 1006];

grad=[0:5:225];

x1=[0:5:20]; x2=[20:5:30]; x3=[30:5:40]; x4=[40:5:45]; x5=[45:5:50]; x6=[50:5:55]; x7=[55:5:65]; x8=[65:5:70]; x9=[70:5:75]; x10=[75:5:85]; x11=[85:5:100]; x12=[100:5:110]; x13=[110:5:130]; x14=[130:5:145]; x15=[145:5:155]; x16=[155:5:170]; x17=[170:5:185]; x18=[185:5:190]; x19=[190:5:210]; x20=[210:5:225]; y1=0.65*x1;

y2=0.9*(x2-20)+13; y3=1.2*(x3-30)+22; y4=1.4*(x4-40)+34; y5=2.1*(x5-45)+41; y6=5.1*(x6-50)+51.5; y7=6.9*(x7-55)+77; y8=8*(x8-65)+146; y9=6.4*(x9-70)+186; y10=7.2*(x10-75)+218;

(11)

y11=6.1*(x11-85)+290; y12=6.65*(x12-100)+381.5; y13=6.5*(x13-110)+448; y14=(20/3)*(x14-130)+578; y15=7*(x15-145)+678; y16=(98/15)*(x16-155)+748; y17=(22/3)*(x17-170)+846; y18=3.2*(x18-185)+956; y19=1.3*(x19-190)+972; y20=(8/15)*(x20-210)+998; plot(grad,adc) hold on grid on axis tight plot(x1,y1,'r') plot(x2,y2,'g') plot(x3,y3,'r') plot(x4,y4,'g') plot(x5,y5,'r') plot(x6,y6,'g') plot(x7,y7,'r') plot(x8,y8,'g') plot(x9,y9,'r') plot(x10,y10,'g') plot(x11,y11,'r') plot(x12,y12,'g') plot(x13,y13,'r') plot(x14,y14,'g') plot(x15,y15,'r') plot(x16,y16,'g') plot(x17,y17,'r') plot(x18,y18,'g') plot(x19,y19,'r') plot(x20,y20,'g')

Código para el microcontrolador 16F877A

Como se podrá apreciar, en el programa se procedió a asignar cada función parcial a su rango de ADC correspondiente. Esto es, dependiendo del ADC que mide, el PIC selecciona la función a utilizar para calcular el ángulo.

#include <16f877a.h> //llamamos el header (libreria con instrucciones y funciones basicas) especifico para el desarrollo de codigo para el PIC 16F8777A #fuses XT, NOWDT //preparamos el PIC para que deshabilite el Watch Dog Timer, XT es para indicar la presencia de un cristal de 4MHz o menos

#use delay (clock=4000000) //establecemos velocidad de reloj de 4MHz #use standard_io(B) //en esta linea preparamos puertos B para que funcionen como entradas o salidas

#include <lcd.c> //incluimos libreria de manejo de LCD

void main () //inicio de la función maestra del programa

{

(12)

float grad; //declaración de variable grad, flotante

lcd_init(); //inicializamos LCD

setup_adc_ports(AN0); //se inicializa Puerto A, salida 0, para ejecutar ADC

setup_adc(ADC_CLOCK_INTERNAL); //se prepara el reloj interno para ejecutar ADC

while(1) //iniciamos ciclo continuo

{

set_adc_channel(0); //seleccionamos canal 0 para el ADC

delay_us(20); //retardo de 20 microsegundos

adc=read_adc(); //guardamos lectura de ADC en variable ADC

if(adc<=13 && adc>=0) //según el margen en el que se encuentre la lectura del ADC se ejecutará una función diferente

{

grad=adc/(0.65);

}

if(adc<=22 && adc>13)

{

grad=((adc-13)/0.9)+20;

}

if(adc>22 && adc<=34 )

{

grad=(((adc-22)/1.2)+30);

}

if(adc>34 && adc<=41)

{

grad=((adc-34)/1.2)+40;

}

if(adc>41 && adc<=51.5)

{

grad=((adc-41)/2.1)+45;

}

if(adc>51.5 && adc<=77)

(13)

grad=((adc-51.5)/5.1)+50;

}

if(adc>77 && adc<=146)

{

grad=((adc-77)/6.9)+55;

}

if(adc>146 && adc<186)

{

grad=((adc-146)/8)+65;

}

if(adc>=186 && adc<=218)

{

grad=((adc-218)/6.4)+70;

}

if(adc>218 && adc<=290)

{

grad=((adc-218)/17.2)+75;

}

if(adc>290 && adc<=381.5)

{

grad=((adc-290)/6.1)+85;

}

if(adc>381.5 && adc<=448)

{

grad=((adc-381.5)/6.65)+100;

}

if(adc>448 && adc<=578)

{

grad=((adc-448)/6.5)+110;

}

if(adc>578 && adc<=678)

(14)

grad=((adc-578)/(20/3))+130;

}

if(adc>678 && adc<=748)

{

grad=((adc-678)/7)+145;

}

if(adc>748 && adc<=846)

{

grad=((adc-748)/(98/15))+155;

}

if(adc>846 && adc<=956)

{

grad=((adc-846)/(22/3))+170;

}

if(adc>956 && adc<=972)

{

grad=((adc-956)/3.2)+185;

}

if(adc>972 && adc<=998)

{

grad=((adc-972)/1.3)+190;

}

if(adc>998 && adc<=1006)

{

grad=((adc-998)/0.53)+210;

}

printf(lcd_putc, "\f ADC= %Lu ",adc); //imprimimos lectura de ADC

printf(lcd_putc, "\n%01.2Fgrados ",grad); //imprimimos ángulo calculado

delay_ms(100); //retardo de 100 milisegundos

}

(15)

Simulación en PROTEUS

Se muestra en la siguiente imagen el circuito que se construyó en Proteus para simular la medición de ángulos.

Fotos circuito físico

En las siguientes fotografías se muestran el circuito armado y funcionando, tanto la aguja y el transportador como las propias conexiones.

(16)
(17)

Construcción de un amperímetro digital

Aquino Alvarado Miguel Balbi González Michele Ramón

Jaramillo Cajica Ismael Pacheco Zepeda Juan Rafael

Pineda Torres Julio Adolfo

INTITUTO TECNOLÓGICO DE COLIMA Departamento de Ingeniería Mecatrónica

Av. Tecnológico No.1. C.P. 28976. Villa de Álvarez, Col. Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx

Objetivo

Diseñar, simular y construir un circuito capaz de medir una corriente de hasta 4 A.

Material

 Protoboard: Tablero con orificios conectados eléctricamente en una configuración estándar. Se utiliza para conectar y probar conexiones de circuitos electrónicos sin tener que soldar o montar de manera permanente los componentes.

 Cables

 Microcontrolador: Circuito integrado programable. Es capaz de ejecutar

las instrucciones que se le guardan en memoria, transferidas a él mediante un programador de PIC’s (se explica más adelante). Las

instrucciones para el

microcontrolador se programan en lenguaje C y se compilan para generar el código .hex que se guarda en el PIC.

 PIC 16F877A: Es un

microcontrolador de la familia 16FXXXX de Microchip. Su arquitectura es de 8 bits, tiene una RAM de 368 bytes. El encapsulado PDIP, que fue el utilizado, le proporciona 40 pines de conexión.  Resistencias

(18)

 Resistencias cerámicas: De baja resistencia, y diseñadas para soportar una disipación de potencia relativamente alta a comparación de las resistencias “normales”, que son de carbón.

 Cristal (4MHz)

 Capacitor: Es un componente que sirve para almacenar energía. El uso práctico en los circuitos eléctricos es el filtrado del voltaje de alimentación que entra al circuito.

Existe en presentaciones

diferentes: de “lenteja” (el de la izq. de los que se muestran) y el electrolítico. Sus diferencias radican en que el primero no está polarizado y en los valores comerciales de capacitancia que se venden (los de lenteja se venden de menor capacitancia pero a voltajes más altos).

 Pantalla de cristal líquido: O LCD (Liquid Crystal Display) es un

dispositivo controlado de

visualización gráfico para la representación de caracteres. En este caso dispone de 2 filas de 16 caracteres cada una y cada carácter dispone de una matriz de 5x7 puntos (pixeles), aunque los hay de otro número de filas de caracteres. Este dispositivo está gobernado internamente por un microcontrolador.

Desarrollo

La medición de corriente es un tanto más delicada que la de voltaje debido precisamente a la corriente que es preciso generar y medir. Al no ser propuesto un límite máximo, se creyó que 4 A eran algo aceptable.

Resultó evidente que no se podía dirigir la corriente hacia el ADC del PIC directamente pues el

microcontrolador terminaría

indudablemente dañado, por lo que se decidió utilizar un divisor de

(19)

corriente (un arreglo de resistencias en paralelo). En este, se calcularon las resistencias para que por una rama derivara la práctica totalidad de la corriente y por la otra solo 1 mA máximo, siendo esta la rama que alimentaría el ADC.

Establecimos que alimentaríamos máximo 20 V, por lo que para generar 4 A en una rama y 1 mA en la otra, se hacen necesarias resistencias de 5Ω y 20kΩ respectivamente, como se muestra en el siguiente circuito:

Solucionado eso, el siguiente problema fue que el ADC debe ser alimentado solo con 5 V máximo. La solución fue crear en la rama de los 20kΩ un divisor de voltaje, que permita la variación en una resistencia de los 0 a los 5 V máximo. Por otro lado, para conseguir los 5 Ω necesarios de la otra rama, se tuvieron que comprar 4 resistencias de 20 Ω @ 25 W, a fin de dividir una vez más la corriente y limitarla a máximo 1 A por cada resistencia, esto también debido al problema de

disipación de calor, que obedece la fórmula P=I2R .

Teniendo ya un rango correcto para el ADC fue cuestión de realizar una regla de 3 para obtener el equivalente en corriente. Como era de esperarse, había presente un error relativamente grande. Esta diferencia (error) en la medición tenía un comportamiento lineal, como se apreció al tabular las mediciones del amperímetro fabricado vs las que indicaba LabVolt. La tabla de muestra en los Anexos, en la sección de Linealización.

Conclusiones

 La medición de corriente precisa de un mayor cuidado a la hora de preparar el circuito, de lo contrario se pueden dañar algunos componentes delicados.

 Los divisores de corriente y de voltaje son realmente útiles para manejar a voluntad el flujo de la corriente.

 Una vez más, realizamos una medición indirecta. Es decir, no cesamos el amperaje de manera directa, sino que medimos el cambio en una rama con una corriente mucho más pequeña, pero proporcional al flujo grande de corriente.

 La linealización puede darse de manera analítica como se hizo en otros sensores o de manera práctica como en este caso.

(20)

El circuito se comportó con una precisión muy buena, con variaciones en la medición de alrededor de 0.1 A, aunque su rango se vio reducido a 3.5 A. Es claro que si se quiere

aumentar el rango se puede ajustar el circuito en sus resistencias que llevan voltaje al PIC para alimentarlo con más voltaje o se puede reducir el valor de resistencia de las cerámicas.

Anexos

Linealización de la función

Se presenta a continuación la tabla correspondiente a las mediciones del error:

Voltaje ADC medido Diferencia de ADC Corriente calculada por el PIC

Corriente real Diferencia en medición Cambio en la diferencia

0.98 32 0.12 0.1 0.02

2.04 76 44 0.3 0.23 0.07 0.05

2.95 121 45 0.46 0.38 0.08 0.01

3.94 168 47 0.65 0.54 0.11 0.03

5.04 220 52 0.85 0.73 0.12 0.01

6 266 46 1.03 0.89 0.14 0.02

7 315 49 1.23 1.06 0.17 0.03

8 365 50 1.42 1.23 0.19 0.02

8.96 412 47 1.6 1.4 0.2 0.01

9.95 462 50 1.8 1.57 0.23 0.03

10.96 510 48 2 1.74 0.26 0.03

12 570 60 2.23 1.98 0.25 -0.01

13.03 622 52 2.43 2.17 0.26 0.01

13.95 670 48 2.61 2.33 0.28 0.02

14.96 718 48 2.8 2.5 0.3 0.02

15.95 772 54 3.02 2.65 0.37 0.07

17.02 827 55 3.22 2.84 0.38 0.01

18 875 48 3.42 3 0.42 0.04

19 925 50 3.61 3.17 0.44 0.02

20 975 50 3.8 3.34 0.46 0.02

20.6 1005 30 3.92 3.44 0.48 0.02

20.98 1022 17 3.99 3.5 0.49 0.01

(21)

Se midieron las diferencias entre corriente calculada y real, y luego se sacó el promedio de desviación de la propia diferencia entre corrientes respecto del ADC medido, esto para tener un promedio del incremento de la diferencia. Específicamente aquí, tenemos que por cada 48.65 unidades de ADC, hay un error acumulado de 0.023 A. Esto se aplicó en una fórmula bajo la variable de ajuste, que se resta del cálculo estimado, como se observará en los Anexos.

Código para el microcontrolador 16F877A

Estos pasos se encuentran programados en el siguiente código:

#include <16f877a.h> //llamamos el header (libreria con instrucciones y funciones basicas) especifico para el desarrollo de codigo para el PIC 16F8777A #device adc=10 //preparamos el PIC para que haga la medición de ADC con 10 bits

#fuses XT, NOWDT //preparamos el PIC para que deshabilite el Watch Dog Timer, XT es para indicar la presencia de un cristal de 4MHz o menos

#use delay (clock=4000000) //establecemos velocidad de reloj de 4MHz #include <lcd.c> //incluimos libreria de manejo de LCD

void main() //inicio de la funcion maestra del programa {

int16 adc; //declaramos variables: entero de 16 bits para el ADC float i; //flotante para el calculo de la corriente

float aj; //flotante para el ajuste que se hará a la medición inicial lcd_init(); //inicializamos el LCD

setup_adc_ports(AN0); //preparamos el Puerto A para leer ADC

setup_adc(ADC_CLOCK_INTERNAL); //seteamos el ADC para que use el reloj interno del PIC

WHILE (TRUE){ //inicia el ciclo que se repite indefinidamente set_adc_channel(0); //seleccionamos canal 0 para el ADC

delay_us(20); //retardo de 20 microsegundos

adc=read_adc(); //guardamos lectura de ADC en variable ADC

aj=(adc/48.65)*0.023; //esta es la operación de corrección de error que se dedujo de la tabla de Excel, se obtiene el error promedio

i=((4.0*adc)/1024.0)-aj; //se resta el error promedio del cálculo inicial de corriente

printf(lcd_putc,"\f%Lu",adc); //imprimimos el ADC leído

printf(lcd_putc,"\n%.2fA",i); //imprimimos la corriente calculad

delay_ms(500); //retardo de medio segundo }

}

(22)

Simulación en PROTEUS

En la imagen se muestra la simulación en Proteus, ya con valores reales para las resistencias.

(23)

Construcción de un sensor de nivel de agua

Aquino Alvarado Miguel Balbi González Michele Ramón

Jaramillo Cajica Ismael Pacheco Zepeda Juan Rafael

Pineda Torres Julio Adolfo

INTITUTO TECNOLÓGICO DE COLIMA Departamento de Ingeniería Mecatrónica

Av. Tecnológico No.1. C.P. 28976. Villa de Álvarez, Col. Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx

Objetivo

Diseñar, simular y construir un sensor capaz de indicar el nivel de agua contenida en un recipiente.

Material

 Protoboard: Tablero con orificios conectados eléctricamente en una configuración estándar. Se utiliza para conectar y probar conexiones de circuitos electrónicos sin tener que soldar o montar de manera permanente los componentes.

 Cables

 Microcontrolador: Circuito integrado programable. Es capaz de ejecutar

las instrucciones que se le guardan en memoria, transferidas a él mediante un programador de PIC’s (se explica más adelante). Las

instrucciones para el

microcontrolador se programan en lenguaje C y se compilan para generar el código .hex que se guarda en el PIC.

 PIC 16F877A: Es un

microcontrolador de la familia 16FXXXX de Microchip. Su arquitectura es de 8 bits, tiene una RAM de 368 bytes. El encapsulado PDIP, que fue el utilizado, le proporciona 40 pines de conexión.  Resistencias

(24)

 Resistencias cerámicas: De baja resistencia, y diseñadas para soportar una disipación de potencia relativamente alta a comparación de las resistencias “normales”, que son de carbón.

 Cristal (4MHz)

 Capacitor: Es un componente que sirve para almacenar energía. El uso práctico en los circuitos eléctricos es el filtrado del voltaje de alimentación que entra al circuito.

Existe en presentaciones

diferentes: de “lenteja” (el de la izq. de los que se muestran) y el electrolítico. Sus diferencias radican en que el primero no está polarizado y en los valores comerciales de capacitancia que se venden (los de lenteja se venden de menor capacitancia pero a voltajes más altos).

 Pantalla de cristal líquido: O LCD (Liquid Crystal Display) es un

dispositivo controlado de

visualización gráfico para la representación de caracteres. En este caso dispone de 2 filas de 16 caracteres cada una y cada carácter dispone de una matriz de 5x7 puntos (pixeles), aunque los hay de otro número de filas de caracteres. Este dispositivo está gobernado internamente por un microcontrolador.

 LED infrarrojo: Funciona y se conecta de la misma manera que un LED común (una resistencia típica de 330 ohms, ánodo a V+). La diferencia es que este emite radiación infrarroja (invisible para el ojo humano) cuando es activado. Se puede comprobar que está encendido si se observa con una cámara digital (de un celular, por ejemplo).

(25)

 Receptor infrarrojo: En realidad es un fotodiodo. El comportamiento de este es como un switch, es decir, cuando recibe radiación infrarroja (tiene filtros para luz visible) se activa. Su conexión es contraria a los LED’s: el ánodo (o la patita más larga) se conecta a tierra.

 Recipiente: En el que se vació el agua para medir su nivel. Fue perforado a distintas alturas equidistantes.

Desarrollo

En un principio se planteó medir el nivel de agua con ayuda de un potenciómetro y la lectura del correspondiente ADC por parte del PIC, pero se probó algo difícil debido a que el giro en la perilla era poco y por tanto el cambio en ADC también lo era, generando errores en la medición si aproximábamos con una regla de 3 o alguna función lineal. Se decidió entonces una solución alternativa: fabricar un medidor de nivel por niveles prefijados de agua.

Dicho de otra manera, segmentar la altura en un número determinado de intervalos y crear un circuito detector para cada rango, de manera que el sensor indicara el momento en que el nivel de agua toca cada segmento, aunque no indica cambio mientras no haya cambio del nivel del agua hacia arriba o hacia abajo.

La manera de crear el circuito detector de cada nivel definido fue perforar el recipiente e introducir en cada límite de nivel un cable pelado que lleva a una entrada de señal del PIC (se utilizaron los pines del puerto C). En este caso específico se determinaron 7 segmentos. Los cables van acompañados de otro cable pelado que recorre la pared interior del bote, y que se conecta a tierra. Se crearon entonces una serie de switches activados por el nivel del agua al subir, por ser el líquido un conductor de la corriente eléctrica. Cada switch manda un 0 a su entrada correspondiente del puerto A una vez que es cerrado.

Después se comprobó que es necesario agregar sal al agua para garantizar la conducción de la corriente eléctrica.

Conclusiones

Este sensor desempeñó su objetivo de manera aceptable pero en condiciones específicas. Por ejemplo, la salinidad del agua fue necesaria para hacer una detección correcta del

(26)

nivel de agua, y se tiene también la limitante del intervalo amplio de incertidumbre que implica tener pocas divisiones en el nivel. Por el otro lado, serviría muy bien para indicar si un recipiente está simplemente vacío, a la mitad, y lleno, por ejemplo.

Por lo anterior, al fabricar este sensor comprobamos que para solucionar un

mismo problema se cuenta con una infinidad de soluciones. Su viabilidad y la sencillez con que se puede fabricar la solución dependerá de las condiciones específicas que imponga cada caso de uso y de los recursos con que se cuente, entre ellos el tiempo.

Anexos

Código para el microcontrolador 16F877A

La lógica del funcionamiento se codificó en el siguiente programa:

#include <16f877a.h> //llamamos el header (libreria con instrucciones y funciones basicas) especifico para el desarrollo de codigo para el PIC 16F8777A #device adc=10 //se le pide al PIC que prepare su modulo de ADC, para una resolucion de 1023 bits

#fuses XT, NOWDT //preparamos el PIC para que deshabilite el Watch Dog Timer, XT es para indicar la presencia de un cristal de 4MHz o menos

#use delay (clock=4000000) //establecemos velocidad de reloj de 4MHz #use standard_io(B) //en esta y la sig linea preparamos puertos B y C para que funcionen como entradas o salidas

#use standard_io(C)

#include <lcd.c> //incluimos libreria de manejo de LCD

void main () { //inicio de la funcion maestra del programa

port_b_pullups(TRUE); //configuramos los puertos B para que usen pullups lcd_init();

while(1) { //creamos un ciclo que se ejecute continuamente mientras el PIC este activo

if(input(PIN_B0)==0 && input(PIN_B1)==1 && input(PIN_B2)==1 && input(PIN_B3)==1 && input(PIN_B4)==1 && input(PIN_B5)==1 && input(PIN_B6)==1 && input(PIN_B7)==1)

//vamos a realizar una serie de acciones si el PIN B0 está aterrizado (en este caso, si el nivel del agua ya cerro este circuito)

{

printf(lcd_putc, "\fagua presente"); delay_ms(1000);

}

(27)

if(input(PIN_B0)==0 && input(PIN_B1)==0 && input(PIN_B2)==1 && input(PIN_B3)==1 && input(PIN_B4)==1 && input(PIN_B5)==1 && input(PIN_B6)==1 && input(PIN_B7)==1)

//es la misma condicion que el if anterior pero para el pin B1 ahora. Estas comparaciones se repiten para cada pin.

{

printf(lcd_putc, "\f1/7 de agua"); delay_ms(100);

}

if(input(PIN_B0)==0 && input(PIN_B1)==0 && input(PIN_B2)==0 && input(PIN_B3)==1 && input(PIN_B4)==1 && input(PIN_B5)==1 && input(PIN_B6)==1 && input(PIN_B7)==1) {

printf(lcd_putc, "\f2/7 de agua"); delay_ms(100);

}

if(input(PIN_B0)==0 && input(PIN_B1)==0 && input(PIN_B2)==0 && input(PIN_B3)==0 && input(PIN_B4)==1 && input(PIN_B5)==1 && input(PIN_B6)==1 && input(PIN_B7)==1)

{

printf(lcd_putc, "\f3/7 de agua"); delay_ms(100);

}

if(input(PIN_B0)==0 && input(PIN_B1)==0 && input(PIN_B2)==0 && input(PIN_B3)==0 && input(PIN_B4)==0 && input(PIN_B5)==1 && input(PIN_B6)==1 && input(PIN_B7)==1)

{

printf(lcd_putc, "\f4/7 de agua"); delay_ms(100);

}

if(input(PIN_B0)==0 && input(PIN_B1)==0 && input(PIN_B2)==0 && input(PIN_B3)==0 && input(PIN_B4)==0 && input(PIN_B5)==0 && input(PIN_B6)==1 && input(PIN_B7)==1)

{

printf(lcd_putc, "\f5/7 de agua"); delay_ms(100);

(28)
(29)
(30)
(31)
(32)
(33)

Simulación en PROTEUS

Se muestra en la siguiente imagen el circuito que se construyó en Proteus para simular el sensor de nivel de agua. Se aprecia cómo los switches de agua, se representan con push buttons.

(34)

Construcción de un contador de personas

Aquino Alvarado Miguel Balbi González Michele Ramón

Jaramillo Cajica Ismael Pacheco Zepeda Juan Rafael

Pineda Torres Julio Adolfo

INTITUTO TECNOLÓGICO DE COLIMA Departamento de Ingeniería Mecatrónica

Av. Tecnológico No.1. C.P. 28976. Villa de Álvarez, Col. Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx

Objetivo

Diseñar, simular y construir un circuito capaz de contar personas. Una vez probado, fabricar la tarjeta de circuito impreso.

Material

 Protoboard: Tablero con orificios conectados eléctricamente en una configuración estándar. Se utiliza para conectar y probar conexiones de circuitos electrónicos sin tener que soldar o montar de manera permanente los componentes.

 Cables

 Microcontrolador: Circuito integrado programable. Es capaz de ejecutar las instrucciones que se le guardan en memoria, transferidas a él mediante un programador de PIC’s (se explica más adelante). Las

instrucciones para el

microcontrolador se programan en lenguaje C y se compilan para generar el código .hex que se guarda en el PIC.

 PIC 16F877A: Es un

microcontrolador de la familia 16FXXXX de Microchip. Su arquitectura es de 8 bits, tiene una RAM de 368 bytes. El encapsulado PDIP, que fue el utilizado, le proporciona 40 pines de conexión. Tiene un conversor analógico/digital de 8 canales. Su voltaje de operación es de 2V a 5.5 V (siempre se trabajó muy cercano a 5V).

(35)

 Resistencias

 Resistencias cerámicas: De baja resistencia, y diseñadas para soportar una disipación de potencia relativamente alta a comparación de las resistencias “normales”, que son de carbón.

 Cristal (4MHz)

 Capacitor: Es un componente que sirve para almacenar energía. El uso práctico en los circuitos eléctricos es el filtrado del voltaje de alimentación que entra al circuito.

Existe en presentaciones

diferentes: de “lenteja” (el de la izq. de los que se muestran) y el electrolítico. Sus diferencias radican en que el primero no está polarizado y en los valores comerciales de capacitancia que se venden (los de lenteja se venden de menor capacitancia pero a voltajes más altos).

 Pantalla de cristal líquido: O LCD (Liquid Crystal Display) es un

dispositivo controlado de

visualización gráfico para la representación de caracteres. En este caso dispone de 2 filas de 16 caracteres cada una y cada carácter dispone de una matriz de 5x7 puntos (pixeles), aunque los hay de otro número de filas de caracteres. Este dispositivo está gobernado internamente por un microcontrolador.

 LED infrarrojo: Funciona y se conecta de la misma manera que un LED común (una resistencia típica de 330 ohms, ánodo a V+). La diferencia es que este emite radiación infrarroja (invisible para el ojo humano) cuando es activado. Se puede comprobar que está encendido si se observa con una

(36)

cámara digital (de un celular, por ejemplo).

 Receptor infrarrojo: En realidad es un fotodiodo. El comportamiento de este es como un switch, es decir, cuando recibe radiación infrarroja (tiene filtros para luz visible) se activa. Su conexión es contraria a los LED’s: el ánodo (o la patita más larga) se conecta a tierra.

Desarrollo

Para lograr contar el paso de una persona fue evidente que se necesitaba un circuito que accionara una entrada en el microcontrolador para que este a su vez hiciera una suma en su memoria por cada señal de entrada que se le envía. Se decidió usar un sensor infrarrojo con su receptor, pues éste último opera a manera de interruptor cerrado ante la detección de una señal infrarroja. De esta manera, se colocan emisor y receptor separados cierta distancia y el paso de una persona interrumpirá momentáneamente la recepción de la señal IR.

También se tuvo que tomar en cuenta la posibilidad de que la persona en

cuestión se quede parada (o tarde más de lo normal en pasar por el detector, como podría ser una persona de la tercera edad) entre emisor y receptor un tiempo considerable, de manera que no se hiciera un conteo múltiple.

Con las condiciones mencionadas anteriormente, el proceso a seguir es: 1. El microcontrolador checa cada cierto intervalo de tiempo el estado en el pin 0 del puerto B, buscando la condición del 1.

2. La presencia de un 1 está regulada por el estado activado/desactivado del fotodiodo, que se conecta entre B0 y tierra. Si se activa, cuando nadie está interrumpiendo la recepción, B0 se conecta a tierra, generando un 0; por el contrario, el paso de una persona genera un 1 porque el fotodiodo se desactiva y B0 ya no está aterrizada.

3. Cuando hay 1 en B0, el microcontrolador primero se cerciora de que la entrada no se cuente dos veces mediante una variable bandera que se activa si ya se ha contado previamente a la persona. Si no está activada, se suma 1 a la variable que cuenta las detecciones, y ahora sí la bandera se activa.

4. La bandera se desactiva solamente cuando B0 vuelve a pasar a tener valor de 0. Es decir, si la persona se queda parada ahí y el PIC detecta varias veces el 1 en B0, no se contara a la persona.

(37)

Estos pasos se encuentran programados en el código que se presenta en los Anexos.

Conclusiones

El circuito contó satisfactoriamente incluso aunque se pasara el dedo rápidamente por la línea de detección. Incluso se contaron las revoluciones de un motor de dc. Con esta práctica también se aprendió a utilizar un sensor infrarrojo, la forma de conectarlo, etc.

Anexos

Código para el microcontrolador 16F877A

#include <16f877a.h> //llamamos el header (libreria con instrucciones y funciones basicas) especifico para el desarrollo de codigo para el PIC 16F8777A #fuses XT, NOWDT //preparamos el PIC para que deshabilite el Watch Dog Timer, XT es para indicar la presencia de un cristal de 4MHz o menos

#use delay (clock=4000000) //establecemos velocidad de reloj de 4MHz #use standard_io(B) //en esta linea preparamos puertos B para que funcionen como entradas o salidas

#include <lcd.c> //incluimos libreria de manejo de LCD

void main () { //inicio de la funcion maestra del programa

port_b_pullups(TRUE); //configuramos los puertos B para que usen pullups

int cambio=0;//declaramos una variable bandera que nos permitira evitar el conteo de más

int contador=0; //contador guardará el numero de personas que han sido contadas

lcd_init(); //inicializamos el LCD

printf(lcd_putc,"\fPersonas: %u",contador); //imprimimos el estado actual del contador

while(1) { //creamos un ciclo que se ejecute continuamente mientras el PIC este activo

if (input(PIN_B0)==1 && cambio==1) { //esta condicion permite saber si está llegando la señal que hace que se cuente una persona pero tambien compara con cambio para saber si la señal se ha reseteado despues de haber contado previamente

contador=contador+1; //contamos a la persona

cambio=0; //indicamos que la señal no se ha reseteado

(38)
(39)

Y para el receptor, o fotodiodo, el siguiente:

Las PCB fueron de un diseño sencillo porque se pidió omitir del diseño las conexiones para otros componentes como fueron el microcontrolador o el LCD. El resultado final fue el siguiente (a la derecha el receptor y a la izquierda el emisor):

(40)

Sensor de luz

Aquino Alvarado Miguel Balbi González Michele Ramón

Jaramillo Cajica Ismael Pacheco Zepeda Juan Rafael

Pineda Torres Julio Adolfo

INTITUTO TECNOLÓGICO DE COLIMA Departamento de Ingeniería Mecatrónica

Av. Tecnológico No.1. C.P. 28976. Villa de Álvarez, Col. Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx

Objetivos

Diseñar, construir y acondicionar un circuito capaz de mandar una señal de encendido, a en este caso una serie de LED’s, y mostrar que tan iluminado esta el lugar donde se encuentra el LDR.

Material

El LDR (Light Dependant Resistor) es un componente electrónico cuya resistencia disminuye con el aumento de intensidad de luz incidente.

El protoboard es un tablero con orificios conectados eléctricamente entre sí, habitualmente siguiendo patrones de líneas, en el cual se pueden insertar componentes electrónicos y cables para el armado de circuitos electrónicos.

Cables

La pantalla de cristal liquido o LCD (Liquid Crystal Display) es un dispositivo controlado de visualización gráfico para la representación de caracteres. En este caso dispone de 2 filas de 16 caracteres cada una y cada carácter dispone de una matriz de 5x7 puntos (pixeles), aunque los hay de otro número de filas de caracteres. Este dispositivo está gobernado internamente por un microcontrolador.

(41)

El potenciómetro es un resistor cuyo valor de resistencia es variable. De esta manera, indirectamente, se puede controlar la intensidad de corriente que fluye por un circuito si se conecta en paralelo, o la diferencia de potencial al conectarlo en serie.

Se llama microcontrolador a un sistema de microprocesador incluido todo él en un chip. Dentro de este chip están incluidos la CPU del procesador, memoria y elementos periférico de forma que se pueda realizar todo un sistema de control simplemente conectando los elementos exteriores. El PIC 16F877A de Microchip pertenece a una gran familia de microcontroladores de 8 bits (bus de datos), posee varias características que hacen a este un dispositivo muy versátil, eficiente y práctico.

Resistencias

Cristal (4MHz)

Capacitor: Es un componente que sirve para almacenar energía. El uso práctico en los circuitos eléctricos es el filtrado del voltaje de alimentación que entra al circuito. Existe en presentaciones diferentes: de “lenteja” (el de la izq. de los que se muestran) y el electrolítico. Sus diferencias radican en que el primero no está polarizado y en los valores comerciales de capacitancia que se venden (los de lenteja se venden de menor capacitancia pero a voltajes más altos).

(42)

DESARROLLO

El circuito que se hizo para el sensor de luz se muestra debajo de la conclusión de esta práctica.

El programa se muestra en la siguiente página. La función del programa era encender LED’s de manera que simularán los focos que alumbran un cuarto, además de mostrar en el LCD diferentes estados según la iluminación (oscuro, iluminado y muy iluminado).

Se observo el comportamiento del LDR, observando que tanto al variar la luz cambiaba el valor del ADC para poder determinar los valores en los cuales fijaríamos las condiciones de salida para los LED’s y para el LCD.

Después de ver los rangos del ADC que tomaba se fijaron las condiciones y se termino el programa.

CONCLUSIÓN

Una posible mejora dentro del código del microcontrolador, con el fin de que pueda ajustarse a las distintas condiciones iluminación donde pueda ser utilizado, seria incluir una variable que almacene el valor del ADC incial, colocar un retardo de unos segundos, vuelva a tomar el valor del ADC y hacer esto tantas veces como se crea conveniente. Despues obtener un valor promedio de estos datos que fueron almacenados. Finalmente ajustar las condiciones para que en base al valor promedio calculado se efectuen entre fracciones de este.

El circuito al final cumplió bien con su función. Se debe tomar en cuenta que el LDR se aísla de los LED´s para evitar que la luz de estos influya en la medida del LDR y así solo tome en cuenta la luz natural del lugar donde se encuentra.

ANEXOS

(43)

#include <16f877a.h>//llamamos el header (libreria con instrucciones y funciones basicas) especifico para el desarrollo de codigo para el PIC 16F8777A

#device adc=10 // Establece el ADC a 10 bits

#fuses XT, NOWDT //preparamos el PIC para que deshabilite el WatchDogTimer, XT es para indicar la presencia de un cristal de 4MHz o meno

#use delay(clock=4000000) //establecemos velocidad de reloj de 4MHz

#include<lcd.c> //incluimos libreria de manejo de LCD

#use standard_io(B) //en esta linea preparamos puertos B para que funcionen como entradas o salidas

void main() //inicio de la función maestra del programa

{

int16 adc; //declaración de variable adc, entero de 16 bits

lcd_init(); //inicializamos LCD

port_b_pullups(TRUE); //configuramos los puertos B para que usen pullups

setup_adc_ports(AN0); //se inicializa Puerto A, salida 0, para ejecutar ADC

setup_adc(ADC_CLOCK_INTERNAL); //se prepara el reloj interno para ejecutar ADC

WHILE (TRUE){ //iniciamos ciclo continuo

set_adc_channel(0); //seleccionamos canal 0 para el ADC

delay_us(20); //retardo de 20 microsegundos

adc=read_adc(); //guardamos lectura de ADC en variable ADC

if(adc>=100 && adc<=250) //según el margen en el que se encuentre la lectura del ADC se ejecutará una instrucción diferente

{

output_high(PIN_B1);

output_high(PIN_B2);

printf(lcd_putc, "\f ADC=%Lu",adc);

(44)

}

if(adc>250 && adc<=400)

{

output_high(PIN_B1);

output_low(PIN_B2);

printf(lcd_putc, "\f ADC=%Lu",adc);

printf(lcd_putc, "\n Iluminado");

}

if(adc>400)

{

output_low(PIN_B1);

output_low(PIN_B2);

printf(lcd_putc, "\f ADC=%Lu",adc);

printf(lcd_putc, "\n Muy Iluminado");

}

delay_ms(500);

}

(45)

Simulación en PROTEUS

Se muestra en la siguiente imagen el circuito que se construyó en Proteus para simular la detección de luz.

a) 3 LED’s encendidos cuando la habitación está oscura

(46)

c) 1 LED encendido cuando la habitación está muy iluminada

Fotos circuito físico

(47)

b) Detección una habitación muy iluminada

(48)
(49)

Fabricación de baquelita

Para la fabricación de la baquelita se utilizo el programa Eagle. En la figura se muestra el diseño final donde se pueden ver claramente los componentes.

(50)

Construcción de un voltímetro digital

Aquino Alvarado Miguel Balbi González Michele Ramón

Jaramillo Cajica Ismael Pacheco Zepeda Juan Rafael

Pineda Torres Julio Adolfo

INTITUTO TECNOLÓGICO DE COLIMA Departamento de Ingeniería Mecatrónica

Av. Tecnológico No.1. C.P. 28976. Villa de Álvarez, Col. Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx

Objetivo

Diseñar, construir y acondicionar un circuito capaz de medir una diferencia de tensión en las terminales de algún aparato, con un rango de 0 a 120V de corriente directa con un margen de error pequeño.

Material

 Protoboard: Tablero con orificios conectados eléctricamente en una configuración estándar. Se utiliza para conectar y probar conexiones de circuitos electrónicos sin tener que soldar o montar de manera permanente los componentes.

 Cables

 Potenciómetro: El potenciómetro es un dispositivo de resistencia variable mediante una perilla.

(51)

 Microcontrolador: Circuito integrado programable. Es capaz de ejecutar las instrucciones que se le guardan en memoria, transferidas a él mediante un programador de PIC’s (se explica más adelante). Las instrucciones para el microcontrolador se programan en lenguaje C y se compilan para generar el código .hex que se guarda en el PIC. PIC 16F877A: Es un microcontrolador de la familia 16FXXXX de Microchip. Su arquitectura es de 8 bits, tiene una RAM de 368 bytes. El encapsulado PDIP, que fue el utilizado, le proporciona 40 pines de conexión. Tiene un conversor analógico/digital de 8 canales. Su voltaje de operación es de 2V a 5.5 V (siempre se trabajó muy cercano a 5V).

 Resistencias

 Cristal

 Capacitor: Es un componente que sirve para almacenar energía. El uso práctico en los circuitos eléctricos es el filtrado del voltaje de alimentación que entra al circuito. Existe en presentaciones diferentes: de “lenteja” (el de la izq. de los que se muestran) y el electrolítico. Sus diferencias radican en que el primero no está polarizado y en los valores comerciales de capacitancia que se venden (los de lenteja se venden de menor capacitancia pero a voltajes más altos).

(52)

Para configurar el valor de las resistencias adecuadas solo se calculó un divisor de voltaje que fuera adecuado para la entrada ADC del PIC (0-5v). si el voltaje a medir sería de 0-120v el voltaje de entrada de ADC debe ser de 0 a 5v. Tomamos el máximo voltaje y hacemos la operación:

VR1=120−5=115y VR2=5(ADC)

115

5 =23∴VR1=23VR2y si checamos valores comerciales:

VR1=270K y VR2=12K

De esta manera sabemos que el voltaje máximo de VR2 (ADC) será 5v (1023 ADC) y al bajar hasta 0v de alimentación, ADC=0, teniendo así el rango correcto de valores de entrada ADC.

Como era de esperarse, la señal medida por ADC tenía ruido, lo que

nos obligó a graficar los valores reales, y los valores que entregaba el programa para ver cuánto era el desfase y así poder corregirlo.

Conclusiones

El principio básico con el que funciona este circuito es la Ley de Ohm, V=IR, que nos permite conocer qué voltajes queremos obtener en cada resistencia seleccionada. El cuidado fundamental que se debe tener es el de no sobrepasar los 5V de entrada de ADC ya que si esto sucede nuestro PIC puede dañarse o incluso dejar de funcionar. Para la fuente de alimentación nosotros utilizamos un módulo Lab-Volt, pero si no se cuenta con algún dispositivo parecido, se puede hacer una fuente variable de voltaje que entregue hasta 120V CD.

Anexos

Código para el microcontrolador 16F877A

#include <16f877a.h> //llamamos el header (libreria con instrucciones y funciones basicas) especifico para el desarrollo de codigo para el PIC 16F8777A #fuses XT, NOWDT //preparamos el PIC para que deshabilite el Watch Dog Timer, XT es para indicar la presencia de un cristal de 4MHz o menos

#use delay (clock=4000000) //establecemos velocidad de reloj de 4MHz #use standard_io(B) //en esta linea preparamos puertos B para que funcionen como entradas o salidas

#include <lcd.c> //incluimos libreria de manejo de LCD void main ()//inicio de la función principal

{

(53)

float v1;//Se declara el voltaje principal

float v2;//se declara el voltaje real

float desf;//se declara el desfase

lcd_init();//encendemos la pantalla

setup_adc_ports(AN0);//determinamos qué Puerto ejecutará el ADC

setup_adc(ADC_CLOCK_INTERNAL);//se prepara el reloj

while(1)//ciclo infinito

{

set_adc_channel(0);//ADC canal 0

delay_us(20);//retardo de 20 microsegundos

adc=read_adc();//se guarda la lectura ADC en variable acd

v1=(120.0*adc)/1023;//relacion de voltaje-ADC

desf=(adc/88.22)*0.35;//factor de desfase obtenido de mediciones cada 5V

v2=v1-desf;//voltaje real

printf(lcd_putc, "\n%01.2FV ",v2);//imprimir voltaje real

delay_ms(100);//retardo

}

(54)

Simulación en PROTEUS

(55)

Construcción de un sensor de giro de motor

Aquino Alvarado Miguel Balbi González Michele Ramón

Jaramillo Cajica Ismael Pacheco Zepeda Juan Rafael

Pineda Torres Julio Adolfo

INTITUTO TECNOLÓGICO DE COLIMA Departamento de Ingeniería Mecatrónica

Av. Tecnológico No.1. C.P. 28976. Villa de Álvarez, Col. Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx

Objetivo

Diseñar, construir y acondicionar un circuito capaz de detectar el sentido de giro de un motor y desplegarlo en una pantalla para hacerlo más amigable al usuario.

Material

 Protoboard: Tablero con orificios conectados eléctricamente en una configuración estándar. Se utiliza para conectar y probar conexiones de circuitos electrónicos sin tener que soldar o montar de manera permanente los componentes.

(56)

 Cables

 Potenció metro: El

potenciómetro es un dispositivo de resistencia variable mediante una perilla.

Optointerruptor: Sensor que consta de un emisor y receptor de un haz infrarrojo y genera un voltaje de salida al recibir exitosamente el haz.

 Microcontrolador: Circuito

integrado programable. Es capaz de ejecutar las instrucciones que se le guardan en memoria, transferidas a él mediante un programador de PIC’s (se explica más adelante). Las instrucciones para el microcontrolador se programan en lenguaje C y se compilan para generar el código .hex que se guarda en el PIC. PIC 16F877A: Es un microcontrolador de la familia 16FXXXX de Microchip. Su arquitectura es de 8 bits, tiene una RAM de 368 bytes. El encapsulado PDIP, que fue el utilizado, le proporciona 40 pines de conexión. Tiene un conversor analógico/digital de 8 canales. Su voltaje de operación es de 2V a 5.5 V (siempre se trabajó muy cercano a 5V).

(57)

 Cristal

 Capacitor: Es un componente que sirve para almacenar energía. El uso práctico en los circuitos eléctricos es el filtrado del voltaje de alimentación que entra al circuito. Existe en presentaciones diferentes: de “lenteja” (el de la izq. de los que se muestran) y el electrolítico. Sus diferencias radican en que el primero no está polarizado y en los valores comerciales de capacitancia que se venden (los de lenteja se venden de menor capacitancia pero a voltajes más altos).

Encoder casero: fabricado con cartón rígido en forma de círculo con sólo una ranura.

Desarrollo

Se compraron los opto acopladores y se fabricó el encoder casero con un pedazo de cartón rígido cortado e forma de círculo, a ese círculo se le cortó un pequeño pedazo para que pudiera servir como interruptor de los opto acopladores. Cada vez que el encoder gira, el orificio deja pasar el láser del opto acoplador desde el emisor al receptor; dependiendo de cuál pasa primero es el sentido de giro que toma el motor.

Conclusiones

Con la práctica aprendimos a utilizar sensores de herradura para determinar el sentido de giro de un motor, pero siendo esa una aplicación de varias posibilidades como medir la velocidad del motor, la aceleracion, etc. ya sean mediciones directas o indirectas. Algunos de los problemas obtenidos al hacer la práctica fueron la distancia entre los interruptores, el tiempo de espera de la LCD al

(58)

desplegar el resultado, el encoder golpeaba el cuerpo de los interruptores, o el encoder no

embonaba correctamente dentro de la herradura del sensor.

Anexos

Código para el microcontrolador 16F877A

#include <16f877a.h> //llamamos el header (libreria con instrucciones y funciones basicas) especifico para el desarrollo de codigo para el PIC 16F8777A

#device adc=10 //se le pide al PIC que prepare su modulo de ADC, para una resolucion de 1024 bits

#fuses XT, NOWDT //preparamos el PIC para que deshabilite el Watch Dog Timer, XT es para indicar la presencia de un cristal de 4MHz o menos

#use delay (clock=4000000) //establecemos velocidad de reloj de 4MHz

#use standard_io(B) //en esta y la sig linea preparamos puertos B y C para que funcionen como entradas o salidas

#use standard_io(C)

#include <lcd.c> //incluimos libreria de manejo de LCD

void main () { //inicio de la funcion maestra del programa

port_b_pullups(TRUE); //encendemos pullups

lcd_init();//encendemos pantalla

float x,t;//declaramos variables

while(1) { //creamos un ciclo que se ejecute continuamente mientras el PIC este activo

x=0;//damos valor inicial a x

t=0;//damos valor a t

if(input(PIN_B0)==1 && input(PIN_B1)==0)//condición para detector qué optointerruptor se active primero

{

x=1;//dependiendo de si la condición se cumple, x toma este valor

t=1; //dependiendo de si la condición se cumple, t toma este valor

while(x==1)//si se cumple la condición superior entramos a un ciclo infinito

(59)

{

if(t==1) //comparar valor de t

{

printf(lcd_putc, "\fEsperando..");//imprimir que se espera la medición

t=0;//asignar siguiente valor a t

}

if(input(PIN_B0)==0 && input(PIN_B1)==1) //condición para detector qué optointerruptor se active primero

{

printf(lcd_putc, "\fGiro Horario");//imprimir sentido de giro

delay_ms(100);//retardo

x=0;//asignamos Nuevo valor de x, para salir del ciclo infinito

}

}

}

//---//hacemos lo mismo pero para cuando el otro optointerruptor se active primero.

if(input(PIN_B0)==0 && input(PIN_B1)==1)

{

x=2;

t=2;

while(x==2)

{

if(t==2)

{

printf(lcd_putc, "\fEsperando.");

t=0;

}

if(input(PIN_B0)==1 && input(PIN_B1)==0)

(60)

printf(lcd_putc, "\fGiro antihorario");

delay_ms(100);

x=0;

}}}} }

Simulación en PROTEUS

Se simulan los dos optointerruptores como 2 pushbuttons en PROTEUS, ya que la función es la misma y el software no proporciona los elementos correctos, al presionar un push y luego el otro, la simulación indica en la LCD si el giro es horario o antihoriario. Al presionar los botones en orden inverso, el LCD despliega que el giro es en el sentido contrario al anterior.

La imagen en la siguiente página.

Fotos circuito físico

(61)
(62)

Termómetro con circuito integrado

Aquino Alvarado Miguel Balbi González Michele Ramón

Jaramillo Cajica Ismael Pacheco Zepeda Juan Rafael

Pineda Torres Julio Adolfo

INTITUTO TECNOLÓGICO DE COLIMA Departamento de Ingeniería Mecatrónica

Av. Tecnológico No.1. C.P. 28976. Villa de Álvarez, Col. Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx

Objetivos

Diseñar, construir y acondicionar un circuito capaz de medir temperatura con un bajo margen de error ( ±3° ).

Material

Protoboard: Tablero con orificios conectados eléctricamente en una configuración estándar. Se utiliza para conectar y probar conexiones de circuitos electrónicos sin tener que soldar o montar de manera permanente los componentes.

Cables

Potenciómetro de 5 KΩ: El potenciómetro es un dispositivo de resistencia variable mediante una perilla.

LM35:

El LM35 es un sensor

de

temperatura con una

precisión calibrada grados Celsius. Su rango de medición abarca desde -55°C hasta 150°C. La salida es lineal y cada grado centígrado equivale a 10mV.

(63)

Microcontrolador: Circuito integrado programable. Es capaz de ejecutar las instrucciones que se le guardan en memoria, transferidas a él mediante un programador de PIC’s (se explica más adelante). Las instrucciones para el microcontrolador se programan en lenguaje C y se compilan para generar el código .hex que se guarda en el PIC.

PIC 16F877A: Es un microcontrolador de la familia 16FXXXX de Microchip. Su arquitectura es de 8 bits, tiene una RAM de 368 bytes. El encapsulado PDIP, que fue el utilizado, le proporciona 40 pines de conexión. Tiene un conversor analógico/digital de 8 canales. Su voltaje de operación es de 2V a 5.5 V (siempre se trabajó muy cercano a 5V).

Resistencias

Cristal (4MHz)

Capacitor: Es un componente que sirve para almacenar energía. El uso práctico en los circuitos eléctricos es el filtrado del voltaje de alimentación que entra al circuito. Existe en presentaciones diferentes: de “lenteja” (el de la izq. de los que se muestran) y el electrolítico. Sus diferencias radican en que el primero no está polarizado y en los valores comerciales de capacitancia que se venden (los de lenteja se venden de menor capacitancia pero a voltajes más altos).

DESARROLLO

La función del programa era encender un LED diferente según fuera la temperatura, por ello la implementación de condiciones dentro del programa del microcontrolador, además de mostrar la temperatura en el LCD.

(64)

Proceso de linealización

Se observó el comportamiento del voltaje que proporcionaba el sensor LM35 en base al valor que arrojaba el ADC y se comparó con la temperatura que mostraba el termómetro del multímetro para hacer los ajustes que fueran necesarios. Se observó que el valor del ADC era igual al doble del valor de la temperatura. Esto nos sirvió para poner que la temperatura que mostrara el display fuera igual al valor del ADC dividido entre 2.

CONCLUSIÓN

Finalmente se concluyó que el circuito era muy efectivo, para comprobar esto se

usó un cautín y se usó el termómetro de un multímetro y se compararon las medidas que se obtenían tanto en el circuito construido como en el multímetro.

ANEXOS

Código para el microcontrolador 16F877A

#include<16f877a.h> //activar pic

#deviceadc=10 //leer ADC con 1024bits

#fuses XT, NOWDT //librerias del programa

#use delay (clock=4000000) //frecuencia del cristal

#use standard_io(B) //activar puertos B

#include<lcd.c> //activar pantalla LCD

voidmain () //funcion principal independiente

{

int16 x; //declarar variable de 16 bits

(65)

lcd_init(); //incia LCD

setup_adc_ports(AN0); //fijar el puerto ADC al pin AN0

setup_adc(ADC_CLOCK_INTERNAL);//fijar la frecuencia interna

while(1)

{

set_adc_channel(0); //declarar canal de la lectura ADC

delay_ms(100); //retardo entre lecturas de ADC

x=read_adc(); //lectura de ADC dentro de variable

//printf(lcd_putc, "\f ADC= %Lu ",x);

y=(x/2)-6; //conversion de ADC a grados centigrados

if(x<=31) //condicion para temperaturas menores a 15°C

{

output_high(PIN_B0); //configuracion de salidas para encerder los leds

output_low(PIN_B1);

output_low(PIN_B2);

output_low(PIN_B3);

printf(lcd_putc, "\n%01.2Fgrados ",y); //imprimir grados centigrados

delay_ms(100);

}

if(x>31 && x<=62)// //condicion para temperaturas entre 15-31°C

{

output_low(PIN_B0); //configuracion de salidas para encerder los leds

output_high(PIN_B1);

output_low(PIN_B2);

(66)

printf(lcd_putc, "\n%01.2Fgrados ",y); //imprimir grados centigrados

delay_ms(100);

}

if(x>62 && x<=93) //condicion para temperaturas entre 31-46°C

{

output_low(PIN_B0); //configuracion de salidas para encerder los leds

output_low(PIN_B1);

output_high(PIN_B2);

output_low(PIN_B3);

printf(lcd_putc, "\n%01.2Fgrados ",y); //imprimir grados centigrados

delay_ms(100);

}

if(x>93) //condicion para temperaturas mayores a 46°C

{

output_low(PIN_B0); //configuracion de salidas para encerder los leds

output_low(PIN_B1);

output_low(PIN_B2);

output_high(PIN_B3);

printf(lcd_putc, "\n%01.2Fgrados ",y); //imprimir grados centigrados

delay_ms(100);

}

}

(67)

Simulación en PROTEUS

a) Frio

(68)

c) Caliente

(69)
(70)

Construcción de voltímetro analógico

Aquino Alvarado Miguel Balbi González Michele Ramón

Jaramillo Cajica Ismael Pacheco Zepeda Juan Rafael

Pineda Torres Julio Adolfo

INTITUTO TECNOLÓGICO DE COLIMA Departamento de Ingeniería Mecatrónica

Av. Tecnológico No.1. C.P. 28976. Villa de Álvarez, Col. Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx

Objetivo

Diseñar, construir y acondicionar un circuito que tenga como función la de un voltímetro analógico con un límite de 120 V.

Material

Protoboard: Tablero con orificios conectados eléctricamente en una configuración estándar. Se utiliza para conectar y probar conexiones de circuitos electrónicos sin tener que soldar o montar de manera permanente los componentes.

Cables

Potenciómetro de 1 MΩ: El potenciómetro es un dispositivo de resistencia variable mediante una perilla.

Referencias

Documento similar

Consulte a su médico o farmacéutico antes de empezar a usar Spiolto Respimat - si tiene asma (no debe utilizar Spiolto Respimat para el tratamiento del asma) - si tiene problemas

(6) El Decreto de 6 de diciembre, aparecido en la Gaceta del 7, y precedido de un- preámbulo, decía en su parte orgánica: «Art. i.° Las Cortes Constituyentes se re- unirán en Madrid

 NO se incluyen las piezas necesarias para montar la estructura permanentemente en una superficie de hormigón..  Las piezas necesarias para montar la estructura de forma

neuroléptico maligno que puede representar un riesgo muy importante para la salud. Si interrumpe el tratamiento o reduce la dosis de Pramipexol Sandoz también puede sufrir

Esas adaptaciones requerirán conciliar la regulación de actividades abiertas a una competencia plena o acotada con los llamados servicios uni- versales sin alterar el modelo de

Aparte de los posibles problemas técnicos que presenta un análisis de correlaciones (RePass 1976), lo que en ningún momento se plantea Converse es que la ausencia de

Gastos derivados de la recaudación de los derechos económicos de la entidad local o de sus organis- mos autónomos cuando aquélla se efectúe por otras enti- dades locales o

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en