Présentation

Album photos

Recommander

Cliquez ici pour recommander ce blog

W3C

  • Feed RSS 2.0
  • Feed ATOM 1.0
  • Feed RSS 2.0
Lundi 24 mars 2008

Ca y est, c'est fait !
Après de nombreux déboire avec la programmation en C et mon niveau inssuffisant pour coder sur un Pic 16F877, je m'étais décidé à passer à un langage de plus haut niveau facilitant la programmation.
J'ai fini par opter pour FlowCode, dont j'ai fait l'acquisiton.
Après qques semaines de tutoriaux (merci le forum Flowcode et la réactivité du support), j'en suis à coder la lecture de tous les capteurs et la gestion des moteurs.
Si ce week-end n'avait pas été si pluvieux, GreenBot aurait fait une petite sortie dans la pelouse ... ce n'est que partie remise.

Voici un exemple de FlowCode :ImageFlowCode.jpg

par Alain CROSET publié dans : Logiciel
ajouter un commentaire commentaires (0)    créer un trackback recommander
Dimanche 27 janvier 2008
Je viens de faire l'acquisition d'un module boussole CMPS03. Le but est est, lors des déplacement dans le terrain, de garder le cap. Cela fait partie du principe de tonte parallèle.
CMP03-copie-1.jpg
 
Si vous comptez acquérir ce type de capteur, voici le lien très utile de l'ANCR pour faire fonctionner la boussole : http://ancrobot.free.fr/fichtech/electronique/Boussole/index.htm

Vous pourvez vous procurer ce module chez Lextronic par exemple : http://www.lextronic.fr/P1773-module-boussole-cmp03.html
par Alain CROSET publié dans : Electronique
ajouter un commentaire commentaires (3)    créer un trackback recommander
Dimanche 16 décembre 2007

Pour l'autonomie de GreenRbot lors d'une tonte, je vais installer les capteurs IR Sharp sur le côté gauche pour le contournement des obstacles. Pour la détection frontale, je me suis procuré 2 capteus ultrason miniature (que j'essaie de faire fonctionner depuis plusieurs semaines maintenant), voilà qui est fait.

Je vous livre ici le petit programme qui m'a permis de tester le fonctionnement des 2 capteurs. Les capteurs sont des MSU10 de chez Lextronic, à lecture par bus I2C. Tous les 2 capteurs étant livrés avec la même adresse E0, il faut modifier l'adresse du 2ème capteur.  Pour le test, aussi bien que pour la modification d'adresse, j'ai utilisé la carte CPU de GreenRbot. Je vous livre les 2 programmess :

 Changement de l'adresse de base E0 en F0 :


#include <16f877.h>
#fuses HS,NOPROTECT,NOWDT,BROWNOUT,PUT,NOLVP
#ORG 0x1F00,0x1FFF {} /* Reserve memory for bootloader for the 8k 16F876/7 */
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#use i2c (master, sda=PIN_C4, scl=PIN_C3)
 
main()
{
  i2c_start();                    //initate start condition
  i2c_write(0xE0);                //device address
  i2c_write(0x00);                //register address
  i2c_write(0xA0);                //1rst seq to change adress
  i2c_start();                    //initate start condition
  i2c_write(0xE0);                //device address
  i2c_write(0x00);                //register address
  i2c_write(0xAA);                //2nd seq to change adress
  i2c_start();                    //initate start condition
  i2c_write(0xE0);                //device address
  i2c_write(0x00);                //register address
  i2c_write(0xA5);                //3rd seq to change adress
  i2c_start();                    //initate start condition
  i2c_write(0xE0);                //device address
  i2c_write(0x00);                //register address
  i2c_write(0xF0);                //write new adress
  i2c_stop();
}

Affichage des 2 distances en cm sur le PC :

#include <16f877.h>
#fuses HS,NOPROTECT,NOWDT,BROWNOUT,PUT,NOLVP
#ORG 0x1F00,0x1FFF {} /* Reserve memory for bootloader for the 8k 16F876/7 */
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use i2c (master, sda=PIN_C4, scl=PIN_C3)
 
main()
{
// int i;
int rangeE;
int rangeF;
while(1)
 {
  i2c_start();                    //initate start condition
  i2c_write(0xF0);                //device address
  i2c_write(0x00);                //register address
  i2c_write(0x51);                //set units to centimeters
  i2c_stop();
  delay_ms(105);                   //wait for returning ping
 
  i2c_start();                    //initiate a new start condition
  i2c_write(0xF0);                //device address
  i2c_write(0x02);                //address of high byte register
  i2c_start();
  i2c_write(0xF1);                //device address but read
 
  rangeF = i2c_read(1);         //read first byte and shift left
  rangeF = rangeF << 8;
  rangeF += i2c_read(1);           //read second byte and add to 1st
  rangeF += i2c_read(0);
  i2c_stop();
 
//  printf("range F0 in centimeters = %3unr", rangeF);
  delay_ms(1000);

  i2c_start();                    //initate start condition
  i2c_write(0xE0);                //device address
  i2c_write(0x00);                //register address
  i2c_write(0x51);                //set units to centimeters
  i2c_stop();
  delay_ms(105);                   //wait for returning ping
 
  i2c_start();                    //initiate a new start condition
  i2c_write(0xE0);                //device address
  i2c_write(0x02);                //address of high byte register
  i2c_start();
  i2c_write(0xE1);                //device address but read

  rangeE = i2c_read(1);         //read first byte and shift left
  rangeE = rangeE << 8;
  rangeE += i2c_read(1);           //read second byte and add to 1st
  rangeE += i2c_read(0);
  i2c_stop();
 
  printf("range E0 in centimeters = %3unr", rangeE); 
  printf("range F0 in centimeters = %3unr", rangeF); 
  printf(" nr");
  delay_ms(1000);
 }
}

Reste à incorporer la lecture des capteurs droite et gauhe au module de détetion d'obstacle. Comment gérer la lecture suffisament rapidement pour l'utiliser en tant qu'interruption de trajectoire ... suspens, c'est une autre histoire, mais j'attendrai pour cela que la température de mon garage remonte au dessus des qques degrés à peine positifs du moment.

par Alain CROSET publié dans : Logiciel
ajouter un commentaire commentaires (0)    créer un trackback recommander
Samedi 27 octobre 2007

Voici quelques photos de l’intégration électronique de la commande moteurs et de la carte CPU à base de 16F877.

 

J’ai utilisé la partie puissance de la commande d’un des fauteuils roulant. La partie n’a pas été facile, je n’avais pas les schémas, j’ai donc fait du reverse-engineering de manière à comprendre, extraire et modifier les blocs intéressants.

 

-          La première étape hardware a été de supprimer le cœur micro du boitier.

 

-          Il a fallu ensuite intégrer une petite carte mezzanine d’adaptation des signaux,

 

-          En dernier lieu, j’ai tout de même ajouter un interface otpo de manière à isoler le 16F877 de la partie puissance.

 

 

Le bloc puissance est constitué de 2 ponts en H faits chacun par 4 SipMos BUZ111S, un drain thermique les relie au boîtier aluminium, de manière à assurer le refroidissement. Ils sont commandés par 2 circuits HIP4082.

 

La puissance est mise sous-tension par un relais type automobile, ce qui permet d’isoler les 2 batteries 12V en cas d’urgence.

 

 

J’ai pu tester le tout en commande continue et en MLI. Pour l’instant, la motorisation n’accepte pas un découpage au-delà de 10 kHz, mais je n’ai pas encore approfondi le problème.

 

La phase suivante concerne l’intégration de tous les capteurs, IR, ultrason et odométrique. Je n’ai pour l’instant fait que des test unitaire de chacun des capteur sur la CPU.

 

par Alain CROSET publié dans : Electronique
ajouter un commentaire commentaires (0)    créer un trackback recommander
Samedi 29 septembre 2007

Voilà, j'ai finalement réussi à loger les batteries. Ce sont les batteries d'origine du fauteuil, j'ai du quelque peu modifier le boitier externe pour pouvoir le fixer entre les 2 moteurs. La photo montre l'intégration réussie après le 2 ème essai. Le premier ne permettait plus d'ajuster la hauteur de tonte ...

Cette étape termine la phase mécanique. L'étape suivante sera l'intégration de l'électronique, pour pouvoir enfin commander ce robot.

 

par Alain CROSET publié dans : Mécanique
ajouter un commentaire commentaires (1)    créer un trackback recommander

Images aléatoires

Recherche

Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus