Nouvelles:

25/06/2023 : Mise à jour du forum. En cas de bug, merci de contacter le Grand Sachem

Menu principal

ATtiny45 - Flash photographe

Démarré par Ph Blondé, 17 Août 2023 à 20:16:18

« précédent - suivant »

0 Membres et 1 Invité sur ce sujet

Ph Blondé

Bonjour à tous,

Comme « ATTINY », je délègue les petits travaux à des ATtiny 85 ou 45.
Inutile de payer un Arduino pour n'utiliser qu'une ou deux broches (en entrée ou en sortie). L'ATtiny 85 ou 45 a 5 broches qui peuvent être définies en entrée (détecteur, potentiomètre, etc.),  ou en sortie (relais, LED, transistor, etc.).

Ces petites bêtes sont bien pratiques ; je viens de terminer un PN à deux voies avec sonnerie et feux routiers sur la base de 3 ATtiny 45.
La différence entre ATtiny 85 et 45 ? Le 45 a la moitié de la capacité mémoire du 85. Pour ce que l'on fait c'est largement suffisant et... c'est moins cher.



Le schéma :
C'est celui que j'ai utilisé pour faire une autre animation de la scènette : https://forum.espacetrain.com/index.php?topic=1117.435

Dans le code (le programme) la valeur de la résistance variable est lue sur la broche 7 (A1 pour le code) puis transformée en secondes. La  broche 5 (pin) bascule au moins la base du transistor qui active ensuite le circuit « flash » et on recommence la boucle...
Le schéma est joint au format pdf
FLASH AUTOMATIQUE.jpg


Le code :

// Réseau / Etang / Char allemand / Flash photographe - MAJ : 15-08-2023
// Déclenchement automatique d'un flash (résistance variable pour mise au point)
// Interface entre ATtiny45 et LED du flash par transistor (cf. schéma électronique)
// Temporisation entre 2 flash : de 5s à 60s (modifiable) - Horloge interne : 8MHz
// - Broche 1 : RESET - A LAISSER LIBRE   - Broche 8 : +5V
// - Broche 2 : Code = 3 ou A3            - Broche 7 : Code = 2 ou A1
// - Broche 3 : Code = 4 ou A2            - Broche 6 : Code = 1 - SORTIE PWM
// - Broche 4 : GND                       - Broche 5 : Code = 0 - SORTIE PWM

const int Sortie_Commande = 0;
const int Potentiometre = A1;   int Valeur_Potentiometre;   int Temporisation;

void setup()
{
  pinMode(Sortie_Commande, OUTPUT);   digitalWrite (Sortie_Commande, HIGH);
  pinMode (Potentiometre, INPUT);
}

void loop()
{
  delay (100);
  Valeur_Potentiometre = analogRead (Potentiometre);
  Temporisation = map (Valeur_Potentiometre, 0, 1023, 5, 60);
  do
  { delay (1000); Temporisation --; }  while (Temporisation >= 0);
  digitalWrite (Sortie_Commande, LOW);  delay (300);
  digitalWrite (Sortie_Commande, HIGH);
}


Et la vidéo d'illustration :

Sur ce, je vais voir « Des trains pas comme les autres », bonne soirée à tous
Philippe Blondé
Un 59 dans le 22

Attiny

Très sympa cette petite animation.

Je ne peux qu'être d'accord avec toi concernant l'utilisation de l'ATtiny85 et de son petit frère le 45. :D
Merci pour le partage d'info...

Au plaisir de te lire.

Alain17

Pourquoi compliquer le schéma en utilisant un transistor et la charge d'un condo pour allumer la led puisque la durée d'allumage est définie dans le code (delay (300)) et que la sortie peut débiter jusqu'à 40mA ?

Ph Blondé

#3
Bonsoir Alain,
Effectivement on peut brancher directement (+ résistance) la LED sur une sortie.
Mais dans ce cas, je l'ai fait, tu n'as pas l'effet flash mais celui d'un simple clignotement.

J'ai donné la base du montage flash ici : https://forum.espacetrain.com/index.php?topic=780.0

Ce n'est que l'utilisation d'un ATtiny qui diffère des commandes par simple contact.

Ce n'est pas la charge du condensateur qui allume la LED. C'est la pointe de courant qui traverse celui-ci  au départ qui produit la brusque pointe d'intensité et donne cet effet.
Ensuite le condensateur se charge et par conséquence le courant qui le traverse tend vers 0.

En rappelant qu'un condensateur vide se comporte comme un court-circuit à sa mise sous tension. D'où, d'ailleurs le conseil toujours donné de placer une résistance (quelques Ohms) en série avec le condo. Comme dit un de mes camarades de bricolage "il te remerciera de lui prolonger la vie"

Le montage est celui d'un dérivateur :

Dérivateur.jpg
Philippe Blondé
Un 59 dans le 22

PaulXpress

Petite suggestion, pourquoi ne pas utiliser le fonction "ramdon" pour la temporisation à la place de la lecture de la valeur du potar. Celle-ci serait alors aléatoire et plus réaliste qu'un flash régulier.

void loop() {
   data = random(100, 200);
   Serial.println(data);
   delay(250);
}
 
Jean-paul
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !"
Albert Einstein

Ph Blondé

Bonjour Jean-Paul,
Oui, c'est également possible.
Cependant il faut laisser au moins 1s entre deux éclairs ; le temps nécessaire à la décharge du condensateur.
Pour avoir fait des essais, j'avais noté ce minimum.

Le Serial.println est inutile dans ce cas  :)
Philippe Blondé
Un 59 dans le 22