Table des matières:

Minuterie multiple avec contrôle externe : 13 étapes
Minuterie multiple avec contrôle externe : 13 étapes

Vidéo: Minuterie multiple avec contrôle externe : 13 étapes

Vidéo: Minuterie multiple avec contrôle externe : 13 étapes
Vidéo: Multi-function DC/AC 5V - 24V Forward Reverse Motor Controller Timer I053A02 2024, Juillet
Anonim
Multi-minuterie avec contrôle externe
Multi-minuterie avec contrôle externe

Ce projet Instructable est une construction d'une minuterie multifonction

Cette minuterie est capable de fonctionner comme:

  1. Une alarme à usage général avec des durées sélectionnables entre 1 seconde et +90 heures. Avoir un compte à rebours avec alarme sonore et/ou contrôle d'un appareil externe jusqu'à la fin, puis une indication de compte à rebours du temps écoulé depuis l'alarme.
  2. Une minuterie de sieste avec 7 heures sélectionnables, compte à rebours et alarme à la fin.
  3. Une minuterie de méditation avec 4 temps sélectionnables, avec un compte à rebours et un bref bip à la fin, un décompte avec un autre bip 5 minutes plus tard.

Ce projet peut être construit comme décrit ici ou modifié en conséquence. J'ai déjà construit une minuterie avec cette fonctionnalité et je l'ai utilisée dans mon premier Instructable pour contrôler la boîte d'exposition aux UV.

J'ai pensé que je pouvais simplement publier le programme original et les conceptions du tableau. Cependant, pour une raison quelconque, je n'ai pas pu trouver le code. Je voulais également apporter des améliorations au matériel pour rendre les circuits de contrôle plus flexibles et réduire l'épuisement de la batterie. La refonte de la carte de circuit imprimé principale et la réécriture du code qui en résultent offrent l'occasion de discuter de l'approche de la programmation et de la conception matérielle.

Chaque fois que je crée une carte de circuit imprimé, je constate souvent qu'il y a des défauts dans la conception ou le placement des composants. Les cartes que je construis sont également l'une des deux. De plus, j'aime juste être impliqué dans tous les aspects d'un projet du début à la fin. Ce sont quelques-unes des raisons pour lesquelles je fabrique mes propres circuits imprimés plutôt que d'envoyer les fichiers Gerber à l'étranger pour la fabrication. Peut-être que je suis juste vieux et coincé dans mes habitudes. Ce projet reflète ce parti pris. Étant donné que je fabrique mes propres circuits imprimés, que mes conceptions et mes fichiers Gerber ne répondent pas aux normes de fabrication, je n'ai pas inclus ces fichiers. Ceux qui ne souhaitent pas graver et finir les planches sont invités à préparer leurs propres conceptions et à publier les fichiers Gerber dans la section commentaires. Veuillez faire fabriquer et tester vos planches avant de poster.

Étape 1: Présentation des éléments matériels

L'appareil est alimenté par 4 piles AAA et est contrôlé par un Arduino Pro Mini 5V.

Un petit buzzer/haut-parleur fournit une alarme sonore.

Un relais miniature 5v fournit des tensions de contrôle aux appareils externes. La flexibilité est fournie dans la source de cette sortie de tension de commande.

Un encodeur rotatif avec bouton poussoir permet de sélectionner le menu.

Un écran OLED et un interrupteur marche/arrêt momentané complètent l'interface utilisateur.

Le matériel électronique supplémentaire se compose d'un interrupteur d'alimentation SPDT et d'une prise téléphonique miniature pour se connecter à des périphériques externes.

De plus, des fichiers pour vous aider dans ce projet sont fournis:

Fichiers STL pour un cas de projet imprimé en 3D.

Images de masque de cuivre et de soudure pour la gravure et la finition de la carte de circuit de commande et de l'encodeur rotatif.

Images schématiques et de planches comme référence pour ceux qui souhaitent modifier ma conception.

Vous pouvez consulter mon Instructable sur la création de circuits imprimés double face comme exemple de mode d'emploi pour la production de circuits imprimés.

Étape 2: Présentation du logiciel

En plus des fichiers source Arduino, quelques informations supplémentaires qui peuvent être utiles.

Les bibliothèques de contrôle matériel sont utilisées lorsqu'elles sont disponibles (anti-rebond de bouton, contrôle OLED, lecture d'encodeur rotatif).

Le programme implémente une simple machine à états finis (FSM) pour contrôler l'exécution du code en tant qu'instruction de commutation dans la fonction de boucle.

Une classe Menu est définie pour permettre la sélection des options affichées sur l'OLED et la sélection à l'aide de l'encodeur rotatif.

L'entrée est implémentée par interrogation directe (sans interruption) car elle n'est pas critique dans le temps et rend le code plus clair.

Les instructions d'impression vers Serial sont utilisées pour faciliter le traçage de l'exécution du code et le débogage

Divers types d'éléments de structure de programme, notamment:

  • Plusieurs onglets de code pour isoler certaines des fonctions et variables de contrôle du matériel.
  • Instructions de commutation pour définir la valeur d'état (FSM) et les variables de contrôle.
  • Définition de la structure
  • Énumérations pour permettre l'affectation de valeurs d'état sous forme de texte.
  • #define les définitions de pré-processeur pour la broche matérielle et les valeurs standard.

Étape 3: Liste des pièces

Créer l'enceinte
Créer l'enceinte

Je ne savais pas trop où mettre cette étape car cela peut être fait à presque n'importe quel moment. J'ai utilisé une boîte de clôture imprimée en 3D. Vous n'avez peut-être pas accès à une imprimante 3D ou préférez un autre type de boîtier tel qu'une boîte en aluminium, du plastique découpé au laser, du bois sculpté à la main ou tout autre type que vous utilisez pour vos projets électroniques. J'ai inclus les fichiers STL pour le haut, le bas, le bouton de l'encodeur rotatif et la lunette OLED. Utilisez ces fichiers et le slicer de votre choix pour créer des fichiers gcode pour votre imprimante.

J'imprime toutes les pièces en utilisant du filament PLA, une couleur pour le haut et le bas du boîtier, une autre contrastée pour le bouton et la lunette (qui est collée sur le dessus.) Je ne vais pas spécifier tous mes paramètres de slicer mais, utiliser un Tri -Remplissage hexagonal d'au moins 35% pour permettre le taraudage des vis d'angle et un réglage "sans support" pour la lecture du lettrage incisé. J'ai imprimé la boîte en utilisant la hauteur de couche "normale" de mes imprimantes.

Étape 9: Concevoir et écrire le code

Cette étape est facultative mais suggérée pour une meilleure compréhension.

L'essentiel de l'effort en termes d'heures est l'écriture du code. Vous pouvez ignorer cette étape si vous utilisez le programme joint tel quel. Il est toutefois suggéré de prendre le temps de revoir le code pour une meilleure compréhension ou de le modifier pour répondre à vos besoins.

Les commentaires suivants peuvent être utiles pour comprendre ce processus.

  • Commentaires - Commentez abondamment au fur et à mesure - J'écris souvent les commentaires avant d'écrire le code.
  • Diviser et conquérir - utilisez des fonctions, des classes et des modules (onglets.) Utilisez des compilations fréquentes (Vérifier) pour vérifier la syntaxe. Débogage - Utilisez des instructions d'impression pour vérifier les valeurs de flux et de test et les interfaces matérielles. N'ayez pas peur de résoudre les problèmes au fur et à mesure, personne n'écrit de code sans bug !
  • Constantes - Les instructions du pré-compilateur #define attribuent des noms aux numéros de broche. Les définitions de variables const avec des commentaires réduisent ou éliminent les nombres "Magique". L'utilisation de constantes situées au début d'un programme ou d'une fonction permet de modifier les paramètres sans réécrire le code
  • Bibliothèques prédéfinies - L'utilisation de bibliothèques prédéfinies réduit la charge de programmation et le temps de débogage.
  • Design Blocks - Créés à l'aide de fonctions, d'isolement de code dans des onglets séparés (programmes associés et fichiers.h), d'énumérations, de classes et de structures. Concentrez votre attention sur chacun pour comprendre comment ils fonctionnent par rapport au reste du code.
  • State Machine(s) - Il s'agit d'un modèle de programmation qui fonctionne très bien avec les Arduinos ou tout programme utilisé pour contrôler les sorties ou réagir aux entrées. Il existe plusieurs variantes de machines à états. Ce code utilise une machine à états basée sur l'instruction switch dans la fonction de boucle. Ce formulaire est facile à comprendre et à déboguer.
  • Affichage et menus - La sortie OLED est laconique mais fournit suffisamment de commentaires pour les utilisateurs occasionnels et prend en charge la sélection d'options. Il s'intègre bien à la machine d'état (presque tous les états ont un écran OLED associé). La classe Menu a été utile pour isoler le code pour afficher et sélectionner les options de menu

Veuillez lire le programme plusieurs fois. Il est utile de prendre une fonction ou une section à la fois. Souvent, je ne comprends pas le code que j'ai écrit à moins de l'avoir lu au moins deux fois !

Étape 10: Installez le programme

Copiez le fichier joint sur votre ordinateur puis décompressez-le dans votre répertoire Sketches

Connectez l'Arduino à votre ordinateur et téléchargez le code du programme de la manière normale. Ouvrez le moniteur série Arduino IDE pour vérifier que le programme est en cours d'exécution et faciliter le débogage.

Étape 11: Assemblez la minuterie

Assembler la minuterie
Assembler la minuterie
Assembler la minuterie
Assembler la minuterie
Assembler la minuterie
Assembler la minuterie
Assembler la minuterie
Assembler la minuterie

Une fois les parties supérieure et inférieure du boîtier imprimées et nettoyées, les composants peuvent être fixés à l'aide de petites vis en plastique autotaraudeuses. Tout d'abord, le support de batterie est encliqueté à l'arrière. Les autres pièces sont fixées sur le dessus du boîtier dans l'ordre suivant:

  1. OLED et câble
  2. Interrupteur marche/arrêt et câblage
  3. Encodeur rotatif et câble
  4. Haut-parleur / Buzzer & câblage
  5. Prise de commande externe et câblage
  6. Interrupteur à glissière marche/arrêt et câblage (vérifiez l'orientation pour que l'allumage soit dans la direction souhaitée

Si vous soudez les câbles directement sur votre circuit imprimé, faites-le après que toutes les pièces soient fixées à votre boîtier pour réduire la casse des fils. Vous devez attendre que les câbles soient câblés à la carte principale avant de visser cette carte à l'arrière.

Si vous utilisez des embases à broches et des connecteurs Dupont, fixez d'abord la carte principale à l'arrière à l'aide de vis puis branchez les composants. Soyez prudent lorsque vous connectez la batterie à la carte principale et respectez la polarité correcte. Vous devez également configurer les cavaliers de commande de relais ou le câblage à ce stade.

Le bas du boîtier se connecte au haut à l'aide de 4 à 40 vis à métaux à tête ronde, une dans chaque coin. Les quatre trous du haut doivent être taraudés avec un taraud 4/40 ou si vous utilisez des inserts filetés 4-40, vous devrez percer les trous pour les accepter. Les 4 trous pour le montage du circuit imprimé principal sur le fond doivent également être percés. Accrochez cette carte au support de batterie encliquetable et marquez l'emplacement des trous. Percez en fonction de vos vis de montage.

Étape 12: Test d'intégration

Test d'intégration
Test d'intégration
Test d'intégration
Test d'intégration
Test d'intégration
Test d'intégration

Les tests finaux (d'intégration) sont effectués en essayant toutes les options de menu et en vérifiant qu'elles fonctionnent avec le matériel tel qu'il a été conçu. Pour le code que j'ai fourni, cela devrait suffire. Si vous avez écrit votre propre code ou modifié le mien, vos tests devront être plus approfondis. Je ne pense pas que toutes les sélections de synchronisation doivent être exercées, mais vous devez essayer toutes les options d'alarme standard et valider que les alarmes de sieste et de méditation fonctionnent comme prévu.

Étape 13: Réflexions finales

Félicitations pour votre projet réussi, je l'espère. Je suis sûr que vous avez rencontré des problèmes en cours de route que vous deviez résoudre. Je suis également sûr que certaines de mes instructions auraient pu être plus complètes ou plus claires. S'il vous plaît laissez-moi savoir dans la section commentaires quels ont été vos résultats et fournissez des suggestions sur la façon dont ces instructions peuvent être améliorées.

Merci pour le temps que vous avez consacré à la visualisation et/ou à la construction de ce projet.

Conseillé: