[Avis] "advanced" Ir compound eye

Yep !

Quelqu'un a-t'il experimenté ceci :

(Entre parenthèse les videos sont impresionnantes)

En vente ici + video :

http://robosavvy.com/store/product_info.php/manufacturers_id/35/products_id/1183

Le principe est plutôt interessant et comparativement aux variantes à ultrasons c'est un peu plus cheap !!!

J'aimerais avoir un retour d'experience dans un premier temps si possible ou un avis simple.

Et dans un deuxième temps, si je copie ce système, savoir si je peux à votre avis moduler les leds Ir à 40khz sur une composante 5 bits (ou plus) et ainsi augmenter la distance de détection (1/2 mètre serait déjà bien).
En effet, certaines leds encaissent pas mal d'amperage et la modulation devrait à priori me permettre d'obtenir un peu plus de puissance et donc d'efficacité et de portée.

Je suis en train de plonger dans la detection Ir et j'ai certainement loupé un chapitre ou deux et j'ai peut être mal compris les datasheets. En réference, je prends souvent radiospares (C'est un de nos fournisseurs essentiels au taff).

Merci pour vos remarques et aides.

@+

Zoroastre.

Intéressant. On s’attends presque à ce qu’il fasse Ouaf, Ouaf ! :wink:

Moduler à 40kHz peut être intéressant pour éliminer la composante lumière ambiante, comme pour les télécommande. Mais derrière il faut un filtre passe bande.
Mais sans optique, ta lumière IR va diverger dans tous les sens et après quelques centimètres “l’image” recueillie ne veut plus rien dire (“flou”)

5-bits ? je ne comprend pas ce que tu veux dire.

Sur le fait que les LEDs peuvent encaisser pas mal d’ampérage, ce n’est pas ce que j’ai constaté, en tout cas sur des LEDS RGB
Cf ci-dessous :

  • Courant max en continu : 20mA
  • Courant crete max avec un rapport cyclique 1/10 : 30mA
    Donc oui on peut gagner 50% si on limite l’impulsion à 10% du temps.

Mais peut être as tu vu d’autres chiffres pour les IR ?

Radiospares ne vend plus aux particuliers (CB) il me semble ?
Mouser à l’air pas mal mais je n’ai pas encore essayé.

Yep!

Voici un panel chez radiospares :

http://radiospares-fr.rs-online.com/web/c/optoelectronique-afficheurs/optoelectronique/ir-led/?searchTerm=led+ir&sort-by=default&sort-order=default&applied-dimensions=4294564999,%204294549875,%204294550073,%204294550026,4294550084,4294549945&lastAttributeSelectedBlock=4294644557

On peut atteindre des courants crètes de 150 mA voire plus.

5-bits ? je ne comprend pas ce que tu veux dire.

En gros, utilisation de principe de la télecommande, le phototransistor attends 5 impulsions + pause (balise codé en quelque sorte, dépourvu de toute la trame des télecommandes habituelles (ID), 7 ou 8 bits seraient peut être mieux en fait...genre on utilise le proto sony mais sans transmettre l'identifiant du proto, juste les datas.)

EDIT1 : Pour préciser, je voudrais que mon robot détecte un individu grace à une sonde PIR à 5 mètres dans un angle défini et précise sa cible dans un premier temps grace à la modulation et passe en mode classique tel que défini par la vision sitée.

EDIT2: Le truc est que j'hesite entre l'acheter tout fait ou tester tout un panel de led Ir et phototransistor afin d'affiner mes essais.

@+

Zoroastre.

comparativement aux variantes à ultrasons c'est un peu plus cheap !!!

Je ne suis pas certain que l'on donne le même sens à cheap.
Ce système par rapport aux ultrasons te donne une information de direction. Donc sur ce point c'est plus performant.
Il y avait d'ailleurs il y a quelques années un projet (je n'ai pas réussi à le retrouver) qui utilisait un procédé dans le même genre en utilisant des capteurs simples (des photodiodes si mes souvenirs sont bons) montées en réseau pour faire un "oeil de mouche". L'oeil de mouche est très simple de conception les capteurs sont ponctuels et le traitement derrière se contente de comparer le stimuli sur un capteur et ses voisins. Cela permet de détecter du mouvement avec peut de ressources. Et même de faire du tracking.

Pour la distance si tu pulses les LED tu vas effectivement pouvoir augmenter la portée mais en contrepartie tu vas compliquer la réception. Et il ne faut pas perdre de vue que la puissance est inversement proportionnelle au carré de la distance donc il faut beaucoup de puissance pour un gain modeste. En fait il faut générer des impulsions assez fines car la puissance moyenne ne doit pas excéder la puissance admissible par les diodes.
Et il ne faut pas toujours envoyer la puissance maximum car sinon tu risques d'être perturbé par les objets proches soit à cause des réflexions multiples soit tout simplement par l'éblouissement de capteurs.

Bonsoir,
Sympa la réalisation :stuck_out_tongue:

Pour RS, il existe le site RS Particuliers RS Particuliers
@+

Ok. On parle de 150mA continue.
Certaines personnes pensent que si on module en PWM le courant d'un led on peut monter le courant dans une proportion inverse au rapport cyclique.
Par exemple rapport cyclique 10% => courant crête 10x courant max continu.
Ce qui est faux. La LED crame avant...

Merci pour le lien RS-particuliers

Yep!

Pour la distance si tu pulses les LED tu vas effectivement pouvoir augmenter la portée mais en contrepartie tu vas compliquer la réception.

J'en suis parfaitement conscient mais le but initial est d'affiner la detection avant de repasser à un mode de fonctionnement classique.

(Les posts ont du se croiser)

EDIT1 : Pour préciser, je voudrais que mon robot détecte un individu grace à une sonde PIR à 5 mètres dans un angle défini et précise sa cible dans un premier temps grace à la modulation et passe en mode classique tel que défini par la vision sitée.

Par exemple rapport cyclique 10% => courant crête 10x courant max continu.

XD

Merci pour toutes vos remarques.

Naturellement et relativement à la remarque plus haut, je cherche une solution all-in-one tout en étant conscient de la relative difficulté.
Le truc est que j'ai beau accumulé les datasheets, je n'arrive pas vraiment à me décider sur 2 ou 3 modèles pouvant répondre à mes desiderata. Les leds Vishey ont l'air pas trop mal (gamme TSHG6210) ???

@+

Zoroastre.

Re,
A une époque pas si lointaine, lorsque dans certaines zones les liaisons “radio” étaient interdites. On avait réalisé des liaisons longues distances (jusqu’à 200 m) avec des émetteurs/récepteur IR.
On employait pour la partie émission des diodes IR du type SFH484 en mode impulsionnel (plusieurs ampères) et pour la partie réception on utilisait des diodes réceptrice SFH205 associé à un TBA2800 le tout dans un boitier métallique en guise de blindage.
En effet la partie récepteur IR devient relativement délicate.
Si le sujet intéresse des membres du forum, je veux bien voir dans mes archives ce qui me reste sur le sujet.
@+

Yep!

Je suis déjà tout dégoulinant d'interêt XD

@+

Zoroastre.

Je vais voir pour te trouver les schémas de l'émetteur et du récepteur pour demain.
Attention compte tenu d'un régime impulsionnel relativement sévère les condos en parallèle sur les diodes émettrices devront être d'une qualité "supérieur".
Mais là, je fais appel à ma mémoire qui est dotée en sortie d'un filtre passe bande qui en fonction de mon état, ne passe rien ou tout.
On verra tout cela demain.
@+

Certaines personnes pensent que si on module en PWM le courant d'un led on peut monter le courant dans une proportion inverse au rapport cyclique.

C'est vrai jusqu'au courant crête admissible et si la puissance dissipée reste inférieure à la puissance max. Ce qui contraint le rapport cyclique et le courant.

On employait pour la partie émission des diodes IR du type SFH484 en mode impulsionnel (plusieurs ampères)

Attention à la sécurité occulaire

Bonsoir à tous,

On employait pour la partie émission des diodes IR du type SFH484 en mode impulsionnel (plusieurs ampères)

Attention à la sécurité occulaire

Il est vrai que l'on est jamais assez prudent avec tous ces rayonnements invisibles, mais les diodes SFH484 ne sont pas les plus dangereuses et, à l'époque, aucune précaution particulière était demandé par la médecine du travail (dans un pays plus pointu que la France dans le domaine de la sécurité).

@+

bonsoir,
J’ai effectué quelques recherches dans mes archives et j’ai trouvé pour l’instant que les schémas de l’émetteur/récepteur IR. Tu pourras avec l’aide des datasheets déjà faire quelques expériences si tu le souhaites bien sur.
Normalement il doit me rester des protos d’émetteur/recepteur mais pas localisés pour le moment, avec le temps les CI vont se cacher dans les endroits les plus secrets. Je continuerai les recherches ce WE.

Comme une hirondelle ne fait pas le printemps, une diode led ne fera pas une liaison longue distance. Il faut un minimum de “densité d’IR” pour avoir des résultats satisfaisants.

Les schémas sont joints dans le zip associé au message.

Si tu as d’autres questions sur le sujet, j’essayerais d’y répondre en fonction de mes connaissances.

@+

E_R IR.zip (228 KB)

Yep!

Merci icare :wink:

Je vais étudier tout çà ces jours ci.

Je n'hesiterais pas à faire appel à la communauté si j'ai besoin d'aide ou de renseignement.

Je vais lancer une batterie de test dés ce week-end à priori.

@+

Zoroastre.

Yep!

J’ai repris une partie de mes experimentations.

J’ai donc câbler un LM358 (ampli op) sur la partie reception. Je détaillerais ultérieurement.

Mais je galère sur un truc con en fait, mais là, j’ai beau tout essayer, je dois passer à côté d’un truc simple…

J’envoie donc un signal Ir, une pause, 1ere lecture, je stoppe le signal Ir, une pause, nouvelle lecture.

Je déclare deux variables afin de définir leur lecture respective, 1ere lecture lors de l’envoi du signal, puis seconde lecture lorsque le signal est stoppé. Je peux ainsi distinguer une véritable détection d’une interférence lumineuse.

La partie qui me pose problème :

PORTB |= (1 << PB2);
pause(40);
ir1 = (PINB & 0x2);
//ir1 = digitalRead(9);
PORTB &= ~(1 << PB2);
pause(48);
ir2 = (PINB & 0x2);

Lorsque j’utilise la fonction digitalRead, j’obtiens bien des 1 ou 0, par contre, lorsque j’utilise la manipulation de bit pour lire la pinoche PB1 (0x2), ben j’obtiens 0x2…

J’ai testé également différente variante mais je n’arrive pas à obtenir l’état de la PB1

ir1 = (PINB & 0x2) ? 1 : 0; → toujours à 1
ir1 = (PINB & (1 << PB1); → 0x2
ir1 = (PINB & 0x2); → 0x2

Dans le setup()

DDRB = DDRB | B00100101;
PORTB |= B00000000;
...

Merci pour votre aide

@+

Zoroastre.

PB2 (D10) c'est la commande de l'emission IR je suppose
PB1 (D9) c'est la réception ?

j'ai rebouclé D9 sur D10 et ca marche

Bon, j'ai du ré-écrire PBn en PORTBn parce qu'il ne connait pas PBn chez moi, et pause() en delay() ....
Tu compiles pour quelle carte ?

Yep!

J'effectue mes tests sur une duemilanove.

Ce que j'ai du mal à comprendre est pourquoi lorsque j'écris :

ir1 = (PINB & 0x2);

J'obtiens la valeur binaire de l'ensemble et pas uniquement du port correspondant PB1

Normalement :

Ob00000000
&0b00000010
= 0x0

ou

Ob00000010
&0b00000010
= 0x2

Sauf que moi j'aimerais testé uniquement le bit 1 si il est à 1 ou 0, ce que je pensais faire en fait...

@+

Zoroastre.

Je suis pas sur de te suivre.

PINB te retourne les 8 pins du port B

PINB & 0x02 fait le masque avec le bit correspondant à la broche PB1
Donc la valeur attendue de (PINB & 0x02) est bien soit 0 soit 2

Yep!

C'est bien ce que je constate, je pensais en faisant le masque que je me retrouverais avec les 2 états logiques de base 0 ou 1. Ce qui somme toute est tout à fait normal !!!

En fait, j'aurais voulu retrouver la simplicité d'un digitalRead et je m'aperçois que j'ai mal traduis/compris les expliquations/tuto trouvés ici ou là...

Merci.

@+

Zoroastre.

Oui mais tu le fais bien dans ton autre ligne de code :

ir1 = (PINB & 0x2) ? 1 : 0;

Tu peux aussi faire

ir1 = ((PINB & 0x2) != 0); // retourne un boolean.