0% encontró este documento útil (0 votos)
51 vistas43 páginas

Contador y Suma de Matrices con PIC18F4550

Este documento describe una práctica de laboratorio sobre microprocesadores y microcontroladores. La práctica tiene dos objetivos: 1) construir un contador ascendente de dos dígitos usando un PIC18F4550 y 2) construir un circuito que sume dos matrices 3x3 y muestre el resultado en una LCD, también usando un PIC18F4550. Se provee información teórica sobre displays de 7 segmentos, LCD 16x2 y el dispositivo MOC3021. El desarrollo de la práctica incluye el código y circuitos para amb

Cargado por

Daniel Arzate
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • Materiales de Práctica,
  • Equipos de Medición,
  • Visualización de Datos,
  • Control de Corriente Continua,
  • Multiplexación,
  • LCD 16x2,
  • Circuitos Integrados,
  • Componentes Electrónicos,
  • Control de Motores,
  • Prototipos DIY
0% encontró este documento útil (0 votos)
51 vistas43 páginas

Contador y Suma de Matrices con PIC18F4550

Este documento describe una práctica de laboratorio sobre microprocesadores y microcontroladores. La práctica tiene dos objetivos: 1) construir un contador ascendente de dos dígitos usando un PIC18F4550 y 2) construir un circuito que sume dos matrices 3x3 y muestre el resultado en una LCD, también usando un PIC18F4550. Se provee información teórica sobre displays de 7 segmentos, LCD 16x2 y el dispositivo MOC3021. El desarrollo de la práctica incluye el código y circuitos para amb

Cargado por

Daniel Arzate
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • Materiales de Práctica,
  • Equipos de Medición,
  • Visualización de Datos,
  • Control de Corriente Continua,
  • Multiplexación,
  • LCD 16x2,
  • Circuitos Integrados,
  • Componentes Electrónicos,
  • Control de Motores,
  • Prototipos DIY

INSTITUTO POLITECNICO NACIONAL

“UNIDAD PROFECIONAL INTERDICIPLINARIA EN


INGENIERIA Y TECNOLOGIAS AVANZADAS”
Profesor: Báez Joaquín
Grupo: 2MM10

Fecha: 14/12/23 INTEGRANTES:


Garcia Olivares Carlos Eduardo
Arzate Alvarez Daniel
Valderrama Barbosa Andres


MICROPROCESADORES, MICROCONTROLADORES E INTERFAZ |Entrega:14 /12/23


INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

• OBJETIVO de la practica:

 Elaborar el circuito y código de un contador ascendente de dos dígitos empleando en el


PIC18f4550.
 Elaborar el circuito y código de la suma de 2 matrices 3x3 mostrando el resultado en una
LCD, empleando en el PIC18f4550.
• Marco Teórico:
Display 7 seg:

Un display de 7 segmentos ánodo común es un tipo de pantalla numérica que se utiliza


comúnmente para mostrar dígitos decimales del 0 al 9. Este tipo de display consta de siete
segmentos individuales dispuestos de manera que forman un "8" cuando están encendidos, lo que
permite representar cualquier dígito decimal.

LCD:

Una LCD 16x2 es un tipo de pantalla de cristal líquido (LCD, por sus siglas en inglés) que tiene
una capacidad de mostrar 16 caracteres en cada una de sus 2 líneas. Este tipo de pantalla es
comúnmente utilizada en proyectos electrónicos y dispositivos como pantallas de visualización en
microcontroladores, arduino y otros circuitos integrados. La especificación "16x2" se refiere a la
disposición de 16 caracteres a lo largo de 2 líneas, lo que significa que hay 16 caracteres en cada
línea y dos líneas de visualización en total. Estas pantallas son ampliamente utilizadas en la
construcción de prototipos y proyectos DIY debido a su facilidad de uso y versatilidad.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

MOC3021:

El MOC3021 es un dispositivo semiconductor que pertenece a la categoría de optoacopladores, también


conocidos como optoaisladores u octoacopladores. Estos componentes están diseñados para proporcionar
aislamiento eléctrico entre dos partes de un circuito, típicamente una sección de entrada (entrada de
control) y una sección de salida (carga). El término "octoacoplador" se utiliza porque a menudo incluyen
ocho elementos de acoplamiento óptico.
El MOC3021 en particular es un optoacoplador de salida de estado sólido (SSR, por sus siglas en inglés)
que integra un diodo emisor de luz (LED) y un fotosensor en un solo encapsulado. Su función principal es
permitir el control de dispositivos de carga, como relés o triacs, mediante una señal de control de baja
potencia sin la necesidad de un contacto eléctrico directo.
Algunas características típicas del MOC3021 incluyen:
• Diodo Emisor de Luz (LED): Emite luz cuando se aplica un voltaje adecuado.
• Fotosensor (Fototriac o Fotodiodo): Detecta la luz emitida por el LED.
• Aislamiento Eléctrico: Proporciona aislamiento galvánico entre la entrada y la salida, lo que ayuda
a prevenir la interferencia y aumenta la seguridad eléctrica.
Este dispositivo es comúnmente utilizado en aplicaciones de control de carga AC, como en el encendido y
apagado de dispositivos conectados a la red eléctrica. Por ejemplo, se puede emplear en circuitos de
control de iluminación, controladores de velocidad de motor, o en sistemas de control de potencia. El
MOC3021 es parte de la familia de dispositivos MOC30xx, cada uno con características específicas, pero
todos basados en el mismo principio fundamental de optoacoplamiento.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

PRACTICA 9:
• EQUIPO Y MATERIAL:
Material para usar en la práctica:
Material: Equipo y Herramienta:
Cable estañado 22awg Resistencias (calculadas) Transistor Pinza corte y punta
BC 558
Protoboard Display DA05 PIC18F4550 Pickit 3
Placa de desarrollo Jumpers LCD 16x2

• DESARROLLO:
1) Para la parte del display se conectó el puerto D a la salida de los pines y se tomaron los pines B0 y B1
para la salida de los transistores que controlan la conexión de los display que son de ánodo común.

Imagen 9.1: Conexión displays a PIC18F4550

2) En el cogido se realizó una función con el nombre “imprime” la cual recibe un numero entre el
0 - 9 y lo manda por el puerto D.

3) En el código principal dentro de un ciclo infinito se realizó una anidación de ciclos for, en la
anidación más profunda durante 90 ciclos mientras se cambia la activación de cada display
por tiempos breves. Los 2 ciclos exteriores realizan el corrimiento de las unidades y decenas
acorde a como se cuenta comúnmente.
PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

