Étape 5: Firmware
La fonction principale du firmware est de contrôler le réglage de la luminosité (via VR1, port série ou la télécommande IR) et de contrôler la sortie. Au début, le réglage de la luminosité via le potentiomètre est lu via A/D(analog-to-digital) convertisseur et utilisé comme niveau de luminosité/variation initiale.Boucle principale
Le contrôleur crée la tension de référence V-REF (voir circuit « Générateur de tension de référence » du schéma), qui se connecte à l’une des entrée positive du comparateur intégré. Tension de sens C-sens est comparée à cette tension par le comparateur. Le microcontrôleur allume la Q1 pour un moment rapide, puis voir si l’inductance était assez élevé à « voyage » le comparateur (ce qui signifie que L1 actuels ont atteint ou dépassé le niveau souhaité). Si la comparaison se déclenche pas, le « temps » est augmenté et le cycle se répète jusqu'à ce que les voyages de groupe de comparaison. Si les voyages comparateur, puis le « temps » est un peu réduit, la boucle continue. Cela forme un contrôleur simple boucle de rétroaction. Essentiellement le niveau de sortie est réglé par la tension de référence.
Tension de référence est créée en émettant le signal PWM (le logiciel) du cycle d’utilisation proportionnelle à la tension désirée. Sortie de la PWM du microcontrôleur est tension serrée par une diode (à la même échelle/niveau que la tension actuelle de sens), puis lissée par R15 et C8 (filtre RC). Cette tension de référence reste entre 0 à 0.6V.
Convertisseur A/D n’est pas approprié pour la lecture de l’inductance à cause de la vitesse (manque de). Inducteur obtient des éclats courts de courant, dans les intervalles de la microseconde. Comparateur peut répondre à un pic de courant comme celui-ci, tandis que le convertisseur A/N requiert la tension d’alimentation stable lors de l’échantillonnage.
Le signal de « on-time » est généré par le module PWM hardware. Il est configuré pour générer la fréquence PWM entre 32kHz à 175kHz (configurable). La fréquence change selon le niveau de gradation. Plus la luminosité faible la fréquence. En changeant la fréquence, le cycle d’utilisation efficace de la production change également. Courbe de gradation beaucoup mieux combinant le changement de cycle de devoir au changement actuel via le commutateur mode convertisseur, est atteint.
Sortie de protection contre les surtensions
Si celle-ci est ouverte (c'est-à-dire rien n’est connecté, mauvais raccordement ou morts LED) ou trop de LEDs sont branchées en série, la tension de sortie peut devenir trop élevée pour le MOSFET à gérer. MOSFET utilisé ici peut gérer jusqu'à 60V entre Drain et Source. Une tension plus élevée peut détruire l’appareil (plutôt rapide fumer mort que j’ai vécu plusieurs fois au cours du développement).
La tension de sortie est atténuée pour que la tension est sans danger pour le microcontrôleur (sous 5V), puis nourris au module comparateur. Tension de référence interne est définie pour que la comparaison se déclenche à propos 59V (configurable dans sur les étapes de 3V). Le comparateur est connecté en interne via le matériel à « arrêt » PWM sortie quand se déclenche. Si cette sortie protection contre les surtensions fonctionne instantanément comme il se doit. (Une autre raison que j’ai besoin des comparateurs intégrés) Quand la protection est utilisé (via le matériel), le firmware, détecte et met fin à l’opération, puis clignote le voyant d’État. Seulement les cyclistes peuvent pouvoir réinitialise cette condition.
Détection de tension d’alimentation
Tension d’alimentation est lu par le convertisseur A/N et la valeur est utilisée pour compenser le niveau de sortie, afin que la puissance de sortie est conforme sur une plage de tensions d’alimentation. En outre, l’offre sur la tension protection intervient à xxV (configurable dans le firmware).
Récepteur IR
Signal de télécommande IR est détectée par le capteur et génère des interruptions. Le signal est décodé par l’ISR (interrupt service routine).
Vous pouvez contrôler le niveau de luminosité/variation, via la télécommande IR, sortie sur et en dehors. Lorsque la luminosité est modifiée via la télécommande IR, le potentiomètre est désactivé jusqu'à ce qu’il se déplace à nouveau.
Seul le protocole distant de Sony est pris en charge en ce moment (bien sûr vous pouvez toujours ajouter autres protocoles).
Boutons
Commutateurs de bouton sont interrogées sur chaque milliseconde 4 et debounced dans le firmware. Luminosité/auto-descente est mis en place pour l’instant. (mais ils peuvent faire tout ce que vous voulez)
Lorsque la luminosité est modifiée grâce aux touches, le potentiomètre est désactivé jusqu'à ce qu’il est déplacé à nouveau.
Vous pouvez également connecter des boutons externes via le port SPI pour contrôle à distance rapide et facile. (voir le schéma)
Bi-directional Control de série/SPI
Style SPI serial peut être utilisé pour contrôler ce contrôleur. Seulement des changements de luminosité/variation sont maintenant pris en charge. Les données de luminosité 8 bits sont envoyées via le même port lorsque vous déplacez le potentiomètre. Donc si vous vous connectez deux ou plus de cette contrôleurs via le port SPI, tous du contrôleur peuvent être contrôlé par le mouvement vient des potentiomètres (gang de gradation). C’est très pratique lorsque vous avez un tas de contrôleurs à la lumière d’une grande salle.
Port SPI et les commutateurs de bouton partagent les mêmes ports d’e/s, donc le firmware détermine la source du signal par la durée de l’impulsion. Étant donné que les humains peuvent seulement les boutons poussoirs si vite, les impulsions qui dépassent d’environ 47 microsecondes sont considérés comme pousser le bouton, et courts sont décodés comme signal SPI.
Le format des données est simple - envoyez simplement le niveau de luminosité au format 8 bits. C’est tout pour l’instant - peut-être élargi pour faire d’autres choses...
Open Source
Vous pouvez télécharger le code source ainsi que le fichier HEX pour programmer le microcontrôleur. Je serais ravi de voir quelqu'un qui s’étend de mon code.