Aller au contenu


Photo
- - - - -

Capteur IR et programmation


5 réponses à ce sujet

#1 dias

dias

    Nouveau membre

  • Membres
  • 7 messages

Posté 08 septembre 2010 - 05:56

Bonjour,


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 :D

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

#2 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 08 septembre 2010 - 06:26

Pour voir si des LEDS IR émettent effectivement quelque chose, il y a une astuce: prendre un camescope ou appareil photo numérique ou webcam ou autre. Tu regardes l'image filmée par le dispositif, et normalement tu vois l'éclairage IR invisible à l'oeil nu.

Attention, il est possible que ce genre de montage soit très sensible à l'éclairage ambiant, et à l'implantation des capteurs.

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#3 dias

dias

    Nouveau membre

  • Membres
  • 7 messages

Posté 08 septembre 2010 - 07:19

Merci de la réponse,


oui je connaissais l'astuce, c'est pour ca que j'ai ecrit dans mon message :

Pourtant les 2 diodes passent bien émission.


Pour la sensibilité a la lumiere j'ai essayer de nuit et de jour et ca ne change malheureusement rien au resultat :s

#4 Thot

Thot

    Membre passionné

  • Membres
  • PipPipPip
  • 327 messages
  • Gender:Male
  • Location:Toulouse

Posté 08 septembre 2010 - 09:56

Salut,

D'abord, essaie de retourner ton robot, la gauche sera ainsi à droite et vice versa ;)

Sinon, sérieusement, dans le 16f877, le port B3 est spécial

[quote]Low-Voltage ICSP Programming (LVP) is enabled by default which disables the RB3 I/O function. LVP
must be disabled to enable RB3 as an I/O pin and allow maximum compatibility to the other 28-pin and
40-pin mid-range devices./quote]
p45 du datasheet verset 4, parabole du port B.

Il faut désactiver LVP pour pouvoir jouer avec le port B3.

Autre alternative, changer de port...

Sinon ton programme est OK (il y a juste le paramètre de la fonction radar qui n'est pas typé mais CCS saurait se débrouiller tout seul je pense).

J'espère que c'est ça...

"Il n'y a rien de plus étrange pour l'homme que son image" RUR, Karel Capek
Caliban Midi - Art - Terroir et Robotique


#5 dias

dias

    Nouveau membre

  • Membres
  • 7 messages

Posté 08 septembre 2010 - 09:59

Ok pour le port B3, mais j'avais essayer a l'origine sur B5 et B6 et meme probleme :s

Pour vous le TSOP, a la place du sharp, n'a pas d'importance?

Avez vous deja vu un montage de detection de ce type avec un tsop?

#6 dias

dias

    Nouveau membre

  • Membres
  • 7 messages

Posté 10 septembre 2010 - 08:01

Je viens enfin de trouver le probleme!!!

En faite lorsque la detection doit se faire a gauche, le TSOP manque certaines impulsions donc le seuil de 45/50 pour la detection etait trop haut.

Je l'ai redescendu a 42-43 et cela fonctionne correctement

Merci a tous pour votre aide



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users