Código en C display
#include <18f4550.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOLVP,BROWNOUT
#use delay(clock=20M)
#use fast_io(D)
#use fast_io(B)

int decenas=0;
int unidades=0;
int tiempo=0;

void imprime(int conta);

void main(){ // HEX MSB| |LSB


set_tris_D(00);
set_tris_B(00);

while(TRUE){
for( decenas=0; decenas< 9; decenas++)
{
for(unidades=0; unidades<=9; unidades++)
{
for( tiempo=0; tiempo<=90; tiempo++)
{
imprime(decenas);
output_B(0b01000000);
delay_ms(1);
imprime(unidades);
output_B(0b10000000);
delay_ms(1);
}
}
}
}

}
void imprime(int conta)
{
switch (conta)
{
case 0:
output_D(0b11000000);//0
break;
case 1:
output_D(0b11111001);//1

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

break;
case 2:
output_D(0b00100100);//2
break;
case 3:
output_D(0b10110000);//3 0x30
break;
case 4:
output_D(0b00011001);//4
break;
case 5:
output_D(0b00010010);//5
break;
case 6:
output_D(0b00000011);//6 0b00000011
break;
case 7:
output_D(0b11111000);//7
break;
case 8:
output_D(0b00000000);//8
break;
case 9:
output_D(0b00010000);//9
break;
default:
output_D(0xFF);// Todos on
break;
}

4) Para el segundo punto se realizó un nuevo programa y circuito ya que se utilizó por error
el mismo puerto para ambos casos.

Imagen 9.2: Conexión LCD 16x2 a

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

Código en C LCD
#include <18f4550.h>
#use delay (clock = 20M)
#include <LCD.c>

int A11,A12,A13,A21,A22,A23,A31,A32,A33;
int B11,B12,B13,B21,B22,B23,B31,B32,B33;
int C11,C12,C13,C21,C22,C23,C31,C32,C33;

void suma();

void main(){

lcd_init();

do{
suma();

// Mostrar C11 en el LCD


lcd_gotoxy(1, 1); printf(lcd_putc,"%d",C11);

// Mostrar C12 en el LCD


lcd_gotoxy(3, 1); printf(lcd_putc,"%d",C12);

// Mostrar C13 en el LCD


lcd_gotoxy(5, 1); printf(lcd_putc,"%d",C13);

// Mostrar C21 en el LCD


lcd_gotoxy(1, 2); printf(lcd_putc,"%d",C21);

// Mostrar C22 en el LCD


lcd_gotoxy(3, 2); printf(lcd_putc,"%d",C22);

// Mostrar C23 en el LCD


lcd_gotoxy(5, 2); printf(lcd_putc,"%d",C23);

// Mostrar C31 en el LCD


lcd_gotoxy(8, 1); printf(lcd_putc,"%d",C31);

// Mostrar C32 en el LCD


lcd_gotoxy(10, 1); printf(lcd_putc,"%d",C32);

// Mostrar C33 en el LCD


lcd_gotoxy(12, 1); printf(lcd_putc,"%d",C33);

}while (true);
PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS
}

void suma(){
A11=2; A12=3; A13=7;
A21=3; A22=8; A23=3;
A31=6; A32=4; A33=1;

B11=1; B12=1; B13=1;


B21=1; B22=1; B23=1;
B31=1; B32=1; B33=1;

C11=A11+B11; C12=A12+B12; C13=A13+B13;


C21=A21+B21; C22=A22+B22; C23=A23+B23;
C31=A31+B31; C32=A32+B32; C33=A33+B33;

• RESULTADOS OBTENIDOS:
Resultados obtenidos experimentalmente:

Imagen 9.3: Contador funcionando Imagen 9.3: LCD matrices funcionando

Explicación:
En la imagen 9.2 se puede apreciar el contador ascendente funcionando, la permanencia de cada número
es de alrededor de 1s y ya que el cambio en la activación de cada display es muy rápido no se puede
apreciar a simple vista. Por otro lado, en la imagen 9.3 muestra el arreglo que se hizo dentro de los 2
renglones de la matriz para poder observar el resultado de la suma de 2 matricez.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

• CONLUSIONES PRACTICA 9:
Alumno Conclusión:
Garcia Olivares Carlos Eduardo Para las aplicaciones vistas durante esta práctica, podemos
destacar ciertos puntos como el hecho de que el uso de la
multiplexación es de gran ayuda para el ahorro de puertos, asi
como de la simplificación de los diagramas eléctricos, es decir
que la aplicación del multitask permite no solo una mejora
considerable del espacio, si no una optimización de código.

Arzate Alvarez Daniel El circuito visto, puede no solo implementarse para un


contador, o incluso para un Display, podría usarse para más
números e incluso para un módulo de 8x8, por ejemplo,
mediante la multiplexación de los leds, que es “universal”
para este tipo de dispositivos, pudiendo realizar
animaciones, mensajes, relojes, etc...
Andres Valderrama Barbosa En esta practica se buscó demostrar distintas formas de enviar
información al usuario. En particular el uso de display facilita
bastante la impresión de números en un formato en el que las
personas están muy acostumbradas de ver, pero por el otro lado
con la LCD es posible enviar caracteres e información mucho mas
completa. En conclusión el uso de interfaces de usuario facilita y
hace más completos nuestros proyectos.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

PRACTICA 11:
• EQUIPO Y MATERIAL:
Material para usar en la práctica:
Material: Equipo y Herramienta:
Cable estañado 22awg Resistencias (calculadas) MOC3031M Pinza corte y punta
Protoboard TRIAC BT136 PIC18F4550 Pickit 3
Placa de desarrollo Jumpers Push bottons PC
Capacitor 1.1uF Ventilador Clavija y
cable

• DESARROLLO:
1) Para esta práctica se utilizo el circuito de potencia de la practica 14 ya que realizan la misma función y
ya teníamos ese circuito armado, se siguió el circuito que se muestra a continuación.

Imagen 11.1: Conexión Ventilador a PIC18F4550

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

2) A continuación, se muestra el código empleado en el PIC18F4550 para el punto de los push


bottoms.
Código en C
#include <18f4550.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOLVP,BROWNOUT
#use delay(clock=20M)
#use fast_io(D)
#use fast_io(B)

int Flag=0;

void main(){ // HEX MSB| |LSB


set_tris_C(0xFF); // Entrada
set_tris_B(0X00); // Salida

while(TRUE){
//if(input(PIN_C1) != input(PIN_C2))
//{
if(input(PIN_C1)==1 && input(PIN_C2)==0 && Flag ==0)
//Encender Motor
{
Flag = 1;
output_B(0xFF);
}
if(input(PIN_C1)==0 && input(PIN_C2)==1 && Flag ==1)
//Apagar Motor
{
Flag = 0;
output_B(0x00);
}
//}
}

3) Para el segundo punto de la práctica que consiste en encender el botón por medio de la interfaz
se utilizaron los códigos e interfaz de prácticas pasadas.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

• RESULTADOS OBTENIDOS:
Resultados obtenidos experimentalmente:

Imagen 11.1: Ventilador AC

Imagen 11.2: Ventilador AC con interfaz

Explicación:
En la imagen 11.1 se puede apreciar el encendido del ventilador de AC por medio de un push bottom y em
la imagen 11.2 el encendido del mismo ventilador, pero a través de un push bottom virtual dentro de una
interfaz.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

• CONLUSIONES PRACTICA 11:


Alumno Conclusión:
Garcia Olivares Carlos Eduardo De otra manera es importante destacar que el uso de MOC como
de otros periféricos, nos permiten el control y manipulaciones
interfaces para el control de corriente alterna, sin necesidad de
arriesga el PIC, por lo cual, el uso de estos es muy favorable al
momento de diseñar aplicaciones que involucren esta tipo de
corriente.
Es impórtate el diseño de una buena etapa de control, como un
diseño de la etapa de potencia que permitan complementarse y
evitar fallas de tensión, entonces para ello es importante guiarse
con la datasheet.
Arzate Alvarez Daniel De esta práctica es similar a anteriores por el uso de
corriente alterna al igual que corriente directa para no dañar
ningún dispositivo que no pueda soportar dicha carga, como
el mismo PIC, y con ayuda del MOC se podrían usar otras
cosas aparte de un ventilador, como bombas, focos,
etcétera
Andres Valderrama Barbosa En esta practica se utilizo las propiedades aislantes de los
optoacopladores para encender y apagar una carga de corriente
alterna con el pic, lo cual es un avance mucho mas grande porque
nos permite acceder a aplicaciones cada vez mas complejas y sin
la limitante de la potencia. En esta practica pudimos acercarnos a
aplicaciones de PLCs industriales.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

 PRACTICA 12
 EQUIPO Y MATERIAL:
Material para usar en la práctica:

Material: Equipo y Herramienta:

Cable estañado 22awg Potenciómetro Pinza corte y punta

Protoboard Pushbutton Multímetro

Capacitor 22uF LEDs Puntas banana caimán

Cristal de cuarzo Fuente de alimentación


Motor DC
20MHz

 DESARROLLO:
PRACTICA 12: INTERRUPCIONES
1) Implementación: Desarrollar un código en c que permita ejecutar una acción en el PIN B0, y que si
se presiona un botón en el Pin D1, el proceso original se interrumpa y se ejecute uno nuevo
#include <18F4550.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOWRT
#use delay(clock=20M)
#BYTE port_b = 0xF81
#BYTE port_d = 0xF83
int n=0;

#int_ext
void PortB_Interrupt(){
ext_int_edge(H_TO_L);
for(n=1;n<=5;n++){
output_high(PIN_D1);
delay_ms(300);
output_low(PIN_D1);
delay_ms(300);
}
}
void main(){
set_tris_b(0b00000001);

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

set_tris_d(0b00000000);
enable_interrupts(GLOBAL);
enable_interrupts(INT_EXT);
while(TRUE){
output_high(PIN_D0);
delay_ms(500);
output_low(PIN_D0);
delay_ms(500);
}

2) Circuito Diseñar un circuito que realice lo que se pidió en el punto anterior

Imagen P12.1: Diagrama de circuito para la practica

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

Imagen P12.2: Circuito físico para la practica 16

RESULTADOS OBTENIDOS:

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

Imagen P12.3: Proceso interrumpido

EXPLICACIÓN:
El circuito funciona de manera que siempre se está prendiendo y apagando una salida de un led, el B0,
pero, en cuanto se acciona el interruptor, el Led original, independientemente si está activo o apagado, se
“congela” en el proceso original, e inicia otro, que en este caso, enciende y apaga el pin B1, hasta que
finalice la secuencia de interrupcion

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

CONCLUSIONES PRACTICA 12:


Garcia Olivares Carlos Eduardo Las interrupciones son necesarias por que
principalmente optimizan el programa, es decir, no
existe parte del código que gestione esa entrada,
hasta que se active una bandera.

Algo a destacar es que una vez activada la


interrupción no se puede detener hasta completar la
tarea o indicar que la misma acabo, por lo cual esta
misma da prioridad a ciertas cosas para detener
otras.

Arzate Alvarez Daniel Esta práctica da la importancia de las interrupciones


en microcontroladores, por ejemplo, si se desea
construir eg, un reloj despertador, ahí es donde
entran estas mismas, ya que podría ser que una
alarma esté constantemente sonando y que esta pare
cuando se presiona un botón, y que la acción de este
botón sea reiniciar el ciclo para que pasen 24h, o
espera 10 minutos, por ejemplo
Andrés Valderrama Barbosa Las interrupciones son una herramienta bastante útil
para priorizar una determinada acción sobre el
proceso principal del programa, lo que permite leer
datos cuando el sea el momento determinado por el
hardware independientemente del en donde se
encuentre el programa.
Las interrupciones serán utilizadas mas adelante
para realizar aplicaciones mucho más avanzadas y
precisas.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

PRACTICA 13 (PWM): DESARROLLO


1) Implementación Desarrollar un código, el cual lea el valor del canal analógico 0, y con el valor
obtenido, cree un pulso cuadrado de 5V con amplitud dada por el valor del potenciometro
#include <18f4550.h>
#fuses HS, NOPROTECT, NOPUT, NOWDT
#define adc=10;
#use delay(clock=20M)
void main(){
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
setup_timer_2(T2_DIV_BY_16,100,1);// PWM
setup_ccp1(CCP_PWM); //CCP1 como salida PWM
int16 x;
while(TRUE) {
set_adc_channel(0);
delay_us(10);
x=read_adc();//otenciometro
set_pwm1_duty((int16)x);//controla el ciclo de trabajo del PWM
} }

2) Implementación Diseñar un circuito que pida lo que se pidió en el punto anterior, con 2 diferentes
salidas, 1) un LED, 2) un motor de DC

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

Imagen P13.1: Diagrama de circuito para la practica

RESULTADOS OBTENIDOS

Imagen P3.2: Circuito para ambos incisos

