Étape 5: Système de contrôle
·
Schéma fonctionnel
Concernant le schéma-bloc, ce projet a été initialement conçu comme un actionneur du robinet flotteur interrupteur commandé ball utilisé pour vidanger et laissez remplir un remplissage lentement réservoir similaire à de nombreux projets dans mon labo. L’Arduino reçoit les signaux d’entrée de trois interrupteurs à flotteur, évalue leur combinaison, détermine l’État requis de la vanne et tourne le servo et affiche l’état de la vanne sur l’écran LCD. Le circuit de commande entière est propulsé par un 6.0VDC externe batterie NiMH.
· Câblage
Veuillez consulter le diagramme Fritzing et les photos du câblage. Pour résumer le câblage, un 6.0VDC batterie NiMH (représenté par la pile AA dans le diagramme,) alimente l’Arduino, servo et afficheur LCD via l’un des rails du pouvoir sur la planche à pain. L’Arduino Vin et sol pins sont câblés à la puissance et au sol de rails respectivement (ce mélange va détruire l’Arduino). L’Arduino est également connecté à: 3 flotteur interrupteurs (représentées par les commutateurs d’inclinaison dans le diagramme) au numérique (entrée) broches 2, 3 et 4 ; le câble de signal du servo au pin PWM 9 ; et aux pins SDA et SCL de l’écran LCD affiche un SDA et SCL épingles.
J’ai percé de huit petits trous dans le couvercle de mon boîtier et chaud collé certains cavalier femelle-femelle il en afin que l’utilisateur peut changer les interrupteurs à flotteur sans démonter quoi que ce soit. J’avais souder quelques bouts mâles cavalier à mes interrupteurs à flotteur pour rendre les insérer dans la boîte et d’un clin d’oeil. Dans cette itération, j’ai voulu garder la batterie externe à des fins de recharge et de la sécurité. Il est simplement tenu avec Velcro pour un des supports. Il alimente le système similaire pour les interrupteurs à flotteur, en branchant à cavalier externe collé dans le couvercle du boîtier.
· Code
Pour résumer le code de l’Arduino, se compose d’un script principal et appelle seulement trois fonctions simples. Le script principal : importe les bibliothèques wire.h, LiquidCrystal_I2C.h et servo.h et instancie les objets ; définit les broches 2, 3 et 4 comme les broches d’entrée numériques ce sens l’état de l’interrupteur à flotteur ; Pin 9 qualifie d’une broche de sortie PWM utilisée par l’objet servo ; définit des variables pour contenir les États des interrupteurs à flotteur, servo objet min. et max. fréquence PWM (0 et 1023) correspondent aux positions ouvertes et fermées, une variable de cartographie qui devrait servir de la seule variable, que vous devez modifier afin d’obtenir le bon degré de tour pour votre servo et quelques chaînes de caractères pour l’écran LCD afficher ; lance la boucle principale qui appelle trois fonctions levelSense, servoPosition et displayThis et puis retarde de 100ms. levelSense attribue seulement l’état de l’interrupteur à flotteur par digital lire à leurs variables integer respectifs. servoPosition analogique écrit le mappé « ouvre » fréquence avec l’objet de servo jusqu'à la broche 9 lorsque tous les interrupteurs à flotteur trois sont levées et définit la variable char LCD à une chaîne « ouvrir ». Lorsque les interrupteurs à flotteur sont tous tombé, 9 broches analogique écrit la fréquence mappé « fermé » à l’asservissement et la variable display LCD passe à « CLOSED. » Si la fiche centrale (3) n’est jamais désynchronisée par rapport à la haute (4) et faibles (2) broches la vanne sera « fermée » et la variable de l’écran LCD est remplacée par « Erreur ». Enfin, diplayThis est une fonction de deux lignes qui qui utilise l’écran LCD affiche l’objet pour afficher la variable char actuel sur la rangée du bas de l’écran LCD.