Étape 6: Fonctions qui contrôlent mon REDUCTEUR
INIT_DC()
Initialise le générateur de signal moteur DC PCA9635, réinitialise les goupilles cycle à 0 % et met l’axe de direction à 0. Les deux zéros sur les broches d’entrée de contrôle pont H laissent le moteur tourner convoyeurs et libre.
DC_drivers()
modifie l’état de pilotes de sortie. Il existe quatre modes, les pilotes de sortie peuvent travailler dans :
00 - LED driver x est éteint (état de démarrage par défaut).
01 - LED driver x est entièrement (luminosité individuelle et groupe variateur/clignotement non contrôlé).
10 - LED driver x luminosité individuelle peut être contrôlé par le biais de son registre PWMx.
11 - LED driver x luminosité individuelle et de groupe variateur/clignotement peut être contrôlé par le biais de son registre PWMx et le GRPPWM s’inscrit.
Le mode de chaque pilote de sortie est stocké sur deux bits. Quatre États du pilote sont regroupés dans un seul registre, le nom de Registre est le paramètre driver_id de la fonction DC_drivers. Le deuxième paramètre est driver_mode, l’utilisateur doit fournir une valeur 8 bits avec le mode de pilote de sortie voulu décalé à sa place.
Par exemple, si on besoin d’un interrupteur de « entièrement on » à « PWM contrôlée » mode pour sortie LED1, bits 3:2 de LEDOUT0 doit être changé de 01 à 10. Dans le code par défaut de Conseil IMP contrôle moteur, cela se fait dans la fonction DC_command().
Voici un exemple sur ceci :
...
Temp = I2C_ReadByte (PCA9635, LEDOUT0) ; lire le contenu des registres
Temp = temp & 0xF3 ; supprimer les morceaux trouvés sur les champs de bits 3:2
Temp = temp | 0 x 08 ; définir les bits de 3:2 à 10
DC_drivers (0, temp) ; Appelez DC_drivers() avec les deux paramètres, LEDOUTx-dans notre cas, x est 0, et la mise à jour de Registre valeur
...
Lire le registre antérieurement à la modification de données, qu'il est nécessaire, car les autres bits dans le registre peuvent avoir d’effet sur les autres produits que nous utilisons. Pour éviter cela, j’ai lu il tout d’abord, changé les deux bits utilisés et il a répondu à nouveau.
DC_command()
est-ce que la fonction utilisée pour changer la vitesse et la direction du moteur DC sélectionné. Le premier paramètre id indique la fonction, qui DC sortie de modifier avec les deux paramètres suivants : direction et duty_cycle. Les deux derniers paramètres, ce qui signifie qu’est simple. Le rapport cyclique est limité à 99,6 %, une valeur plus grande se traduira par changer le facteur d’utilisation à 100 % en changeant l’état conducteur de sortie « entièrement sur » mode.
Différentes applications auront charge différent sur les moteurs, de passer derrière cela, un algorithme de montée peut être utilisé pour augmenter graduellement le rapport cyclique.
SleepMode()
Tire parti de la fonctionnalité du mode sommeil de la DRV8835. Étant donné que ce pont en H tire très peu de courant de l’alimentation de la logique (typiquement 450 µA, maximum 2 mA), il peut être alimenté directement par une goupille de PCA9685, qui peut accéder à un maximum de 10 mA. Cela est utile lorsqu’un des ponts n’est pas utilisé, le mettre mode sommeil réduira au minimum le courant tiré de l’alimentation de la charge à ~ 10 na. Le premier paramètre « pont » sélectionne l’un des deux ponts à bord et peut prendre « AB » ou « CD » en tant que valeur. Ces désactiver le pont marqué de la même manière, visible sur la sérigraphie du Conseil. Le deuxième paramètre est peu active, active ou désactive le mode "veille" sur le pont choisi par le premier paramètre de fonction.