Aller au contenu

Dithering et Intervalomètre Autonome en Arduino


Fred_76

Messages recommandés

Voici le schéma avec réglage séparé des LEDs des optos. Je peux ajuster leur intensité lumineuse via la résistance R8. Elle suffit pour les 4 Leds car les leds ne fonctionnent qu'une par une.

Idem pour les optos, je les ai regroupés sur 1 seule résistance R9, car eux aussi ne fonctionnent qu'un par un.

 

L'alimentation se fera via le port USB del'arduino nano, via un connecteur USB-A sur le boitier (plus robuste que le mini USB sur la Nano).

 

 

 

Schematic_Dithermeter_2021-06-11.png

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Ton projet est très intéressant et je vois que tu avances bien !

 

Mais dis-moi, par simple curiosité, j'ai cru comprendre que tu avais une monture Star Adventurer Mini qui propose déjà les options de dithering et d'intervalomètre, y a-t-il un avantage à fabriquer ton propre système ? Ou d'autres raisons ?

 

Dans tous les cas je te dis bravo car c'est très satisfaisant de voir un projet électronique prendre forme et je sais que ça demande de la rigueur. Hâte de voir la fin, courage ! 🙂👍

Lien vers le commentaire
Partager sur d’autres sites

Ce n'est pas forcement une bonne idée de mettre les résistances en commun, et c'est de la petite économie, il est préférable d'en mettre une sur chaque led/opto.

Pour faire varier l'intensité des leds on peut utiliser une sortie de l'arduino à la place de GND, que l'on pilotera avec un signal PWM.

Modifié par Hans Gruber
Lien vers le commentaire
Partager sur d’autres sites

Il y a 6 heures, Hans Gruber a dit :

Ce n'est pas forcement une bonne idée de mettre les résistances en commun, et c'est de la petite économie, il est préférable d'en mettre une sur chaque led/opto.

Pour faire varier l'intensité des leds on peut utiliser une sortie de l'arduino à la place de GND, que l'on pilotera avec un signal PWM.

 

Je veux bien si les LEDS peuvent fonctionner toutes ensemble. Ici elles ne fonctionnent que les unes après les autres, donc je n’appellerai donc pas cela de la "petite économie" mais juste de l'optimisation.

 

Pour piloter les LEDS en PWM, il faudrait que j'utilise 3 ports de plus. 3 pour chaque opto, 4 pour les Leds. Effectivement j'ai la place sur l'Arduino, mais ça compliquerait le circuit imprimé (beaucoup) ainsi que la programmation (un peu). Je gère seulement la luminosité de l'écran en PWM.

Il y a 6 heures, Cocatrix a dit :

j'ai cru comprendre que tu avais une monture Star Adventurer Mini

 

Oui, mais j'ai aussi une Vixen Polaris, et une Astrotrac, qui n'ont pas de dithering...

Lien vers le commentaire
Partager sur d’autres sites

Il y a 14 heures, Hans Gruber a dit :

au lieu de brancher toutes les leds en commun sur GND tu le fais sur une sortie digitale pilotée en PWM

 

Je ne comprends pas. L'alim des leds est commune avec celle des optos, sur les pins 7-8-9-10. Si je branche la GND (masse) des leds sur une autre pin, où se fera la masse ?

Lien vers le commentaire
Partager sur d’autres sites

Au lieu de relier R8 à GND on la relie à une sortie digitale. Quand cette sortie passe à 0 on est relié à GND, et la led désignée  s'allume.

Quand la sortie est à 1 on a un potentiel de 5V des 2 cotés de la led, donc une ddp de 0V, elle ne s'allume pas.

En modifiant le cycle on peut l'allumer plus ou moins fort.

Les autres leds auront une ddp qui va varier entre 0 et -5V, mais ce n'est pas grave, vu qu'elles ne sont passantes dans un seul sens.

Lien vers le commentaire
Partager sur d’autres sites

Pour la connexion à l'APN, voici les brochages classiques chez Canon :4

 

Arduino

 

On n'a pas besoin pour notre usage du contact "Focus". Il suffit donc de mettre le contact "Shutter" à la masse pour déclencher la photo.

Lien vers le commentaire
Partager sur d’autres sites

