Vous êtes sur la page 1sur 12

Le module XA-MEGA32

Nous recommandons lutilisateur de commencer par lire la notice technique EXTRALINK avant
daborder la prsente et particulirement les pages concernant la description du matriel,
lutilisation des modules et de leurs particularits.

Les composants indispensables


Tout ce qui suit a t crit en langage Basic-AVR-Bascom, ce compilateur nest pas obligatoire, on
peut utiliser Le C ou lassembleur, mais nous avons t convaincus par les performances et la
qualit du compilateur. Ce qui suit ne peut tre utilis quavec ce compilateur.

Le Compilateur
Un dongle port parallle port SPI
La librairie XABASELIB.bas (programme inclure)

Les composants spcifiques


Chaque module rpond des commandes pour raliser des fonctions par exemple la commande 204
ralise la fonction LEDON, elle allume la led du module.
Les commandes sont associes aux arguments (nous en avons prvu 5)
Chaque commande reoit en retour au moins un octet de status qui est fonction de la faon dont le
module raliser la tche.
Si la commande est une interrogation, le module recevra en plus du status les octets qui composent
la rponse. Dans ce cas il faudra peut-tre recomposer la rponse suivant le type attendu.

Dans le tableau en annexe nous indiquons pour chaque type de module:


1. la fonction indique la commande comme dcrite dans le manuel Extralink dutilisation des
modules.
2. Lquivalent, cest un octet variant 1 255 qui correspond la commande envoye.
3. Arguments : les arguments passer aux modules (le cas chants)
4. La rponse attendue
5. Le but de la fonction
6. Leffet sur le module

Ce module est architectur autour du microcontrleur AVR-MEGA32. Le schma de ce module est


donn en annexe.

La programmation seffectue par la liaison SPI sur le port B via un port parallle de PC. Un cble et
le dongle de programmation est disponible chez www.mcselec.com.

Le module possde un port RS232, connect aux broches D0 et D1

Les broches D2 D6 sont ramenes sur le connecteur 16 broches ddi lafficheur LCD
alphanumrique. Ces broches peuvent tre utilises comme broches de contrles pour un afficheur
LCD graphique.

Le port A est configurable en 8 entres analogiques 10 bits ou en port I/O, dans ce dernier cas il
peut servir pour les data dun afficheur graphique.

Enfin le port C est disponible par exemple pour un clavier.

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 1/12 19/07/17
Utilisation
La programmation est sensiblement diffrente, si nous avons repris lesprit, une fonction style :
Status=Xa(commande, adresse, arg1, arg2, arg3, arg4, arg5) nous allons maintenant directement
lessentiel, le contrle derreur se fait simplement sur lcriture puis sur la lecture de la rponse
du bus I2C. Il ny a ni checksum, ni caractre de dbut, ni caractre de fin.

Nous vous conseillons de respecter le protocole Extralink en ce qui concerne ladressage pour une
meilleure compatibilit.
Il ny a pas de diffrence, vu du module XA-MEGA32 entre un module adressable (EXTRALINK) et un
composant I2C.

Lutilisation des composants I2C adresse ajustable, doit possder une adresse paire que lon divise
par 2 dans le programme (voir lexemple avec le DS1621), dans ce cas, ladresse du composant peut
tre suprieure 127.

Adressage des modules EXTRALINK


Le programme address.bas permet de changer ladresse des modules
Attention alors de bien noter l'adresse attribue.

Protocole de communication
Il faut insrer le programme : XABASELIB.bas dans lentte du programme, et une tiquette
begin : dans les premires lignes du programme.
En cas dutilisation de composant I2C du commerce, il faut modifier le fichier XABASELIB.bas pour
le rendre compatible (ajout des commandes dans le select case )

Linclude XABASELIB.bas se charge de tout les transfert.


___________________

Programmation
Nous reprenons le processus Extralink sauf que la DLL est remplacer par le fichier XABASELIB.bas.
Nous adaptons notre programme en fonction des modules utiliss. La mmoire dun micro-
contrleur nest pas extensible linfinie comme celle dun PC.
Ce qui suit ne doit pas tre utilis tel quel, mais modifi par lutilisateur en fonction de ses besoins
et de ces interfaces (afficheur, micro-contrleur)

