Está en la página 1de 6

Control PID de posición

Ivan Alejandro López Mercado


División de Posgrado
Maestria en Ciencias en Ingeniería Eléctrica.
Tecnológico Nacional de México.
Instituto Tecnológico de la Laguna
Ivan_alm91@hotmail.com
Resumen- Este documento nos presenta el desarrollo y la la posición de una válvula de control o la potencia
simulación de un controlador PID para la posición de un motor suministrada a un calentador.
de Corriente directa, desarrollado en una FPGA Spartan3 por
medio del lenguaje de programación VHDL. Usando Cuando no se tiene conocimiento del proceso, históricamente
componentes como un generador de PWM, sumadores, se ha considerado que el controlador PID es el controlador
restadores para diferentes tareas mientras que para la lectura más adecuado. Ajustando estas tres variables en el algoritmo
de la posición del motor un encoder incremental y en conjunto
de control del PID, el controlador puede proveer una acción
con los componentes digitales se llegara al control de la posición
del motor. de control diseñado para los requerimientos del proceso en
Palabras Clave- Control, FPGA, Spartan, Posición, VHDL, específico. La respuesta del controlador puede describirse en
PWM. términos de la respuesta del control ante un error, el grado el
cual el controlador sobrepasa el punto de ajuste, y el grado
I. INTRODUCCIÓN de oscilación del sistema.

La ingeniería de control de hoy en día es un campo de


estudio relativamente nuevo que obtuvo gran atención durante
el siglo XX con el avance de la tecnología. Puede definirse en
términos generales o clasificarse como aplicación práctica de
la teoría de control. La ingeniería de control tiene un papel
esencial en una amplia gama de sistemas de control.
El control es la disciplina de la ingeniería que aplica
la teoría de control para diseñar, planificar y desarrollar
sistemas con comportamientos deseados. La práctica
utiliza sensores y detectores para medir el rendimiento de
salida del proceso que se controla; estas mediciones se
utilizan para proporcionar retroalimentación correctiva
que ayuda a lograr el rendimiento deseado. Los sistemas
diseñados para funcionar sin requerir una intervención
humana se denominan sistemas de control automático. Fig. 1 Controlador PID
El control Busca entender los sistemas físicos, usando
modelos matemáticos, en términos de entradas, salidas y
varios componentes con diferentes comportamientos; usar Para el correcto funcionamiento de un controlador PID que
herramientas de diseño de sistemas de control para regule un proceso o sistema se necesita, al menos:
desarrollar controladores para esos sistemas; e implementar
controladores en sistemas físicos utilizando la tecnología 1. Un sensor, que determine el estado del sistema
disponible. (termómetro, caudalímetro, manómetro, etc).
II. MARCO TEÓRICO 2. Un controlador, que genere la señal que gobierna al
actuador.
3. Un actuador, que modifique al sistema de manera
Un controlador PID (Controlador Proporcional, Integral y controlada (resistencia eléctrica, motor,
Derivativo) es un mecanismo de control simultaneo válvula, bomba, etc).
por realimentación ampliamente usado en sistemas de control
El sensor proporciona una señal analógica o digital al
industrial. Este calcula la desviación o error entre un valor
controlador, la cual representa el punto actual en el que se
medido y un valor deseado.
encuentra el proceso o sistema. La señal puede representar
El algoritmo del control PID consiste de tres parámetros ese valor en tensión eléctrica, intensidad de corriente
distintos: el proporcional, el integral, y el derivativo. El valor eléctrica o frecuencia. En este último caso la señal es
Proporcional depende del error actual. El Integral depende de de corriente alterna, a diferencia de los dos anteriores, que
los errores pasados y el Derivativo es una predicción de los también pueden ser con corriente continua.
errores futuros. La suma de estas tres acciones es usada para
El controlador recibe una señal externa que representa el
ajustar al proceso por medio de un elemento de control como
valor que se desea alcanzar. Esta señal recibe el nombre de
punto de consigna (o punto de referencia, valor deseado o set
point), la cual es de la misma naturaleza y tiene el mismo integral actúa cuando hay una desviación entre la variable y el
rango de valores que la señal que proporciona el sensor. Para punto de consigna, integrando esta desviación en el tiempo y
hacer posible esta compatibilidad y que, a su vez, la señal sumándola a la acción proporcional. El error es integrado, lo
pueda ser entendida por un humano, habrá que establecer cual tiene la función de promediarlo o sumarlo por un período
algún tipo de interfaz (HMI-Human Machine Interface), son determinado; Luego es multiplicado por una constante Ki.
pantallas de gran valor visual y fácil manejo que se usan para Posteriormente, la respuesta integral es adicionada al modo
hacer más intuitivo el control de un proceso. Proporcional para formar el control P + I con el propósito de
obtener una respuesta estable del sistema sin error
El controlador resta la señal de punto actual a la señal de
estacionario. El modo integral presenta un desfase en la
punto de consigna, obteniendo así la señal de error, que
respuesta de 90º que sumados a los 180º de la retro-
determina en cada instante la diferencia que hay entre el valor
alimentación ( negativa ) acercan al proceso a tener un retraso
deseado (consigna) y el valor medido. La señal de error es
de 270º, luego entonces solo será necesario que el tiempo
utilizada por cada uno de los 3 componentes del controlador
muerto contribuya con 90º de retardo para provocar la
PID. Las 3 señales sumadas, componen la señal de salida que
oscilación del proceso. <<< la ganancia total del lazo de
el controlador va a utilizar para gobernar al actuador. La señal
control debe ser menor a 1, y así inducir una atenuación en la
resultante de la suma de estas tres se llama variable
salida del controlador para conducir el proceso a estabilidad
manipulada y no se aplica directamente sobre el actuador,
del mismo. >>> Se caracteriza por el tiempo de acción
sino que debe ser transformada para ser compatible con el
integral en minutos por repetición. Es el tiempo en que
actuador utilizado.
delante una señal en escalón, el elemento final de control
Las tres componentes de un controlador PID son: repite el mismo movimiento correspondiente a la acción
parte Proporcional, acción Integral y acción Derivativa. El proporcional.
peso de la influencia que cada una de estas partes tiene en la
El control integral se utiliza para obviar el inconveniente
suma final, viene dado por la constante proporcional, el
del offset (desviación permanente de la variable con respecto
tiempo integral y el tiempo derivativo, respectivamente. Se
al punto de consigna) de la banda proporcional.
pretenderá lograr que el bucle de control corrija eficazmente y
en el mínimo tiempo posible los efectos de las perturbaciones. La fórmula del integral está dada por:
 Proporcional 𝑡
Isal = Ki ∫ 𝑒(𝑡)
La parte proporcional consiste en el producto entre la 0
señal de error y la constante proporcional para lograr que el  Derivativo
error en estado estacionario se aproxime a cero, pero en la
mayoría de los casos, estos valores solo serán óptimos en una La acción derivativa se manifiesta cuando hay un cambio
determinada porción del rango total de control, siendo en el valor absoluto del error; (si el error es constante,
distintos los valores óptimos para cada porción del rango. Sin solamente actúan los modos proporcional e integral).
embargo, existe también un valor límite en la constante El error es la desviación existente entre el punto de
proporcional a partir del cual, en algunos casos, el sistema medida y el valor consigna, o "Set Point".
alcanza valores superiores a los deseados. Este fenómeno se
llama sobreoscilación y, por razones de seguridad, no debe La función de la acción derivativa es mantener el error al
sobrepasar el 30%, aunque es conveniente que la parte mínimo corrigiéndolo proporcionalmente con la misma
proporcional ni siquiera produzca sobreoscilación. Hay una velocidad que se produce; de esta manera evita que el error se
relación lineal continua entre el valor de la variable incremente.
controlada y la posición del elemento final de control (la Se deriva con respecto al tiempo y se multiplica por una
válvula se mueve al mismo valor por unidad de desviación). constante Kd y luego se suma a las señales anteriores (P+I).
La parte proporcional no considera el tiempo, por lo tanto, la Es importante adaptar la respuesta de control a los cambios en
mejor manera de solucionar el error permanente y hacer que el sistema ya que una mayor derivativa corresponde a un
el sistema contenga alguna componente que tenga en cuenta cambio más rápido y el controlador puede responder
la variación respecto al tiempo, es incluyendo y configurando acordemente.
las acciones integral y derivativa.
La fórmula del derivativo está dada por:
La fórmula del proporcional está dada por:
𝑑 𝑒(𝑡)
Psal = Kp * e(t) 𝐷𝑠𝑎𝑙 = 𝐾𝑑 ∗
𝑑𝑡
El error, la banda proporcional y la posición inicial del
elemento final de control se expresan en tanto por uno. Nos
indicará la posición que pasará a ocupar el elemento final de Motor eléctrico
control.
 Integral
Los motores eléctricos de corriente continua son el tema
de base que se amplía en el siguiente trabajo, definiéndose en
el mismo los temas de más relevancia para el caso de los
El modo de control Integral tiene como propósito motores eléctricos de corriente continua, como lo son: su
disminuir y eliminar el error en estado estacionario, definición, los tipos que existen, su utilidad, distintas partes
provocado por perturbaciones exteriores y los cuales no
pueden ser corregidos por el control proporcional. El control
que los componen, clasificación por excitación, la velocidad, El ciclo de trabajo de una señal periódica es el ancho relativo
la caja de bornes y otros más. de su parte positiva en relación con el período. Expresado
matemáticamente:
Esta máquina de corriente continua es una de las más
versátiles en la industria. Su fácil control de posición, par y 𝜏
𝐷=
velocidad la han convertido en una de las mejores opciones 𝑇
en aplicaciones de control y automatización de procesos.  D es el ciclo de trabajo
Los motores eléctricos de corriente continua son el tema  τ es el tiempo en que la función es positiva
de base que se amplía en el siguiente trabajo, definiéndose en (ancho del pulso)
el mismo los temas de más relevancia para el caso de los  T es el período de la función
motores eléctricos de corriente continua, como lo son: su
definición, los tipos que existen, su utilidad, distintas partes
que los componen, clasificación por excitación, la velocidad, III. DESARROLLO
la caja de bornes y otros más.
Esta máquina de corriente continua es una de las más
versátiles en la industria. Su fácil control de posición, par y
velocidad la han convertido en una de las mejores opciones EL modelo de la planta junto con el controlador se pueden
en aplicaciones de control y automatización de procesos. apreciar en la figura 3, mostrándonos el sistema de control de
la posición de un motor.

Fig. 2 Funcionamiento de giro del motor


Fig. 3 Diagrama a bloques del sistema

Un motor eléctrico opera primordialmente en base a


dos principios: El de inducción, descubierto por Michael Como podemos observar en la figura 3 el error
Faraday en 1831; que señala, que si un conductor se mueve a representado por e(t) es igual a la diferencia entre r(t) y h(t).
través de un campo magnético o está situado en las Donde r(t) es la posición deseada o la referencia de posición y
proximidades de otro conductor por el que circula una h(t) viene de la lectura del encoder o mejor dicho la posición
corriente de intensidad variable, se induce una corriente actual del motor.
eléctrica en el primer conductor. Y el principio que André
Ampére observo en 1820, en el que establece: que si una El error producido por la diferencia pasa por nuestro
corriente pasa a través de un conductor situado en el interior controlador PID, lo cual nos da como resultado una señal de
de un campo magnético, éste ejerce una fuerza mecánica o PWM para el motor que le indicara cuantos moverse y hacia
f.e.m. (fuerza electromotriz), sobre el conductor. qué dirección, el motor se moverá y al realizar su cambio de
posición será registrada de nuevo por el encoder y asi
El movimiento giratorio de los motores de C.C. se basa en entraremos en un bucle continuo hasta que la diferencia entre
el empuje derivado de la repulsión y atracción entre polos la referencia y la posición actual sea cero.
magnéticos. Creando campos constantes convenientemente
orientados en estator y rotor, se origina un par de fuerzas que Lista de códigos desarrollados.
obliga a que la armadura (también le llamamos así al rotor)
gire buscando la posición de equilibrio. library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
Pulse Width Modulation. use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
También conocido como modulación de Ancho de pulso,
de una señal o fuente de energía es una técnica en la que se entity PID is
modifica el ciclo de trabajo de una señal periódica Port( clk : in STD_LOGIC;
rst : in STD_LOGIC;
(una senoidal o una cuadrada, por ejemplo), ya sea para A : in STD_LOGIC;
transmitir información a través de un canal de B : in STD_LOGIC;
comunicaciones o para controlar la cantidad de energía que se der : out STD_LOGIC;
envía a una carga. iz : out STD_LOGIC;
ref : in STD_LOGIC_VECTOR (7 downto 0)
);
end PID;
architecture Behavioral of PID is library IEEE;
component encoder is use IEEE.STD_LOGIC_1164.ALL;
Port ( A : in STD_LOGIC; use IEEE.STD_LOGIC_ARITH.ALL;
B : in STD_LOGIC; use IEEE.STD_LOGIC_UNSIGNED.ALL;
clk : in STD_LOGIC;
rst : in STD_LOGIC; entity encoder is
dout : out STD_LOGIC_vector(7 downto 0)); Port ( A : in STD_LOGIC;
end component; B : in STD_LOGIC;
clk : in STD_LOGIC;
component gainkp is rst : in STD_LOGIC;
Port ( Ep : in STD_LOGIC_VECTOR (7 downto 0); dout : out STD_LOGIC_vector(7 downto 0));
KpEp : out STD_LOGIC_VECTOR (11 downto 0)); end encoder;
end component;
architecture Behavioral of encoder is
component CI is signal cuenta: std_logic_vector(7 downto 0);
Port ( EP : in STD_LOGIC_VECTOR (7 downto 0); signal ABpre, ABpas: std_logic_vector(1 downto 0);
CLK: IN STD_LOGIC; begin
RST: IN STD_LOGIC; process(rst, clk, ABpre, ABpas)
I : out STD_LOGIC_VECTOR(8 DOWNTO 0)); begin
end component; if rst='1' then
cuenta<="00000000";
component Derivativo is elsif clk='1' and clk'event then
Port ( e : in std_logic_vector (7 downto 0); ABpre<=A&B;
Cd : out std_logic_vector(11 downto 0); ABpas<=ABpre;
clk : in STD_LOGIC;
rst : in STD_LOGIC); case ABpre is
end component; when "00" => if ABpas="10" then
cuenta<=cuenta+1;
component SUM is elsif ABpas="01" then
Port ( AKp : in STD_LOGIC_VECTOR (8 downto 0); cuenta <=cuenta+1;
BI : in STD_LOGIC_VECTOR (11 downto 0); else
CD : in STD_LOGIC_VECTOR (11 downto 0); cuenta<= cuenta;
SUM : out STD_LOGIC_VECTOR (13 downto 0)); end if;
end component;
when "01" => if ABpas="00" then
component Resta is cuenta <= cuenta+1;
Port ( A : in STD_LOGIC_VECTOR (7 downto 0); elsif ABpas="11" then
B : in STD_LOGIC_VECTOR (7 downto 0); cuenta <=cuenta-1;
Res : out STD_LOGIC_VECTOR (7 downto 0) else
); cuenta<= cuenta;
end component; end if;

component GENPWM is when "11" => if ABpas="01" then


Port ( REF : in STD_LOGIC_VECTOR (7 downto 0); cuenta<=cuenta+1;
CLK : in STD_LOGIC; elsif ABpas="10" then
RST : in STD_LOGIC; cuenta <=cuenta-1;
Sig : in STD_LOGIC; else
PWMD : out STD_LOGIC; cuenta<= cuenta;
PWMI : out STD_LOGIC); end if;
end component;
when "10" => if ABpas="11" then
component Absoluto is cuenta<=cuenta+1;
Port ( Din : in STD_LOGIC_VECTOR (13 downto 0); elsif ABpas="00" then
signo: out STD_LOGIC; cuenta <=cuenta-1;
Absolute : out STD_LOGIC_VECTOR (7 downto 0)); else
end component; cuenta<= cuenta;
end if;
signal Prop, Dtv : STD_LOGIC_VECTOR (11 downto 0);
signal Sumador : STD_LOGIC_VECTOR (13 downto 0); when others=>
signal Int : STD_LOGIC_VECTOR (8 downto 0); end case;
signal erropos, control, enco : STD_LOGIC_VECTOR (7 downto 0); end if;
signal sign, right, left: STD_LOGIC; end process;
begin dout<=cuenta;
end Behavioral;
dif : Resta port map(ref, enco, erropos);
Integral: CI port map(erropos, clk, rst, Int);
Proportional: gainkp port map(erropos, Prop);
derivative: derivativo port map(erropos, Dtv, clk, rst);
plus : SUM port map(Int, Prop, Dtv, Sumador);
Absu : Absoluto port map(Sumador, sign, control);
Ctrl : GENPWM port map(control, clk, rst, sign, right, left);
E : encoder port map(A, B, clk, rst, enco);

der<=right;
iz<=left;

end Behavioral;

Este primer código es la entidad principal que una cada uno Segundo código, programa que se encarga de la lectura del
de los componentes que se explicaran a continuación: encoder para la posición del motor.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
Controlador I, al igual que el programa anterior tomar el valor
entity Resta is del erro producido por la diferencia y realiza la operación de
Port ( A : in STD_LOGIC_VECTOR (7 downto 0);
B : in STD_LOGIC_VECTOR (7 downto 0);
integrar multiplicando por una ganancia.
Res : out STD_LOGIC_VECTOR (7 downto 0)
); library IEEE;
end Resta; use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
architecture Behavioral of Resta is use IEEE.STD_LOGIC_UNSIGNED.ALL;

begin entity Derivativo is


Port ( e : in std_logic_vector (7 downto 0);
Res<=A-B; Cd : out std_logic_vector(11 downto 0);
end Behavioral; clk : in STD_LOGIC;
rst : in STD_LOGIC);
end Derivativo;

Tercer código, nos muestra la diferencia que tendremos entre architecture Behavioral of Derivativo is
constant Kd: std_logic_vector (3 downto 0):= "0011";
la posición deseada o la referencia menos la lectura de la signal e0, e1, e2: std_logic_vector (7 downto 0);
posición actual. begin

library IEEE; process(clk, rst)


use IEEE.STD_LOGIC_1164.ALL; begin
use IEEE.STD_LOGIC_ARITH.ALL; if rst='1' then
use IEEE.STD_LOGIC_UNSIGNED.ALL; e0<="00000000";
e1<="00000000";
---- Uncomment the following library declaration if instantiating elsif clk='1' and clk'event then
---- any Xilinx primitives in this code. e0<=e;
--library UNISIM; e1<=e0;
--use UNISIM.VComponents.all; end if;
end process;
entity gainkp is e2 <= (e0-e1);
Port ( Ep : in STD_LOGIC_VECTOR (7 downto 0); Cd <= Kd*e2;
KpEp : out STD_LOGIC_VECTOR (11 downto 0)); end Behavioral;
end gainkp;

architecture Behavioral of gainkp is


constant Kp: STD_LOGIC_VECTOR (3 downto 0):= "0011"; Control D, al igual que los procesos anteriores toma el valor
begin
KpEp <= Kp * Ep; del error, aplica el proceso de derivación y lo multiplica por
end Behavioral; una ganancia.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
Controlador P, toma el valor del error que nos produce el use IEEE.STD_LOGIC_ARITH.ALL;
programa anterior y lo multiplica por una ganancia. use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity SUM is
library IEEE; Port ( AKp : in STD_LOGIC_VECTOR (8 downto 0);
use IEEE.STD_LOGIC_1164.ALL; BI : in STD_LOGIC_VECTOR (11 downto 0);
use IEEE.STD_LOGIC_ARITH.ALL; CD : in STD_LOGIC_VECTOR (11 downto 0);
use IEEE.STD_LOGIC_UNSIGNED.ALL; SUM : out STD_LOGIC_VECTOR (13 downto 0));
end SUM;
entity CI is
Port ( EP : in STD_LOGIC_VECTOR (7 downto 0); architecture Behavioral of SUM is
CLK: IN STD_LOGIC;
RST: IN STD_LOGIC; begin
I : out STD_LOGIC_VECTOR(8 DOWNTO 0));
end CI; SUM<=AKp+BI+CD;
architecture Behavioral of CI is
SIGNAL AUX , EANT: STD_LOGIC_VECTOR (8 DOWNTO 0); end Behavioral;
CONSTANT KI : STD_LOGIC_VECTOR (3 DOWNTO 0) := "0011";
begin

PROCESS(CLK , RST ) En este código simulamos un sumador para los tres controles,
BEGIN a la salida obtendremos un valor que podremos llamar PID, el
IF RST ='1' THEN
AUX <="000000000";
cual será nuestra referencia para el generador del PWM
EANT <="000000000";
ELSIF CLK'EVENT AND CLK='1' THEN
EANT<= AUX;
AUX <= (EP*KI) + EANT;
END IF;
END PROCESS;

I <= AUX;
end Behavioral;
library IEEE; PROCESS(Sig,CUENTA2)
use IEEE.STD_LOGIC_1164.ALL; BEGIN
use IEEE.STD_LOGIC_ARITH.ALL; IF SIG='1' THEN
use IEEE.STD_LOGIC_UNSIGNED.ALL; IF CUENTA2<REF THEN
PWMI<='1';
entity Absoluto is PWMD<='0';
Port ( Din : in STD_LOGIC_VECTOR (13 downto 0); ELSE
signo: out STD_LOGIC; PWMI<='0';
Absolute : out STD_LOGIC_VECTOR (7 downto 0)); PWMD<='1';
end Absoluto; END IF;
ELSE
architecture Behavioral of Absoluto is IF CUENTA2<REF THEN
signal CompDin, Compa2 : STD_LOGIC_VECTOR (13 downto 0); PWMI<='0';
begin PWMD<='1';
ELSE
process(Din) PWMI<='1';
begin PWMD<='0';
if Din(11)='1' then END IF;
Compdin<= NOT Din; END IF;
Compa2<=Compdin + "00000000000001"; END PROCESS;
Absolute<=Compa2(7 downto 0);
signo<=Din(13); end Behavioral;
else
Absolute<=Din (7 downto 0);
signo<=Din(13);
end if; Finalmente el código generador de PWM, el cual recibirá
end process;
como señal de referencia el resultado del PID y a la salida
end Behavioral; tendremos una señal proporcionada directamente al motor el
cual se moverá en conjunto con la dirección proporcionada
Este código llamado “Absoluto”, se encarga de tomar el valor por el programa “absoluto” hasta la referencia que hayamos
del PID, exclusivamente el bit más significativo y puesto directamente desde la tarjeta FPGA.
dependiendo del estado mandaremos una señal a la entidad
principal sobre a que lado deberá girar el motor. IV. CONCLUSIONES
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL; EL control de motores ya hemos visto que es importante
use IEEE.STD_LOGIC_UNSIGNED.ALL; en la industria para diferentes procesos, así que si nosotros
entity GENPWM is
pudimos desarrollar un control en una FPGA, o en un
Port ( REF : in STD_LOGIC_VECTOR (7 downto 0); microcontrolador podremos ser capaces de desarrollar otro
CLK : in STD_LOGIC; tipo de procesos de control igual o mayor de complejos. Esto
RST : in STD_LOGIC; nos sirve como practica y entendimiento de lo que es un
Sig : in STD_LOGIC;
PWMD : out STD_LOGIC;
sistema controlado, como manipular el error de manera que
PWMI : out STD_LOGIC); podamos tener un sistema deseado y todo a través de sensores
end GENPWM; y actuadores.
La dificultad en este tipo de proyectos es el desarrollo de
architecture Behavioral of GENPWM is
SIGNAL CUENTA : INTEGER RANGE 0 TO 25000;
tantos componentes y saber cómo deben ir interconectados,
SIGNAL CUENTA2, REF2 : STD_LOGIC_VECTOR(7 DOWNTO 0); pero si uno desarrollo un bosquejo antes de empezar es mas
SIGNAL CLK2 : STD_LOGIC:='0'; fácil comprender y relaciones estos componentes, además de
begin siempre tener en cuenta la resolución de las conexiones para
PROCESS(RST, CLK, CUENTA)
BEGIN
al final no tener problemas.
IF RST='1' THEN
CUENTA <= 0; V. Bibliografia
ELSIF CLK='1' AND CLK'EVENT THEN
IF CUENTA< 4895 THEN
CUENTA<=CUENTA+1;
https://www.monografias.com/trabajos74/motores-corriente-
ELSE directa/motores-corriente-directa.shtml
CUENTA <= 0;
CLK2<=NOT CLK2; https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_control
END IF;
END IF;
END PROCESS; https://es.wikipedia.org/wiki/Controlador_PID

PROCESS(RST, CLK2) Spartan-3 User Guide


BEGIN
IF RST='1' THEN
CUENTA2 <= "00000000"; Floyd L, Thomas. “Fundamentos de Sistemas digitales”
ELSIF CLK2'EVENT AND CLK2='1' THEN Prentice Hall 9na edición.
CUENTA2 <= CUENTA2 + 1;
END IF;
END PROCESS;

También podría gustarte