Innholdsfortegnelse:

Multitimer med ekstern kontroll: 13 trinn
Multitimer med ekstern kontroll: 13 trinn

Video: Multitimer med ekstern kontroll: 13 trinn

Video: Multitimer med ekstern kontroll: 13 trinn
Video: Возведение перегородок санузла из блоков. Все этапы. #4 2024, November
Anonim
Multitimer m/ ekstern kontroll
Multitimer m/ ekstern kontroll

Dette prosjektet Instructable er et bygg av en multifunksjonstimer

Denne timeren kan fungere som:

  1. En generell alarm med valgbare tider mellom 1 sekund og +90 timer. Å ha nedtelling med hørbar alarm og/eller kontroll av ekstern enhet til den er ferdig, deretter en tellende indikasjon på tid siden alarmen.
  2. En lur timer med 7 valgbare tider, nedtelling og alarm ved fullføring.
  3. En meditasjonstimer med 4 valgbare tider, med nedtelling og kort kvitring etter fullføring, opptelling med ytterligere kvitring 5 minutter etter det.

Dette prosjektet kan eter bygges som beskrevet her eller endres for å passe. Jeg bygde tidligere en timer med denne funksjonaliteten og brukte den i min første Instructable for å kontrollere UV -eksponeringsboksen.

Jeg trodde jeg bare kunne publisere det originale programmet og brettdesignene. Av en eller annen grunn kunne jeg imidlertid ikke finne koden. Jeg ønsket også å gjøre forbedringer av maskinvaren for å gjøre kontrollkretsene mer fleksible og redusere batteridrift. Den resulterende redesignen av hovedkortet og omskriving av koden gir en mulighet til å diskutere tilnærming til programmering og maskinvaredesign.

Når jeg lager et kretskort, oppdager jeg ofte at det er feil ved utforming eller plassering av komponenter. Brettene jeg bygger er også ett av to avslag. I tillegg liker jeg å være involvert i alle aspekter av et prosjekt fra start til slutt. Dette er noen av grunnene til at jeg lager mine egne kretskort i stedet for å sende Gerber -filene til utlandet for produksjon. Kanskje jeg bare er gammel og sitter fast i mine veier. Dette prosjektet gjenspeiler denne skjevheten. Siden jeg lager mine egne kretskort, designene mine og Gerber -filene mine ikke oppfyller produksjonsstandarder, har jeg ikke tatt med disse filene. De som ikke ønsker å etse og gjøre ferdig brettene, er velkommen til å forberede sine egne design og legge ut Gerber -filene i kommentarfeltet. Vennligst la tavlene produseres og testes før du legger ut.

Trinn 1: Oversikt over maskinvareelementer

Enheten drives av 4 AAA -batterier og styres av en Arduino Pro Mini 5V.

En liten summer/høyttaler gir en hørbar alarm.

Et miniatyr 5v relé gir kontrollspenninger til eksterne enheter. Fleksibilitet er gitt i kilden til denne kontrollspenningsutgangen.

En roterende encoder med trykknapp gir menyvalg.

En OLED -skjerm og en kort start/stopp -bryter fullfører brukergrensesnittet.

Ekstra elektronisk maskinvare består av en SPDT -strømbryter og en miniatyrtelefonkontakt for tilkobling til eksterne enheter.

I tillegg finnes det filer som kan hjelpe deg i dette prosjektet:

STL -filer for en 3D -trykt prosjektetui.

Kobber- og loddemasker for etsing og etterbehandling av styrekretskortet og dreiekoderen.

Skjematiske og tavlebilder som referanse for de som ønsker å endre designet mitt.

Du vil kanskje lese min instruks om hvordan du lager tosidige kretskort som et eksempel på hvordan du produserer kretskort.

Trinn 2: Oversikt over programvare

Sammen med Arduino -kildefilene, noen tilleggsinformasjon som kan være nyttig.

Maskinvarekontrollbiblioteker brukes når de er tilgjengelige (knappestopp, OLED-kontroll, lesing av roterende koder).