EXPLICACION
Con este circuito, se pretende que al girar el potenciometro, el ADC lea el valor, y la salida del CCP1,
controle ya sea la intensidad luminosa del LED o la velocidad de giro del motor de DC, esto pudiendo
medirse incluso en un osciloscopio la salida y como va variando el ancho del pulso

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

 CONLUSIONES PRACTICA 13:


Alumno Conclusión:

Garcia Olivares Carlos Eduardo Es necesario especificar que para el control de la


velocidad del motor, el uso de PWM o un reloj de
frecuencia puede modular la velocidad, pero de la
misma manera también regula el consumo del
voltaje y corriente del mismo motor, por lo cual es
factible usarlo.

De la misma manera es importante destacar que el


uso de un driver de motor, permite de manera fácil
el uso del motor, y el cambio de dirección de giro
pero de la misma manera el voltaje no puede ser el
mismo para el consumo del PIC, por lo cual es
factible el uso de optoacopladores para la
protección.

Arzate Alvarez Daniel Esta práctica se hizo un acoplamiento de 2


diferentes motores, y fuentes de VDC, una de 5V
para alimentar el pic y un motor de 5VCD. y un opto
acoplador para alimentar el circuito de motores de
mayor voltaje, sin necesidad de poner en riesgo
nuestro PIC, así pudiendo trabajar con tensiones
mayores y/o con ayuda de un relevador, corriente
alterna
Andrés Valderrama Barbosa En esta práctica se hizo uso de los timmers del
microcontrolador para poder producir una señal de
salida de PWM. Las señales PWM son comúnmente
usadas para regular la velocidad de motores de CD
o incluso regular el brillo de leds. Con esta práctica
desbloqueamos una aplicación más del uC con lo
que podremos implementar más dispositivos.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

PRACTICA 14:
• EQUIPO Y MATERIAL:
Material para usar en la práctica:
Material: Equipo y Herramienta:
Cable estañado 22awg Resistencias (calculadas) MOC3031M Pinza corte y punta
Protoboard TRIAC BT136 PIC18F4550 Pickit 3
Placa de desarrollo Jumpers Push bottons PC
Capacitor 1.1uF Ventilador Clavija y
cable
Didos 1N4004 4n25 Pot 10K
ohms

• DESARROLLO:
1) Para esta práctica se utilizó el circuito y código proporcionado por el profesor, dicho circuito se
muestra en la imagen siguiente.

Imagen 14.1: Conexión regulación de velocidad ventilador

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

2) A continuación, se muestra el código empleado en el PIC18F4550.


Código en C
//control de motor de 120vac , corre correcto verificado con motor
#include <18f4550.h>
#device adc=10
#fuses HS, NOWDT,NOPROTECT,NOPUT
#use delay(clock=20000000)
#use fast_io(a)
#use fast_io(b)
#priority TIMER1,EXT //prioridad interrupcion por rb0
#define frec_1 pin_b1
#define frec_2 pin_b2
#define disparo pin_b7
long delay=7000;
short bandera1=0;
int contador=0;
long adc=0;
#INT_TIMER1
void timer1(){
adc=read_adc(); //lectura de potenciometro externo para
temporizar disparo
delay_us(20); //tiempo de conversion adc
delay=adc*7.7;
set_timer1(65526); }
#INT_EXT
void ext_isr(){
ext_int_edge(0,L_TO_H);
bandera1=1; //si entro pulso, poner en 1 bandera de
sincronizacion
output_toggle(frec_1); //indicador de interrupcion
//si todo esta correcto frec de interrupcion = 60Hz
contador++;
if(contador==60){
output_toggle(frec_2);
contador=0; }
disable_interrupts(INT_TIMER1);
}
void main(){
set_tris_a(0x01);
set_tris_b(0x01);
delay_ms(100);
output_high(frec_1);
output_high(frec_2);
delay_ms(500);
output_low(frec_1);

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS
output_low(frec_2);
delay_ms(500);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);//Setup timer:
Reloj interno, preescaler= 8
set_timer1(65526);//Carga del TMR1 para 20 mhz q 200 ms
enable_interrupts(GLOBAL);//Habilito interrupciones globales
enable_interrupts(INT_EXT);//Habilito interrupción particular del
EXT
setup_adc_ports(an0);
setup_adc(adc_clock_internal);
set_adc_channel(0);
while(TRUE) {
enable_interrupts(INT_TIMER1);
if(bandera1==1){ //espera bandera de sincronizacion{
delay_us(delay+440);
output_high(disparo);
delay_us(200);
output_low(disparo);
bandera1=0;
}
}
}

• RESULTADOS OBTENIDOS:
Resultados obtenidos experimentalmente:

Imagen 14.1: Control de velocidad de Ventilador AC

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

Explicación:
En la imagen 14.1 se muestra el regulador de velocidad de un motor de CA dicho control obtiene la
información de un potenciómetro y por medio de un optoacoplador entre el circuito DC y AC para proteger
el PIC.

• CONLUSIONES PRACTICA 14:


Alumno Conclusión:
Garcia Olivares Carlos Eduardo Para este punto podemos decir que el uso d 4euna interfaz en
software, es mucho mas fácil de usar para el control de la
corriente alterna, aun que para ello implica el diseño de una etapa
de potencia, es necesario simplificar la misma, he ahí el por que
destacamos el uso de la interfaz, ya que esta misma permite
simplificar gran parte esto y enfocarnos en lo principal que es la
etapa de potencia. Es por eso que gracias a estas practicas
podemos desarrollar mas aplicaciones que permitan una
optimización de sistemas.
Arzate Alvarez Daniel Es similar a la anterior practica por el uso de corriente
alterna, pero esta vez se puede variar la velocidad, o
intensidad (si se trabaja por ejemplo con un foco) al igual
que corriente directa para no dañar ningún dispositivo que
no pueda soportar dicha carga, como el mismo PIC, y con
ayuda del MOC se podrían usar otras cosas aparte de un
ventilador, como bombas, focos, etcétera
Andres Valderrama Barbosa En esta práctica pudimos llevar más allá las aplicaciones de
control de cargas AC, llegando a controlar la velocidad de giro de
un motor de AC. Dicha aplicación desbloquea la capacidad de
desarrollar proyectos mucho más complejos con aplicaciones
reales en la industria ya que allá se ocupan cargas mucho más
complejas que las usadas en laboratorio (como motores de 5v),
pero gracias a esta práctica podremos controlar motores de
máquinas profesionales.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

PRACTICA 6:
 EQUIPO Y MATERIAL:
Material para usar en la práctica:
Material: Equipo y Herramienta:
Cable estañado 22awg Potenciómetro Pinza corte y punta

Protoboard Pushbutton Multímetro

Capacitor 22uF LM35 Puntas banana caimán

Cristal de cuarzo 20MHz Fuente de alimentación

 DESARROLLO:

PRACTICA 6:
I. Implementación: Desarrollar un código en c que permita leer el voltaje que se le enviará al PIC por
medio de un potenciómetro de 10K
#define USB_CDC_DELAYED_FLUSH
#define USB_CDC_DATA_LOCAL_SIZE 128
static void RDA_isr(void);
// Includes all USB code and interrupts, as well as the CDC API
#include <usb_cdc.h>
#include <stdlib.h>
#include <string.h>
#define USB_CON_SENSE_PIN PIN_B2 //No usado cuando alimentado desde el USB
#define LED1 PIN_B4
#define LED2 PIN_B5
int deg=0;

void main(){
int16 v=0;
float p;
char msg[32];

setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);

set_tris_b(0b00000100);
bit_clear(portb,4);

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

bit_clear(portb,5);
usb_cdc_init();
usb_init();

//enable_interrupts(INT_RDA); //Habilita Interrupción por serial


(Recepcion USB_CDC)
//enable_interrupts(GLOBAL); //Habilita todas las interrupciones

while(true){
usb_task(); //Verifica la comunicación USB
if(usb_enumerated()) {
v = read_adc();
p=5*v / 1023.0;
sprintf(msg,"I%1.2fFI%1.2fFI%1.2fF",p,p,p);
printf(usb_cdc_putc,"%s",msg);
delay_ms(1000);
}
}
}

Circuito: Diseñar un circuito que pueda unificar al microcontrolador y la res la protección del PIC

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

Imagen P6.1: Diagrama de circuito para la practica 6

Imagen P6.2: Circuito físico para la practica 16

RESULTADOS OBTENIDOS:

Imagen P6.3: Interfaz mostrando voltaje en el ordenador

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

EXPLICACIÓN:
El circuito funciona cuando el PIC lee los valores obtenidos desde el AN0, luego con el código, los
convierte a un valor digital, para enviarlo a la computadora, ahí esta lee desde que puerto COM están
llegando datos, y los grafica mediante puntos, pero, como la medición es rápida se ve una grafica con
líneas rectas

CONCLUSIONES PRACTICA 6:
Garcia Olivares Carlos Eduardo El uso de interfases viene con el propósito de
simplificar métodos de control de un PIC,
reduciendo pines de entrada analógicos por
lógicos controlados totalmente por el software. Por
lo cual de la misma manera podemos graficar y
hacer estudios de cada uno de los periféricos, así
como su comportamiento para el programa del
PIC.

Arzate Alvarez Daniel Con esta pracica se tiene en claro que hay
señales analógicas y digitales, y que con
ayuda de un proceso las analógicas pueden
ser digitales, como es el caso del PIC, el cual
con una resolución bastante grande, que a
escalas pequeñas no es del 100% precisa,
podemos convertir señales o impulsos a una
manera digital
Andrés Valderrama Barbosa En esta práctica integramos dos aplicaciones para el
pic, las cuales son la lectura de valores analógicos
por medio de un ADC y reafirmamos el uso de
interfaces. Lo que destaca esta práctica sobre las
anteriores es que con el ADC podremos adaptar
señales de sensores de forma que sean
aprovechables para el PIC, esto abre un panorama
de nuevos posibles dispositivos de entradas.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

PRACTICA 7: DESARROLLO
1) Implementación Usando el circuito de la práctica anterior, cambiar el potenciómetro de 10K con un
sensor de temperatura LM35

Imagen P7.1: Diagrama de circuito para la practica 17

Imagen P7.2: Circuito Fisico

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

2) Implementación Cambiar el código adaptándolo a la resolución del sensor de temperatura


(10Mv/°C), para ello, solo se necesita multiplicar el valor anterior por 100, y el coddigo resultaría:
#include <18F4550.h>
#device ADC=10
#fuses HSPLL, NOWDT, NOPROTECT, NODEBUG, USBDIV, PLL5, CPUDIV1, VREGEN
#use delay(clock=48000000)
#byte porta = 0xf80 // Identificador para el puerto A.
#byte portb = 0xf81 // Identificador para el puerto B.
#byte portc = 0xf82 // Identificador para el puerto C.
#byte portd = 0xf83 // Identificador para el puerto D.
#byte porte = 0xf84 .
#define USB_CDC_ISR() RDA_isr()
#define USB_CDC_DELAYED_FLUSH
#define USB_CDC_DATA_LOCAL_SIZE 128
#include <usb_cdc.h>
#include <stdlib.h>
#include <string.h>
#define USB_CON_SENSE_PIN PIN_B2
#define LED1 PIN_B4
#define LED2 PIN_B5
int deg=0;
void main(){
int16 v=0;
float p;
char msg[32];
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
set_tris_b(0b00000100);
bit_clear(portb,4);
bit_clear(portb,5);
usb_cdc_init();
usb_init();
while(true){
usb_task();
if(usb_enumerated()) {
v = read_adc();
p=500.0 * v / 1023.0;
sprintf(msg,"I%1.2fFI%1.2fFI%1.2fF",p,p,p);
printf(usb_cdc_putc,"%s",msg);
delay_ms(1000);
}}}

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

RESULTADOS OBTENIDOS

Imagen P7.3: Grafica mostrando ~23° (Temperatura ambiente)

Explicación:
El funcionamiento es practicamente igual al de la practicas anterior, pero el voltaje que manda el PIC a la
computadora es 100 veces mayor, ademas que se cambaron los limites Y para la temperatura

 CONLUSIONES PRACTICA 7:
Alumno Conclusión:

Garcia Olivares Carlos Eduardo Muy similarmente a la practica anterior, estos es


factible el uso de sensores y mas que nada es
enfocado a posibles aplicaciones donde el valor de
entrada puede ser usado para banderas de
activación de tal manera que no dependemos de
un valor lógico, si no análogo, el cual a través de la
resolución podemos o no ser exactos.

Arzate Alvarez Daniel De igual forma que la practica anterior, aquí


entra en juego el uso de convertidores a digital,
y aquí solo se vio un caso, pero hay infinitos
casos para usar este, ya que muchos
sensores, trabajan de manera similar al LM
pudiendo ser usados en automatización
Andrés Valderrama Barbosa De manera semejante a lo que planteaba en la
practica anterior en esta se emplea un sensor de
temperatura para poder leer su valor con un ADC,
con ello podremos realizar controladores de
temperara o proyectos de monitoreo.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

