Inhoudsopgave:

Multitimer met externe bediening - Ajarnpa
Multitimer met externe bediening - Ajarnpa

Video: Multitimer met externe bediening - Ajarnpa

Video: Multitimer met externe bediening - Ajarnpa
Video: DC 5V 12V 24V Digital LED Display Infinite Cycle Delay Timer Switch ON/OFF Relay Module (DC 5V) 2024, November
Anonim
Multitimer met externe bediening
Multitimer met externe bediening

Dit project Instructable is een build van een multifunctionele timer

Deze timer kan functioneren als:

  1. Een alarm voor algemeen gebruik met selecteerbare tijden tussen 1 seconde en +90 uur. Aftellen met hoorbaar alarm en/of bediening van extern apparaat totdat het is afgelopen, en vervolgens een optelling van de tijd sinds het alarm.
  2. Een dutje-timer met 7 selecteerbare tijden, aftellen en alarm bij voltooiing.
  3. Een meditatietimer met 4 selecteerbare tijden, met aftellen en een korte chirp bij voltooiing, optellen met nog een chirp op 5 minuten daarna.

Dit project kan worden gebouwd zoals hier beschreven of naar wens worden aangepast. Ik heb eerder een timer met deze functionaliteit gebouwd en deze in mijn eerste Instructable gebruikt om de UV-belichtingsbox te regelen.

Ik dacht dat ik het originele programma en bordontwerpen gewoon kon publiceren. Om de een of andere reden kon ik de code echter niet vinden. Ik wilde ook verbeteringen aanbrengen aan de hardware om de regelcircuits flexibeler te maken en het leeglopen van de batterij te verminderen. Het resulterende herontwerp van de hoofdprintplaat en het herschrijven van de code biedt een gelegenheid om de programmeer- en hardwareontwerpbenadering te bespreken.

Telkens wanneer ik een printplaat maak, merk ik vaak dat er gebreken zijn in het ontwerp of de plaatsing van componenten. De borden die ik bouw zijn ook een van de twee fouten. Bovendien vind ik het gewoon leuk om van begin tot eind betrokken te zijn bij alle aspecten van een project. Dit zijn enkele van de redenen waarom ik mijn eigen printplaten maak in plaats van de Gerber-bestanden naar het buitenland te sturen voor fabricage. Misschien ben ik gewoon oud en zit ik vast in mijn manieren. Dit project weerspiegelt deze vooringenomenheid. Aangezien ik mijn eigen printplaten maak, mijn ontwerpen en mijn Gerber-bestanden niet voldoen aan de productienormen, heb ik deze bestanden niet bijgevoegd. Degenen die de planken niet willen etsen en afwerken, zijn welkom om hun eigen ontwerpen voor te bereiden en de Gerber-bestanden in het opmerkingengedeelte te plaatsen. Laat uw boards maken en testen voordat u ze plaatst.

Stap 1: Overzicht hardware-elementen

Het apparaat wordt gevoed door 4 AAA-batterijen en wordt bestuurd door een Arduino Pro Mini 5V.

Een kleine zoemer/luidspreker geeft een hoorbaar alarm.

Een miniatuur 5v-relais levert stuurspanningen aan externe apparaten. Flexibiliteit wordt geboden in de bron van deze stuurspanningsuitgang.

Een roterende encoder met drukknop biedt menuselectie.

Een OLED-display en tijdelijke start/stop-schakelaar completeren de gebruikersinterface.

Extra elektronische hardware bestaat uit een SPDT-stroomschakelaar en een miniatuurtelefoonaansluiting om externe apparaten aan te sluiten.

Daarnaast zijn er bestanden om u te helpen bij dit project:

STL-bestanden voor een 3D-geprinte projectcase.

Koper- en soldeermaskerafbeeldingen voor het etsen en afwerken van de besturingsprintplaat en roterende encoder.

Schematische en bordafbeeldingen als referentie voor degenen die mijn ontwerp willen wijzigen.

Misschien wilt u mijn Instructable bekijken over het maken van dubbelzijdige printplaten als een voorbeeld van hoe u een printplaat kunt maken.

Stap 2: Software-overzicht

Samen met de Arduino-bronbestanden, wat aanvullende informatie die nuttig kan zijn..

Hardwarebesturingsbibliotheken worden gebruikt indien beschikbaar (knop de-bounce, OLED-besturing, uitlezing van roterende encoder).

