Variation de luminosité d'une del

pdevisme1

Senior Member
Bonjour, voilà mon problème : je voudrais faire varier l'intensité lumineuse d'une led ( en sortie 1 ) en fonction de l'intensité lumineuse de la pièce captée à l'aide d'une LDR ( en entrée analogique 0 ) à l'aide de la fonction pwmout. En gros, plus l'intensité de la pièce est élevée plus la led éclaire et vice/versa ( voir la vidéo disponible içi : http://vimeo.com/21595100 ).

Toujours d'après le même site, j'ai fait le programme en pièce jointe sur Programming Editor.

Le problème est qu'une fois le programme téléchargé dans l'interface, rien ne se passe, le led ne s'allume même pas... mais j'ai regardé la vidéo avec attention : dans la vidéo, lorsque la ldr est cachée la valeur de b0 diminue, moi c'est l'inverse b0 augmente. Je pense savoir d'où vient le problème, dans le montage de la ldr, moi, je prends la tension aux bornes de la ldr sur la vidéo ce doit être aux bornes de la résistance en série avec la ldr.

Le problème viendrait-il de ce "petit détail" ? Même avec cette inversion, l'intensité lumineuse de la led aurait dû varier quand même, non ?

Pour être sûr, j'ai testé le led seule, le ldr seule, les deux fonctionnent parfaitement.

J'utilise un 28X1 et un uln en sortie.

J'espère avoir été le plus clair possible.

Merci d'avance.
 

Attachments

PieM

Senior Member
Bonsoir,

lorsque la lumière diminue, la résistance d'une ldr augmente.
ce que vous voulez c'est une tension (comprise entre la masse et l'entrée ana !) qui diminue quand la lumiere diminue. Il faut donc que votre schéma soit une LDR liée à 5V en série avec une résistance liée à 0V.

D'autre part, la valeur transmise au pwm est rarement celle lue sur l'entrée ana qui elle varie de 0 à 255.
Il y a une mise à l'échelle à faire.
la commande pwmout 1,255, b0 n'est à mon avis pas adaptée.

Quelles sont les tensions mini et maxi que vous avez avec votre montage , à l'entrée ana ?
 

pdevisme1

Senior Member
Bonjour,

(comprise entre la masse et l'entrée ana !)
Oui c'est bien ça ( voir pièce jointe ) au détail près que la tension sur l'entrée analogique est celle aux bornes de la LDR et non aux bornes de la résistance comme recommandé dans les manuels.

Quelles sont les tensions mini et maxi que vous avez avec votre montage , à l'entrée ana ?
Je n'ai pas de multimètre içi, je mesure ça dès lundi.

J'ai essayé ce programme parce que je suis "tombé" dessus "par hasard". Si ce genre de programme ressemble plus à du "bricolage" ( sans critiquer, je ne sais pas faire mieux ), peut-être avez-vous une solution plus simple ou plus "académique" pour répondre à ce genre de problème ?

Merci pour le temps que vous passez sur mes problèmes.
 

Attachments

PieM

Senior Member
Bonjour,

Vous avez fait l'inverse de ce qu'il fallait faire ...
relisez ce que j'ai écrit: "une LDR liée à 5V en série avec une résistance liée à 0V.

Il faut ensuite établir une règle de proportionnalité afin qu'aux mini/maxi de la luminosité ambiante correspondent des valeurs mini/maxi d'éclairement de la led.
Ceci ne sera possible qu'en connaissant ces différentes valeurs suite à l'expérimentation.
 

pdevisme1

Senior Member
Bonjour,

Vous avez fait l'inverse de ce qu'il fallait faire ...
relisez ce que j'ai écrit: "une LDR liée à 5V en série avec une résistance liée à 0V.
QUOTE]

Oui, c'est ce que j'ai essayé d'expliquer au #1.

J'ai refait mon circuit LDR + Résistance mais cette fois dans le bon sens... je grave, soude et réalise les mesures lundi si j'ai un peu de temps.

Merci. A lundi.
 

pdevisme1

Senior Member
Bonjour, volià j'ai refait mon circuit Résistance + LDR, dans le bon sens cette fois-ci...

J'ai donc mesuré la tension au niveau de l'entrée analogique voici les résultats :

