14.) CONTROL PWM MOTOR DC

Para la práctica No 14 se diseño y realizo un montaje el cual a medida que se varíe la velocidad de un motor DC por medio del control del PWM (Revolutions Per Minute, en el cuál el teclado matricial controlará el porcentaje al cual el motor ira girando siendo la tecla A el 100% de su RPM, la tecla 9 el 90% del RPM, la tecla 8 el 80%, 7 el 70%, 6 el 60%, 5 el 50%, 4 el 40%, 3 el 30%, 2 el 20%, 1 el 10% Y finalmente 0 estará quieto el motor; Además, visualizarlo por medio de una pantalla LCD el cual nos mostrará los valores sensados leídos por un optoacoplador.
Se usaron los siguientes materiales:

- Motor DC
- Pantalla LCD
- Puente H
- Optoacoplador
- Rueda acoplada a la punta del motor para sensar
- Integrado L293D

Figura 1. Montaje completo
DESARROLLO

Primero usaremos el deco de teclado matricial que siempre usamos:

Figura 2. DECO teclado matricial.

La salidas S0, S1,S2,S3, salen a unos pines llamada V pedida, posteriormente en el main se van a leer en el siguiente comando:

Figura 3. Comando main LCD.

En este comando se lee el dato inscrito en el teclado matricial, con el fin de mostrarla en la LCD, colocad, Vpedida=rpm, para posteriormente publicarlas y multiplicarlas x10,debido a que el teclado matricial va de 0 a 10 y lo convierto esa salida de teclado en el porcentaje al cual quiero que el motor vaya.

Luego, tenemos otra parte del circuito el cual consta, de un contado de 4 bits que cuenta de 0-10, donde se varia el ciclo util del PWM habilitandolo o deshabilitandolo, (si se quiere ir al 50%, apenas el contador llegue a 5 la rom de velocidades hace una comparación entre lo que hay en el contador con el dato del teclado matricial, que esta última se lee en las entradas Im0, Im1, Im2 e Im3)

Figura 4. Rom de velocidades y contador 4 bits.

La ROM de velocidades la usamos para mandar a cero la señal de PWM (deshabilitar el bloque PWM), y lo interprete como la parte neutra del ciclo de trabajo.

Figura 5. Rom de velocidades, contador 4 bits y LUT.

Figura 6. LUT para control del contador.

Al contador de 4 bits, se agrega un LUT (fig. 6) el cual apenas llegue a 10 resetea dicho contador, el unico momento que tiene un estado alto (1 lógico) es en 10.

La lógica del PWM se planteo de la siguiente manera:

Figura 7. Lógica para la ROM de velocidades.
Las dos entradas, RE y RC, la Re es la señal que me envia la ROM de velocidades, y la RC es el reset del contador, cuando este se active me indica que el PWM debe activarse, ya que el PWM siempre tiene un ciclo activo en su gráfica de funcionamiento, solamente un estado de alto, entonces con el reset de contador,hacemos que empiece en 1, y apenas suceda el rom de velocidades se apague el PWM. (el reset del contador es el unico que me controla si esta encendido o apagado el pwm si el estado anterior es cero), ahora si el pwm esta activado, y no hay cambio en resets sigue encendido,pero si y solo si el reset es encendido pero se cumplio el ciclo se apaga el pwm es el unico caso donde se apaga el pwm teniendo el estado anterior en uno.

Desarrollando la tabla de verdad y utilizando Karnaught nos determina que debemos usar un flip flop SR

Q*=RC + QRE
S=RC
R=RE

Entonces teniendo la lógica manejamos la rom de velocidades por medio de verilog.

Figura 8. Verilog bloque ROM de velocidades.

Con la lógica vista en la figura 7, vemos las entradas del bloque PWM con el flip flop que requerimos

Figura 9. Bloque PWM.

Dadas las características del bloque usamos un reloj (clock_2) de 10 [khz, (si se quiere ver las caracteristicas del PWM se da doble click encima del bloque)

Figura 10. Características PWM.
Trabajamos con la opción de comparación cuando es mayor al periodo de la señal, entonces, como siempre va a ser menor el ciclo útil de la señal siempre va a estar activo, entonces trabajamos solo con el enable del PWM.

Para medir las RPM usamos un flip flop D, para que la señal se resetee de forma oportuna (el contador de 8 bits), además conectamos la entrada del clock el encoder, osea cuando el encoder mande un flanco de subida el contador adiciona 1 al número de salida.
Para evitar variaciones de medición, guardamos el dato en una memoria (bloque Memoria_rpm_1)

Figura 11. Medición.
Para la memoria rpm la trabajamos por medio de verilog de la siguiente forma:

Figura 12. Verilog, bloque memoria_rpm_1.

En la memoria, se guarda el dato del contador, pero antes que se resetee el contador, se toma la salida de la AND poco después que se acabe el segundo y se actualiza el dato en dicha memoria.
La lectura para publicarla en la LCD usamos los mismos datos que se estan presionando en el teclado matricial, mandandolos a unos puertos de salida conectados externanmente a la PSoC, (Vmedida). Pero esos puertos aun no tienen la conversión para el Encoder. Entonces para convertir a los RPM se debe multiplicar el número de aspas por 3.

Figura 13. El main de la LCD donde ahora se iguala rpm=Vmedida

TOP DESIGN:

Tenemos nuestro Top Design con el diseño del programa completo

Figura 14- Top Design control PWM motor DC.
RESULTADOS:

Los siguientes videos muestran el funcionamiento del proyecto

Video 1. Funcionamiento del montaje.

                                                 Video 2. Explicación PSoC creator.















.

No hay comentarios.:

Publicar un comentario

CONSTRUYENDO CON PSoC

AQUÍ ENCONTRARÁS... Todos los informes que documentan los proyectos de laboratorio de la asignatura Electrónica digital, asistido por e...