Het programma implementeert een eenvoudige finite state machine (FSM) om de uitvoering van de code te besturen als een switch-instructie in de lusfunctie.

Er is een menuklasse gedefinieerd om selectie van weergegeven opties op de OLED en selectie met behulp van de roterende encoder mogelijk te maken.

Input wordt geïmplementeerd door directe polling (niet-interrupt gedreven) omdat het niet tijdkritisch is en de code duidelijker maakt.

Afdrukinstructies naar serieel worden gebruikt om te helpen bij het traceren van code-uitvoering en foutopsporing

Verschillende soorten programmastructuurelementen, waaronder:

  • Meerdere codetabbladen om enkele van de hardwarebesturingsfuncties en variabelen te isoleren.
  • Schakelinstructies om de statuswaarde (FSM) en controlevariabelen in te stellen.
  • Structuurdefinitie
  • Opsommingen om toewijzing van statuswaarden als tekst mogelijk te maken.
  • #define pre-processor definities voor hardware pin en standaard waarden.

Stap 3: Onderdelenlijst

Maak de behuizing
Maak de behuizing

Ik wist niet zeker waar ik deze stap moest zetten, omdat het op bijna elk punt kan worden gedaan. Ik gebruikte een 3D-geprinte behuizingsdoos. Mogelijk hebt u geen toegang tot een 3D-printer of geeft u de voorkeur aan een ander type behuizing, zoals een aluminium doos, lasergesneden plastic, met de hand gesneden hout of een ander type dat u gebruikt voor uw elektronische projecten. Ik heb de STL-bestanden voor de boven-, onder-, encoderknop en OLED-rand bijgevoegd. Gebruik deze bestanden en de slicer van uw keuze om gcode-bestanden voor uw printer te maken.

Ik print alle onderdelen uit met PLA-filament, één kleur voor de boven- en onderkant van de behuizing, een andere kleur voor de knop en de ring (die aan de bovenkant is gelijmd). Ik ga niet al mijn slicer-instellingen specificeren, maar gebruik een Tri -Zeshoekige vulling minimaal 35% om de hoekschroeven te kunnen tappen en een "no support"-instelling voor het lezen van de ingesneden letters. Ik heb de doos afgedrukt met behulp van mijn printers "normale" laaghoogte.

Stap 9: Code ontwerpen en schrijven

Deze stap is optioneel, maar wordt aanbevolen voor een beter begrip.

Het grootste deel van de inspanning in termen van uren is het schrijven van de code. U kunt deze stap overslaan als u het bijgevoegde programma als -is gebruikt. We raden u echter aan de tijd te nemen om de code door te nemen voor een beter begrip of om deze aan uw behoeften aan te passen.

De volgende opmerkingen kunnen nuttig zijn om dit proces te begrijpen.

  • Opmerkingen - Reageer uitgebreid terwijl u bezig bent - Ik schrijf de opmerkingen vaak voordat ik de code schrijf.
  • Verdeel en heers - gebruik functies, klassen en modules (tabs.) Gebruik frequente compilaties (Verifiëren) om de syntaxis te controleren. Debug - Gebruik afdrukinstructies om stroom- en testwaarden en hardware-interfaces te verifiëren. Wees niet bang om de problemen op te lossen terwijl je bezig bent, niemand schrijft code die vrij is van bugs!
  • Constanten - #define pre-compiler instructies wijzen namen toe aan pinnummers. Const-variabeledefinities met opmerkingen verminderen of elimineren "magische" getallen. Het gebruik van constanten aan het begin van een programma of functie maakt het mogelijk om de parameters te wijzigen zonder de code te herschrijven
  • Vooraf gedefinieerde bibliotheken - Het gebruik van voorgedefinieerde bibliotheken vermindert de programmeerlast en de foutopsporingstijd.
  • Ontwerpblokken - Gemaakt met behulp van functies, het isoleren van code in afzonderlijke tabbladen (bijbehorende programma's en.h-bestanden), opsommingen, klassen en structuren. Richt je aandacht op elk ervan om te begrijpen hoe ze werken in relatie tot de rest van de code.
  • State Machine (s) - Dit is een programmeerpatroon dat geweldig werkt met Arduino's of andere programma's die worden gebruikt om uitgangen te besturen of ingangen te reageren. Er bestaan verschillende smaken van staatsmachines. Deze code gebruikt een toestandsmachine op basis van de switch-instructie in de lusfunctie. Dit formulier is gemakkelijk te begrijpen en te debuggen.
  • Display en menu's - De OLED-uitgang is beknopt, maar biedt voldoende feedback voor informele gebruikers en ondersteunt optieselectie. Het integreert goed met de toestandsmachine (bijna alle toestanden hebben een bijbehorend OLED-scherm). De klasse Menu was nuttig bij het isoleren van code om menu-opties weer te geven en te selecteren

Lees het programma meerdere keren door. Het helpt om één functie of sectie tegelijk te nemen. Ik begrijp de code die ik heb geschreven vaak pas als ik hem minstens twee keer heb gelezen!

Stap 10: Installeer het programma

Kopieer het bijgevoegde bestand naar uw computer en pak het uit in uw Sketches-map

Sluit de Arduino aan op je computer en download de programmacode op de normale manier. Open de Arduino IDE seriële monitor om te controleren of het programma draait en help bij het debuggen.

Stap 11: Monteer de timer

Monteer de timer
Monteer de timer
Monteer de timer
Monteer de timer
Monteer de timer
Monteer de timer
Monteer de timer
Monteer de timer

Nadat de boven- en onderkant van de behuizing zijn afgedrukt en schoongemaakt, kunnen de componenten worden bevestigd met behulp van kleine zelftappende plastic schroeven. Eerst wordt de batterijhouder in de achterkant geklikt. De rest van de onderdelen worden in de volgende volgorde aan de bovenkant van de behuizing bevestigd:

  1. OLED en kabel
  2. Start/Stop schakelaar & bedrading
  3. Roterende encoder en kabel
  4. Luidspreker / Zoemer & bedrading
  5. Externe bedieningsaansluiting en bedrading
  6. Aan/uit-schuifschakelaar en bedrading (controleer de oriëntatie dubbel zodat aan in de gewenste richting staat)

Als u de kabels rechtstreeks op uw printplaat soldeert, doe dit dan nadat alle onderdelen aan uw behuizing zijn bevestigd om draadbreuk te verminderen. Je moet wachten tot de kabels op het moederbord zijn aangesloten voordat je dat bord aan de achterkant vastschroeft.

Als u pin-headers en Dupont-connectoren gebruikt, bevestig dan eerst het moederbord met schroeven aan de achterkant en sluit vervolgens de componenten aan. Wees voorzichtig bij het aansluiten van de batterij op het moederbord en let op de juiste polariteit. U moet op dit moment ook de relaisbesturingsjumpers of bedrading instellen.

De onderkant van de behuizing is verbonden met de bovenkant via 4-40 machineschroeven met ronde kop, één in elke hoek. De vier gaten in de bovenkant moeten worden getapt met een 4/40 tap of als u 4-40 inzetstukken met schroefdraad gebruikt, moet u de gaten boren om ze te kunnen accepteren. De 4 gaten voor de montage van de hoofdprintplaat aan de onderkant moeten ook worden geboord. Zet dit bord goed vast aan de inklikbare batterijhouder en markeer de locaties van de gaten. Boor zoals geschikt voor uw montageschroeven.

Stap 12: Integratietesten

Integratie testen
Integratie testen
Integratie testen
Integratie testen
Integratie testen
Integratie testen

De laatste (integratie)tests worden uitgevoerd door alle menu-opties uit te proberen en te controleren of ze werken met de hardware zoals ontworpen. Voor de code die ik heb verstrekt, zou dat voldoende moeten zijn. Als je je eigen code hebt geschreven of de mijne hebt aangepast, moeten je tests uitgebreider zijn. Ik geloof niet dat alle timingselecties moeten worden uitgevoerd, maar je moet alle standaard alarmopties proberen en valideren dat dutje- en meditatie-alarmen werken zoals ontworpen.

Stap 13: Laatste gedachten

Gefeliciteerd met je succesvolle, naar ik hoop, project. Ik weet zeker dat je onderweg problemen bent tegengekomen die je moest oplossen. Ik ben er ook zeker van dat sommige van mijn instructies vollediger of duidelijker hadden kunnen zijn. Laat me via het opmerkingengedeelte weten wat uw resultaten waren en geef suggesties over hoe deze instructies kunnen worden verbeterd.

Bedankt voor uw tijd om dit project te bekijken en/of te bouwen.

Aanbevolen: