EspaceTrain.Com - Le Forum

Modélisme ferroviaire => Arduino et ses clones, digital, électricité, électronique, logiciels => Arduino et ses clones => Discussion démarrée par: Ph Blondé le 17 Août 2023 à 20:16:18

Titre: ATtiny45 - Flash photographe
Posté par: Ph Blondé le 17 Août 2023 à 20:16:18
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
Titre: ATtiny45 - Flash photographe
Posté par: Attiny le 17 Août 2023 à 22:03:32
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.
Titre: ATtiny45 - Flash photographe
Posté par: Alain17 le 18 Août 2023 à 19:12:00
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 ?
Titre: ATtiny45 - Flash photographe
Posté par: Ph Blondé le 18 Août 2023 à 23:46:23
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
Titre: ATtiny45 - Flash photographe
Posté par: PaulXpress le 19 Août 2023 à 06:52:11
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
Titre: ATtiny45 - Flash photographe
Posté par: Ph Blondé le 19 Août 2023 à 09:44:21
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  :)