Arduino contrôlée variateur de lumière (3 / 15 étapes)

Étape 3: Le logiciel, un peu de théorie

Si vous pourriez fout la théorie, mais simplement le logiciel, passez à l’étape suivante

La façon d’utiliser un variateur AC/fader est assez simple une fois que vous comprenez les bases :

Dans AC la puissance nourris à la lampe est directement lié à la superficie totale de la sinuswave, la lampe peut être réglée en n’autorisant une partie prévisible de cette sinuswave s’écouler à travers la lampe.

Comme tels nous besoin d’un point de référence sur ce sinus d’où nous calculons alors la lampe doit s’allumer.

Le point de référence plus facile à utiliser est la ce qu’on appelle « passage par zéro »: dès que la lumière passe par zéro.
Après chaque passage par zéro, il y a un demi plein de la sinuswave disponible pour envoyer par le biais de la lampe.

Ce que le logiciel doit faire est donc de détecter le zerocrossing et d’attendre pendant un certain temps sur ce sinuswave pour allumer le TRIAC.

Il y a 2 grandes fréquences nets dans le monde : 100 Hz en Europe et d’Asie, d’Afrique et de 120 Hz dans la plupart de l’Amérique (et certaines parties de la Caraïbe). Il y a 2 grandes tensions dans le monde : 110-120V et 220-240 v, mais ils ne sont pas importants pour les mathématiques ici.

Par souci de simplicité, je prendrai la fréquence de 50Hz à titre d’exemple :
50Hz est 50 vagues par seconde.
Chaque sinuswave prend donc 1000ms/50 = 20 ms (millisecondes)
Qu’il y a 2 sinuspeaks en une vague cela signifie qu’après chaque détection du zéro il y a une période de 10 ms que nous pouvons réglementer.
Devrions nous allumez la lampe directement au début de cette période, la lampe recevra toute la puissance, devrions nous le faisons à la fin de cette période de 10 ms, que la lampe ne recevra aucun ower et devons-nous à mi-chemin, la lampe vous recevrez demi-puissance.
Comme nous utilisons des TRIACs, ce que le logiciel doit faire est d’attendre le point zéro à la sinuscurve, prendre note de cela et puis attendre un laps de temps, durant cette période de 10 ms pour envoyer une impulsion pour le TRIAC.
Si elle envoie cette impulsion à 5ms, le feu brûlera seulement à mi-puissance.

Dans le Circuit, zéro la détection se faite par l’optocoupleur biphasiques et est disponible en tant que le signal X sur la carte.
Fondamentalement, il y a 2 façons pour un microcontrôleur détecter ce signal :
1-a continu 'interrogation"de la broche zéro Crossing
2-utiliser une interruption à raconter le programme qu’il y avait un passage par zéro
La principale différence entre les deux est que dans « interrogation » chaque fois que l’ordinateur passe par le biais de sa boucle principale qu'il faut vérifier le code pin. Si votre programme est occupé à faire un tas d’autres choses, il pourrait être trop tard pour le contrôle de l’axe de passage zéro, tandis que lorsque vous utilisez une interruption, il n’importe pas ce que le programme est occupé avec. L’interruption est sorte de "tapant sur l’épaule" disant « Hey regarde, quelque chose est venu que vous deviez assister à présent ».

Après que le passage par zéro est détecté, que le programme doit attendre un certain temps et puis allumez le TRIAC.
Aussi ici, cette attente peut être fait de deux manières différentes
1 - en émettant une commande de « attendre »
2-à l’aide d’une interruption de la minuterie

Encore une fois, ces deux méthodes ont leur pro et de con La commande « d’attente » (« retard » dans la langue de l’Arduino) littéralement l’ordinateur attendons le temps nécessaire et il ne peut pas faire autre chose en attendant. Si la lampe brûle à faible puissance en laissant l’ordinateur à attendre dire 9ms, cela signifie que chaque 10ms l’ordinateur est dit d’attendre 9ms : ergo il sera inactif 90 % du temps. C’est très bien si votre contrôleur est seulement utilisé pour contrôler la lampe, mais s’il doit faire d’autres choses puis le temps est compté.
À l’aide d’une interruption de minuterie résout que. Fondamentalement ce que cela fait est que le programme indique la minuterie : ¨Hey, j’ai juste entendu nous avons un passage par zéro, je dois faire autre chose, mais vous attendez 4.5ms et allumez ensuite le Triac "donc le programme s’allume c’est joyeux façon et 4.5ms (par exemple) après il a été donné avis il y a un passage à 0, la minuterie allume le TRIAC.