la fonction XA()
Extralink utilise la fonction XA(commande, adresse, longueur, arg1,arg2,arg3,arg4,arg5) qui
retourne le status dexcution des commandes. Les modules retourne 0 si le dialogue est correct,
Lutilisateur doit crer ses propres routines de traitement derreurs.

Commande est lordre envoy au module. Exemple : 204 = ledON allume la led de contrle du
module.
Longueur est la longueur du message envoy. Exemple : commande= 103 lecture position dun
moteur Pas Pas longueur= 5 parce que la lecture devra nous renvoyer 5 octets : le status du
module et un Long (4 octets).

Arg1 Arg5 sont les arguments envoys aux modules ils sont tous facultatifs.
Exemples : pour commander un moteur il faut prciser la vitesse, pour allumer une led il ni a pas
besoin dargument.

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 2/12 19/07/17
Le gosub de composition de message
lutilisateur devra modifier le select case pour ladapter son usage en fonction des modules
quil utilise et de leurs commandes, en effet il est inutile de remplir la mmoire avec des fonctions
non utilises. Voir en Annexe pour chaque module : les commandes, longueurs
cest Ici que sera rempli le tableau de donnes transmettre au module, il sera aussi prcis la
longueur du message envoy et le cas chant, la longueur du message recevoir.

Les sub Ecrit_long et Ecrit_word


Le tableau de donnes qui sera envoy au module, nest compos que doctets. Il faut dcomposer
les variables Long et Word en octet.

Le gosub denvoi sur le bus I2C


Ici on gre le transfert au module. Le cas chant , lerreur est affiche.

La fonction Lit()
Ici on gre la lecture de la rponse du module. Le cas chant , lerreur est affiche.

Une ou plusieurs commandes Extralink correspondante(s) aux modules utilises


Ces fonctions sont donnes en annexe.
___________________

La cration dun programme


Il faut tout dabord dfinir les adresses des modules
Pour des raisons de comprhension nous vous suggrons dutiliser des constantes explicites :

Const Moteur_z = 20
Const Moteur_x = 40
Const Ds1621 = 72

Par exemple faire clignoter la diode dun module moteur ladresse dfinie en tte du programme

Adresse_fonction = Moteur_x
For Bbyte = 1 To 2
Commande = 204 LED ON voir les tableaux de commandes en fonctions des modules
longueur = 1 facultatif si gale 1
Arg1 = 0 : Arg2 = 0 : Arg3 = 0 : Arg4 = 0 : Arg5 = 0 voir les arguments transfrer dans les
tableaux de commandes en fonctions des modules
Statusmodule = Xa(commande , Adresse_fonction , Longueur , Arg1 , Arg2 , Arg3 , Arg4 , Arg5)
la fonction principale
Waitms 200
Commande = 205 LED OFF voir les tableaux de commandes en fonctions des modules
longueur = 1 facultatif si gale 1
Arg1 = 0 : Arg2 = 0 : Arg3 = 0 : Arg4 = 0 : Arg5 = 0
Statusmodule = Xa(commande , Adresse_fonction , Longueur , Arg1 , Arg2 , Arg3 , Arg4 , Arg5)
Waitms 200
Next
___________________

Pour rdiger plus facilement on peut utiliser les procdures propres chaque module voir les
annexes. Ces procdures reprennent les commandes EXTRALINK.

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 3/12 19/07/17
Exemple :
Faire avancer un moteur Pas Pas en vitesse constante de 100000 pas
Adresse_fonction = Moteur_z
Dsi = 4 : Course = 100000 : Sens = 2
Vitesse_constante Adresse_fonction , Dsi , Periode , Course , Sens
Etat_moteur Adresse_fonction

Sachant que les procdures concernant le moteur PAP sont donnes en annexe.

Contenu des annexes


1. Tableau des commandes par type de modules
2. Procdures indispensables
3. Exemple de procdures particulires un module. (le moteur pas pas)
4. Exemple changement dadresses,
5. Un composant I2C le thermostat Ds1621 .

Caractristiques communes aux modules Extralink


Dimensions
longueur 100mm
la largeur est variable en gnral les modules ont une largeur de : 40mm, mais certains font 50mm
ou plus (alimentation pour moteurs Pas--Pas)
le connecteur mle 6 points se trouve gauche quand on regarde le module par dessus.

Rst = reset
Scl = bus I2C Extralink
+5V =alimentation
Masse = Alimentation
Sda = bus I2C Extralink
+12V = Tension 12 V redresse filtre mais non rgule,
suivant les alimentations, cette tension peut monter
jusqu 17Volts vide.

Annexes

Les commandes
Lutilisateur comprendra que la fonction est envoyer ladresse du module sous la forme :
Adresse_fonction=x : Commande = n :longueur=m
Arg1 = aaaa : Arg2 = bbbb : Arg3 = cccc : Arg4 = dddd : Arg5 = eeee
Statusmodule = Xa(commande , Adresse_fonction , Longueur , Arg1 , Arg2 , Arg3 , Arg4 , Arg5)

x, n, m sont des variables de type Byte.


aaaa, bbbb, cccc, dddd,eeee sont des variables du type spcifi ci-dessous.

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 4/12 19/07/17
Elements de la rponse : S= status du module, B=Byte, W=Word, L= Long
Pour des complments dinformations sur les modules, il faut se reporter la notice technique
EXTRALINK

Modules radressables (fonctions gnrales)


Fonction Equivalent arguments Rponse Longueur Effet
Rponse
Ledon 204 - S 1 vrifie la rponse du module (allume la led)
ledoff 205 - S 1 Eteint la led du module
setadr 203 B S 1 La fonction doit tre envoye ladresse actuelle du
module. B est la nouvelle adresse.
rdver 206 S+B+B 3 Le module renvoie le n de version et de sous-
version
rstmod 207 S 1 Remet le module en tat initial

Modules de sortie TOR


Fonction Equivalent arguments Rponse* Longueur Effet
Rponse
wrb 20 B S 1 Forcer les 8 sorties la valeur B (0..255)
setbit 21 B S 1 Forcer la sortie B (0..7) 1
rsrbit 22 B S 1 Forcer la sortie B (0..7) zro
delay 60 B+W S 1 Activer la sortie B (0..7) durant le temps W (16
bits)**
blink 61 B+W S 1 Clignotement de la sortie B (0..7) avec la priode
W (16 bits) les temps sont en 1/100 de secondes
rdb 100 - S+B 2 Lecture de ltat des sorties
rdw 101 B S+W 3 Lire le temps restant avant changement de la
sortie B (0..7)

modules d'entre TOR


Fonction Equivalent arguments Rponse* Longueur Effet
Rponse
WRB 20 B S 1 Fixer tat normal des entres
RDB 100 - S+B 2 Lit les entres sous la forme dun octet
RDW 101 - S+B+B 3 Lit entres et changements dtats depuis la
dernire lecture (1)
HITRANS 50 B S 1 Met lentre B en mode compteur sur front
montant
LOTRANS 51 B S 1 Met lentre B en mode compteur sur front
descendant
HILOTRANS 52 B S 1 Met lentre B en mode compteur sur front
montant et descendant
WRCB3 53 B S 1 Ni le compteur B ni le temps ne seront remis
zro la lecture
WRCB4 54 B S 1 Le compteur B sera remis zro la lecture
WRCB5 55 B S 1 le temps sera remis zro la lecture
WRCB6 56 B S 1 Le compteur B et le temps seront remis zro
la lecture
RDCL 123 B S+L 5 Lit le compteur B
RDCLL 127 B S+L+L 9 Lit le compteur B et le temps coul

Module d'entres analogiques XA-8UI non radressable


Fonction Equivalent arguments Rponse Longueur Effet
Rponse
I2CWR1 210 B - Lance la conversion
I2CRD 220 2 W realise la conversion

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 5/12 19/07/17
Module d'entres analogiques XA-5AI radressable
Fonction Equivalent arguments Rponse Longueur Effet
Rponse
F1 1 - S 1 Slectionner rfrence +5V
F2 2 - S 1 Slectionner rfrence interne ou borne 3
RDCW 121 B S+W 3 Lire lentre B
RDWLL 109 - S+W+W 11 Lire les 5 entres
+W+W+
W

Module 8 thermocouples XA-8TC


Fonction Equivalent arguments Rponse Longueur Effet
Rponse
RDCW 121 S Lecture de la jonction
RDB 100 S

Module de sorties analogique et PWM XA-1SA


Fonction Equivalent arguments Rponse Longueur Effet
Rponse
F1 1 S 1 Mettre 1 la sortie 1
F2 2 S 1 Mettre 0 la sortie 1
F3 3 S 1 Mettre 1 la sortie 2
F4 4 S 1 Mettre 0 la sortie 1
WRB 20 B S 1 Fixer la tension ou le courant de sortie

Module de comptage et dcomptage XA-UDC


Fonction Equivalent arguments Rponse Longueur Effet
Rponse
F1 1 - S 1 Remet le compteur 0
RDL 103 - S+L lit le compteur
RDLL 107 - S+L+L lit le compteur, le temps coul et remet le
compteur zro

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 6/12 19/07/17
Module moteur Pas Pas
Fonctio Equivalent arguments Rponse Longueur Effet
n Rponse
WRB 20 B S 1 fixe le DSI
WRB1 21 B S 1 Fixe la rampe d'acclration(0254)
WRB2 22 B S 1 Fixe le taux d'acclration (0..7)
WRI 30 W S 1 fixe la priode en mode vitesse constante (16 bits)
WRI1 31 W S 1
WRI2 32 W S 1
WRL 40 L S 1 fixe course /palier (32 bits)
F1 1 - S 1 Dmarrage vitesse constante sens 1
F2 2 - S 1 Dmarrage vitesse constante sens 2
F3 3 - S 1 dmarrage mode progressif sens 1
F4 4 - S 1 dmarrage mode progressif sens 2
F5 5 - S 1 dmarrage sans limite sens 1
F6 6 - S 1 dmarrage sans limite sens 2
F7 7 - S 1 active fin de course
F8 8 - S 1 dactive fin de course
F9 9 - S 1 Arret en dclration
F10 10 - S 1 Arret brusque
F11 11 - S 1 rtablir l'alimentation
F12 12 - S 1 couper l'alimentation
RDI 101 - S+B+B 3 lecture de l'tat moteur et fin de course( note1)
RDL 103 - S+L 5 lecture de la course (32 bits)

Module moteur Courant Continu en boucle ouverte


Fonction Equivalent arguments Rponse Longueur Effet
Rponse
F1 1 - S 1 Dmarrage sens 1 sans limite
F2 2 - S 1 Dmarrage sens 2 sans limite
F3 3 - S 1 Dmarrage sens 1 limite sur fin de course
F4 4 - S 1 Dmarrage sens2 limite sur fin de course
F5 5 - S 1 Dmarrage sens 1 limite sur index
F6 6 - S 1 Dmarrage sens2 limite sur index
F7 7 - S 1 Arret par courant de Foucaut (bobinage court-circuit)
F8 8 - S 1 arret par coupure d'alimentation
WRB 20 B S 1 fixer la vitesse (0 255)
RDB 100 - S+B 2 lire l'tat des entres et fin de courses

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 7/12 19/07/17
Module moteur courant continu asservi
Fonction Equivalent arguments Rponse Longueur Effet
Rponse
F1 1 - S 1 RST reset controleur
F2 2 - S 1 RSTI reset anomalies
F3 3 - S 1 SIP - lancer acquisition index
F4 4 - S 1 DFH dfinir position dorigine
F5 5 - S 1 PBKR arret par dclration
F6 6 - S 1 PBLK arrt par blocage
F7 7 - S 1 PDEBR arrt en roue libre (dbrayage)
F8 8 - S 1 Dmarrer asservissement de vitesse sens 1
F9 9 - S 1 Dmarrer asservissement de vitesse sens 2
F10 10 - S 1 Couper alimentation
F11 11 - S 1 Rtablir alimentation
F12 12 - S 1 Dmarrage
WRI 30 - S 1 LPEI Fixer limite couple, lasservissement continue
si atteinte
WRI1 31 - S 1 LPES fixer limite de couple, cessation de
lasservissement si atteinte
WRL 40 L S 1 Fixer lacclration
WRL1 41 L S 1 Fixer la vitesse
WRL2 42 L S 1 Fixer lobjectif
WRL3 43 L S 1 Fixer lobjectif + lancement
SET629 140 B+W+W+W S 1 Fixer DSI, KP, KD, KI, IL + validation
+W
RDI 101 1 B+B 3 Lire entres + status controleur
RDCI 121 1 S+ W Lire vitesse
RDCI 121 2 S+W Lire intgrale
RDCL 123 1 S+L Lire position
RDCL 123 2 S+L Lire index
RDCL 123 3 S+L Lire vitesse thorique
RDCL 123 4 S+L Lire positioin thorique

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 8/12 19/07/17
Procdures indispensables
Elles sont donnes dans les fichiers procdures.TXT ces fichiers doivent tre recopis dans votre
programme.

Procdures_fonction_Xa.txt
Procdures_gosub_compose-ecrit.txt
Procdures_gosub_argument.txt
Procdures_gosub_ecrit word et ecrit_long.txt
Procdures_gosub_I2C_ecrit.txt
Procdures_fonction_lit.txt
Procdures_fonction_Xa.txt

Pour la lecture le lecteur simpirera de la procdure lecture_position donne dans lexemple


moteur Pas--Pas

Variables utilises dans les exemples et les procdures


Voir le fichier variables_utilises.txt

________________

Exemple : les procdures du moteur Pas--Pas


Comment utiliser ces procdures ?

Dans lentte du programme lutilisateur dcrira


Les variables spcifiques :
Variables_spcifiques_PAP.txt

les procdures utilises :


Voir le fichier dclaration_des_procdures_PAP.txt

Puis il collera les :


procdures_moteur-PAP.txt

il ny a plus qua se servir de ces procdures :

Adresse_fonction = Moteur_z
Bbyte = Pas_init_z
Dsi = 4 : Course = Bbyte : Sens = 1
Vitesse_constante Adresse_fonction , Dsi , 2000 , Course , Sens
Etat_moteur Adresse_fonction

Ou encore
Dsi = 3 : Tacc = 3 : Rampe = 200 : Course = Kword : Sens = 3
Progressif Adresse_fonction , Dsi , Tacc , Rampe , Course , Sens
Etat_moteur Adresse_fonction

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 9/12 19/07/17
Description des procdures PAP

Vitesse_constante avance vitesse constante, utilis pour les petits dplacements ou pour dcoller
le moteur dun fin de course.

Progressif avance avec une acclration plus ou moins forte

Activer_fdc Pour activer les switches fin-de-course, il peut y avoir 2 fin-de-course par moteur

Deactiver_fdc Pour dsactiver les fin-de-course

Arret_moteur arrte un moteur

Lecture_position pour connatre la position du moteur (en pas) position thorique car un moteur
PAS est susceptible de perdre des pas sil est mal rgl (voir la notice EXTRALINK)

Etat_moteur permet de connatre ltat moteur, on sort de cette procdure soit sur un fin de
course soit quand le moteur a effectu le nombre de pas demand.

Debraye un moteur

Quand le moteur effectu sont trajet, il sarrte en mode embray ce moment la puissance
dissipe est maximum.

TR1
R2 R1
1
2
3
4
5
6
7
8
3

BR1 15 15

1 2 J1
CONN-SIL8
C1
4700u
+88.8
4

BRIDGE
TRAN-2P2S

Cest pourquoi nous prconisons dutiliser le module XA-298 en respectant le schma ci-dessus

On calcule R2 et R1 en considrant que Rtotal= Rmoteur__larret+R1


Et en appliquant la formule R=U/I

Le module XA-298 peut dlivrer 4Ampres en pointe pour les 2 phases, nous vous conseillons de ne
pas dpasser 1A par phase et de calculer les rsistances en fonctions.

La puissance des rsistances doit elle aussi tre calcule en consquence. Exemple : R=15, I=1A
P=15Watts donc les rsistances seront dimmensionnes 25W et montes sur radiateurs.

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 10/12 19/07/17
Utilisation dun composant I2C
Le thermostat DS1621

laddresse de base =&B1001000 sachant que lon peut modifier les 3 bits derniers bits de poids
faibles.
Pour terminer loctet on ajoute un 0 en criture et 1 en lecture(nous utilisons un protocole
lgremment diffrent puisque nous nutilisons que les adresses comprise entre 1 et 127 voir les
explications sur ladressage des modules EXTRALINK cette diffrence na aucune incidence sur
ladressage)

Pour nous ladresse sera =&B10010000 = 144 en dcimal divis par 2 soit 72.

Les programmes et les dclarations sont en annexes

Const DS1621=72

Adresse_fonction = Ds1621
Commande = 172 'configuration

Commande = 161 'Rglage thermostat haut

Commande = 162 'Rglage thermostat bas

Commande = 238 ' commence

Commande = 170 'lecture position

La configuration, les rglages, sont suivis darguments (voir les exemples)


Dans ce cas on modifie le gosub Argument pour accepter ces commandes :

Extrait ..

Select case commande


---
---

Case 161 To 162 ' rglage haut et bas du thermostat DS1621


jbyte = Arg1
Longueur_ecrit = Longueur_ecrit + 1
Message_tableau(longueur_ecrit ) = Chr(jbyte)
jbyte = Arg2
Longueur_ecrit = Longueur_ecrit + 1
Message_tableau(longueur_ecrit ) = Chr(jbyte)

Case 170 'lecture temprature thermostat DS1621


Longueur = 3
Case 172 'initialisation du thermostat DS1621
Jbyte = Arg1
Longueur_ecrit = Longueur_ecrit + 1
Message_tableau(longueur_ecrit ) = Chr(jbyte)

Case 204 To 205 led on et led Off


Return
Case 238 ' dmarre le thermostat DS1621
Return
---
end select

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 11/12 19/07/17
Le module Xamega
PENSEZ A DESACTIVER LE JTAG (fusibles hauts)

LED

Jumper 1

to cross the RxD and RS232


RxD

Programming
connector

Connector for display


Part of Port D

Port C

Xtal : 11 052 000 Hz


Port A

Jumper 2 reset
Jumper 3 buzzer (B.4)

Extralink connector Contrast for Lcd

Display Port Port A or C


Jumper 1
2 VDD 1 VSS (Gnd)) 10 Vcc 9 Gnd
1 RXD Max 232 6 TXD Max 232
4 RS(D.2) 3 VO (contrast) 8 P.7 7 P.6
2 RXD micro 5 TXD micro
6 E (D.3) 5 R/W (Gnd) 6 P.5 5 P.4
3 4
8 7 4 P.3 3 P.2
10 9 2 P.1 1 P.0
1 6
2 RXD micro 5 TXD micro 12 DB5 (D.5) 11 DB4 (D.4)
14 DB7 (D.7) 13 DB6 (D.6 Programming C.
3 TXD Max 232 4 RXD Max 232
16 led (Gnd) 15 +led (390) 10 Gnd 9 miso
8 Gnd 7 sck
- La led est relie au port B3 travers une rsistance de 390
6 Gnd 5 rst
- Le buzzer peut tre reli entre la masse et le port B.4 travers R7
4 Gnd 3
SDA du port Extralink est au portB.0, SCL au portB.1 ces lignes
2 Vcc 1 Mosi
sont associes des pull-up de 2.2K.

_______________________________________________________________________________________________________
Module XAMEGA32 JP Duval 12/12 19/07/17