PRACTICA 5:
 EQUIPO Y MATERIAL:
Material para usar en la práctica:
Material: Equipo y Herramienta:
Cable estañado 22awg Potenciómetro Pinza corte y punta

Protoboard Pushbutton Multímetro

Capacitor 22uF LM35 Puntas banana caimán

Cristal de cuarzo 20MHz Fuente de alimentación

 DESARROLLO:
❖ Implementación: Desarrollar el código necesario para que con uso de un teclado matricial se envíe
un mensaje el cual indique cual fue la tecla presionada.

Imagen 5.1: Diagrama de conexiones para LCD a PIC

❖ Código:
PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

/*programa que no quise programar en cPIC


por que no me deja usar binario :c
oscilador configurado en 48Mhz divido PLL en
5 para 20MHz*/
unsigned short kp = 0;
char keypadPort at PORTB;
sbit LCD_RS at RD0_bit;
sbit LCD_EN at RD1_bit; switch (kp) {
sbit LCD_D4 at RD2_bit; case 1: kp = 49; break; // 7-55
sbit LCD_D5 at RD3_bit; case 2: kp = 50; break; // 8-56
sbit LCD_D6 at RD4_bit; case 3: kp = 51; break; // 9-57
sbit LCD_D7 at RD5_bit; case 4: kp = 65; break; // /-47
sbit LCD_RS_Direction at TRISD0_bit; case 5: kp = 52; break; // 4-52
sbit LCD_EN_Direction at TRISD1_bit; case 6: kp = 53; break; // 5-53
sbit LCD_D4_Direction at TRISD2_bit; case 7: kp = 54; break; // 6-54
sbit LCD_D5_Direction at TRISD3_bit; case 8: kp = 66; break; // *-42
sbit LCD_D6_Direction at TRISD4_bit; case 9: kp = 55; break; // 1-49
sbit LCD_D7_Direction at TRISD5_bit; case 10: kp = 56; break; // 2-50
void main() { case 11: kp = 57; break; // 3-51
ADCON1 = 0x0F; case 12: kp = 67; break; // --45
Keypad_Init(); case 13: kp = 42; break; //
Lcd_Init(); case 14: kp = 48; break; // 0-48
Lcd_Cmd(_LCD_CLEAR); case 15: kp = 35; break; // =-61
Lcd_Cmd(_LCD_CURSOR_OFF); case 16: kp = 68; break; // +-43
Delay_ms(100); }
Lcd_Out(1, 1, "Tecla: "); Lcd_Chr(1, 15, kp);
do { } while (1);
kp = 0; }
do
kp = Keypad_Key_Click();
while (!kp);

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

 CONLUSIONES PRACTICA 5:
Alumno Conclusión:

Garcia Olivares Carlos Eduardo El uso de la LCD como parte de la interfaz es una
agradable opción, ya que fácilmente con la
biblioteca es posible mandar mensaje detallados
que expliquen y orientan las funciones de un
sistema, por lo cual el uso de la pantalla LCD es
factible mas cuando muestran información
necesaria.

Arzate Álvarez Daniel Aquí sin necesidad de una interfaz grafica, de


todas formas usamos interfaces, en cuanto a
salida, la LCD, y entrada, el teclado matricial,
y es encargo del programador y obvio del
PIC,saber que teclas se están presionando y
como mostrarlas, pudiendo, si se requiriera,
hacer un sistema de contraseña y que
compare si es correcta o no
Andrés Valderrama Barbosa • En esta práctica se utilizó un teclado matricial y
una pantalla LCD. El fin fue completado ya que
se buscaba que por medio de la detección de
que pines del PIC eran activados poder
conocer que símbolo correspondía al botón
oprimido. Esta practica sirve para demostrar la
implementación de una interfaz de usuario para
ingresar información al PIC.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

PRACTICA 10:
 EQUIPO Y MATERIAL:
Material para usar en la práctica:
Material: Equipo y Herramienta:
Cable estañado 22awg Potenciómetro Pinza corte y punta

Protoboard Pushbutton Multímetro

Motor de 24v DC Motor a pasos Puntas banana caimán

555NE Puente H Fuente de alimentación

 DESARROLLO:

❖ Implementación: Retomando la practica numero 8, realizar las adaptaciones necesarias para el


control de un motor de 24 volts, donde el mismo deberá ser modulado por el PWM del pulso de un
555, donde el potenciómetro será controlado por el motor a pasos, y la dirección del motor
directamente desde el PIC.
❖ Circuito:

Imagen 10.1: Conexión adaptada de la practica 8 para controlar PWM

