Tout d'abord une petite presentation de la base sur laquel je travaille.
Voici mon probleme, je suis actuellement en train de développer mon robot basé sur la carte présenté par totofweb a cette adresse : totofweb
Et j'ai continué avec cette carte jusqu'a arrivé au resultat de son Servobot
Une fois arrivé la, je me suis dis cool, mais un robot filoguidé, c'est pas encore vraiment un robot, donc je me suis tourné vers le site Irbot , afin de rendre la bete un peu plus autonome et enfin coupé son fil qu'il avait a la patte, enfin roue
J'ai donc fait l'assemblage du radar IR en suivant le schema du site http://www.robot-mobile-irbot.com/6-radar-infrarouge-robot.htm
Malheureusement ne disposant pas du module sharp, et apres avoir ete faire un tour chez l'epicier en électronique, je me suis procuré un module TSOP1738 pour remplacer le sharp.
J'assemble le tout et test le programme, mais il ne me detecte que la led du coté droit, je reverifie schema cablage et programme et tout est ok, mais toujours que du coté droit, je me dis donc qu'a cela ne tienne et je change les pins des 2 LED IR (IR_droit relier a la led de gauche et vice versa) et la il ne detecte toujours que IR droit (donc cela marche bien avec la led gauche).Pourtant les 2 diodes passent bien émission.
Pour continuer dans mes tests, je decide donc de débrancher la led relier a la pin IR droit, afin de verifier qu'il n'y ait pas d'interference, et cela ne marche pas (aucune detection)... je decide donc de debrancher la led relié a IR gauche et cela ne marche pas non plus (aucune detection).
Je decide de tester avec une telecommande, et la le dispositif m'affiche bien une detection IR droit et IR gauche (généré par la telecommande).
Bref je ne comprends vraiment pas d'ou peut venir mon probleme?
-Probleme lié au capteur different de celui utilisé par l'auteur original?
-Problème de programme?
-Autre probleme?
Je me permets de poster le programme que j'ai modifier en c a partir de celui d'Irbot :
//************************************* // CCS Compiler // irb11 - Premiers pas d'irbot // Modification Test radar // Auteur : HEILIG Yves //Modification Dias //************************************* #include <16f877A.h> #fuses HS,NOWDT,NOPROTECT #use delay(clock=20000000) #use rs232(baud=115200, xmit=PIN_C6, rcv=PIN_C7) //****************** // DEFINE //****************** #define TIME 4 // TIMER=3 --> 256-3=253 pas #define VAL_18MS 360 // 360*50=18000µs #define VAL_AV 40 // 40*50 =2000µs #define VAL_AR 20 // 20*50 =1000µs #define VAL_AVP 32 // 32*50 =1600µs #define VAL_ARP 28 // 28*50 =1400µs #define VAL_STOP_D 30 // 30*50 =1500µs #define VAL_STOP_G 31 #define AV 1 #define TG 2 #define TD 3 #define AR 4 #define ROTG 5 #define ROTD 6 #define STOP 0 #define GA 0 #define DR 1 #define LED_IR_G PIN_B3 // led ir gauche #define LED_IR_D PIN_B4 // led ir droite #define REC_IR PIN_B7 // récepteur ir #define LED_G PIN_A2 // led signalisation gauche #define LED_D PIN_A1 // led signalisation droite #define SIZE 7 // taille de la table tab_marche int16 CPT_18MS; void init_timer () { set_timer0(TIME); setup_counters(RTCC_INTERNAL,WDT_18MS); enable_interrupts(INT_RTCC); enable_interrupts(GLOBAL); } int1 radar (led) { // émission d'un train de 50 impulsions à 38Khz // durée de l'émission 50*26µs=1300µs int i; int c=0; for (i=0;i<50;i++) { switch (led) { case 2 : // LEDG output_high(LED_IR_G); //eteint delay_us(13); output_low(LED_IR_G); //allume break; case 4 : // LEDD output_high(LED_IR_D);//eteint delay_us(13); output_low(LED_IR_D);//allume break; } delay_us(14); if (input(REC_IR)==0) c++; } if (c>45) return 1; // on considère qu'il y a eu retour else return 0; } void ir () { // radar ir int i; output_low (LED_G); // éteint LEDG output_low (LED_D); // étient LEDD if (radar (2)) { output_high(LED_G); // allume LEDG signalisation printf ("Radar gauche\n"); } if (radar (4)) { output_high(LED_D); // allume LEDD signalisation printf ("Radar droite\n"); } // } } //********************** // Programme principal //********************** main() { init_timer(); while (TRUE) { // boucle sans fin ir(); delay_ms(10); } }
Merci pour l'aide que vous pouvez me procurer