Paso 6: Las funciones que controlan mis motores de la C.C.
INIT_DC()
Inicializa el generador de señal motor DC PCA9635, restablece las clavijas del ciclo de deber hasta el 0% y pone el perno de dirección 0. Los dos ceros en los pines de entrada de control de puente de H dejan el motor giro motriz y libre.
DC_drivers()
se modifica el estado de controladores de salida. Hay cuatro modos, los controladores de salida pueden trabajar en:
00 - controlador de LED x está apagado (estado por defecto de encendido).
01 - LED driver x es totalmente en (brillo individual y grupo atenuación/intermitente no controlada).
10 - LED driver x brillo individual puede ser controlado a través de su registro PWMx.
11 - LED driver x brillo individual y grupo atenuación/parpadeo puede controlarse a través de su registro PWMx y la GRPPWM registros.
El modo de cada controlador de salida se almacena en dos bits. Cuatro Estados del conductor se agrupan en un solo registro, el nombre de registro es el driver_id parámetro de la función DC_drivers. El segundo parámetro es driver_mode, el usuario debe proporcionar un valor de 8 bits con el modo de controlador de salida deseado a su lugar.
Por ejemplo, si hay necesidad de un interruptor de "totalmente en" a "Control PWM" modo de salida LED 1, bits 3:2 de LEDOUT0 tiene que cambiarse de 01 a 10. En el código de tablero de Control Motor IMP por defecto esto se hace en la función DC_command().
Aquí está un ejemplo sobre esto:
...
Temp = I2C_ReadByte (PCA9635, LEDOUT0); leer el contenido de los registros
Temp = temp & 0xF3; eliminar los bits que se encuentran en campos de bits 3:2
Temp = temp | 0x08; establecer los bits de 3:2 a 10
DC_drivers (0, temp); llamar al DC_drivers() con los dos parámetros, LEDOUTx-en nuestro caso x es 0, y el actualizado registro valor
...
Leyendo el registro previamente al cambio de datos es necesario, porque los otros bits en el registro pueden tener efecto en las otras salidas que utilizamos. Para evitar esto, he leído en primer lugar, cambió los dos bits usados y escribió hacia atrás otra vez.
DC_command()
la función permite cambiar la velocidad y dirección del motor DC seleccionado. El primer parámetro id indica la función, que salida de la C.C. para modificar con los siguientes dos parámetros: Dirección y duty_cycle. Los dos últimos parámetros es sencilla. El ciclo de trabajo se limita a 99.6%, cualquier valor más grande se traducirá en cambio el ciclo de trabajo al 100%, cambiando el estado del controlador de salida a "totalmente en" modo.
Diferentes aplicaciones tendrá diferentes carga en los motores, para llegar detrás de esto, un algoritmo de rampa-para arriba puede utilizarse para aumentar gradualmente el ciclo de trabajo.
SleepMode()
Aprovecha de la característica del modo de sueño de la DRV8835. Puesto que este puente H extrae muy poca corriente de la fuente de la lógica (normalmente 450 μA, máximo 2 mA), puede ser alimentado directamente desde un pin del PCA9685, que puede fuente de un máximo de 10 mA. Esto es útil cuando uno de los puentes no se utiliza, ponerlo a dormir modo reducirá la corriente de la carga de alimentación a ~ 10 na. El primer parámetro "puente" selecciona uno de los dos puentes a bordo y puede tomar "AB" o "CD" como valor. Estos desactivar el puente marcado del mismo modo, visible en la serigrafía del tablero. El segundo parámetro es baja activa, activa o desactiva el modo de dormir en el puente seleccionado por el primer parámetro de la función.