Código:

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS
//YA ME ABURIIIIIIIIIIIIIIIII// PORTD=0b000000000;
#define LEDRON PORTA.F0//LED ROJO delay_ms(100);
#define LEDVOFF PORTA.F1//LED VERDE return;
#define LEDIZQ PORTA.F2//LED naranja }//ONA
#define LEDDER PORTA.F3//LED Azul void OFFA(){// implementar su código para opción
#define ON PORTC.F0 // delay_ms(100);
#define OFF PORTC.F1 PORTD=0b00000000;
#define DIR PORTC.F2 delay_ms(200);
//añadidos return;
#define VA PORTC.F5 }//stop
#define VM PORTC.F6 void SEL(){// implementar su código para opción de apagado
#define VB PORTC.F7 if(VA==1){VAA();}
//funcines else if (VA==0);{
void ONA(); //prender if (VM==1){VMA();}
void OFFA(); //stop else if (VM==0){
void VAA(); //rapido if (VB==1){
void VMA(); //medio delay_ms(20);
void VBA(); //bajo LEDRON=1;
void SEL(); delay_ms(20);
LEDRON=0;
int i=0; }//if VB
}//else if VM
void main() { }//else if VA
//Entradas iniciales return;
}//sel
PORTA=0; void VAA(){// implementar su código para opción de giro en
PORTB=0; sentido izquierdo
PORTC=0; PORTD=0b00000001;
PORTD=0; delay_ms(20);
//Tipo de 1-ENTRADAS/0-SALIDAS PORTD=0b00000010;
TRISA=0b00010000; //Salida de estados A0-A3 delay_ms(20);
TRISB=0b11111111; //B7-B4 teclado PORTD=0b00000100;
TRISC=0b11111111; //C0-C2 y A5 selector delay_ms(20);
TRISD=0b00000000; //SALIDA DE MOTOR a pasos D0- PORTD=0b00001000;
D3 delay_ms(20);
//funcion de motor a pasos //LEDIZQ=0;
//delay_ms(500);
while(1){ return;
if(ON==0){ }//ALTO
delay_ms(20); void VMA(){// implementar su código para opción de giro en
LEDRON=0; sentido derecho
delay_ms(20); PORTD=0b00001000;
LEDRON=1; delay_ms(50);
ONA(); PORTD=0b00000100;
} //fin if para apagado delay_ms(50);
else if(ON==1){ PORTD=0b00000010;
if(OFF=1){ delay_ms(50);
LEDVOFF=0; PORTD=0b00000001;
OFFA(); delay_ms(50);
LEDVOFF=1; //LEDDER=0;
}//fin de apagar //delay_ms(500);
if(DIR==1){ return;
LEDIZQ=0; }//medio
LEDDER=1; void VBA(){// implementar su código para opción de giro en
SEL(); sentido derecho
delay_ms(10); PORTD=0b00001000;
}//fin der delay_ms(100);
else if(DIR==0){ PORTD=0b00000100;
LEDDER=0; delay_ms(100);
LEDIZQ=1; PORTD=0b00000010;
SEL(); delay_ms(100);
delay_ms(10); PORTD=0b00000001;
}//fin izq delay_ms(100);
}//encendido
}//fin de while //LEDDER=0;
}//in de main //delay_ms(500);
void ONA(){ return;
//LEDRON=1;// led rojo }//Bajo

PORTD=0b000000000;
delay_ms(100);

return;
}//ONA
PRACTICA 5 a 14
void OFFA(){// implementar su código para opción de
apagado
//LEDVOFF=1;// led rojo
// delay_ms(100);
PORTD=0b00000000;
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

 RESULTADOS: La practica se enfoca a la union de distintas practicas anteriores,

Imagen 10.4: Voltaje usado para el


motor(0-24 volts soportaba)

Imagen 10.4: Motor de DC de 24


Imagen 10.2: Circuito completo, donde se aprecia la etapa de
volts(salida principal)
control, y de potencia
donde el uso de una etapa de potencia para 24 volts era controlada por el pic directamnete , y el
pwm conectado era por el motor a pasos el cual tambien era controlado por el PIC, todo esto a
traves de sinco entradas, prendido, apagado, parar, derecha/izquierda, paso rapido, medio, lento.

 CONLUSIONES PRACTICA 10:

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

Alumno Conclusión:

Garcia Olivares Carlos Eduardo Un sistema que requiera el control de voltajes altos,
necesitas como medidas necesarias la protección
del PIC, por lo cual desarrollar etapas d control por
separado suele ser útil, en este caso, el PIC solo
se encarga de señales de control, mientras que las
demás etapas son controladas por circuitos
integrados separados, de tal manera que el
programa es mucho mas pequeño , lo que mejora
la eficiencia y respuesta del mismo.

La incomodidad de este caso es que las


alimentaciones para cada fase se pueden
compartir, y en otros deben ser individuales, por lo
cual esto también necesita una optimización y
organización dada por el diseñador.

Arzate Álvarez Daniel Aquí, esta práctica es similar a otras hechas


anteriormente, ya que podemos controlar un
motor a pasos y hacerlo más rápido o lento
(según se requiera) con un pulso pwm, desde
hacer más corto el periodo, para que vaya más
rápido, e inversamente, más largo el pulso
para que vaya más lento, o incluir una
velocidad media.
Andrés Valderrama Barbosa En esta práctica se realizaron distintas interfaces
entre componentes para poder regular la velocidad
de giro de un motor de 24V, esto demuestra que con
electrónica es posible controlar dispositivos de
potencias distintas a partir del uso correcto de
interfaces.

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

PRACTICA 8:
 EQUIPO Y MATERIAL:
Material para usar en la práctica:
Material: Equipo y Herramienta:
Cable estañado 22awg Potenciómetro Pinza corte y punta

Protoboard Pushbutton Multímetro

Motor a Pasos Leds Puntas banana caimán

Resistencias calculadas Fuente de alimentación

 DESARROLLO:
❖ Implementación: Desarrollar un código, el cual permita el control de giro de un motor a pasos, el
mismo deberá ser controlado por 3 entradas, es decir que seleccionaremos el sentido de giro, así
como el estado de encendido u apagado del mismo, de la misma manera deberá tener leds
indicadores para cada estado.
❖ Circuito:

Imagen 8.1: Conexión para control motor a pasos a PIC18F4550

❖ Código:

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

#include <18f4550.h> output_high(bobina_1);


#fuses output_low(bobina_2);
HS,NOWDT,NOPROTECT,NOPUT,NOLVP,BROWNOUT output_low(bobina_3);
#use delay(clock=20M) output_high(bobina_4);
#use standard_io(B) delay_ms(velocidad);
#use standard_io(C) }
#define LEDencendido PIN_A0
#define LEDapagado PIN_A1 void pasos_derecha(int velocidad)
#define LEDizq PIN_A2 {
#define LEDdere PIN_A3 output_high(bobina_1);
#define bobina_1 PIN_B0 output_high(bobina_2);
#define bobina_2 PIN_B1 output_low(bobina_3);
#define bobina_3 PIN_B2 output_low(bobina_4);
#define bobina_4 PIN_B3 delay_ms(velocidad);
#define encendido PIN_D0
#define apagado PIN_D1 output_low(bobina_1);
#define izquierdo PIN_D2 output_high(bobina_2);
#define derecho PIN_D3 output_high(bobina_3);
void pasos_izquierda(int velocidad); output_low(bobina_4);
void pasos_derecha(int velocidad); delay_ms(velocidad);
void pasos_off(void);
void main(){ output_low(bobina_1);
while(true) output_low(bobina_2);
{ output_high(bobina_3);
pasos_off(); output_high(bobina_4);
delay_ms(velocidad);
if(input(encendido) == 1){
pasos_off(); output_high(bobina_1);
output_high(LEDencendido); output_low(bobina_2);
} output_low(bobina_3);
else if(input(apagado) == 1){ output_high(bobina_4);
pasos_off(); delay_ms(velocidad);
output_high(LEDapagado); }
}
else if(input(izquierdo) == 1){ void pasos_off(void)
pasos_izquierda(2); {
output_high(LEDizq); output_low(bobina_1);
} output_low(bobina_2);
else if(input(derecho) == 1){ output_low(bobina_3);
pasos_derecha(2); output_low(bobina_4);
output_high(LEDdere); }
}
else {
output_low(LEDencendido);
output_low(LEDapagado);
output_low(LEDizq);
output_low(LEDdere);
}
}
}
void pasos_izquierda(int velocidad)
{
output_low(bobina_1);
output_low(bobina_2);
output_high(bobina_3);
output_high(bobina_4);
delay_ms(velocidad);

output_low(bobina_1);
output_high(bobina_2);
output_high(bobina_3);
output_low(bobina_4);
delay_ms(velocidad);

output_high(bobina_1);
output_high(bobina_2);
output_low(bobina_3);
output_low(bobina_4);
delay_ms(velocidad);

output_high(bobina_1);
output_low(bobina_2);
PRACTICA 5 a 14
output_low(bobina_3);
output_high(bobina_4);
delay_ms(velocidad);
}
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

 RESULTADOS:

Imagen 8.2: Motor a pasos con Imagen 8.3: Conexiones a control para
carga de un potenciometro la activación de las bobinas del motor,
y entradas de selección

 CONLUSIONES PRACTICA 8:
Alumno Conclusión:

Garcia Olivares Carlos Eduardo Para el control de un motor a pasos, es necesario


recordar la lógica de activación en el caso de un
motor unipolar, por lo cual el uso de etapas de
control prediseñadas es factible. Así la
simplifcacion del programa es posible, de esta
manera podemos destacar que el control debe ser
dado por periféricos que permitan la activación del
mismo, dado ello también la implementación de
casos cuando se activan 2 o mas al mismo tiempo,
y la prioridad de ciertos puntos.

Arzate Alvarez Daniel Similarmente a la anterior práctica, es el


control de un motor, con excepción que ahora
se define el giro de motor y que indique hacía
que lado está girando, con la indicación de un
led, este es parecido a la práctica del puente
H, ya que en ambos casos controlamos la
dirección de giro
Andrés Valderrama Barbosa De manera parecida a al anterior practica en esta se
vuelve a controlar un motor de DC de mayor voltaje

PRACTICA 5 a 14
INSTITUTO POLITECNICO NACIONAL
UNIDAD PRFESIONAL INTERDICIPLINARIA DE INGENERIA Y
TECNOLOGIS AVANZADAS

que 5V. Pero ahora se define el sentido de giro del


motor utilizando leds, cabe aclarar que el uso de
todas estas interfaces hace más sencillo escribir la
lógica del programa.

BIBLIOGRAFIA:

Boylestad, R. L. (2009). Teoria de circuitos y dispositivos electronicos . Estado de México: Pearson.

Valdes, F., & Areny, R. P. (2007). Microcontroladores fundamentos y aplicaciones con PIC. Marcombo.

Programación de Microcontroladores PIC en Lenguaje C (1.a ed.). (2020).

Schmidt, D. (2022). MikroC Pro para PIC y ARM Cortex: programación y ejemplos. Marcombo.

PRACTICA 5 a 14

Common questions

Con tecnología de IA

The Analog-to-Digital Converter (ADC) is pivotal in integrating analog sensors into a microcontroller system. It converts the continuous analog signals from sensors into digital signals that the microcontroller can process. In the practices described, the ADC facilitates the reading of sensor outputs, enabling the precise measurement of variables like voltage or temperature. Subsequent digital data can then be used for decision-making processes, control, and visualization tasks, thereby expanding the microcontroller's applicability to various sensor-driven applications .

The integration of a keypad with a microcontroller enhances input functionality by allowing a diverse range of user inputs to be easily captured and processed. Keypads provide a straightforward mechanism for inputting data or commands into a system, facilitating interactive control without requiring complex input devices. This expands the usability of embedded systems to applications such as password entry, menu navigation, and real-time command input .

Multiplexing offers several benefits in electronic circuit design, including the conservation of microcontroller ports and the simplification of wiring and circuit diagrams. By using a multiplexing approach, circuits can manage multiple signals over a single data line or more efficiently use available microcontroller resources. This is particularly beneficial in applications like LED displays and input keypads, where it allows for the control of numerous components with fewer connections, resulting in streamlined designs and potentially lower costs .

Optoisolators such as the MOC3021 enhance both the safety and functionality of motor speed control systems by providing electrical separation between the control unit and the motor power circuit. This separation prevents high voltages from reaching sensitive control components, thereby reducing the risk of damage or hazards. Additionally, optoisolators enable precise control of motor speed by facilitating the connection of low-voltage control signals to high-voltage motor circuits without direct electrical contact .

Data visualization techniques used in the practices are effective in transforming raw sensor data into understandable formats, enabling real-time monitoring and analysis. For instance, graphical representation on displays can provide an intuitive overview of sensor trends and anomalies, helping users to quickly interpret and act on data. The techniques described ensure that critical information is readily accessible and interpretable, enhancing decision-making processes in various applications .

Challenges in reading analog inputs using a microcontroller include accurate signal conversion and handling of noise in the analog signal. Solutions involve using high-resolution ADCs for better precision and employing filtering techniques to mitigate noise. Additionally, calibrating the analog sensors and incorporating software-based error correction can improve the reliability and accuracy of the readings, ensuring the system can effectively interpret and respond to sensor data .

Software interfaces contribute significantly to the control of AC loads by simplifying user interactions and providing more precise control mechanisms. They allow for the abstraction of complex underlying hardware operations, enabling easier adjustments of parameters like speed or intensity. This abstraction also facilitates the implementation of advanced features like automatic adjustments based on inputs, enhancing system functionality and flexibility in real-world applications such as controlling motor speeds or light dimming .

The MOC3021 improves control and safety in AC power systems by using optoisolators to decouple the control circuit from the AC load circuit. This isolation helps prevent electrical interference and enhances safety by ensuring that the control electronics are not directly exposed to high voltages from the AC system. It makes it viable for various applications like lighting control, motor speed controllers, and power systems, allowing precise control over AC loads without compromising on electrical safety .

Code optimization plays a crucial role in developing efficient and scalable microcontroller applications. Optimizing code helps to reduce memory usage, improve processing speed, and enhance overall system performance. In the described practices, optimizations were likely applied in the structuring of loops and function calls to minimize execution time, ultimately enabling the microcontroller to handle more complex tasks and interfaces without significant performance drawbacks .

Using an LCD in microcontroller projects significantly enhances user interface design by allowing the display of readable and informative data to the user. It facilitates the communication of system states, sensor readings, and error messages in a clear and concise manner. Moreover, LCDs offer flexibility in formatting and displaying data, making the system more user-friendly and interactive, which is essential for monitoring and controlling embedded systems effectively .

También podría gustarte