Interrogation: (noter que c’est un exemple approximatif pour l’illustration des bureaux de vote, évidemment il a besoin de quelques améliorations)

Interrompre le moteur:
Pour utiliser une interruption, tout d’abord nous devons mettre en place que. Sur l’Arduino qui se présente comme suit :

Ce que cela dit, c’est que l’interruption est attachée pour interrompre les 0, il va vers une fonction appelée « zero_crosss_int » et il réagit à un flanc montante sur la cheville.

Dans la fonction Zero_cross_int qui le programme grimpe à après l’interruption, nous déterminons le temps qu'il faut attendre avant de déclencher le TRIAC. Nous allons également ajouter un peu de fonctionnalités. Nous ne voulons pas seulement un ensemble de niveau qui la lampe brûle sur, nous allons ajouter quelques fonctionnalités pour réguler le niveau de luminosité en étapes.
Pour cela j’ai choisi le montant totalement arbitraire de 128 pas. Cela signifie que chaque étape est 10ms/128 = 10000us/128 = 75us (en fait c’est 78, mais arriver à cela plus tard). Le total dimtime puis est calculée à partir de 75 x (1 à 128). Le numéro entre 1-128, ce qui détermine notre niveau de gradation, nous affectons à la variable integer « gradation »

Ce qui se passe ici est que le programme calcule d’abord la dimtime (= durée d’attente avant le triac est tiré)

Puis attend cette quantité de temps, par la suite attend cette quantité de temps et elle se déclenche le Triac. Le Triac s’éteint à nouveau à ce qui suit, passage par zéro, mais nous allons déjà écrire un peu sur la broche TRIAC pour éviter l’allumage accidentel dans le prochain cycle. Il faut attendre un peu mais de savoir à coup sûr le TRIAC est activé, donc nous attendre 10us. Maintenant (10000-10) / 128 est encore 78 mais j’ai trouvé 75 fonctionne bien. N’hésitez pas à utiliser 78 bien.

La seule chose qui reste alors à faire dans le programme principal est de définir le niveau auquel nous voulons que la lampe à brûler :

Ce qui se passe ici est une simple boucle qui régule la lampe vers le haut dans une 128 pas. J’ai choisi de ne pas démarrer à 1 mais à 5 car à ce niveau, il pourrait y avoir quelques problèmes de minutage qui pourraient causer la lampe ne clignote.

Le programme ci-dessus est seulement un exemple de comment contrôler la lampe, évidemment vous voulez ajouter quelques autres fonctionnalités plutôt que d’avoir juste une lampe monter et descendre en luminosité.

À l’aide d’une minuterie :
Si vous souhaitez que votre programme à la fois efficace, vous devrez utiliser une interruption pour la détection de passage à zéro et une minuterie pour déterminer la quantité de temps à attendre.
À peu près un programme se présente comme suit :

Initialiser
Mettre en place les différentes constantes et variables, vous avez besoin et inclure les bibliothèques utilisées (par exemple, la bibliothèque de TimerOne)

Programme d’installation
SETP les broches et les 2 interruptions
Les points d’interruption de zéro-crosssing à une fonction et ainsi fait l’interruption timer

Zéro-Croix functie
Définissez une valeur booléenne indiquant si un zéro incident s’est produit

Fonction Timer
Si nous réglementons la luminosité en 128 étapes, alors la fonction de minuterie sont configurés pour être appelé chaque fois que le temps d’une étape a passé (p. ex. 75us) et vérifie ensuite si le nombre d’étapes passé est égal au nombre d’étapes ensemble. Si tel est le cas, le Triac est allumé

Articles Liés

Couvre-feu pour animaux de compagnie : Un Arduino contrôlée chatière

Couvre-feu pour animaux de compagnie : Un Arduino contrôlée chatière

Le problème: vous voulez restreindre le temps lorsque votre animal de compagnie est autorisé à aller à l'extérieur. C'est peut-être parce que le quartier n'est pas sans danger pour votre chat ou votre petit chien pendant la nuit (maraude coyotes vien
Arduino contrôle via un Service Web avec Teleduino

Arduino contrôle via un Service Web avec Teleduino

Convertir votre Arduino en une plate-forme de contrôle web sophistiquée à l'aide de Teleduino.Teleduino est un produit et un service. Une fois l'esquisse de Teleduino a été chargé sur votre Arduino (le « produit »), il se connecte ensuite au serveur
Autocollant de fenêtre numérique (Arduino contrôlée)

Autocollant de fenêtre numérique (Arduino contrôlée)

un autocollant de taille matrice de LED qui affiche des images en séquence à partir d'une carte SD, pour produire une animation signe ou « vitrophanie ». Arduino contrôlée ! Inclut également le code de Windows, Mac et Linux pour la conversion des fic
Arduino contrôlée ATX Power Supply

Arduino contrôlée ATX Power Supply

pouvez un microcontrôleur contrôler sa propre puissance ?  Eh bien presque !Une ATX alimentation, neuf ou d'un vieux PC, est un excellent moyen pour alimenter l'Arduino et autres projets de microcontrôleur.  Qui est couvert dans plusieurs ' ibles tel
ARDUINO contrôlée 12v RGB LED STRIP

ARDUINO contrôlée 12v RGB LED STRIP

Il y a un an j'ai découvert que les bandes de LED RVB sur Amazon. Être juste avant le début de la saison des festivals musique, j'ai naturellement alla droit à travailler à rendre fous lumineux clignotants festivals jouets. Les bandes non adressable
Arduino contrôlée hélicoptère

Arduino contrôlée hélicoptère

Cette instructable a été créée dans l'accomplissement de l'exigence de projet de la Makecourse à l'Université de Floride du Sud (www.makecourse.com). L'objectif de ce cours était pour nous enseigner la créativité, l'ingéniosité et l'application prati
Laser Galvo - Arduino contrôlée

Laser Galvo - Arduino contrôlée

Arduino contrôlée laser galvo. La servocommande de miroirs diriger le laser UV laissant une traînée phosphorescente sur la feuille de vinyle glow-in-the-dark.Posté sur notes.robives.comÉtape 1 :À partir d'une feuille de vinyle lumineux d'eBay et poin
Arduino contrôlée de fenêtre pour chat

Arduino contrôlée de fenêtre pour chat

je soumets cette instructable le défi de l'Arduino. N'oubliez pas de voter !Mon voisin a eu un petit problème avec son chat. Il veulent de sortir et de revenir trop souvent à l'intérieur. Habituellement, il ouvre juste la fenêtre de sa cuisine et nou
GOduino II = Arduino + contrôleur de moteur à Vitesse Variable L293D

GOduino II = Arduino + contrôleur de moteur à Vitesse Variable L293D

mises à jourGOduino II a été présenté sur dangerousprototypes.com07/04/2012, j'ai ajouté une diapositive de budget pour les lecteurs qui sont demandent où j'ai obtenu mon budget < 20 $ pour le GOduino II.INTRODUCTIONLe GOduino II est un contrôleur pr
Arduino contrôlée CNC / 3D imprimante hybride

Arduino contrôlée CNC / 3D imprimante hybride

Dame Nature fait... Nous construisons des.BuildersBot fusibles impression 3D & fraisage CNC dans rêve d'un générateur "3dprintingindustry.com"Le BuilderBot est une machine de conception ouverte, qui utilise OpenLogiciels et matériels ouvert.
Capteur infrarouge guidée Arduino contrôlée L293D Robot (partie 2)

Capteur infrarouge guidée Arduino contrôlée L293D Robot (partie 2)

Voici la partie 2 de l'Arduino contrôlée Robot L293D.Partie 2 comprend Sensors.This infrarouge fait partie d'une série d'instructables conduisant à un adepte de la ligne Robot.QRD1114 capteur infrarouge reliée à ArduinoÉtape 1: Câblage du capteur inf
Arduino contrôlée Servo Robot (Serbes)

Arduino contrôlée Servo Robot (Serbes)

quoi de mieux pour commencer à expérimenter avec open source microcontrôleurs ( Arduino ), puis en construisant votre propre robot source ( CC (SA-de)) ?Que faire avec votre serbe ?(Voici) - comment connecter votre serbe à l'internet et le lecteur su
Arduino contrôlée minuterie de cuisine

Arduino contrôlée minuterie de cuisine

Chacun d'entre vous doit ont vécu ce que vous avez quelque chose à cuire sur votre gazinière tandis que de l'autre côté vous get occupé à regarder la télévision ou obtenir une conversation profonde que vous réalisez sur la détection d'une odeur qu'il
Arduino contrôlée Car Tracking System basé sur SMS

Arduino contrôlée Car Tracking System basé sur SMS

Hi, j'ai fait un Arduino contrôlée voiture Tracking System basé sur SMS pour la voiture de mon père.Les modules utilisés sont ;Arduino nano V3.0Module GPS SkyLabModule GSM WaveComLa bibliothèque de SoftwareSerial, les TinyGPS sont utilisés pour commu