HOWTO des commandes des moteurs sur les noeuds MPC555
Initialisation générale des MPC555
- Configuration système :
- programmation du SIU Module Configuration Register : SIUMCR (0x2F C000) <- 0x2800 0000 (multi chip 16 bit port size : DATA[16-31] utilisable en GPIO, cf UM555 6.13.1.1)
- programmation du External Master Control Register : EMCR (0x2F C030) <- 0x0000 126C (cf UM555 6.13.1.3)
- programmation du Memory Control Base Register 1 : BR1 (0x2F C108) <- 0xFFF0 0823 (cf UM555 10.8.3)
- programmation du Memory Control Option Register associé : OR1 (0x2F C10C) <- 0xFFFE 0000
- programmation du Time Base Control and Status Register : TBSCR (0x2F C200) <- 0x0001 (cf UM555 6.13.4.4)
- programmation du UIMB Module Configuration Register : UMCR (0x30 7F80) <- 0x0 (cf UM555 12.5.1)
- programmation du Pad Module Configuration Register : PDMCR (0x2F C03C) <- 0xF200 0000 (cf UM555 2.4.2)
- programmation du PLL, Low-power and Reset Control Register PLPRCR (0x2F C284) <- 0x0090 0000 (cf UM555 8.12.2)
- initialisation du module TouCAN
- initialisation du Periodic Interrupt Timer (PIT)
Commande des moteurs avec variateurs PWM de AMC
Il s'agit de piloter les 3 signaux en entrée sur les variateurs:
- PWM_IN : signal périodique modulé en largeur d'impulsion image du courant à envoyer dans les moteurs. Pour l'application Cycab, la fréquence de ce signal est fixée, seul le rapport cyclique varie.
- DIR_IN : sens de rotation du moteur (branche active du pont H)
- INH_IN : autorisation/inhibition de la puissance
Ces signaux sont issus du MPC555 puis passent par un étage d'amplification et un étage de découplage opto (situés sur la carte fille).
Le signal d'inhibition/autorisation est conditionné par la sortie d'un monostable (constante de temps = 0,14 ms) ré-armable par le signal CS2 (nécessite un accès mémoire pendant le traitement de l'interruption PIT)
Ressources côté MPC555 :
- MIOS1 (MODULAR INPUT/OUTPUT SYSTEM) et en particulier les sous-modules MPWMSM et MPIOSM
- MEMORY CONTROLER pour le "watch-dog"
- broches MPWM0-3, MPIO4-11 et CS2
Initialisation :
- fixer l'horloge de comptage pour le MIOS1 à 20 MHz :
MCPSMSCR (0x30 68813) <- 0x8002
- fixer la direction des données (Output) sur les broches I/O du MPIOSM :
MPIOSMDDR (0x30 6102) <-(MPIOSMDDR) OR 0x0EE0 pour les DIR_IN et INH_IN des trois moteurs
- fixer la direction des données à Output), leur polarité, le rapport de division de l'horloge de comptage pour les broches MPWM associées à chacun des trois moteurs :
- MPWMSM1SCR (0x30 600E) <- 0x54FF
- MPWMSM2SCR (0x30 6016) <- 0x54FF
- MPWMSM3SCR (0x30 601E) <- 0x54FF
- fixer la période des signaux PWM à 50 microsecondes sur chacun des trois canaux :
- MPWMSM1PERR (0x30 6008) <- 0x03E8
- MPWMSM2PERR (0x30 6010) <- 0x03E8
- MPWMSM3PERR (0x30 6018) <- 0x03E8
- définir l'adresse du banc mémoire (0x0FF0 0000) dont l'accès en lecture ou écriture sera signalé par CS2 ainsi que les options du contrôleur mémoire pour ce banc (peut être fait dans l'Init général):
- BR2 (0x2F C110) <- 0x0FF0 0823
- OR2 (0x2F C114) <- 0x0FF0
Génération (à faire dans le handler d'interruption associé au PIT) :
- ré-armer le watch-dog : accès mémoire à l'adresse 0x0FF0 0000
- fixer le sens de rotation de chacun des moteurs :
programmation des bits 5, 6 et 7 de MPIOSMDR (0x30 6100)
- fixer le rapport cyclique du signal PWM à envoyer à chacun des moteurs: programmation des registres:
- MPWMSMS1PULR (0x30 600A),
- MPWMSMS2PULR (0x30 6012),
- MPWMSMS3PULR (0x30 601A)
- autoriser la puissance (et désactiver les freins) :
programmation des bits 9 ou(et) 10 ou(et) 11 de MPIOSMDR (0x30 6100)
Commande des moteurs avec variateurs analogiques de Curtis
Il s'agit de piloter les signaux en entrée sur les variateurs:
- tension analogique entre + et - 10 Volts image du courant à envoyer dans les moteurs,
- INH : autorisation/inhibition de la puissance.
La tension analogique est générée par le circuit DAC8420 situé sur la carte fille : il s'agit d'un quadruple convertisseur 12 bits commandé via un interface digital série. Pour ce faire, 3 broches sont utilisées : Chacun des 4 DAC est adressé individuellement sur la broche SDI par un "mot série" de 16 bits formé par 12 bits de données + 1 entête adresse, la broche CLK est l'horloge de décallage et la broche LD est utilisée pour le chargement de la valeur à convertir (D0-11) par le DAC adressé par A0-1.
Ces trois signaux proviennent des sorties MPIO(0-2) du MPC555 après étage d'amplification, d'optodécouplage et de mise en forme.
Ressources côté MPC555 :
- registre r28 dans lequel sera construit le mot à sérialiser sous la forme :
A1 | A2 | x | x | D11 | D10 | ------- | D1 | D0 |
où A1 A2 représente le numéro du convertisseur et D11--D0 la valeur numérique sur 12 bits à convertir en une tension image de la consigne de vitesse pour le variateur Curtis.
- MIOS1 (MODULAR INPUT/OUTPUT SYSTEM) et en particulier le sous-modules MPIOSM
- MEMORY CONTROLER pour le "watch-dog"
- broches MPIO0_2 pour la programmation du circuit DAC, broche MPIOi+8 (MPIO10 pour le moteur 2) pour autoriser la puissance et CS2 pour le ré-armement du watch-dog,
Initialisation :
- indiquer au MIOS1 du MPC555 que les pins VF0-1/MPIO0-1 et VFLS0-1/MPIO3-4 sont utilisées comme I/O :
MIOS1TPCR (0x30 6800) <- 0x00, ceci est optionnel (valeur par défaut au Reset)
- fixer la direction des données (Output) sur les broches I/O du MPIOSM :
MPIOSMDDR (0x30 6102) <-(MPIOSMDDR) OR 0x0E07 pour l'interface DAC et les INH_IN des trois moteurs,
- définir l'adresse du banc mémoire (0x0FF0 0000) dont l'accès en lecture ou écriture sera signalé par CS2 ainsi que les options du contrôleur mémoire pour ce banc (peut être fait dans l'Init général):
- BR2 (0x2F C110) <- 0x0FF0 0823
- OR2 (0x2F C114) <- 0x0FF0
Génération (à faire dans le handler d'interruption associé au PIT) :
- ré-armer le watch-dog : accès mémoire à l'adresse 0x0FF0 0000
- charger la valeur à convertir par le DAC en respectant les contraintes temporelles (set up et hold times) entre les trois signaux de commande :
- autoriser la puissance (et désactiver les freins) :
programmation des bits 9 ou(et) 10 ou(et) 11 de MPIOSMDR (0x30 6100)
Le nouvelle valeur analogique sur VOUTi est disponible 13 microsecondes après le front descendant sur LD.
Contrôle des moteurs de traction
Un codeur incrémental est associé à chaque moteur de traction pour l'asservir en vitesse. La mesure de l'intensité du courant le traversant permet de l'asservir en couple : ce courant est fourni par une tension analogique (1 V pour 4 A) sur la broche CURRENT MONITOR OUT des variateurs AMC. Lámplitude de ce signal(+/- 12,5 V) est ramenée à 0-5 V pour être exploitable par le MPC555.
Ressources côté MPC555 :
- TPU pour interfacer les codeurs incrémentaux (vitesse),
- QADC_A et QADC_B pour la lecture du courant (couple) et la température moteur.
- les broches A_TPUCH2, A_TPUCH3, B_AN1/PQB1, B_AN53/PQA1 et B_AN49/PQB5 pour le Moteur2, A_TPUCH4, A_TPUCH5, B_AN2/PQB2, B_AN54/PQA2 et B_AN50/PQB6 pour le Moteur3 et les broches A_AN53/PQA1 et A_AN54/PQA2 pour les 2 moteurs de traction.
Initialisation :
Acquisition :
Contrôle des moteurs de direction
Un codeur absolu est associé au moteur agissant sur le vérin de direction pour l'asservir en position. Un potentiomètre linéaire associé au vérin permet d'en mesurer la course. La mesure de l'intensité du courant le traversant permet de l'asservir en couple : ce courant est fourni par une tension analogique (1 V pour 4 A) sur la broche CURRENT MONITOR OUT des variateurs AMC. Lámplitude de ce signal(+/- 12,5 V) est ramenée à 0-5 V pour être exploitable par le MPC555.
Ressources côté MPC555 :
- QSPI pour interfacer le codeur absolu (angle de braquage)
- QADC_B pour la lecture du courant dans le moteur de direction (couple), la course du vérin (potentiomètre) et la température moteur
- les broches MISO/GPIO4, SCK/QGPIO et VFLS0/MPIO3 (codeur), B_AN3/PQB3 (courant), A_AN51/PQB7 (course), B_AN51/PQB7 (température)
Initialisation :
Acquisition :
Interface homme-machine (Joystick pour la commande manuelle)
Le joystick est câblé sur le "noeud" arrière, il génère 2 grandeurs analogiques qui varient entre 0 et 5V et qui représentent d'une part la consigne de vitesse pour la commande des moteurs de traction et d'autre part la consigne d'angle de braquage pour la commande du moteur de traction.
Ressources côté MPC555 :
- module QADC_A
- General-Purpose I/O
Initialisation :
Acquisition :
--
GerardBaille - 17 Sep 2008