- 3.60 V lorsqu'il fait jour
- 0.15 V lorsqu'il fait nuit

Merci d'avance.
 

PieM

Senior Member
Bonjour,

Donc si la commande readadc est utilisée elle va retourner une valeur x d'environ 7 pour 0.15 V et 184 pour 3.60V.
à ces valeurs doivent correspondre un éclairement de la led de 0 à 100%

Si on prends un pwm de 4000 Hz, la commande sera de pwmout 1, 249, y, avec y variant de 0 à 1000 dans ce cas.

l'équation la plus simple approchée sera de y = (x - 7) * 5
Attention que l'argument Y doit être une variable de type word !

ce qui en programme donne :

Code:
pwmout 1, 249, 500  'initialisation du pwm avec une valeur moyenne

do
[INDENT]readadc 0, b0
w1 = b0 - 7 * 5
pwduty 1, w1[/INDENT]
loop
pour une solution qui demanderait plus de précision, il faut déterminer l'équation de la droite passant par les deux points mini (x,y) et maxi (x,y),.
soit Y = (Ymax - Ymin) / (Xmax - Xmin) * ( X - Xmin) + Ymin ce qui n'est pas toujours facile avec des entiers ! ...
 

pdevisme1

Senior Member
Bonsoir, pour les équations c'est OK j'ai bien compris.

Pour la programmation ( déjà je "programme" en flowchart mais je devrais trouver ), j'ai deux petites questions : comme vous avez mis w1 = b0 -7 *5 je suppose que pour les variables de type word on ne peut pas mettre de parenthèses, n'est-ce pas ? Ensuite, je suppose que pwduty est l'équivalent de pwmout lorsqu'il s'agit de "proportionnalisé" cette commande à une variable ?

Merci pour votre aide, j'essais en flowchart dès demain.


Pour la programmation, je fais ça en flowchart, je vais voir ça demain.
 

PieM

Senior Member
Bonjour,

On ne peut pas utiliser les parenthèses avec les Picaxes, et les opérateurs n'ont pas de priorité, le calcul se faisant toujours de gauche à droite. Quel que soit le type de variable.

Oui pwmduty est à employer de préférence à pwmout dans une boucle (si on ne change que le duty). Il n'y a pas de réinitialisation du timer avec. A condition d'avoir au début mis un pwmout pour fixer la fréquence utilisée.

Question flowchart, je ne suis pas adepte. En cas de problème, je connais quelques pros qui vous aideront ... :)
 

PapyJP

Senior Member
.........pour une solution qui demanderait plus de précision, .....la droite..........
En toute rigueur est-ce une droite ?
J' en doute car:
1/Dans une LDR, la réponse en courant I en fonction du flux lumineux ( I = f(flux) ) n' est pas linéaire.
2/Dans une LED, la réponse en flux lumineux en fonction du courant I ( flux = f(I) ) n' est pas linéaire
( Sans compter que la réponse de ces composants est très sensible à la température, à base de semiconducteurs ).

Je sais, je pinaille, c' est inutile pour le Pb posé !
Mais je ne peux m' empêcher d' être rigoureux.
 
Last edited:

PieM

Senior Member
c' est inutile pour le Pb posé ! Mais je ne peux m' empêcher d' être rigoureux.
Donc vous avez la réponse à votre question ...

De toute façon puisque l'équation donnée était déjà celle d'une droite, quand je parlais de précision, ce n'est pas dans la linéarité de la réponse LDR/LED, , mais dans la prise en compte précise des mini et maxi.
 

pdevisme1

Senior Member
Bonjour, je n'en demandais pas tant.

Je me doutais bien que la variation de la résistance de LDR n'était pas linéaire mais pour mon problème une telle précision n'était pas nécessaire.

J'ai essayé de programmer en Flowchart mais j'ai quelques problèmes pour retrouver le code proposé. Je vais essayer en basic demain, ça me fera un bon exercice...
 

PapyJP

Senior Member
1/ S' il ne s' agit que de la prise en compte du mini et maxi, Ok !
Mais vous postulez que c' est une droite entre ces deux points de mesure.
J' ai émis un doute motivé sur cette affirmation, sans plus.
Par deux points, on peut faire passer une foultitude de courbes !

2/ J' ai parlé de flux lumineux sans référence à l' oeil. Simplement le loi d'Ohm.
Autant d' yeux autant de courbes de réponse.
La courbe étalon de la CIE est statistique, ne concerne que la réponse spectrale d' une population sans pb de vue et n' est valable que dans des conditions d' éclairement bien précises (*)
Il y a des daltoniens et d' autres insensibles aux couleurs ( achroma...qqchose ).
(*) Pour être sérieux, consultez les courbes de Purkinge qui déterminent la sensibilité spectrale de l' oeil en fonction de l' éclairement ( qui s'explique par la sensibilité différenciée des cônes et des batonnets suivant cet éclairement ).

Je pensais élever un peu le débat en y ajoutant un peu de rigueur.
Il semble que je me sois trompé.
 

PieM

Senior Member
Je pensais élever un peu le débat en y ajoutant un peu de rigueur.
Je suis personnellement très désolé de ne pas avoir le niveau requis pour vous accompagner dans cette "élévation du débat".
Je ne faisais que répondre d'une façon pragmatique au besoin soulevé par notre ami pdevisme, sans avoir jugé qu'y était sous entendu un débat sur le sexe des leds.
Incompétence et manque de rigueur mathématique de ma part, je vous l'accorde.

J'espère simplement que ma vision des choses au ras des paquerettes pourra apporter un peu de lumière (de longueur d'onde non définie) à la question posée... :rolleyes:
 

BESQUEUT

Senior Member
Il semble que je me sois trompé.
Que non !
Et PieM non plus d'ailleurs en donnant une solution très approchée, mais bien suffisante.

Si on veut aller plus loin :
En gros un tel dispositif ne peu guère donner que quelques indications subjectives :
- nuit => LED éteinte
- un peu de lumière ==> LED à peine éclairée
- lumière permettant la lecture d'un livre ==> LED normalement éclairée
- lumière du jour => LED au maximum admissible.
Le plus simple me semble être de relever expérimentalement les tensions correspondant à ces 4 états.
(pour le premier, on ne se contentera pas de 0V, 0V mais on ira :
- pour la LDR jusqu'à la tension correspondant au maximum de lumière admissible pour considérer que l'on est dans le noir,
- pour la LED jusqu'au maximum de tension avant qu'un éclairement soit visible.)
Ce protocole permet de s'affranchir de tous les biais fort bien décrits par PapyJP.
Ensuite, il faudrait écrire un programme qui intègre ces données...
 

PieM

Senior Member
- pour la LDR jusqu'à la tension correspondant au maximum de lumière admissible pour considérer que l'on est dans le noir,
- pour la LED jusqu'au maximum de tension avant qu'un éclairement soit visible.)
Je vous trouve quelque peu subjectif quant à l'appréciation du noir et d'un éclairement visible, mon cher ! Je pense que l'utilisation d'un photomètre apporterait plus de rigueur ... :D
Bon je sors ... :(
 

jojojo

Senior Member
quant à l'appréciation du noir

Hé !!!
Pas de racisme, je vous prie ! :eek:

Nous sommes une communauté éclairée ! :cool:

Hé hé ... C'est vrai qu'on rigole un peu, là, mais ça fait du bien.:rolleyes:
 

pdevisme1

Senior Member
Bonjour à tous, en plus de ces compétences en matière de Picaxe, Piem a de l'humour ! Excellent !

Je suis personnellement très désolé de ne pas avoir le niveau requis pour vous accompagner dans cette "élévation du débat".
Je ne faisais que répondre d'une façon pragmatique au besoin soulevé par notre ami pdevisme, sans avoir jugé qu'y était sous entendu un débat sur le sexe des leds.
Incompétence et manque de rigueur mathématique de ma part, je vous l'accorde.

J'espère simplement que ma vision des choses au ras des paquerettes pourra apporter un peu de lumière (de longueur d'onde non définie) à la question posée... :rolleyes:
J'avais oublié de préciser que j'étais myope, je ne sais pas si ça peut changer quelque chose à mon problème...

Comme quoi, un simple petit problème technique peut soulever bien des débats !

Mais comme je précisais plus haut, je n'en demandais pas tant.

Merci à tous.
 

pdevisme1

Senior Member
Bonjour, voilà j'ai essayé en flowchart ( faute de ne pas savoir faire autrement... ), mais ça ne fonctionne pas. La luminosité de la led ne varie pas...

Je joins mon programme, si quelqu'un voit quelque chose de louche, qu'il me fasse signe.
 

Attachments

PieM

Senior Member
Bonjour, voilà j'ai essayé en flowchart ( faute de ne pas savoir faire autrement... ), mais ça ne fonctionne pas. La luminosité de la led ne varie pas...

Je joins mon programme, si quelqu'un voit quelque chose de louche, qu'il me fasse signe.
Bonjour,

Vous êtes sûr que votre flowchart est bien traduit, car il me semble que les connexions de l'étape pwmout sont défectueuses.
Sinon, quelles valeurs lisez vous en debug de b0 ?

Essayez ce programme en faisant un copié collé dans PE:


Code:
#picaxe 28X1
pwmout 1, 249, 500  'initialisation du pwm avec une valeur moyenne

do
[INDENT]readadc 0, b0 
b0 = b0 min 7 
w1 = b0 - 7 * 5
debug
pause 500 
pwmduty 1, w1[/INDENT]
loop
J'ai ajouté une ligne b0 = b0 min 7.
Elle fait en sorte que la valeur de b0 ne peut être inférieure à 7 (même si la nuit est plus noire que noire :) ) ce qui évite tout valeur négative dans le calcul suivant.
 
Last edited:

BESQUEUT

Senior Member
Non mais quelle idee !!!

J'ai ajouté une ligne b0 = b0 min 7.
Elle fait en sorte que la valeur de b0 ne peut être inférieure à 7
Merci à PieM qui vient d'attirer mon attention sur un énorme piège :
dans tous les autres BASICs, l'opérateur MIN prends le MINIMUM de deux valeurs.
Le Picaxe fait exactement l'inverse !
(et vace versi pour l'opérateur MAX)
 

pdevisme1

Senior Member
Bonjour, j'ai essayé en copiant-collant votre code dans PE, même chose.

Vous trouverez en pièce jointe la traduction en basic de mon programme rédigé en flowchart. Non les connexions ne sont pas défectueuses, c'est juste un problème d'affichage.

Pur les valeurs de b0 ( avec mon programme ) :

- jour b0 = 195,
- nuit b0 = 0 ( b0 = 7 avec votre programme )
 

Attachments

PieM

Senior Member
je ne comprends pas car ce programme est correct ...

envoyez en permanence un pwmout 1, 249, 500 et regardez avec un multimètre la tension que vous lisez en sortie du picaxe.
Vous êtes certain de vos connexions ? votre led avec la résistance est bien connectée à +5V en sortie de l'ULN ?
 

pdevisme1

Senior Member
Bonjour, maintenant ça fonctionne. Après le changement de la led tout est rentré dans l'ordre...

Merci bien pour votre aide.
 

PapyJP

Senior Member
to BESQUEUT
C 'est en effet trés subjectif.
Peut-on comparer la lumière ambiante d' une pièce, diffusée dans 4 Pi, solaire ou artificielle, avec ses ombres et ses lumières, avec celle d' une LED ( monochromatique ou polychromatique ) émise dans un cône et où le flux max est dans l' axe ?
Sans doute s' il ne s' agit que de comparer le min et le max en deux endroits et dans des directions parfaitement définis.
Pour le problème posé, il me semble que c' est une question de sensation ressentie dans une configuration donnée.
Votre approche me semble trés raisonnable.

to PDEVISME1
Le fait d' être myope ne modifie pas votre sensibilité spectrale qui est... ce qu' elle est.

to PieM ( hors sujet, perso )
J' ai apprécié votre réponse pleine d' humour.
Mais je suis chagriné de la forme de votre réaction car faire de l' humour est parfois, et particulièrement dans le cas présent, une façon de se dégager d' une situation embarrassante.
Si c' était le cas, je ne peux l' accepter telle quelle.
Alors soyons clair et mettons les choses au point :

1/ Sur ma démarche.
Je ne juge personne, je n' attaque personne.
Je ne cherche pas à mettre quiconque dans l' embarras ou dans une situation de malaise et n' ai pas de leçon à donner.
Je ne cherche pas à "briller".
Par contre, si une proposition est fausse ou incomplete je tente de la corriger ou de la compléter avec le tact qui me caractérise ( coups de violons ... ).
N' étant pas un expert en Basic, je ne me mêle jamais de soft.
En Physique et en Electronique je peux, parfois.

2/ Sur le fond.
Fallait-il vous faire remarquer que la solution que vous avez proposée, certes pertinente, n' était qu' approchée ?
Oui, j' en suis persuadé.
Et, comme vous le saviez aussi bien que moi, vous n' avez pas à en prendre ombrage.
Je n' ai ni critiqué ni moqué. J' ai ouvert le débat, sans plus.
Par essence, les posts sont courts et vont à l' essentiel.
L' inconvénient est qu' ils peuvent, bien que répondant au problème posé, manquer de rigueur et faire croire à l' unicité de la solution proposée.
Ceux qui ont quelques connaissances avancées sur le sujet ne peuvent s' en satisfaire. C'est mon cas.
Si j' ai souhaité ( et souhaite encore ) " élever" le débat sur des sujets que je connais, c' est que je pense ( peut-être à tort, à vous de juger ) que tout esprit curieux , même s' il a des connaissances avancées, souhaite étendre ou completer encore et encore ses connaissances sur le sujet qui le passionne.
Donner des précisions, des extensions, des mots-clé est une façon de procéder pour faire réfléchir et éveiller la curiosité.
Aprés, pour ceux qui le souhaite, les bouquins et Internet sont là.

3/ Sur votre réaction.
Bien qu' humoriste, vous semblez être un peu " soupe au lait " ===> " je sors ..." C' est digne de Cyrano de Bergerac !
Ne faites pas le modeste !
Are you fishing for compliment ? Ok, en voici :
Vous avez parfaitement conscience d' être reconnu, sans conteste, comme celui ( expert, gourou, grand prêtre, autorité, ... ) qui, sur le Forum francophone (*), connait le mieux le hard et le soft des Picaxes ( violons ... ). . Il n'y a aucun doute la desssus ( re-violons... )
La preuve ? : vous ne posez jamais de problème mais, par contre, vous répondez toujours avec pertinence à toutes les questions ( encore violons ... ).
A chacun sa spécialité et son niveau : votre truc ce sont les Picaxes, mon truc c' est un mix d' optique et d' électronique ultra-rapide.
Cette dualité doit-elle entrainer des conflits ?
Bien sûr que non ! elles doivent, si besoin, se completer.
(*) Sur un autre Forum, j' admire aussi votre challenger, Westaust, et particulièrement ses tutoriaux qui n' existent malheureusement pas chez nous à ma connaissance.

4/ Sur la forme.
RAS

Ouf ! gros travail pour vous répondre mais je ne le regrette pas s'il peut dissiper ce que je considère comme un malentendu..
Si je vous ai choqué, je m' en excuse, ce n' était pas mon but. PapyJP
 
Last edited:

PieM

Senior Member
car faire de l' humour est parfois, et particulièrement dans le cas présent, une façon de se dégager d' une situation embarrassante.
C'est donc votre perception des choses ? Je vous rassure, la situation était nullement embarrassante pour moi, bien que je ne sois spécialiste en rien, ni même en Picaxe ni en Basic !

Dans le cas présent, j'essayais de répondre simplement à une question simple posée sur un forum Picaxe par un professeur qui travaille avec des élèves de collège et qui est face à un problème de hard et de soft sur un picaxe.

Si les digressions sur le sujet doivent conduire à la résolution d'équations polynominales du N ième degrés (que je vous laisse le soin de déterminer) je sais faire aussi avec d'autres µC que les Picaxes, et sur d'autres forums, mais je doute de l'intérêt dans ce cas précis.

Je pensais élever un peu le débat en y ajoutant un peu de rigueur
Pour le problème posé, il me semble que c' est une question de sensation ressentie dans une configuration donnée.
Tout ça pour ça, aurais-je envie de dire ...

L'approche que propose Besqueut est très certainement la plus judicieuse. Elle débouchera néanmoins sur une table de correspondance de points (définis subjectivement :rolleyes: ) et une interpolation linéaire entre ces points. Mais est ce bien ce qui est recherché avec des élèves de collège et programmeurs non aguerris ?

Je suis désolé, mais je continuerai à apporter mon aide vers une solution satisfaisante pour l'auteur du fil, quand je le peux, même si le manque d'élévation et de rigueur doit vous choquer parfois.

Concernant les tutoriaux, j'en ai vu d'excellents réalisés par des profs qui font un travail remarquable avec leurs élèves, cible principale des Picaxes ...

Ah! dernier point : je suis très peu sensible aux violons. :) Un problème de fréquences sans doute ...
 

