# Control PID con microcontroladores PIC



## sharky (Mar 31, 2005)

Hola me gustaria saber si es es facil programar en un microcontrolador pic las tecnicas del control PID.


----------



## Andres Cuenca (Mar 31, 2005)

Hola sharky, 

Implementar rutinas de controladores PID en un microcontrolador de la familia PIC de microchip no es nada complicado, revísate esta nota de aplicación para que lo entiendas.

http://ww1.microchip.com/downloads/en/AppNotes/00937a.pdf

Esta otra nota de aplicación tambien es interesante:

http://ww1.microchip.com/downloads/en/AppNotes/00964A.pdf

Saludos,
Li-ion.


----------



## sharky (Abr 1, 2005)

ahora tengo un problema distinto, al director de tesis se le dio por que como la cosa es didáctica quiere el controlador implementado en el PC, lo que creo que me facilitara el trabajo.
agradezco por los pdfs que me enviaron los voy revisar ahora, pero de nuevo si alguien conoce los algoritmos o la base de los algoritmos en un lenguaje como Visual Basic  
gracias por su colaboración


----------



## Andres Cuenca (Abr 1, 2005)

Eso ya esta mas sencillo, visita este enlace:

http://www.jashaw.com/pid/code.htm


Saludos,
Li-ion.


----------



## sharky (Abr 12, 2005)

listo la propuesta esta aprobada
ahora pregunto si han trabajado con sistemas de adquisición de datos, si me pueden ayudar con alguna recomendación para el diseño del sistema de adquisición para el controlador.,
estoy mirando que s mejor si hacer adquisición por puerto serial o por paralelo.

gracias


----------



## Andres Cuenca (Abr 12, 2005)

Por simplicidad tanto a nivel de software como de hardware, es mejor utilizar el puerto paralelo. 

Un sistema simple de adquisición de datos por el puerto paralelo solo requiere un conversor análogo digital como el ADC0804 y un acondicionador de señal con amplificador operacionales.


----------



## Renato Masias (May 3, 2005)

Hola, dime que es lo que quieres controlar, cual es tu planta, cual es tu tiempo de estado estacionario, tu sobreimpulso, necesitas error cero en estado estacionario. Me parece que debes de conocer primero tu planta, ósea hallar su función de transferencia, luego saber como quieres que sea la respuesta en estado estacionario y permanente de todo el sistema, en base a eso, escogerás tu controlador, no siempre es necesario un PID a veces con un PI basta para cumplir los requerimientos de tu sistema. 

Una ves que sabes lo que quieres, debes ubicar los polos, y ceros, de tu controlador, puedes aplicar por ejemplo, el lugar geométrico de las raíces, que pase por tus polos deseados, y después recién ves que tipo de dispositivo puede cumplir esa tarea si es un PIC o una PC.


----------



## sharky (May 12, 2005)

lo que yo quiero hacer es un controladior didactico que se pueda conectar a cualquier planta y funcione colocandole los parametros de sintonizacion de echo, lo que quiero implementar es el controlador


----------



## Raflex (Jun 4, 2005)

Hola, entonces lo que necesitas es hacer un algoritmo con auto tuning. Hay mucha información al respecto con este tema, aqui no es necesario conocer la planta ya que tu algoritmo se ajustara automaticamente. Basicamente requieres hacer 2 programas, uno que es el que hace la accion de control y otro que es el supervisor, ambos corriendo de manera paralela, el supervisor va ser el encargado de calcular las constantes y pasarlas al controlador, para este calculo hay una serie de reglas, las que puedes encontrar facilmente son las de Ziegler Nichols. Busca Ziegler Nichols tuning.


----------



## sharky (Jul 5, 2005)

Para pulir el cuento estoy metido en la grande estoy intentando comunicar matlab con el pic 16f877 pero no me sirve implementar en el pic el algoritmo para rs232 necesito colocar el modulo usart a que haga eso.

configurar el usart para que trabaje en rs232, matlab ya tiene un objeto espero configurarlo bien para que funcione.


----------



## Raflex (Ago 1, 2005)

Hola, la desventaja de que uses comunicacion serial es que el tiempo de muestreo va ser algo lento, si puedes mejor usa el puerto paralelo.

Para tu controlador usa transformadorrmada Z en vez de trabajar en el dominio del tiempo o la frecuencia (t o s) ya que las operaciones son mas simples.


----------



## sendag (Ago 15, 2006)