Encore une difficulté inattendue : trouver des connecteurs Jack 3.5 femelle 3 poles, RJ12 femelle et USB A à monter en façade de boîtier, pas trop chers (moins de 1-2€ pièce) et livrables en moins de 2 semaines, tout ça sur le même site histoire de ne pas payer 3x les frais de livraison.

 

Ca frise la mission impossible !!!!

 

Conrad, non, frais de livraison exorbitants

Mouser, non plus, ils n’ont pas tout.

Aliexpress, pas de livraison avant mi juillet ou alors avec des prix incohérents (genre 20€ pour une prise jack).

Wish, idem.

Amazon, idem (se sont les mêmes vendeurs qu’Aliexpress en plus cher).

 

What else ? Help !!!!

Lien vers le commentaire
Partager sur d’autres sites

Tu peux trouver sur Ebay ; certains vendeurs Français se sont spécialisés dans l'achat en gros en chine, et la revente de quelques unités avec un bénéfice à la clé. On peut ainsi se faire livrer en quelques jours au port tarif lettre et à un cout raisonnable. Quand je suis pressé c'est ce que je fais.

Lien vers le commentaire
Partager sur d’autres sites

Merci !

 

Bon, D4 ne livre en france que chez les professionnels…

 

EBay, pas trouvé le matériel…

 

Finalement je suis allé chez Conrad ou j’ai acheté un fer à souder plus fiable que le machin que j’avais. Ça dilue les frais de port.

Lien vers le commentaire
Partager sur d’autres sites

Dans le code, afin de générer des valeurs aléatoire pour le dithering, on doit initialiser la racine du générateur.

 

Dans l'aide Arduino, ils donnent ce code :

 

void setup() {
   (...)
   randomSeed(analogRead(A0));
   (...)
}

 

Où A0 est la référence à une entrée analogique "non chargée", c'est à dire non utilisée.

 

Effectivement quand on regarde la valeur retournée, celle ci flucture un peu, mais pas énormément. Sur plusieurs milliers de lectures, on ne compte qu'une 50aine de valeurs. C'est pas terrible même si ça devrait suffire.

 

Histoire d'améliorer le tirage aléatoire, j'ai donc utilisé le timer, avec la fonction millis() qui retourne le nombre de millisecondes écoulées depuis la mise en marche du boitier. Comme on doit saisir des valeurs manuellement avant de lancer la séance photo, d'une utilisation à l'autre, ce nombre sera toujours différent.

 

Le bout de code devient donc :

 

void setup() {
   (...)
   randomSeed(millis());
   (...)
}

 

Voilà !

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

@Hans Grubera raison, pour obtenir un nombre (pseudo)aléatoire il faut utiliser random(). La fonction randomSeed() ne sert qu'a initialiser la fonction qui calcule avec une certaine variabilité (si tu initialise avec la même graine (seed) alors la fonction random renverra toujours le même suite de valeur.

Dans setup() tu initialise avec randomSeed(), puis dans loop tu fait des appels à random() chaque fois que tu veux appliquer un dithéring différent (toutes les n poses par exemple, ou a chaque pose), et tu peux faire un "modulo" de la valeur random pour limiter l'amplitude. Si par exemple tu veux un nombre aléatoire mais entre 0 et 30 pixels ar exemple, alors c'est "random() % 30"

 

edit: pas besoin de faire un modulo, la fonction random() prend en argument les "min" et "max" souhaités pour générer le chiffre pseudo-aléatoire.

 

Cordialement

Lien vers le commentaire
Partager sur d’autres sites

Avant d’utiliser random() il faut initialiser la « racine » avec randomSeed(). Sinon la suite générée par random() sera toujours la même d’une séance à l’autre. C’est donc ce que je fais dans la routine d’initialisation (setup) d’Arduino.
 

Ensuite évidemment j’utilise random() pour générer les nombres aléatoires.

Lien vers le commentaire
Partager sur d’autres sites

Non il n'est pas nécessaire de l'initialiser, on peut l'utiliser directement, en fixant les bornes haute et basse en arguments.

Bien évidement ce ne sont pas des "vrais" nombres aléatoires, mais cette application ça fonctionne ; ce n'est pas grave si les nombres sont les mêmes d'une séance à l'autre.

