ELECTRÓNICA-> RAMPA DE ACELERACIÓN LINEAL PARA MOTOR DC CONTROLADO POR PIC 16F84

 

    Matemáticamente, sabemos que la velocidad es la derivada de la posición, y a su vez, que la aceleración es la derivada de la velocidad, o lo que es lo mismo, la segunda derivada de la posición.

    En respuesta a una pregunta en el foro de www.todopic.com.ar he realizado este programa, el cual genera una aceleración  y desaceleración "casi" constante, permitiendo un aumento y decremento suave, y casi lineal de la velocidad del motor DC a controlar.

    La velocidad actual es reflejada en el PUERTO B del 16F84, aunque puede ser cambiada fácilmente, para cambiar el método de conversión D/A.

    En mi caso, el programa esta pensado para colocar un conversor D/A en el PUERTO B del PIC, pero puede cambiarse a gusto...

    El PUERTOA esta configurado todo como salidas, y para comprender en que etapa se encuentra el programa, se debe colocar 5 LEDS en modo fuente. Explicación de los leds:

RAO encendido: el programa esta realizando la etapa 1, o sea, manteniendo la Vi durante tinit tiempo.

RA1 encendido: el programa esta realizando la etapa 2, o sea, aumentando la velocidad durante tacel tiempo.

RA2 encendido: el programa esta realizando la etapa 3, o sea, manteniendo la Vmax durante tmax tiempo.

RA3 encendido: el programa esta realizando la etapa 4, o sea, disminuyendo la velocidad durante tdesacel tiempo.

RA4 encendido: el programa esta realizando la etapa 5, o sea, manteniendo la Vf durante tfinal tiempo.

 

    También he incluido dos graficos que representan las distintas propiedades y comportamientos del programa.

    El usuario debe definir algunos parámetros:

    Originalmente el programa posee estos parámetros establecidos y elegidos por mi, aunque esta pensado para que se cambien para la aplicación que desees realizar.

    En el programa encontraran las siguientes variables:

    Vi: Velocidad inicial del motor DC que desees que mantenga al encender el PIC. Por defecto la configure a 2

    Vf:  Velocidad final del motor DC que desees que mantenga una vez realizada la aceleración y desaceleración. Por defecto la configure a 6.

    Vmax: Velocidad máxima que alcanzara el motor, una vez completada la aceleración. Por defecto la configure a 240

    tinit: Tiempo durante el cual el motor se mantiene a la velocidad Vi, antes de comenzar la aceleración. Por defecto la configure a 200.

    tfinal: Tiempo durante el cual el motor se mantiene a la velocidad Vi, luego de la desaceleración. Por defecto la configure a 150.

    tmax: Tiempo durante el cual el motor se mantiene a la velocidad Vmax, luego de la aceleración y antes de comenzar la desaceleración. Por defecto la configure a 150.

    tacel: Tiempo durante el cual el motor acelera desde Vi hasta Vmax. Por defecto la configure a 180.

    tdesacel: Tiempo durante el cual el motor desacelera desde Vmax hasta Vf. Por defecto la configure a 100.

    Estas variables descriptas arriba pueden ser modificadas, ya sea desde el programa, o generando un código para controlarlas e ingresarlas mediante pulsadores o el método que usted elija.

    Cada modificación de velocidad se hace en pasos de 10ms, este valor puede ser cambiado desde el programa.

    El programa realiza un "redondeo"(esto en realidad es mas un apodo que una realidad, ya que no trabajo con números fraccionarios, solo con enteros)  que en realidad no es mas que un ajuste para lograr aceleraciones + y - "semi" constantes. Para aceleraciones completamente constantes usted debe respetar la siguiente formula:

(Vmax-Vi) / tacel = Numero Natural

Si esa formula da un Numero Natural (Ej. 1,2,3...) la aceleración será completamente constante ( por lo tanto deltaV será constante también).

La misma lógica se debe seguir para la desaceleración:

(Vmax - Vf) / tdesacel = Numero Natural

Si esa formula da un Numero Natural (Ej. 1,2,3...) la desaceleración será completamente constante ( por lo tanto deltaV será constante también).

Cabe destacar que la grafica real sería escalonada, ya que el programa trabaja y varia la velocidad cada lapsos de 10ms. Las grafiqué de manera lineal para que se comprenda mejor el funcionamiento.

Grafica 1:

Grafica 2:

    Por ultimo les dejo el programa, para que lo analicen y modifiquen a gusto.

    Programa motor DC

    Espero que lo encuentren útil. Hasta la próxima!

Hosted by www.Geocities.ws

1