Dimanche 15 juin 2008 7 15 /06 /Juin /2008 21:13
Et voilà ... La première mise en place des capots.
... Non je ne les ai pas fait moulés sur mesure ... Ce sont des morceaux du tobogan, les enfants ayant grandi, celui-ci dépérissait de ne plus servir, je lui ai touvé une nouvelle vie.  


Une partie pour le capot supérieur, 2 capots latéraux, et 2 mini-boitiers pour les capteurs ultrasons frontaux.

Par Alain CROSET - Publié dans : Mécanique
Ecrire un commentaire - Voir les 2 commentaires
Mercredi 4 juin 2008 3 04 /06 /Juin /2008 21:36

Ces derniers jours je n'ai pas beaucoup rempli le blog. C'est normal, j'ai passé plus de temps libre à travailler sur GreenBot.
- Le capot commence à prendre forme ... Vous ai-je dit que je l'ai découpé dans le toboggan que les enfants n'utilisent plus ?
- J'ai réussi à régler correctement la détection d'obstacle frontale par les capteurs ultrason, l'intégration des capteurs latéraux est plus délicate pour éviter les recouvrements.

Bientôt les photos ...

... Et avant l'été ... 1 petite vidéo ? 

Par Alain CROSET - Publié dans : GreenBot : la naissance
Ecrire un commentaire - Voir les 4 commentaires
Lundi 24 mars 2008 1 24 /03 /Mars /2008 16:33

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
Ecrire un commentaire - Voir les 2 commentaires
Dimanche 27 janvier 2008 7 27 /01 /Jan /2008 21:36
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
Ecrire un commentaire - Voir les 3 commentaires
Dimanche 16 décembre 2007 7 16 /12 /Déc /2007 14:46

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
Ecrire un commentaire - Voir les 10 commentaires

Présentation

Images aléatoires

  • dscn0491.jpg
  • p8120698.jpg
  • chassis1.jpg
  • PontsHetCPU.jpg
  • dscn0482.jpg
  • dscn0478.jpg

Recommander

Recherche

W3C

  • Flux RSS des articles

Widget Viadeo

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