claro que se puede realizar en las pags 2 y 5 hay programas relacionados con tu proyecto consulta y si tenes dudas preguntad
Bien vamos con proyectos interesantes Antes de empezar los programas, hay que aclarar algunos conceptos nuevos:
Encoder: Codificador óptico que proporciona dos señales de fase que podemos usar para determinar hasta qué punto el motor se ha movido y la dirección en la que se está moviendo.
La información recibida también nos permite determinar la velocidad del motor. En nuestro caso particular, vamos a usar un codificador con 42 ranuras. Todos nuestros programas estarán basados en el conteo del codificador, en comparación con las revoluciones por minuto, de modo que no se tiene que realizar ninguna conversión.
Servo: Motor eléctrico que puede ser programado para seguir una señal, en nuestro caso el motor está en calidad de un funcionario de la señal de error que se introduce en el sistema. La señal de error en sí es la diferencia en el recuento de codificador entre el motor y donde queremos que este se ubique .Se controlara el funcionamiento del motor mediante la constante añadiendo y sustrayendo de la señal de error para crear el perfil de movimiento que deseamos.
Matemáticas con enteros: el microprocesador y el lenguaje que estamos utilizando son
limitados al uso de 8 y 16-bit y variables matemáticas enteras. No tenemos una manera de resolver una ecuación algebraica y utilizar los resultados dentro de nuestro control algorítmico. Sin embargo, las relaciones simples se pueden hacer para servir en algunos de nuestras necesidades, y la construcción de SELECT CASE se puede utilizar para aportar de forma efectiva al tipo de relaciones que ofrece una ecuación algebraica. Se demostrara el uso de esta construcción para controlar la velocidad del motor según lo determinado por el error de la señal en un número de maneras.
El lazo PID: la ecuación de control PID y Sus componentes
El régimen habitual utilizado para controlar un motor de corriente continuo codificado se denomina un bucle PID. En la ecuación que representa la ganancia / movimiento del motor, el P, I y D representan las tres componentes básicos del circuito de retroalimentación. Una constante, K, se necesita para cuidar de la fricción en general en el sistema. En términos sencillos estas variables se definen de la siguiente manera:
K
cuando se usa) es una constante necesaria para representar a la fricción total del sistema.
P: representa la parte proporcional del bucle de control.
I: representa la función de integración en el bucle de control
D: representa la parte derivada de la ecuación de votos.
Antes de seguir adelante, vamos a tener una comprensión de lo que estamos hablando cuandopodemos decir que el motor está controlado por un "lazo PID" o la ecuación. El lazo PID define ¿cuánta energía va a alimentar al motor en cualquier instante durante una rotación. Esto se basa en la ubicación del motor. Como se acaba de decir, hay cuatro partes de la ecuación que determina esta carga. Los tres componentes principales se refieren como el P, I y D, y el componente de menor fricción se conoce como K. Si estos cuatro componentes se describen correctamente en el algoritmo de control, y si un codificador correcto ha sido seleccionado, se mejora mucho el control del motor.
El esquema de control que desarrollamos no tiene que ser matemáticamente
perfecto para darnos un buen rendimiento. De hecho, con PBP un sistema matemáticamente perfecto no puede ser alcanzado. Sin embargo, podemos acercarnos lo suficiente para tener el funcionamiento aceptable.
El componente de fricción K: Debido a que el motor no comenzará a moverse hasta que haya superar la fricción en el sistema, una cierta cantidad de poder tiene que ser añadido al
sistema antes de que el motor empieza a moverse. Esta es la constante K. K es a menudo ignorado porque es un componente menor, y la función de integración se hará cargo en las primeras veces a través del bucle de control. En cualquier sistema con partes móviles habrá algunas fricciones. En el caso de un motor, incluso uno sin nada conectado y sin carga, habrá fricción en los dos rodamientos del eje, las escobillas conmutadoras, y una pequeño tensión aplicada al motor no lo moverá. Como se aumenta el voltaje, el motor comenzará a moverse. La tensión en la que el motor empieza a moverse es la tensión necesaria para superar la fricción. Para nuestros propósitos, se puede considerar constante, aunque aumenta a medida que aumenta la velocidad del motor. En la mayoría de los casos, podemos ignorar este aumento y utilizar una constante para representar a la carga de fricción. Matemáticamente esto se expresa como:
K = pequeño, el valor fijo
El componente de Proporción P: El componente en que poder de giro del motor será proporcional a la carga que el motor soporte. Esto tampoco es exactamente exacto, pero puede ser definido de esa manera, a efectos prácticos. Cuanto más rápido que queremos que el motor gire, mayor será la carga y mayor la componente P. En términos matemáticos, la energía que puede expresar como:
P = carga multiplicado por una constante
Si se está utilizando un motor con una carga variable, la velocidad que alcanza el motor
será aproximadamente proporcional a la carga que se encuentra en el motor. En nuestro sistema la ganancia puede variar de 0 a 255. Tenemos que seleccionar la ganancia para estar bien dentro de estos límites en todas las condiciones. Vamos a utilizar un multiplicador adecuado y entonces, una prueba condicional para asegurar esto.
El componente de integración I: Si no hay cambios de carga y el sistema de respuesta
es lineal (es decir, el doble de la velocidad que exige el doble de potencia), la componente proporcionales todo lo que necesitamos para hacer girar el motor. Sin embargo, si el sistema no es lineal, o si el de carga está cambiando, tenemos que añadir o restar de la ganancia para mantener el motor en velocidad constante. Tenemos que hacer esto cada vez a través del control bucle hasta que el motor llega a la velocidad deseada. Este es la integración de componentes, en la ecuación. Debido a que es necesaria sólo cuando hay un error en la posición del motor, se tiene en una función de este error. Cuanto mayor es el error de posición, más tenemos que añadir o restar el ajuste de potencia para la velocidad del motor hacia arriba o disminuir su velocidad para el caso que necesitamos. Como se mencionó anteriormente, esto se hace cada vez que vamos a través del bucle de control. En términos matemáticos, la energía puede ser expresada como:
I= (posición ordenada-posición real) multiplicada por unfactor conveniente
El componente derivado D: Este componente es una medida de la diferencia
entre posición actual del motor y donde se espera ubicar el motor que en cualquier momento.
Este valor se calcula en cada iteración del bucle de control. Si hay una gran diferencia
entre los dos números, no podemos esperar a integrar la potencia en pocos
incrementos, pero se necesita hacer un mayor ajuste de inmediato para obtener del motor
parámetros aceptables lo más rápidamente posible.
Para determinar D, tenemos que saber la posición del motor y donde realmente debe estar. La diferencia es el error. Queremos que este error sea lo más pequeño posible, y nuestra respuesta se basa en lo pequeño que este error debe ser. Si está ejecutando una muy precisa sistema posicional tendremos que mirar este muchos cientos de veces por segundo y hacer que adaptación constante a la carga. Un codificador de alto conteo es deseable cuando los ajustes rápidos tienen que hacerse. Los recuentos de alta nos permiten obtener un "cambio en la posición de" lectura más a menudo.
D= (posición prevista - posición real) * (constante o variable de algún tipo)
Una cosa que esto significa en términos simples es que no hay necesidad de un cambio en la
entrada de potencia si el motor se ubica y se mueve a la velocidad deseada.
Simulación de una ecuación con Select Case
Supongamos que tenemos que conocer todos los números entre 0 y 4 en nuestro esquema de control, y nuestro sistema operativo no es compatible con funciones matemáticas. Podemos resolver el problema con la instrucción SELECT CASE. Cada caso del número entre 0 y 4 tiene un valor correspondiente. Estos valores se pueden poner en una construcción SELECT CASE de la siguiente manera para resolver la ecuación y = x ^ 2:
SELECT CASE X
CASE 0
Y=0
CASE 1
Y=1
CASE 2
Y=4
CASE 3
Y=9
CASE 4
Y=16
CASE ELSE
END SELECT
Dado que el sistema PBP usa 8 / 16 de matemáticas sin la aplicación del signo menos, o el punto decimal, tenemos que evitar estas desventajas también. En primer lugar, vamos a evitar el signo menos. Supongamos que estamos tratando de conseguir una posición designada al motor y nuestro pseudo-código para hacerlo es la siguiente:
Si no está ahí todavía tenemos que seguir adelante.
Si está en la posición que tiene que parar.
Si pasa por que la posición que tenemos que invertir esta tendencia.
Si vamos a tomar una decisión sobre la base de la posición del motor, tenemos que poner en práctica el proceso de decisión de la siguiente manera, porque no podemos utilizar un valor negativo. En el número entero, 128-129 no es -1, es 255. Esto nos obliga a utilizar las comparaciones entre los valores. Si tenemos la diferencia, primero tenemos que determinar qué valor es mayor, entonces determinar la diferencia y, a continuación del signo. El signo, en este caso nos da sentido de giro del motor. En el siguiente código, podemos determinar si va o no a correr el motor , vamos a ejecutarlo:.
TARGET = 128
POSITION =read from position register
SELECT CASE POSITION
CASE IS < TARGET
MOTOR DIRECTION = 1
TURN MOTOR BRAKE OFF
CASE IS = TARGET
TURN MOTOR BRAKE ON
CASE IS > TARGET
MOTOR DIRECTION = 0
TURN MOTOR BRAKE OFF
END SELECT
Entonces tenemos que determinar cuánto tensión debemos conceder el motor basado en
hasta qué punto el motor esta de donde se debe ubicar. La ganancia será una función de la
de error de posición.
Con la información podemos aplicar la ecuación para encontrar los beneficios que necesitamos en la siguiente construcción SELECT CASE. No todas las columnas se deben aplicar para obtener una aproximación útil de la ecuación.
SELECT CASE DISTANCE ;
CASE IS >120 ;
GAIN = 127 ; lo general, usamos sólo la mitad de la potencia
; Y guardar el resto
CASE IS >100 ; para su uso cuando la aceleración es más
; Necesarios
GAIN = 60 ;
CASE IS >50 ;
GAIN = 42 ;
CASE IS >20 ;
GAIN = 20 ;
CASE IS >10 ;
GAIN = 15 ;
CASE IS >5 ;
GAIN = 10 ;
END SELECT ;
Los valores que hemos seleccionado pueden ser ajustado por ensayo y error. Podemos utilizar técnicas de esta y similares siempre que tenemos que aplicar una ecuación dentro de un control de algoritmo.
Vamos a proceder con el control de un motor de codificación un paso en un momento por la inclusión de los programas expuestos anteriormente anteriormente.