Programmet implementerer en enkel finite state machine (FSM) for å kontrollere kodeutførelse som en switch -setning i loop -funksjonen.

En menyklasse er definert for å tillate valg av viste alternativer på OLED og valg ved hjelp av dreiekoderen.

Inndata implementeres ved direkte avstemning (ikke-avbruddsdrevet) siden det ikke er tidskritisk og gjør koden tydeligere.

Utskriftserklæringer til Serial brukes til å spore kodeutførelse og feilsøking

Ulike typer programstrukturelementer, inkludert:

  • Flere kodefaner for å isolere noen av maskinvarekontrollfunksjonene og variablene.
  • Bytt setninger for å angi tilstandsverdi (FSM) og kontrollvariabler.
  • Struktur definisjon
  • Oppregninger for å tillate tildeling av tilstandsverdier som tekst.
  • #definere forprosessordefinisjoner for maskinvarepinne og standardverdier.

Trinn 3: Deleliste

Lag vedlegget
Lag vedlegget

Jeg var ikke sikker på hvor jeg skulle sette dette trinnet siden det kan gjøres på nesten hvilket som helst tidspunkt. Jeg brukte en 3D -trykt skapboks. Du har kanskje ikke tilgang til en 3D -skriver eller foretrekker en annen type kabinett, for eksempel aluminiumsboks, laserskåret plast, håndskåret tre eller annen type du bruker til dine elektroniske prosjekter. Jeg har inkludert STL -filene for topp, bunn, dreiekoderknapp og OLED -ramme. Bruk disse filene og skiven du ønsker for å lage gcode -filer for skriveren.

Jeg skriver ut alle delene med PLA -filament, en farge for kabinettet øverst og nederst, en annen kontrast for knotten og rammen (som er limt til toppen.) Jeg kommer ikke til å spesifisere alle mine skiverinnstillinger, men bruk en Tri -Heksagonfyll minst 35% for å tillate tapping av hjørneskruene og en "ingen støtte" -innstilling for at den innskårne bokstaven skal leses. Jeg skrev ut esken ved hjelp av skriverens "normale" laghøyde.

Trinn 9: Design og skriv kode

Dette trinnet er valgfritt, men foreslått for bedre forståelse.

Hovedtyngden av innsatsen når det gjelder timer er skriving av koden. Du kan hoppe over dette trinnet hvis du bruker det vedlagte programmet som -is. Det er imidlertid foreslått at du tar deg tid til å gjennomgå koden for bedre forståelse eller endring for å dekke dine behov.

Følgende kommentarer kan være nyttige for å forstå denne prosessen.

  • Kommentarer - Kommenter mye underveis - jeg skriver ofte kommentarene før jeg skriver koden.
  • Del og erobre - bruk funksjoner, klasser og moduler (faner.) Bruk hyppige kompiler (Bekreft) for å kontrollere syntaksen. Debug - Bruk utskriftserklæringer for å bekrefte flyt- og testverdier og maskinvaregrensesnitt. Ikke vær redd for å løse problemene mens du går, ingen skriver kode som er feilfri!
  • Konstanter - #define forhåndskompilatorinstruksjoner tilordne navn til pin -tall. Const variable definisjoner med kommentarer reduserer eller eliminerer "magiske" tall. Bruk av konstanter plassert ved starten av et program eller en funksjon tillater endring av parametrene uten å omskrive kode
  • Forhåndsdefinerte biblioteker - Ved å bruke forhåndsdefinerte biblioteker reduseres programmeringsbyrden og feilsøkingstid.
  • Designblokker - Opprettet ved hjelp av funksjoner, Isolering av kode i separate faner (tilknyttede programmer og.hfiler), oppføringer, klasser og strukturer. Fokuser oppmerksomheten på hver enkelt for å forstå hvordan de fungerer i forhold til resten av koden.
  • State Machine (s) - Dette er et programmeringsmønster som fungerer bra med Arduinos eller programmer som brukes til å kontrollere utganger eller reagere innganger. Det finnes flere smaker av statsmaskiner. Denne koden bruker en tilstandsmaskin basert på switch -setningen i loop -funksjonen. Dette skjemaet er lett å forstå og feilsøke.
  • Display og menyer - OLED -utgangen er tett, men gir nok tilbakemelding for uformelle brukere og støtter valg av alternativer. Den integreres godt med statsmaskinen (nesten alle stater har en tilhørende OLED -skjerm). Menyklassen var nyttig for å isolere kode for å vise og velge menyalternativer

Les programmet flere ganger. Det hjelper å ta én funksjon eller seksjon om gangen. Jeg forstår ofte ikke koden jeg har skrevet med mindre jeg har lest den minst to ganger!

Trinn 10: Installer programmet

Kopier den vedlagte filen til datamaskinen, og pakk den ut i Sketches -katalogen

Koble Arduino til datamaskinen din og last ned programkoden på vanlig måte. Åpne Arduino IDE seriell skjerm for å bekrefte at programmet kjører og hjelpe til med feilsøking.

Trinn 11: Monter timeren

Monter timeren
Monter timeren
Sett sammen timeren
Sett sammen timeren
Monter timeren
Monter timeren
Monter timeren
Monter timeren

Når de øverste og nedre delene av saken er skrevet ut og ryddet opp, kan komponentene festes med små selvskærende plastskruer. Først klikkes batteriholderen inn i ryggen. Resten av delene er festet til skapets topp i følgende rekkefølge:

  1. OLED og kabel
  2. Start/stopp bryter og ledninger
  3. Rotary Encoder og kabel
  4. Høyttaler / summer og ledninger
  5. Ekstern kontrollkontakt og ledninger
  6. Slå av/på skyvebryter og ledninger (dobbel sjekk retningen slik at på er i ønsket retning

Hvis du lodder kablene direkte til kretskortet, gjør du dette etter at alle delene er festet til kabinettet for å redusere ledningsbrudd. Du må vente til kablene er koblet til hovedkortet før du skruer kortet på baksiden.

Hvis du bruker pinnehoder og Dupont -kontakter, må du først feste hovedkortet på baksiden med skruer og deretter plugge inn komponentene. Vær forsiktig når du kobler batteriet til hovedkortet og observer riktig polaritet. Du bør også sette opp relékontrollhoppere eller ledninger på dette tidspunktet.

Bunnen av kabinettet kobles til toppen ved hjelp av 4-40 runde maskinskruer, ett i hvert hjørne. De fire hullene i toppen bør enten tappes med en 4/40 kran, eller hvis du bruker 4-40 gjengede innsatser, må du bore hullene for å godta dem. De 4 hullene for hovedkortkortmonteringen på bunnen må også bores. Fest dette brettet til snap-in batterifeste og merk plasseringene til hullene. Bor etter behov for monteringsskruene.

Trinn 12: Integrasjonstesting

Integrasjonstesting
Integrasjonstesting
Integrasjonstesting
Integrasjonstesting
Integrasjonstesting
Integrasjonstesting

Den siste (integrering) testing utføres ved å prøve alle menyalternativene og kontrollere at de fungerer med maskinvaren slik den er designet. For koden jeg oppga, burde det være tilstrekkelig. Hvis du skrev din egen kode eller endret min, må testen din være mer omfattende. Jeg tror ikke at alle timevalg må utøves, men du må prøve alle standardalarmalternativer og validere Nap og meditasjonsalarmer som de er designet.

Trinn 13: Avsluttende tanker

Gratulerer med ditt vellykkede, jeg håper, prosjekt. Jeg er sikker på at du støtte på problemer du måtte løse underveis. Jeg er også sikker på at noen av instruksjonene mine kunne vært mer fullstendige eller tydeligere. Gi meg beskjed gjennom kommentarfeltet hva resultatene dine var, og kom med forslag til hvordan disse instruksjonene kan forbedres.

Takk for at du tok deg tid til å se og/eller bygge dette prosjektet.

Anbefalt: