Barrière IR avec un seul 08M2 ?

technopujades

Senior Member
Bonjour,

Je suis en train d'imaginer un module Barrière Infrarouge avec un SEUL 08M2.

Imaginons la del IR sur la sortie C0.
Et un récepteur infrarouge type TSOP38khz sur l'entrée C3.

Voici ci-dessous le programme associé.
N'ayant pas le matériel sous la main, je ne peux donc pas tester.
Mais je suppose à 100% que cela ne fonctionne pas dû programme justement séquentiel !
Un coup il envoi le code IR puis après il vérifie ... forcement le signal est terminé ... ;(

Autre solution : utiliser le PWM en sortie C2.
Mais j'ai peur que le TSOP sature a cause du signal PWM continu !

Si quelqu'un a une idée ou des remarques, ...
Merci d'avance,

Code:
symbol varA = w0

main:
	do
  	irout C.0, 1, 1
  	irin [500], C.3, varA
  	varA = varA and 127
  	if varA = 1 then
    	high C.2
    	high C.4
  	else
    	low C.2
    	low C.4
  	endif
	loop
	stop
 

BESQUEUT

Senior Member
Comment ça en multitache ?
Avec les interruptions c'est ça ?
Houla !...
Si vous n'avez jamais fait de multitâche, on va commencer par quelques chose de simple :
Code:
[color=Navy]#picaxe [/color][color=Black]08m2[/color]
[color=Navy]#simspeed 100
#simtask [/color][color=Blue]all

start0:
do
      toggle c.0
      pause [/color][color=Navy]1234[/color]
[color=Blue]loop



start1:
do
      toggle c.1
      pause [/color][color=Navy]4321[/color]
[color=Blue]loop[/color]
Il y a deux programmes (start0 et start1)
qui vont démarrer en même temps.
Vous pouvez observer ça sur un Picaxe Réel ou dans le simulateur.
En simulation, on passe d'un programme à l'autre (bien obligé) mais considérez que les deux codes sont exécutes "en même temps".

Si c'est OK pour vous, on peut revenir à nos moutons. Votre code pourrait s'écrire comme suit :
Code:
[color=Navy]#picaxe [/color][color=Black]08m2[/color]
[color=Navy]#simspeed 100
#simtask [/color][color=Blue]all

symbol [/color][color=Black]varA [/color][color=DarkCyan]= [/color][color=Purple]w0[/color]

[color=Blue]start0:
do
      irout C.0[/color][color=Black], [/color][color=Navy]1[/color][color=Black], [/color][color=Navy]1[/color]
[color=Blue]loop
stop


start1:
do
      irin [PLAIN][[/PLAIN][/color][color=Navy]500[/color][color=Blue][PLAIN]][/PLAIN][/color][color=Black], [/color][color=Blue]C.3[/color][color=Black], varA
      varA [/color][color=DarkCyan]= [/color][color=Black]varA [/color][color=DarkCyan]and [/color][color=Navy]127
      [/color][color=Blue]if [/color][color=Black]varA [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then
            high C.2
            high C.4
      else
            low C.2
            low C.4
      endif
loop
stop[/color]
En théorie ça devrait marcher.
En pratique, le Picaxe ne sait pas vraiment faire du multitâches et on ne sait pas vraiment ce qu'il fait. Il y a des "interférences" entre les deux tâches.
Donc :
- soit vous essayez et vous verrez bien...
- soit quelqu'un qui a déjà essayé donne son avis...
Bonne chance...
 
Last edited:

PieM

Senior Member
A priori, la commande irin est incompatible avec le mutitâche, car utilise à plein temps le cœur du µC.

Dans le cas présent le plus simple est d'utiliser non pas un TSOP, mais un simple phototransistor (ou diode) IR.

alimenter la diode émettrice avec un pwm basse fréquence.
coté récepteur, utiliser un pulsin. si le résultat est = créneau du pwm, alors pas d’interruption du faisceau.

Pour réduire le temps de réaction (0.6s à 4 MHz) utiliser une fréquence de 16 MHz.

Par ex:
à 16 MHz
pwmout pwmdiv64, B.1, 255, 511 donne 244 Hz soit des crénaux de 2.05 ms

un pulsin < 2050/2.5 soit environ <900 indiquera une réception
on peut par sécurité s'amuser à mettre une fourchette:
si hors fourchette, parasite
si 0 coupure faisceau

Un TSOP coûte 1.5&#8364;
un couple IRS5 + IRE5 coûte 0.70 &#8364;
 
Last edited:

BESQUEUT

Senior Member
A priori, la commande irin est incompatible avec le mutitâche, car utilise à plein temps le c&#339;ur du µC.
C'est bien ce que je craignais. Jusqu'à présent, je n'ai jamais pu utiliser le pseudo-multitâche du Picaxe (pas plus que le Background receive) pour autre chose qu'une démo de principe. A chaque fois, il y a une limitation ou un effet de bord qui rends le truc inutilisable.
 

PieM

Senior Member
Dès qu'on veut l'utiliser en dehors d'un champ d'applications ultrasimples, c'est la galère car effectivement on ne sait pas comment se réalise le partage d'instructions élémentaires.
Toutes les fonctions avec timing sont perturbées.
 

BESQUEUT

Senior Member
Dès qu'on veut l'utiliser en dehors d'un champ d'applications ultrasimples, c'est la galère car effectivement on ne sait pas comment se réalise le partage d'instructions élémentaires.
Toutes les fonctions avec timing sont perturbées.
Cela dit, je suis surpris que M. Pujades ne semble pas connaitre ce mode.
Même si au final c'est peu utile sur un Picaxe, la possibilité de démontrer une autre façon d'écrire un programme peut avoir un intérêt pédagogique, potentiellement transposable dans un environnement plus adapté.
 

technopujades

Senior Member
La remarque me fait rire ;)
Bon déjà M. Pujades c'est aussi Pascal tout simplement ...

Effectivement si j'ai pu être au "taquet" sur le Picaxe, j'ai basculé depuis un petit moment déjà sur l'Arduino et le Rasberry toujours pour une utilisation péda avec les projets en classe.
J'ai récupéré du matos, je fais mes petits tests avec l'aide de vos remarques et reviendrai vers vous pour forcement les nouvelles problématiques ou j'espère plutôt les nouvelles solutions.
Merci en tout cas pour la réactivité et la qualité des réponses.

Quelques ressources à découvrir si vous le souhaitez dans l'encadré "Programmation" : (d'ou ma justification d'absence sur le Picaxe depuis 1 ou 2 ans ;) )
http://pedagogie.ac-toulouse.fr/technologie/technologie.php?rub=tutoriaux
 

jojojo

Senior Member
Pourquoi le multi tâches ?

Un rien de mémorisation analogique, et hop !

Déjà publié ici, mais, sais plus où, donc :

Sans titre 2.jpg

C'est en vrac, schéma et code, mais, simplissime.
 

technopujades

Senior Member
Re,

Un vrai "boloss" que je fais !!!
En regardant le schéma de #jojojo mon cerveau a fait tilt !
Schéma et type de programmation que j'ai déjà utilisé pour un capteur de présence (type courte distance) !
organigramme.jpg
Il suffit d'inverser l'état des sorties et le tour est joué ...
Je fais ça au propre pour le mutualiser sur le site ac. de toulouse.
Merci pour ce post !
 

PieM

Senior Member
Pourquoi le multi tâches ?

Un rien de mémorisation analogique, et hop !

Déjà publié ici, mais, sais plus où, donc :

View attachment 20894

C'est en vrac, schéma et code, mais, simplissime.
Bien vu!
mais pourquoi ta 10k sur la led IR ?

@Pascal
tu aurais peut être intérêt à mettre un pwmout en tête et jouer sur le pwm duty soit pour 50% soit 0
tu peux mettre ton pwm duty 0% en commun
 
Last edited:

PieM

Senior Member
Tu mets ton pwmduty 0 après tes sorties à 1 et à 0, donc en sortie de test. Mais c'est du détail !
 

technopujades

Senior Member
Hier soir match à la télé et matin pluvieux ... autant "travailler" ...
Merci à tous, la barrière IR fonctionne nikel !
Ultra simple et un minimum de composant !
Demain j'usine le typon à la commande numérique pour finaliser le module proto avant d'envoyer les modules en speudo série (une 10ene).

Dès que tout est présentable, je le mettrai en lien sur le site académique de technologie de Toulouse
http://pedagogie.ac-toulouse.fr/technologie/technologie.php?rub=supports&aff=2#Support

Attention le code ci-dessous est une exportation du module organigramme de Picaxe Editor ...
Code:
main:
label_6:	pause 500
		pwmout 2, 25, 53
		pause 10
		readadc  1,b0
		if b0< 200 then label_22
		PWMOUT 2, OFF 
		high 4
		wait 1
		goto label_6

label_22:	PWMOUT 2, OFF 
		low 4
		goto label_6

Et le schéma associé :
Schema-BarriereIR.png
 
Last edited:

jojojo

Senior Member
@Piem:

Bien vu!
mais pourquoi ta 10k sur la led IR ?


Pour une détection à très courte distance, point n'est besoin d'un gros courant dans la led. (en cas d'alim par pile, ou accus, faut rogner sur tout ...).

Avec l'aj 10k, on travaille à courant mini, pour une détection à une distance donnée.

Il est possible de faire mieux (en terme de conso), en optant pour un rapport cyclique plus petit, mais, attention à :

- Le DS du TSOP (timing)
- Le dimensionnement du PB

Content que ça ait pu dépanner quelqu'un.
 

jojojo

Senior Member
@Techno:
Le lien pièce jointe ne fonctionne pas.

Et ... (et c'est moi qui dit ça ! Rires !) Ton code est vilain. Une seule boucle, et pas de goto, sinon, l'ami Besqueut va tousser ! :eek:

Et, il aura raison.

Georges.
 
Last edited:

PieM

Senior Member
@Techno:
Le lien pièce jointe ne fonctionne pas.

Et ... (et c'est moi qui dit ça ! Rires !) Ton code est vilain. Une seule boucle, et pas de goto, sinon, l'ami Besqueut va tousser ! :eek:

Et, il aura raison.

Georges.
C'est la "traduction" du logigramme en basic qui met des goto... et des label_xx
 

jojojo

Senior Member
J'ai re-regardé le schéma, en #15.

La sortie du TSOP n'est PAS UN SIGNAL ANALOGIQUE.

Et, tel que, cela NE FONCTIONNE PAS.

On peux penser que oui. Mais, si tu mets un oscillo, en sortie, tu trouveras, non pas un état haut stable, mais de jolis créneaux.

Bon, tout dépend de ce que l'on veut en faire, mais, il est plus "propre", de filtrer la sortie du TSOP.

Piem corrigera si je me trompe, mais, le temps de traitement d'un ReadAdc doit être de l'ordre de 100µs.

Les créneaux, en sortie, vont donc tourner autour de 10Khz.

Si ta barrière ne commande que la led de visu, aucune importance.

Mais, sinon, cela peut-être gênant (Au hasard, si c'est un relais, tu vas bien l'entendre "chanter", et, il ne fera pas de vieux os ...).

Pour deux composants manquants (R-C), c'est dommage.
 

PieM

Senior Member
J'ai re-regardé le schéma, en #15.
La sortie du TSOP n'est PAS UN SIGNAL ANALOGIQUE.
Et, tel que, cela NE FONCTIONNE PAS.
On peux penser que oui. Mais, si tu mets un oscillo, en sortie, tu trouveras, non pas un état haut stable, mais de jolis créneaux.
Effectivement !
Le temps de traitement du readadc basic est de l'ordre de 750 µs.
Mais il comprend le temps d'interprétation, le temps d'acquisition , le temps de conversion. En fait, il faut considérer le temps réel d'acquisition de l'entrée ADC du PIC, qui lui est de l'ordre de 100 ns!
Donc bien inférieur à la durée d'un créneau du signal IR
Lire à coup sûr avec de l'ana, tient effectivement du miracle, sauf si la porteuse est filtrée dans le TSOP.
D'ailleurs, qu'est ce qui empêche de lire avec un irin...
 
Last edited:
Top