Anda di halaman 1dari 10

MATERIA

Automatizacin de procesos

PRACTICA 1
PWM

ALUMNOS
ELIDETH MARTINEZ PEREZ

11 003 1263

EDGAR EDUARDO SANTIAGO BAEZ 11003 1036


JORGE VALENTE MORALES

10 003 0088

AUTOMATIZACION
Es el conjunto de tcnicas basada en sistemas capaces de recibir informacin del
medio, sobre el cual actan y se realizan acciones de anlisis, organizacin y
control con el fin de optimizar los procesos productivos.
Existen dos formas para realizar un control:
1.- lazo abierto
2.- lazo cerrado
La automatizacin se liga al control de procesos discretos y discontinuos, un
sistema de control se divide en varias tareas y estas tareas se organizan por
niveles de abstraccin.

La prctica consiste en realizar un problema de control, generar una seal PWM a


la cual se pueda modificar el ciclo de trabajo por medio de un push boton.
La resolucin:
Fpwm=10 Hz
Tpwm=100 ms

Resolucion PWM =10 intervalos


Mi ciclo de trabajo tiene una resolucin del 10%, y la tarea de generacin de la
seal PWM se tiene que ejecutar al menos cada 10ms.
En primer lugar la prctica se tiene que dividir en tareas:

ESTADO DE CALCULO DE TIEMPO

ESTADO PWM ON

ESTADO PWM_OFF

Frecuencia pwm=10hz
Tpwm=100ms
Resolucin PWM=10 intervalos
Mi ciclo de trabajo tiene una resolucin del 10%
La tarea de generacin de la seal PWM se tiene que ejecutar al menos cada 10
ms.
La velocidad a la que se ejecuta la instruccin:
Fcy=

fase 20 Mhz
=
=5 MHz
4
4

MATERIALES

PIC 16F887 2PZAS


4 LEDS
CABLE
PUSH BOTON 3 PZAS
2 CRISTALES
RESISTENCIAS
RS485 2 PZAS
CAPACITORES

Programa
#include <GeneracionPWM.h>
#use
rs232(baud=9600,xmit=PIN_C6,rcv=PI
N_C7)
#use rtos(timer=0,minor_cycle=1ms)
#define PIN_PWM PIN_B0
#define PIN_DEC PIN_B1
#define PIN_INC PIN_B2
#define INIT_PWM 0

#define CALC_PWM 1
#define ON_PWM 2
#define OFF_PWM 3
#define CT_MAX 10
int8 CT_deseado = 1;
int8 CT_actual = 0;
int8 ton = 0;
int8 toff = 0;
int8 estado_pwm = INIT_PWM;

output_low(PIN_PWM);
#task(rate=10ms,max=1ms)

if(CT_actual== 9){

void generacionPWM_rtos_task ( )

estado_pwm = CALC_PWM;

}else{

switch( estado_pwm ){

toff--;

case INIT_PWM:

estado_pwm = OFF_PWM;

CT_actual = 5;

estado_pwm = CALC_PWM;
//siguiente estado

}
}

break;

break;

case CALC_PWM:

case OFF_PWM:

CT_actual = CT_deseado;

toff--;

if(CT_actual>0){ //condicion de
transicion 1

if(toff == 0){
estado_pwm = CALC_PWM;

output_high(PIN_PWM);
}

ton = CT_actual;

break;

toff = CT_MAX-ton; //el codigo


anterior es el codigo de transicin
estado_pwm = ON_PWM;//siguiente
estado
}else if(CT_actual == 0){ //condicion
de transicion 2

}
}

#define E_ACT 0

output_low(PIN_PWM);
toff = CT_MAX;
estado_pwm = OFF_PWM;//siguiente
estado

#task(rate=250ms,max=1ms)
void InterfaceOperador_rtos_task ( )
{

}
break;
case ON_PWM:

if(input(PIN_INC)==E_ACT){
if(CT_deseado < 10){

ton--;
if(ton==0){
if(CT_actual == CT_MAX){
estado_pwm = CALC_PWM;
}else if(CT_actual < CT_MAX){

CT_deseado++;
}
}else if( input(PIN_DEC)==E_ACT){
if(CT_deseado > 0){
CT_deseado--;

}
}
void main()

rtos_run ( );
}

SIMULACION

IMPLEMENTACION

CONCLUSIONES

La prctica respondi de la manera esperada, se realizaron dos cdigos el primero


consisti en, que al apretar el push boton el ciclo de trabajo tena que cambiar y
con el osciloscopio se revis que la frecuencia fuera la correcta.
El segundo programa consisti en que al apretar el push boton si dejar de
oprimirlo el ciclo de trabajo tena que cambiar.
Se comprob que el Tpwm=100ms

Anda mungkin juga menyukai