jojojo

Senior Member
Bon. Purement philosophique, hein !

La participation à un forum, quel qu'il soit, est (devrait être ?) le partage des connaissances.

Une règle préliminaire s'impose, à mon sens : Adapter son apport au contexte général.

Donc, vrai qu'un élève de quatrième est assez peu porté sur la courbe de sensibilité chromatique de l'oeil humain, ou de la courbe de rendement d'une led.

Son prof doit donc d'abord l'INTERRESSER ! (si on veut que ça progresse). Et pour ça, il faut que ça fonctionne.

D'ou l'intérêt de ce genre de questions.

Et, si la rigueur est indispensable, il va falloir oublier Newton, et passer directement à la relativité. Pas possible.

Ou encore, oublier les PICAXES, pour passer aux 64 bits... Non.

Ceci n'est que l'opinion d'un autre (récent, mon tiot n'a que trois ans) Papy, qui s'efforce, modestement, d'adapter sa rigueur a ses lecteurs.

Comme j'aime bien ce forum, je voulais le dire.

Cordialement.
 

PieM

Senior Member
Pur les valeurs de b0 ( avec mon programme ) :

- jour b0 = 195,
- nuit b0 = 0 ( b0 = 7 avec votre programme )
Compte tenu des valeurs qui correspondent à une tension de 0.15v à 3.8v et du fait que votre résistance série est de 10k, la LDR varierait entre environ 3 k et 320 k si j'ai bien calculé.

Dans ce cas, afin d'optimiser l'étendue de mesure vue par l'entrée ana, il serait souhaitable de changer la R 10k par une de 33k.
Les tensions vues par le picaxe passeraient de 0.15 à 0.47 pour le mini et de 3.85 à 4.58 pour le maxi soit plus de 10% de gain sur l'écart.
en nombre de points du readadc, cela se traduit par 23 à 234 au lieu de 0 à 195.

La résistance optimum R à mettre en série avec un capteur résistif RC a pour valeur la moyenne géométrique des mini/maxi du capteur. soit R = racine (RCmin * RCmax) d'où mon 33k .

Mais c'est peut être du pinaillage ... :)

maintenant ça fonctionne. Après le changement de la led tout est rentré dans l'ordre...
c'est bien là l'essentiel !
 

pdevisme1

Senior Member
Bonjour tout le monde,

Compte tenu des valeurs qui correspondent à une tension de 0.15v à 3.8v et du fait que votre résistance série est de 10k, la LDR varierait entre environ 3 k et 320 k si j'ai bien calculé.

Dans ce cas, afin d'optimiser l'étendue de mesure vue par l'entrée ana, il serait souhaitable de changer la R 10k par une de 33k.
Les tensions vues par le picaxe passeraient de 0.15 à 0.47 pour le mini et de 3.85 à 4.58 pour le maxi soit plus de 10% de gain sur l'écart.
en nombre de points du readadc, cela se traduit par 23 à 234 au lieu de 0 à 195.

La résistance optimum R à mettre en série avec un capteur résistif RC a pour valeur la moyenne géométrique des mini/maxi du capteur. soit R = racine (RCmin * RCmax) d'où mon 33k .

Mais c'est peut être du pinaillage ... :)
Merci pour ces précisions, je vais donc regarder à changer la résistance.

Un petit mot pour préciser quelques petites choses à PapyJP ( d'où peut-être le malentendu dans les messages précédents ) : mes montages s'adressent à des élèves de collège ( 14-15 ans en gros ) et je débute en Picaxe ( programmation et montage électronique ). Ce qui fait que je me contente ( pour l'instant ) de solutions qui peuvent paraître "approximatives" pour des spécialistes mais qui conviennent parfaitement pour le public visé. Ce qui ne m'empêche pas de lire et de profiter de toutes les contributions apportées par tous.

c'est bien là l'essentiel !
Tout à fait !

Encore merci à tous.
 
Top