electronika

Module MD03 utilisation (Pont en H 20A 50V)

Description du module MD03

md03.jpg

Pont en H pour commande de moteurs grâce a différent mode et notamment I2C, 50V, 20A maximum. Attention avant de commencer veillez à vérifier que les switch sont correctement configurés, cet à dire que la led sur la carte ne doit pas clignoter. Celle ci indique une adresse impossible. Le programme de test ci-dessous utiliser par défaut B0 ou 176  en décimal comme adresse de base, soit tout les switcher sur ON (vers le bas).

Il existe 5 modes de fonctionnement pour ce module:

  1. Analog Mode - 0v-2.5v-5v
  2. Analog Mode 0v -5V
  3. RC mode
  4. RC mode with TIMEOUT
  5.  I2C mode

recepteur-_rc.jpgRc mode permet l’utilisation d’un récepteur de modélisme pour piloter directement un moteur dans les 2 sens. Dans ce cas seul 3 fils seront utilisés. 0v(fil noir), 5v (fil rouge) et le signal pwm partiel (Modulation en largeur d’impulsion). Le fils blanc sera relié sur la borne sda

md03_rc.jpg brochage_rc_md03.jpg

Programme de test avec compilateur css et mplab.

dsc00094.JPG

ccs_compileur.gifProgramme de test

Afin de vérifier que la communication est bonne voici un mini programme de test qui permet de faire des phase d’accélération et décélération du moteur connecté sur la carte MD03 .

Le module est ici utilisé en mode i2c.

i2c.gif

Ce programme est chargé dans le pic grâce au programmateur /débugger icd2. (pour info)

Les broches présentes sur icd2 sont: PGD PGC GND Vcc Vpp

C’est bornes seront reliées comme ceci:

PGD sur la pin 40 (RB7)

PGC sur la pin 39 (RB6)

GND sur la masse du montage

Vcc sur le 5 VVpp sur la pin 1. (MCLR/)

Ce programme est réalisé pour un pic 16f877 à 20mhz. Il faudra relier SCL sur la pin 18 et SDA sur la pin 23.

void main(){
port_b_pullups(TRUE);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);// setup_psp(PSP_DISABLED);
//setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
while (1){
output_D(255);//allumer une led pour vérifier que ça tourne
delay_ms(100);output_D(000);
delay_ms(100);//speed (2)
i2c_start();
i2c_write(176);
i2c_write(2);
i2c_write(250);
i2c_stop();//acceleration (3)
i2c_start();
i2c_write(176);
i2c_write(3);
i2c_write(250);
i2c_stop();//sens (0)
i2c_start();
i2c_write(176);
i2c_write(0);
i2c_write(2);
i2c_stop();
delay_ms(5000);//attendre que la phase d’accélération soit fini

//speed (2)
i2c_start();
i2c_write(176);
i2c_write(2);
i2c_write(128);
i2c_stop();

//acceleration (3)
i2c_start();
i2c_write(176);
i2c_write(3);
i2c_write(250);
i2c_stop();

//sens (0)
i2c_start();
i2c_write(176);
i2c_write(0);
i2c_write(2);

i2c_stop();

delay_ms(5000);//attendre la phase de décélération

}

}

Une valeur élevé dans le registre d’accélération permet une accélération progressive, une valeur faible une accélération très rapide.

L’adresse pour l’écriture est 176  et 177 pour lire la température ou un autre paramètre interne.(surintensité, température trop élevé, version software …)

 Les différents registres utilisables.

Register Address

Name

Read/Write

Description

0

Command

R/W

Write 01 Forwards - 02 Reverse
(00 for instant stop - Rev9 firmware only)

1

Status

Read only

Acceleration, Temperature and Current Status

2

Speed

R/W

Motor Speed 0-255 (0×00 - 0xFF)

3

Acceleration

R/W

Motor Acceleration 0-255 (0×00 - 0xFF)

4

Temperature

Read only

Module temperature

5

Motor Current

Read only

Motor Current

6

Unused

Read only

Read as zero

7

Software Revision

Read only

Software Revision Number- Currently

Si vous écrivez dans les registres vitesse ou accélération vous devez envoyer de nouveau le sens pour forcer les nouveaux paramètres.Avant de pouvoir démarrer votre moteur il est donc nécessaire d’écrire une valeurs dans les registres speed et accélération puis sens.

Lire la température

int temp;
temp= 0;
i2c_start();
i2c_write(176); //addresse de base en écriture
i2c_write(4); //registre température
i2c_start();
i2c_write(177); //adresse en lecture, r/w a 1
temp = i2c_read(0) ;

La valeur diminue avec la température. Le capteur est placé sous la résistance de 0.003 ohm. Il est possible de chauffer avec un fer à souder ce shunt afin de constater la diminution de la valeur de temp. 1 correspond 1.42 degré Celsius.

 Lire le courant moteur

int inten;
inten= 0;
i2c_start();
i2c_write(176); //adresse de base en écriture
i2c_write(5); //registre Motor Current
i2c_start();
i2c_write(177); //adresse en lecture, r/w a 1
inten = i2c_read(0) ;

La valeur maximum de 20A représenterais 186, par simple produit en croix on obtient par exemple 1.61A pour 15 (20 *15 /186 = 1.61)

Et voila vous pouvez maintenant passer a la puissance supérieure grâce a ce module qui permet une puissance théorique maximale de 50v x 20A soit 1000W, largement de quoi mouvoir votre robot.

Documentation:

http://www.robot-electronics.co.uk/htm/md03tech.htm

AVIS

+ Une sacré puissance disponible avec ce module (1000w)

+ Plusieurs mode de fonctionnement .

+ Facile à utiliser, documentation disponible.

- le prix, pas donné quant même.

Distributeur:

http://www.gotronic.fr/catalog/robotique/robframe.php?page_cible=commandes.htm

mai 24th, 2009 Posted by admin | Electronique, Tondeuse | 2 comments

2 commentaires »

  1. […] des différents modules externes sont en cours, c’est notament le cas des modules pont en h (MD03) , le module boussole électronique, le module détecteur à […]

    Pingback par » Tondeuse automatique électrique | 31 mai 2009

  2. […] (radiocommandée)  Tondeuse rc home made avec moteur thermique. Il est possible d’utiliser les modules md03 qui supporte le signal pwm des recepteurs de […]

    Pingback par » Tondeuse RC (radiocommandée) | 1 mai 2010

Laisser un commentaire

*
Pour prouver que vous n'êtes pas un bot, recopiez le code ci-dessous

Attention, l'anti-spam est impitoyable, pensez à faire un copier de votre message!


Anti-Spam Image