hola sharky, tengo el mismo problema q tu, es decir tengo q elaborar un pid digital con un microcontrolador q en este caso el q estoy usando es un 16f876a, q tiene un convertidor A/D integrado y luego uso un convertidor externo D/A. he logrado comunicar el pic con el pc con el programa visual basic 5. lo unico q he conseguido es mandar caracteres en codigo ascii al pic mediante usart. te dejo el codigo por si te sirve de ayuda.



```
Private Sub Command1_Click()
MSComm1.PortOpen = True
End Sub
---------------------------------------
Private Sub Command2_Click()
MSComm1.PortOpen = False
End Sub
----------------------------------------
Private Sub Command3_Click()
MSComm1.Output = Text1.Text
End Sub
```

en la zona de objetos as de crear dos botones para abrir y cerra puertos y una caja de texto donde introduciras los datos, tambien tienes q activar en proyecto/componentes la casilla microsoft control comm 5.0 que es un icono con forma de telefono, tambien tienes q crear un icono con el en la zona de objetos. y luego configurarlo para su comunicacion


----------



## Anghell (May 8, 2007)

Hola, mi situacion es muy parecida. Soy estudiante y mi proyecto de tesis es realizar un controlador PID autosintonizable. Aun no entiendo muy bien de ello, lo debo implementar en un PIC, se que puedo hacerlo mediante el metodo de Ziegler-Nichols. Con lo que tengo problemas es con el programa, aun no lo empiezo por que no se muy bien, de manera general que deberia de hacer. Me encantaria una respuesta. Gracias


----------



## Wilmer Luna (Nov 8, 2007)

Compañeros.

He leído los mensajes anteriores del foro pero no ha sido concreto no ha llevado a un resultado optimo.estoy implementando un Pid en un Microcontrolador y controlar una planta y voy a colocar los avances de mí trabajo espero que les sirva. 

Creo que en este caso debemos tener conceptos claros de teoría de control continuo y su diferencia con el control discreto, para llevar esto a cabo, debido a que tenemos que controlar una planta que estará siempre en continuo con un Pid con Micro que será digital y corresponde en tiempo discreto.

Antes de comenzar previo a esto debemos tener en cuenta lo siguiente:

Para realizar este montaje debemos de tener simuladores y programas de diseño electrónico como

De diseño: Matlab, Orcad 10, o Proteus, Mplab u otro simulador o compilador para el PIC que vamos a utilizar.

Consideraciones para escoger PIC:

Lo mas importante es tener un PIC con las rutinas básica con suma, resta, multiplicación y división pro OJO, deben de ser con mínimo 3 decimales, esto nos lleva a tener en un PIC básico una rutina bien robusta para realizar estas operaciones, yo recomendaría un PIC que al menos tenga Punto Flotante, para no complicar estas rutinas que de cierto modo son complejas.

Esta es una visión general del proyecto.poco a poco ir redactando en el foro los avances de mi proyecto que en estos momentos esta ejecutado en un  90%

Sean Un poco pacientes que debo de organizar el material para que alguien que no sea tan experto en control lo pueda utilizar, como también cabe aclarar que no esta aplicando a un problema especifico del diseño del Pid, como a un motor, un actuados o lo que sea, va dirigido a cualquier cosa siempre y cuando sepamos la función de transferencia.


----------



## Fernando Vasquez (Dic 10, 2007)

Creo que el control PID si es que se hace en un procesador de 8 bits es mejor hacerlo en lenguaje C, si el procesador es de 16 se peude hacer en lenguaje maquina, usando variables de coma flotante. El algoritmo PID no es muy complicado sobretodo si se hace en lenguaje C. El verdadero problema es la sintonizacion, ya que un PID sin sintonizar puede llegar a ser muy deficiente incluso peor que un control solo proporcional.

Para sintonizar el PID se puede hacer manualmente o de forma automatica, la forma manual no nos interesa, pues se tendria que hacer a cada rato, ya que todos los procesos varian de cuando en cuando y hay muchos procesos diferentes. Para hacer un algoritmo de sintonizacion automatico o autotune, el metodo mas usado por la industria es el metodo por RELE que se basa en el metodo de siegler nichols de lazo cerrado. 

Aun no entiendo bien este metodo, si alguien sabe bien como hacerlo en C o otro lenguaje puede ayudarnos. Copio a continuacion una expicacion de este metodo:

Está basado en un selector que permite al operador seleccionar entre el modo de control PID (selector en posición A) y el modo de ajuste automático de parámetros o auto-ajuste (selector en posición B).
Cuando se demanda la función de ajuste, se pone el selector a B, lo que significa que
se activa la realimentación con relé y se desconecta el regulador PID. Cuando se obtiene
un ciclo límite estable, se calculan los parámetros del PID y luego se conecta el
controlador PID al proceso con los parámetros calculados.
La realimentación con relé consiste en provocar una oscilación pequeña pero
mantenida en un proceso por lo demás estable. La frecuencia y la ganancia límites del
proceso se determinan según el período de las oscilaciones y los cambios de amplitud
observados en la variable del proceso.
Una condición aproximada para la oscilación se puede determinar asumiendo que
existe un ciclo límite con periodo Tu y frecuencia ωu = 2π /Tu tal que la salida del relé es
una onda periódica, cuadrada y simétrica.

De este texto puedo determinar que se pone un control proporcional P, con una ganancia determinada, luego cuando haya un cruce por 0 se desconecta el control P, hasta que haya otro cruce por 0, y asi hasta que se llegue a una oscilacion. Cuando esto ocurra se toma el periodo y se usa en las formulas de siegles nichols. Para esto se podria utilizar un timer de un PIC y un control P simple..

Asi el algoritmo seria:

activar control P y activar arrancar timer1
¿ cruce por 0 del ADC ?
   -NO: no hacer nada y seguir esperando cruce por cero
   -SI: -guardar tiempo de timer 1 en una variable 
          -cambiar control P a inactivo (o activo en caso de venir desactivado)
          -¿dato guardado de timer 1 = dato ahora obtenido?
                 -Si es igual: calculamos las constantes para el PID
                 -No es igual: regresamos al bucle de espera de paso por cero.


----------



## estperez (May 7, 2009)

Hola , soy estudiante de instrumentacion y control, y tengo el siguiente proyecto.
implementar un control proporcional para controlar temperatura en un DSP 30F3014

tengo dudas totales de como implementar el control proporcional, he mirado los pdfs que hay en el foro y me han dado algunas ideas, pero estan aplicados a los microcontroladores. si alguien me puede ayudarcon información sobre el tema se lo agradesco mucho.
gracias.


----------



## Dr. Zoidberg (May 7, 2009)

estperez dijo:
			
		

> Hola , soy estudiante de instrumentacion y control, y tengo el siguiente proyecto.
> implementar un control proporcional para controlar temperatura en un DSP 30F3014
> 
> tengo dudas totales de como implementar el control proporcional, he mirado los pdfs que hay en el foro y me han dado algunas ideas, pero estan aplicados a los microcontroladores. si alguien me puede ayudarcon información sobre el tema se lo agradesco mucho.
> gracias.



Y cual es el problema que estén aplicados a microcontroladores, si las ecuaciones del PID son las mismas aunque sea un amplificador operacional?
En un control, proporcional se tiene:       u[k] = Kp * e[k]
donde *u* es la acción de control calculada, *Kp* es  la ganancia proporcional y *e* es el error entre el set-point y la salida de la planta. Y claro, *k* indica en cual período de muestreo estamos...
Lo escribas en un DSP, un uC o en la PC el código es exactamente el mismo!
Si esto no te queda claro...no me cabe duda que deberías tomar un libro y estudiar, por que lo que has preguntado es muy ELEMENTAL.

Saludos!


----------



## estperez (May 8, 2009)

muchas gracias por tu explicacion ezavalla, es logico que si soy un estudiante pregunte cosas elementales, pero bueno... de todas maneras me aclaraste un parte de el camino.

pero entonces se me general otras dudas:
Como utilizo la accion de control calculada?, mejor dicho, como se configura el conversor digital-analogo del dsp, yo he hecho practicas con entradas analogas, pero no con salidas analogas.

muchas gracias.


----------



## Dr. Zoidberg (May 8, 2009)

estperez dijo:
			
		

> es logico que si soy un estudiante pregunte cosas elementales..



No sé que tan lógica sea la pregunta que vos has hecho...
Te repito, un controlador proporcional es una multiplicación y nada mas...sin importar la plataforma que se use y eso es lo que hay que tener claro....a menos que alguien te haya dicho que en un DSP es algo diferente...cosa que es mentira.



			
				estperez dijo:
			
		

> Como utilizo la accion de control calculada?, mejor dicho, como se configura el conversor digital-analogo del dsp, yo he hecho practicas con entradas analogas, pero no con salidas analogas.



No tengo idea, nunca he usado ese DSP. No sé cuanto bits de resolución tiene, y tampoco conozco el programa que estas haciendo...es decir...tengo los ojos cerrados, así que vas a tener que leer la información del chip y del lenguaje de programación que uses (supongo que será C o C++) para ver que dice respecto a como configurar el DAC. Hay que tener cuidado, por que si trabajás en punto flotante...el DAC recibe como valor un entero cuya longitud válida y signo depende de la resolución que tenga y los niveles de tensión que puede tomar la salida. Si no escalás el resultado a mandar al DAC (la u[k]) de acuerdo a esto...vas a tener problemas.

Saludos!


----------



## narcisolara_21 (May 8, 2009)

Saludos compañeros, hace tiempo implemente un control PID para regular la velocidad de un motor DC pequeño con encoder (era solo para experimentar) y los resultados fueron excelentes todo gobernado por un PIC, ahora quiero hacer un pequeño PCB router CNC, pero no sé como aplicar el control PID al motor DC.

El Software a utilizar sería el Match3, y la forma de manejar el motor sería como un motor paso a paso.

Por ejemplo si tuviera un motor paso a paso que tiene una resolución 10 pasos X revolución y por cada paso el EJE avanza 0.1mm, entonces si quisiera avanzar 1mm el Software tendría que enviar 10 pulsos al driver para que el motor avance 10 pasos, Ahora mi duda como empiezo a diseñar el control PID para un motor DC?

He pensado en lo siguiente: 

Suponiendo que tengo un motor Dc con un encoder incremental de 100 Pulsos por Revolución y por cada revolución el EJE avanza 1mm, y configurando el Software para que por cada pulso enviado al pic avance el EJE 0.1mm, entonces si quisiera avanzar 1mm el Software tendría que enviar 10 pulsos por lo tanto el valor del Setpoint sería de "100". Esto es correcto?

Espero que me entiendan..


----------



## Frank Frankus (Jul 14, 2009)

Antes de realizar un algoritmo de autotuning (que en la practica es casi nunk usado), no seria mejor que se le de la opcion al usuario de cambiar a su libertado los parametros Proporcional, integral y derivativo?


----------



## picudo (Jul 21, 2009)

Que tal. Saludos a todos. _Frank Frankus_ Me parece que mas que casi nunca usado, solo es poco común. Ahora bien, el PID con autotunning tendría más trabajo, pero sería más util por su generalidad de uso, o al menos así lo concibo. Cambiar los parámetros es buena opción, puede añadirsele un lcd y un teclado.

Pensando en términos de tiempo de procesado del uC puede ser lento, puesto que el cálculo que el control PID lleva por si solo ya es algo tardado. 

Me parece más fácil, utilizar el PIC para capturar la señal análoga --> transmitirla a la PC,
y que la propia PC haga todo el show  O bien, comprar un poderoso DSP. 
Si me equivoco por fa, diganme

_narcisolara_21_ también manejo el Mach3, y siempre me intrigado la idea de utilizar los motores DC para este trabajo, te parece si comparamos trabajos? 

Saludos


----------



## Chico3001 (Ago 10, 2009)

Mejor subanlo al foro para que todos podamos leerlo y opinar.... asi se hacen mas ideas....


----------



## machine_softronics (Ago 21, 2009)

uan consulta crypti cual es el periodo minimo para aplicarle le Pwm al motor Dc ..................y hasta cuanto increnetar el valor del ancho de pulso y por que?....................................
mas adelante estare subiendo algunos archivos para compartir......................


----------



## cripty (Ago 21, 2009)

buena pregunta,supongo que de muchas cosas como la potencia del motor solo imagina si el pulso es muy corto el motor ni se entera que le llego tension a las bobinas, pero si es corto y muy rapido es otra cosa. con respecto al incremento depende tambien de muchas cosas por ejemplo si trabajas con un motor de 6V y con un maximo de 50% de periodo la alimentacion debe de ser de almenos 12V ya que cuando tengas el periodo maximo la tension en los bornes sera de la mitad de valor del de la fuente; pero no solo por eso se eleva la alimentacion tambien es para que en tu periodo minimo (minima velocidad) el motor tenga la tension necesaria para vencer su inercia. supongo existan otros factores mas los ire pensando. creo que tengo algo por ahi de eso o sera que lo lei en alguna web?
bye


----------



## Dr. Zoidberg (Ago 21, 2009)

cripty dijo:
			
		

> el problema es que no concibo una forma de poner in PID en el micro, como introduzco las ecuaciones diferenciales y derivativas en el micro?



Es que no podés usar las ecuaciones diferenciales por que el control lo ejercés en tiempo discreto, así que tenés que usar las *ecuaciones en diferencias* que son las que resultan de aplicar la Transformada Z, por ejemplo:

Para el control proporcional:
up[k] = Kp * e[k] con up=accion proporcional, e = error, Kp= ganancia proporcional y k= instante de muestreo actual

Para el derivativo:
ud[k] = Kd * (e[k] - e[k-1]), donde es claro que e[k] - e[k-1] es la derivada del error sobre un período de muestreo.

La parte integral es mas lío, por que es una sumatoria en el tiempo y hay que aplicarle el anti-windup si querés que se recupere rápido de las saturaciones.

En fin...hay que estudiar un poco más...

Saludos!


----------



## cripty (Ago 21, 2009)

gracias ezavalla, si oi algo de eso a un colega de otra facu pero no tuve tiempo para investigar, donde encontraria mas información o si me recomiendas un libro seria genial, yo tengo el de OGATA pero no vi nada de la transf Z o quisa se me paso lo revisare de nuevo, gracias por tu aporte me aclaraste muchas cosas y a seguir estudiando


----------



## Alekvasb (Nov 12, 2009)

Aunque no es el tema....

Yo encontré una nota de aplicación para PSOC que incluye el desarrollo de un PID aplicado al control de temperatura.

http://www.psocdeveloper.com/docs/appnotes/an-mode/detail/an-pointer/an2208.html

"This Application Note describes implementation of a digital temperature PID controller. Various temperature control system configurations and aspects of their practical implementation are analyzed. Two types of temperature sensors are applied: thermocouple and platinum RTD sensor. The PSoCTM device supports two heat power control methods: phase and numeral impulse. The wide variety of system configurations allows use of thermoregulators in different industrial, commercial, and residential systems, where temperature control is needed. "

La nota de aplicación tiene diagramas de los filtros, el diagrama de flujo, información relativa al control PID.... en fin es un trabajo bien completo.

Anexa hay  una aplicación hecha en Visual (creo) para conexión por Rs232 que permite modificar las ganancias PID del control así como los límites y muestra la respuesta del sistema.

Tengo una duda...
Revisando el esquema parece que se realiza de modo digital, pero el PSOC incluye o permite configurar Amplificadores Operacionales, alguién conoce como se configuran los Operacionales en Psoc Designer para que sean proporiconal, integral y derivativo?


Mil gracias.


----------



## anubismaximus (Ene 26, 2010)

En el libro programacion ccs y simulacion en proteus hay un ejemplo del pid, con la simulacion y funciona muy bien, yo le hice algunos cambios y lo uso actulamente como control en una estacion de soldadura casera, lo unico que no tiene es la frma de cambiar los parametros del pid, perp eso lo lograrias adicionandole un menu al programa


----------



## electrogomez (Ago 24, 2010)

hola me gustaria ver tu trabajo, yo realice un pi digital con un Dspic 30f4011 y lo aplique en la industria en 4 rectificadores chopper de 300A cada uno, diseñe la tarjeta electronica y el software para una empresa en chile, lo que estoy tratando de hacer es poder tener un programa en matlab para calcular los parametros de los controladores PI conociendo la planta o mejor aun con un auto ajuste, me gustaria si me puedes enviar tu trabajo para mirarlo y tener una idea, yo tengo un paper donde obtuve como hacer un pi digital a traves de la transformada Z e implementarlo en microntroladores, si alguien lo necesita solo me lo pide, es mas estoy trabajando mi tesis sobre este tema

saludos a todos

bueno amigos aqui les dejo el PDf de como poder hacerlo, busacare el programa que realice para subirlo y tengan la idea mas clara de como poder aplicarlo, eso si yo lo realice con DSpic 30f4011 de microchip por que son mas rapido y tiene capacidad de multiplicación y conversores ADC rapidos, implemente un pwm que hice pruebas de 1khz hasta 5 khz y funcino bien


----------



## anubismaximus (Sep 20, 2010)

les dejo el archivo del libro que mencione, perdon por la demora pero estoy con mucho trabajo y con la universidad no me queda mucho tiempo


----------



## Mushito (Abr 5, 2015)

Hola:
  Monté  el esquema del PID, el programa es el mismo que el que se describe en este libro página 239 en adelante.
http://www.academia.edu/5204337/Dise%C3%B1o_y_simulaci%C3%B3n_de_sistemas_microcontrolados_en_lenguaje_C_Programaci%C3%B3n_con_MikroC_PRO_Simulaci%C3%B3n_en_Proteus_ISIS
  El esquema también, el PIC también, para la realimentación del sensor le puse el LM35 colado a un  foco (bombillo eléctrico incandescente) alimentado con 24V mediante un transistor de potencia, a la base recibe PWM.
  El problema es el siguiente:
  Cuando energizo el circuito y pongo el setpoint moviendo el potenciómetro, a 39 grados (390mV), el controlador empieza a funcionar pero entra en oscilación  y las oscilaciones no se amortiguan empieza a calentar hasta 44 grados y enfría hasta 26 grados, la causa es que no está sintonizado. El libro describe un procedimiento y un llenado de una tabla que no está claro, por favor alguien tiene experiencia en esto?
  ¿Cómo sintonizar el PID?


----------



## Dr. Zoidberg (Abr 5, 2015)

Por que no usas el buscador???
Esto ya lo explique antes, pero tenes que poner las acciones integrales y derivativas en cero (espero que uses el PID en paralelo). Le das con la ganancia proporcional hasta conseguir el minimo error de estado estacionario (excita con un escalon de amplitud conocida) sin sobre-elongacion de la rsta temporal. Si con eso no cumplis las condiciones de diseño, tendras que seguir aumentando la proporcional y comenzar a darle accion derivativa para minimizar el sobreimpulso. Si con ese jueguito no metes el error de estado estacionario en la banda que te piden, tendras recien ahora que darle ganancia integral de a poquito, y podes volver a usar la derivativa para atajarlo un poco si intenta oscilar.


----------



## Mushito (Abr 7, 2015)

Dr. Zoidberg dijo:


> (espero que uses el PID en paralelo


¿Cómo saber si es en paralelo o en serie cuando va en software?

Aquí el código:

```
//Declaración de constantes y variables.
const float Kp=1.08, Ki=52.42718447, Kd=0.005562, Fs = 152.5878906;
//Declaración de coeficientes de integración y derivación.
const float Fi=ki/(2.0*Fs), Fd=2.0*Fs*Kd;
float SENSOR, PUNTO_DE_CONTROL=127.0, YN=0.0;
int ADQUI;
unsigned short SALIDA;
float e0=0.0, e1=0.0, yi0=0.0, yi1=0.0, yd0=0.0, yd1=0.0, ypid=0.0;
//Función de interrupciones para el Timer 0.
void interrupt()
{
if( INTCON.F2 )// 6,5536ms :: 152,5878906 Hz
{
//Adquisición de la variable controlada.
SENSOR = (float)((ADC_Read(1)>>2)&0xFF);
//Adquisición del punto de control.
PUNTO_DE_CONTROL = (float)((ADC_Read(0)>>2)&0xFF);
//Calculo del nivel de error.
e0 = PUNTO_DE_CONTROL - SENSOR;
//Ecuación en diferencias.
//Ecuación integral.
yi0=Fi*(e0+e1)+yi1;
//Ecuación derivativa.
yd0=Fd*(e0-e1)-yd1;
//Resultado PID.
ypid=Kp*e0+yi0+yd0;
//Ajuste y corrección de la SALIDA Y(n)
//delimitada por los límites 0 y 255.
YN += ypid;
if(YN>255.0)YN=255.0;
if(YN<0.0)YN=0.0;
SALIDA = (unsigned short)(YN);
PWM1_Set_Duty(SALIDA);
//Actualización de muestras.
e1=e0;
yi1=yi0;
yd1=yd0;
INTCON.F2=0;
}
}
void main( void )
{
//Configuración del modulo PWM.
PWM1_Init(10000);
PWM1_Start();
//Configuración de la interrupción de Timer 0.
//a 6,5536ms
OPTION_REG = 0b00000110;
INTCON = 0b10100000;
while( 1 ) //Bucle infinito.
{
}
}
```


----------



## Mushito (Abr 8, 2015)

No se preocupen por ayudarme, encontre un archivo importante para sintonizar el PID


----------

