Aller au contenu


Photo
- - - - -

Horloge avec des LEDs adressables

Tinkercad Arduino Neopixel

8 réponses à ce sujet

#1 Jeremy Roussy

Jeremy Roussy

    Nouveau membre

  • Membres
  • 17 messages
  • Gender:Male

Posté 10 novembre 2020 - 06:11

Bonjour,

 

Aujourd'hui je me lance dans un nouveau projet. Comme vous l'avez peut-être vu dans le titre, je voudrais créer une horloge numérique affichant les heures et les minutes sous le format 24h. De plus j'ai choisi d'utiliser des LEDs adressables pour pouvoir choisir la couleur d'affichage.

 

Dans un premier temps, il me faut simuler le principe d'un afficheur 7 segments, j'ai donc commencé par créer une simulation sur Tinkercad, avec une carte Arduino Uno et deux groupes de 7 LEDs. Le premier est branché sur la pin 12 et le deuxième sur la pin 11.

 

Schéma Horloge LEDs.png

 

Et voici le code permettant de contrôler les LEDs pour que l'affichage soit celui du nombre de secondes écoulées depuis la mise sur tension de la carte. Bien sûr il me faudrait juste changer le temps du "delay" pour que l'affichage soit celui des minutes. Cependant pour vérifier le bon fonctionnement du compteur, il était plus rapide de changer l'état des LEDs, toutes les secondes.

 



#2 Fluburtur

Fluburtur

    Nouveau membre

  • Membres
  • 48 messages
  • Gender:Male
  • Location:Fontainebleau

Posté 10 novembre 2020 - 07:14

Sympa, tu a l'air de vouloir utiliser des WS2812B et pour en avoir utilisé pas mal je peut te dire que c'est de la balle, tres bonne luminosité (hésite pas a avoir un regulateur de voltage externe, avec a 5V 3A c'est possible de faire tourner environs 70 des ces leds a pleine patate)

 

Je suis pas sur que ce soit nécéssaire d'avoir 2 groupes séparés mais c'est peut etre plus simple niveau code, a toi de voir mais je pense qu'un seul groupe est plus pratique.



#3 Sandro

Sandro

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 308 messages
  • Gender:Male

Posté 10 novembre 2020 - 10:14

Bonsoir,

Amuse toi bien sur ton projet!

 

Quelques remarques néanmoins :

1) fait attention au courant consommé par les LEDs : selon comme tu alimente l'Arduino, et selon les sources, le courant max que tu peux consommer sur le pin 5V peut aller de moins de 400mA à 1A. Donc si tu dépasse disons 200mA, je te conseilles soit de creuser la question, soit de prévoir un convertisseur de tension externe comme le suggère Flubutur. Un test moins théorique est de rajouter les LEDs une ar une et de vérifier que le régulateur de tension interne de l'arduino ne devient pas trop chaud : tant que tu peux le toucher sans problème, c'est bon. ATTENTION : n'essaye pas de le toucher après avoir fait tourner toutes les LEDs en même temps, tu risques de te brûler les doigts si tu consomme trop de courant)

2) dans ton code, tu fais du "calcul", puis tu fais un delay de 1000 millisecondes : un tour de boucle ne durera donc pas 1000 millisecondes, mais 1000 millisecondes + le temps du calcul : ton horloge ne tournera donc pas assez vite (la différence sera probablement assez faible, mais non négligeable, peut-être une erreur de l'ordre d'une seconde par minute). Ce problème peut se contourner en utilisant la fonction millis(), qui renvoi le temps passé depuis l’allumage de l'arduino : si tu veux partir sur cette piste mais que tu ne vois pas comment faire, alors n'hésite pas à demander.

3) L'oscillateur qui donne le signal d'horloge à l'arduino est assez bas de gamme : une rapide recherche m'a donné des erreurs de 100 à 640 ppm (ie 0.01% à 0.064%), soit entre 8 et 55 secondes par jour. Si cette dérive est trop grosse pour toi, alors il faudra ajouter un module "RTC" (réal time clock), qui est un oscillateur avec un bon quartz, et qui ne déviera que de quelques dizaine de secondes par an (comme une horloge quoi). Un module RTC étant muni d'une petite pile au lithium, il a aussi le grand avantage de ne pas perdre l'heure si l'Arduino n'est plus alimenté. Si tu ne souhaites absolument pas de dérive, alors il faudra récupérer l'heure via une source externe (GPS, internet, ...)

 

Après, le but n'est pas de te faire peur. Je te conseillerais même de commencer par ignorer mes remarques 2 et 3 pour l'instant : une fois que tu aura un montage qui fonctionne, tu pourra toujours voir si tu as envie d’améliorer la précision ou pas

 

Si tu veux de l'aide ou des explications supplémentaires sur un point, n'hésite pas à demander


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#4 Jeremy Roussy

Jeremy Roussy

    Nouveau membre

  • Membres
  • 17 messages
  • Gender:Male

Posté 13 novembre 2020 - 05:08

Merci beaucoup pour tous les retours ! Effectivement brancher toutes les LEDs en séries est pus pratique, cependant faire des groupes séparés me permet d'avoir un code dans lequel je puisse m'y retrouver (pour le moment), après pourquoi pas tenter de toutes les rassembler.

De plus merci pour le rappel qu'il est préférable d'utiliser la fonction millis plutôt que delay, j'en avais déjà entendu parler mais ça m'est complètement sorti de la tête.

Pour ce qui en est du module RTC il me semble qu'il est préférable que je l'intègre à mon système, car cette horloge sera faites pour être utilisée au quotidien. Cependant, annuler complètement la dérive ne m'est pour l'instant pas nécessaire (à réfléchir pour plus tard).

 

Bref avant tout il faut que je règle le problème du courant.

 

Encore un grand merci pour votre aide ! 



#5 Jeremy Roussy

Jeremy Roussy

    Nouveau membre

  • Membres
  • 17 messages
  • Gender:Male

Posté 14 novembre 2020 - 04:07

Bon je me suis renseigné et je pense que je vais régler le problème du courant en utilisant un régulateur de tension. Notamment en utilisant un LM323T qui prend en compte une tension entrée entre 7,5 et 20V et qui délivre une tension de sortie de 5V avec un courant de 3A maximum.

 

Pour plus d'information : https://fr.rs-online...eaires/6868726/

 

Et voici le schéma intégrant ce composant :

 

Schéma Horloge LEDs et régu..png



#6 Sandro

Sandro

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 308 messages
  • Gender:Male

Posté 14 novembre 2020 - 04:58

Bonjour,

fais attention à deux points avec ton convertisseur de tension :

- le LM323T n'est plus disponible chez RS (mais peut-être ailleurs)

- le courant de 3A annoncé est sous réserve de non sur-chauffe. Si tu ne mets pas de dissipateur thermique, tu aura beaucoup moins de courant que ça. La température max de la jonction est TJ_max=125°C, la résistance thermique vers l'air ambiant est Rth_JA=50 °C/W. Si on suppose une température de l'air de TA=25°C, on a donc une puissance max dissipable par le composant de P_max=(TJ_max-TA)/Rth_JA = (125-25)/50=2W

Comme le LM323T est un régulateur linéaire, le courant de sortie est quasiment identique au courant d'entrée, mais la tension est moindre. La différence est dissipée en chaleur.

P_dissipé=I*(Vin-Vout) soit Imax=P_dissipé_max/(Vin-Vout)

Si on prends P_dissipé_max=P_max, alors on a Imax=2/(9-5)=2/4=0.5A

 

Sans dissipateur, tu pourra au maximum utiliser 0.5A au lieu des 3 annoncés (en supposant que tu alimentes ton montage depuis une pile 9V, si tu l'alimentes en 12V, c'est encore pire)

Donc soit il te faut un dissipateur thermique, soit tu peux prendre un convertisseur basé sur du hachage, comme celui-ci : https://www.robot-ma...12v-3a-210.html


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#7 Fluburtur

Fluburtur

    Nouveau membre

  • Membres
  • 48 messages
  • Gender:Male
  • Location:Fontainebleau

Posté 14 novembre 2020 - 05:09

D'habitude je prend les petits regulateurs a decoupage pas cher, ça fonctionne bien.

 

Image(s) jointe(s)

  • DSC_4093.JPG


#8 Jeremy Roussy

Jeremy Roussy

    Nouveau membre

  • Membres
  • 17 messages
  • Gender:Male

Posté 21 novembre 2020 - 05:39

Bonsoir à tous, aujourd'hui je post le code modifié incluant la fonction millis(). Pour la suite je pense décomposer la fonction principale en plusieurs sous fonctions pour que la lecture soit plus simple.

 



#9 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 911 messages
  • Gender:Male

Posté 22 novembre 2020 - 08:46

Dans l'IDE de l'Arduino, dans le menu Edition, tu as la commande "Copier pour le forum".

Puis, tu fais un Coller.





Répondre à ce sujet



  



Aussi étiqueté avec au moins un de ces mots-clés : Tinkercad, Arduino, Neopixel

0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users