Lien vers le commentaire
Partager sur d’autres sites

Voici l'intérieur du boitier. Modélisé avec Fusion 360. Il reste à bâtir le boitier autour.

 

Les dimensions internes sont 100 x 75 x 25. Le boitier sera évidemment un peu plus grand.

 

 

 

LCD v8.png

LCD v81.png

LCD v82.png

Lien vers le commentaire
Partager sur d’autres sites

Le 15/06/2021 à 23:57, Hans Gruber a dit :

ce n'est pas grave si les nombres sont les mêmes d'une séance à l'autre.

 

Je suis trop matheux pour ça, alors quand je veux de l'aléatoire, je m'arrange pour que ça le soit vraiment. Surtout qu'il ne s'agit ici que d'une seule petite ligne de code. Donc le code est appelé avant de lancer la séquence d'acquisition :

 

void startphoto() {
   (...)
   randomSeed(millis());
   (...)
}

 

Comme d'une séance à l'autre on n'aura pas du tout exactement le même délai entre l'allumage du boitier et le début de la séance, ça me donne une racine pour le générateur suffisament variable pour m'assurer de la non répétabilité de la séquence aléatoire d'une session à l'autre.

Lien vers le commentaire
Partager sur d’autres sites

Voilà, le modèle de la boite est fini. Je n'ai plus qu'à faire le circuit imprimé, souder les composants, mesurer les dimensions définitives, ajuster le modèle de la boite puis le faire imprimer.

 

La pièce de 1€ donne l'échelle.

 

 

 

Assemblage v7.png

  • J'aime 2
Lien vers le commentaire
Partager sur d’autres sites

Le 15/05/2021 à 01:31, olivdeso a dit :

Aussi je mettrais des diodes TVS unidirectionnelles 16V en sortie pour protéger contre les ESD et autre (diode montée en inverse entre chaque sortie et la masse)

Sinon le schéma de principe est globalement correct.


Gné ??? J’avais pas vu ce passage. En français ça donne quoi ???

Lien vers le commentaire
Partager sur d’autres sites

Ok, d’après ce que j’ai trouvé cette diode dite « de roue libre », est surtout utilisée avec les relais électromécaniques. Ici j’ai un optocoupleur, donc je n’ai pas le problème de courant induit des bobines du relais.

 

Apres, si je suis poursuivi par une Sentinelle…

Lien vers le commentaire
Partager sur d’autres sites

heu non pas besoin d'une diode de roue libre si tu ne commande pas une bobine. Besoin uniquement dans le cas d'une commande de relai ou de moteur.

 

La TVS c'est autre chose : c'est une protection contre les ESD et les tensions dangereuses pour le circuit. Une diode TVS unidirectionnelle (qui est en faite une diode Zener un peu spéciale) permet de protéger contre 2 choses:

- les inversions de polarité : la diode conduit dans le sens direct et la tension à ses bornes est limitée à 0,6V environ, ce qui protège suffisamment le circuit derrière si on se trompe de sens.

- les surtension : là la diode conduit dans le sens inverse et c'est la tension zener qui s'applique. On peut la choisir bien sur.

 

image.png.3d44aa1fcf1c2309ac119f01e29e6f45.png

 

Sur une alimentation on peut coupler ça avec un fusible (réarmable de préférence) en amont; Comme ça si la tension est trop élevée ou inversée, la diode conduit et déclenche le fusible. Il faut bien dimensionner les 2 bien sur pour que la diode résiste suffisamment longtemps.

 

C'est le cas dans les caméra QHY par exemple qui ont soit une TVS 12V seule, soit un "polyzen" combinaison d'une TVS et d'un fusible réarmable sur un seul composant.

 

Sur un optocoupleur bipolaire la tension acceptable en sortie est habituellement assez élevée, plusieurs dizaines de volts en général. On peut donc mettre une TVS avec une tension légèrement inférieure à la tension max de l'opto (par exemple une TVS 48V pour un opto 75V. Ou même nettement moins : une TVS 12V irait bien aussi.

 

Sachant que c'est pour commander un APN derrière la tension max de l'APN est 8,4V typiquement.

 

 

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation !

Vous pouvez répondre maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous pour poster avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.