Indholdsfortegnelse:

01//atch: 12 trin
01//atch: 12 trin

Video: 01//atch: 12 trin

Video: 01//atch: 12 trin
Video: RAGЕ Multiplaуer 2022 06 06 12 01 53 Trim 2024, Oktober
Anonim
01/\/atch
01/\/atch
01/\/atch
01/\/atch
01/\/atch
01/\/atch

01/\/atch, fordi… "der er 10 typer mennesker i verden, dem der læser binært og dem der ikke gør" - en slashdot tag line. 01/\/atch er et binært armbåndsur med et LED display. Yderligere funktioner er tilgængelige via et rullende menusystem på dets 3x4 LED -matrix. Aktuelle funktioner inkluderer: spændingsmåler, binær tæller, klubtilstand og tidsvisning. Uret er fuldt programmerbart. Fremtidige firmwareopgraderinger vil omfatte: stopur/timer, alarm, cykelhastighedsmåler/kilometertæller, datalogning og en avanceret konfigurationsmenu. Se den i aktion: https://www.youtube.com/embed/l_tApl3JmmMA Alle projektfilerne er i.zip -arkivet på denne side. Skematisk og PCB i Cadsoft Eagle -format. Firmware i mikroBasic. Teksten i denne instruerbare tekst er inkluderet som.odt (OO.org/open tekst) og.pdf -filer. Det øverste lag PCB-kunst (spejlet) er inkluderet som en. PDF klar til toneroverførsel eller foto-proces. Det er kopieret flere gange på et enkelt ark, fordi jeg skal dobbelt op på transparenter. 01/\/atch blev inspireret af Mini Dotclock og en efterfølgende samtale i kommentarfeltet: https://www.instructables.com /ex/i/47F2F12223BA1029BC6B001143E7E506Dette er også et halvt skridt mod et overflademonteret nixie -ur, jeg arbejder på. 01/\/atch -projektet er en introduktion til overflademonterede komponenter og tid, der holder logik uden den ekstra kompleksitet af en nixie -rørforsyning. (https://www.instructables.com/ex/i/2C2A7DA625911029BC6B001143E7E506/?ALLSTEPS)Lidt googling viste dette binære ur på thinkgeek: https://www.thinkgeek.com/gadgets/watches/6a17/The 01/ \/atch er baseret på en PIC16F913/6. Denne PIC blev oprindeligt valgt, fordi den havde en hardware LCD -driver. Jeg tænkte, at jeg kunne gøre LCD -driveren til en LED -multiplexer med et par transistorer. Dette viste sig ikke at være tilfældet. Det er stadig et godt valg, fordi det har masser af programmeringsplads og meget få begrænsede I/O -ben. F913 koster cirka $ 2,00 på Mouser. PIC16F913 Detaljer: https://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE & nodeId = 1335 & dDocName = da020199PIC16F916 Detaljer (samme som 913, med mere programplads): https:// www. microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1335&dDocName=da020201PIC16F913/6 Datablad (PDF -format): https://ww1.microchip.com/downloads/en/DeviceDoc/41250E.pdfDe 3d -billeder blev brugt i denne instruktion fra Eagle Board -filer med Eagle3D og POV ray: https://www.matwei.de/doku.php? id = da: eagle3d: eagle3d

Trin 1: Display

Skærm
Skærm
Skærm
Skærm
Skærm
Skærm

Det binære display er lavet af 12 lysdioder i en 3x4 matrix. Hver kolonne med fire lysdioder repræsenterer en fire bit 'nibble' eller halv byte. Hver kolonne kan vise 0-15 i binært (1+2+4+8 = 15). Tid vises i de tre rækker som timer/snesevis af minutter/minutter. Dette er ikke sandt binært, men en forenklet delmængde, der gør uret lettere at læse. Thinkgeek -uret bruger f.eks. 'Sandere' binær til at repræsentere minutter med en hel byte. Uanset hvad jeg foretrækker, ville den sande nørd vise tiden ved hjælp af Unix -epoken i binært! (https://en.wikipedia.org/wiki/Unix_timestamp) LED -multiplexen er ligetil. Rækker (4) forbinder til stifter på PIC gennem strømbegrænsende modstande. Der bruges kun en strømbegrænsende modstand til hver række, fordi der kun er tændt én LED pr. Række. Lysdioderne kører ved 20ma ved hjælp af 56 ohm modstande (56ohm @ 3 volt = 20ma). Lysdioderne kunne køres højere, fordi de er multipleksede, databladet angav noget omkring 40ma. Jeg synes, de er for lyse ved kun 20ma-multipleksede. Kolonner (3) er forbundet til jorden med NPN-transistorer. Transistorerne skiftes af PIC -ben gennem 1Kohm -modstande. Multiplexet fungerer ved at jorde en søjle af lysdioder gennem transistoren, mens de korrekte LED -rækker til den kolonne tændes. Dette gentages for hver kolonne kort efter hinanden, hvilket får matricen til at se ud til at være konstant tændt. PIC Timer0 driver multiplex. Det tæller til 256 og ændrer derefter rækkeværdier og den jordede kolonne. Transistor: NPN Transistor, NPN/ 32V/ 100mA, (Mouser #512-BCW60D $ 0,05).

Trin 2: Valg af LED

LED valg
LED valg
LED valg
LED valg

På dette ur blev gule og røde LED'er i '1206' størrelse brugt med en 56 ohm strømbegrænsende modstand. Farverne blev valgt til en lav pris. Røde, gule og orange lysdioder er cirka 10 cent hver, mens blå lysdioder er 40 cent og derover. Desuden er LED -blå decideret ucool nu. Hvis du finder noget lilla, så lad mig det vide.

Billedet viser de 5 LED -typer, jeg auditionerede. Mouser Delenummer Producent Farveomkostninger 859-LTST-C171KRKT Lite-On SMT LED Rød, Klar $ 0.130 859-LTST-C171KSKT Lite-On SMT LED Gul, Klar $ 0.130 859-LTST-C150KFKT Lite-On SMT LED Orange, Klar $ 0.130 638- 121SURCS530A28 Everlight LED SMD Red Water Clear $ 0.110 638-1121UYCS530A28 Everlight LED SMD Yellow Water Clear $ 0.110 Everlight rød og gul blev brugt på prototype uret. Jeg kan bedre lide Lite-On rød og orange, de vil blive brugt på det næste ur, jeg laver.

Trin 3: Interface/knapper

Grænseflade/knapper
Grænseflade/knapper

Et nørdet ur har brug for en nørdet grænseflade. Kapacitive berøringssensorer er alle raseri lige nu, men kræver en del ekstra komponenter. I stedet gik jeg med en Darlington -transistorbaseret berøringssensor med pinhoveder som kontaktpunkt. Hvad er nørder end en pin -header? Intet. Jeg så ideen første gang her: (https://www.kpsec.freeuk.com/trancirc.htm):"Et Darlington -par er tilstrækkeligt følsomt til at reagere på den lille strøm, der passerer din hud, og det kan bruges til at lav en berøringsafbryder som vist i diagrammet. For dette kredsløb, der bare tænder en LED, kan de to transistorer være enhver laveffekttransistorer til generelle formål. 100 khm modstanden beskytter transistorer, hvis kontakterne er forbundet med et stykke ledning. "A PNP -transistor blev tilføjet til dette enkle design (i stedet for LED'en i diagrammet), så det kunne give en høj/lav output til PIC. En pull-down-modstand blev tilføjet mellem PIC-stiften og jorden for at forhindre falske knaptryk. Denne switch er solid state, vandtæt og lav strøm - med den ekstra nørdighed af pinhoveder. Afbrydere afbrydes ved hjælp af Timer2 på PIC. Når der trykkes på en switch, startes Timer2 (8 bit timer) med en 16 forudskaler og 16 postscaler. På timer 2 afbryder PIC -kontrollerne for at se, om der stadig trykkes på knapperne. Efter to på hinanden følgende afbrydelser uden at trykke på knapper, stoppes timeren, og knapperne konfigureres til yderligere input. Topkontakten er forbundet til PIC -afbryderstiften. Input på denne pin kan bringe PIC'en ud af dvaletilstand. Dette lader os bruge en pæn strømstyringsteknik: PIC'en er i lav strømtilstand, når skærmen ikke er i brug. Input på knapperne vækker PIC og genoptager driften. Transistorer: Darlington Transistor, SOT-23, (Mouser #512-MMBT6427, $ 0,07). PNP Transistor, SOT-23, (Mouser #512-BCW89, $ 0,06).

Trin 4: Tidshold

Tidshold
Tidshold

Mikrochip -app note 582 beskriver de grundlæggende principper bag et PIC -baseret ur med lav effekt. (Http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=da011057) Uret er enkelt og elegant. En urkrystal på 32,768 kHz er forbundet til timer1 -oscillatorstifterne på PIC. Timer1 er fantastisk til dette, fordi det kan øges, selvom PIC sover. Timer1 er konfigureret til at tælle til 65536 (2 sekunder ved 32.768 kHz) og vække PIC'en fra søvn med en afbrydelse. Når PIC vågner, øges tiden med to sekunder. PIC'en er kun aktiv og forbruger strøm i kort tid hvert par sekunder. Jeg brugte en billig quartz urkrystal fra Citizen. Jeg skønt borgernavnet kan give mit ur legitimitet. CFS206 (12.5pf) har omkring +/- 1,7 minutters nøjagtighed om året (20ppm). To 33pF kondensatorer fuldender det eksterne krystalkredsløb. 33pF er nok lidt meget, men det var tilgængeligt lokalt til en rimelig pris. En bedre krystal kunne bruges til mere præcis tid. Krystal: Citizen KHz Range Crystals, 32.768 KHZ 12.5pF, (mouser #695-CFS206-327KFB, $ 0.30). Kondensatorer: 2x33pF, 1206 SMD.

Trin 5: Spændingsmåler

Spændingsmåler
Spændingsmåler

Som om vi ikke var sunket i dybden af geekerie med et binært ur, slår vi på en spændingsreference og input -pin for at lave en spændingsmåler. Spændingsreferencen er Microchip MCP1525. Dette er en 2,5 volt reference med et driftsområde på 2,7 til 10+ volt. På det afbildede ur bruges TO-92-pakken, selvom fremtidige ure vil bruge overflademonteringsversionen (SOT-23). Referencen drives af en PIC -pin, så den kan slukkes for at spare strøm. På dette tidspunkt kan vi måle op til 2,5 volt ved hjælp af PIC's analoge digitale konverter. Vi tager dette et skridt videre og tilføjer en modstandsspændingsdeler til multimeterindgangen. Ved hjælp af to modstande (100K/10K) dividerer vi indgangsspændingen med 11, hvilket giver et nyt indgangsområde på ~ 30 volt. Dette er et godt punkt, der omfatter alle de lave spændinger, vi sandsynligvis vil støde på (1,2/1,5 volt batterier, 3 volt møntceller, 5 volt logik, 9 volt batterier og 12 volt strømskinner). En 22Kohm -modstand kan erstattes af 10K -modstanden, hvilket giver et mindre område, men højere opløsning. Regnearket, der følger med denne instruktionsbog, kan hjælpe dig med at vælge modstandsværdier. Grund- og målesonder forbinder til programmeringsoverskriften bag på uret. MCP1525 Detaljer: https://www.microchip.com/stellent/idcplgidcplg? IdcService = SS_GET_PAGE & nodeId = 1335 & dDocName = da019700

Trin 6: Programmering af header/eksterne forbindelser

Programmering af header/eksterne forbindelser
Programmering af header/eksterne forbindelser
Programmering af header/eksterne forbindelser
Programmering af header/eksterne forbindelser

Uret er 'programmerbart'. Et ICSP -header bringes ud på bagsiden, så ny firmware kan installeres. Overskriften er en række lavprofilerede hunstikdåser, jeg fandt i min lokale elektronikbutik. Det samme kan fås ved at skære en kvalitets DIP -stikkontakt på den halve lange vej. Jeg tilslutter mit ICSP-stik med en pin-header "gender-changer"-sæt et stykke pin-header i stikket, og tilslut derefter ICSP-stikket til pin-headeren. Du skal bruge en ICSP -programmør for at sætte ny software i uret. En simpel JDM2 ICSP -programmer er inkluderet i Cadsoft Eagle -filerne.

Når det ikke bruges til programmering, kan ICSP -headeren bruges til dataindsamling, logning af hændelser osv. Alle ICSP -benene er tilgængelige til brug, som angivet i nedenstående tabel. Spændingsmåleren pin (pin 1/6) er stort set dedikeret til den brug på grund af spændingsdeleren. Multimeter - ADC, I/O, med modstandsdeling. (PIN2, PORTA0/AN0) MCLR - kun input -pin. Schmitt trigger input til støjende signaler. (PIN1, RE3) Vcc - +3 volt Vss - jordstift Data - Input/Output med afbrydelse ved ændring, valgfri svag pull -up (PIN27, RB6) Ur - I/O med afbrydelse ved ændring, option svag pull-up (PIN28, RB7)

Trin 7: Firmware

Firmware
Firmware

Firmware blev skrevet ved hjælp af mikroBasic freeware -version. Aktuel firmware er v0.1. Fremtidige firmwares vil sandsynligvis blive skrevet i C. Konfigurationsindstillinger er angivet i firmwaren. De skal være som følger: MCLR - DISABLEDBODEN/BOREN - DISABLEDWDT - DISABLEDOscillator -Intern Osc, NO clock -out. Jeg kunne ikke programmere 16F913 med min foretrukne PIC programmeringssoftware (WinPIC800), men DL4YHS 'WinPIC fungerede godt (https://www.qsl.net/dl4yhf/winpicpr.html).v0.1Configuration/Menu System - Menuindstillinger ruller hen over displayet og vælges/avanceres ved hjælp af de to inputknapper. Tid - viser tiden i binær (standard, når der trykkes på en knap). Klik - en tæller. Til tider finder jeg mig selv udføre tællinger. Trafik tæller, fugl tæller, uanset hvad. 01/\/atch subs som en binær tæller. Klubtilstand - Den virkelige værdi af ethvert ur bestemmes af dets 'klubmode'. 01/\/atch bruger en tilfældig talgenerator til at blinke mønstre på LED -displayet. Det er også muligt at inkludere ordfragmenter ved hjælp af det interne matrixfontbibliotek (mere kommer). Hastigheden kan justeres med knappen 1. Den ultimative klubopgraderingspakke vil indeholde en temperatursensor, der styrer hastigheden af mønsterændringer. Når brugeren varmes op, ændres mønstrene hurtigere. Volt - spændingsmåler. Viser i øjeblikket den rå ADC -aflæsning i 10 bits. Opgraderes til faktisk volt værdi i v0.2. Set - Indstil tid. Exit - Exit menu, sæt PIC i dvaletilstand.

Trin 8: Rulning af menusystem

Rullende menusystem
Rullende menusystem

Rullemenu System Funktioner er tilgængelige via rullemenu systemet. Menupunkter indlæses som bitmaps i et array og ruller kontinuerligt "opad". Rulning er baseret på et multiplum af Timer0 mux -driveren. Rulningsmenuen "time -out" ved hjælp af et multiplum af Timer1 (sekunder tæller) efter ca. 10 sekunder. Menupunkter (Brug af uret) (Dette gælder for firmware version 0.1) Når et nyt batteri sættes i uret, viser det 'SET 'menuindstilling som standard. Tryk på knap 2 for at gå ind i den indstillede tilstand. Det aktuelle klokkeslæt vises (12:11). Brug knap 1 til at øge timerne, tryk på knap 2 for at gå videre til den næste tidsenhed (timer, 10 minutter, minutter). Tryk på knap 2, når minutterne er indstillet til at spare tid og vende tilbage til rullemenuen. For at spare strøm er displayet og PIC normalt slukket. Tryk på knap 1 for at vække PIC'en og vise den aktuelle tid i 10 sekunder. Tryk på knap 2, mens tiden vises for at få adgang til rullemenu -systemet. Urets funktioner er tilgængelige via rullemenuen. Tryk på knap 1 for at gå videre til det næste menupunkt, tryk på knap 2 for at vælge et menupunkt. Se det i aktion: https://www.youtube.com/embed/l_tApl3JmmMKnappefunktioner for hver menuindstilling er skitseret i tabellen under. B1 og B2 er forkortelser for knap 1 og knap 2.

Trin 9: Firmware -køreplan

Firmware -køreplan
Firmware -køreplan

v0.2

En afslutningsbekræftelse/dialog. Opsætning-Udvid opsætningsmulighederne til at omfatte: Varighed til tiden/timeout i menuen (og en tilstand, der altid er tændt). Lysstyrke (driftscyklus). Rullehastighed. Menu Font Opgradering -'E 'og' B 'ser virkelig dårligt ud, brug' e ',' b '. Flyt til 1Mhz eller 32.768khz oscillator (4MHz i v0.1). v0.3 Stopur (tidsforøgelse fremad) -Starter tælling af sekunder og øger derefter minutter og timer efter visningsgrænsen på 15:59. Timer/alarm (tidsforøgelse baglæns) -En inkrementeringstimer, alle lysdioder blinker, når timeren når 0. EEPROM (logningsværdier til flashhukommelse) -Gem spændinger, tællinger, muligheder, stopurstider osv. For at blinke EEPROM -hukommelse. -Log antal dage siden batteriskift. Også: antal timer med display tændt. v0.4 Eksterne hardwarefunktioner (ved hjælp af ICSP -header): Hændelseslogning ved afbrydelse. Cykeltæller/speedometer. Justerbar enhedsvisning (binær eller decimal skrifttype).

Trin 10: PCB

PCB
PCB
PCB
PCB
PCB
PCB

PCB og kredsløb er i eagle -format. Jeg inkluderede også en masse biblioteker, som jeg plejede at lave den tavle, der kan være nødvendig.

Printkortet er hovedsageligt designet med komponenter til overflademontering. Tavlen blev lavet med inkjet -transparenter på et foto -positivt bord. Dette var mit første overflademonteringsbræt (både ætsning og samling). Jeg lavede et ensidet bræt og brugte jumperwires til sporene i bundlaget. Tavlen blev lavet med fremstilling af Olimex i tankerne, så deres tjekfil på 10mill -reglen blev brugt ved design af tavlen. Intet er frygteligt lille, men det er bestemt udfordrende. Alt blev håndloddet ved hjælp af et 10 euro jern, stickie-tack og et skarpt lys. Et forstørrelsesglas var ikke nødvendigt. Krystallen blev efterladt som en overflademonteret komponent. Metaldåsen er et karakteristisk udseende element og meget mere identificerbart end en overflademonteret sort boks. Prototypen på billedet bruger også en TO-92 spændingsreference-det sidste printkort angiver en SOT-23 version, som jeg ikke (endnu) havde ved hånden, da jeg lavede tavlen. Kredsløb og print er i projektarkivet (Cadsoft Eagle -format - freeware -version www.cadsoft.de). Komponentplacering kan ses i PCB -filen. Jeg lavede også en PDF med det øverste lag spejlet og kopieret flere gange. Dette skal være klar til toneroverførsel eller fotoproces. Delliste (gennem hul) 32.768kHz Watch Crystal (0206 metal dåse) Pin header -x4 Programmerings header - 6 pins Del liste (overflademontering) SO -300 PIC16F1206 0.1uF kondensator 1206 33pf kondensatorer - x2 1206 LED (gul, rød, orange, osv.) -x12 1206 Modstand - 4x56 ohm 1206 Modstand - 3x1Kohm 1206 Modstand - 3x10Kohm 1206 Modstand - 3x100Kohm SOT -23 NPN transistor (100ma eller mere) SOT -23 PNP transistor (generelt) SOT -23 NPN Darlington transistor (generelt formål), hfe på ~ 10000) SOT-23 MCP1525 Spændingsreference (2,5 volt) Batteri CR2032 3v lithium

Trin 11: Potting uret

Potting uret
Potting uret
Potting uret
Potting uret
Potting uret
Potting uret

Potting uret For at gøre uret egnet til daglig brug behøvede det en sag. Jeg besøgte AFF Materials (https://www.aff-materials.com/) for at købe polyesterharpiks. En flink fyr der foreslog, at jeg i stedet brug en klar epoxy. Ifølge ham krymper polyesterharpiksen ~ 5%, hvilket kan bryde forbindelserne på printkortet. Den klare epoxy krymper kun ~ 2%. Han foreslog også, at gasser fra polyesteren kan beskadige komponenter, mens den hærder. Efter aldrig at have arbejdet med en klar epoxy før, lavede jeg nogle teststøbninger. Jeg startede med at støbe nogle prøver i en isterningbakke. Solsikkefrøolie, silikonesmøremiddel og silikonecyklensmøremiddel blev testet som frigivelsesmidler. En prøve blev udført uden frigivelsesmiddel. Silikonesmøremidlerne blev bundet i bunden af formen og efterlod posemærker på epoxyen. Kontrollen suger til bunden af formen. Olien fungerede ret godt, men efterlod en lille rest i epoxyen. Dernæst var jeg nødt til at vide, hvordan jeg skulle lave en flerlags støbning med dette materiale. En polyesterharpiks hældes normalt i lag. Et første lag får lov til at størkne (ca. 15 minutter) til en gel. Et objekt placeres på det første lag, og et andet lag frisk harpiks hældes ovenpå. Arbejdstiden for min epoxy er cirka 60 minutter. Jeg hældte et første lag og kontrollerede det efter 30 minutter - stadig blødt. Efter ca. 1 time og 15 minutter var det første lag stivnet nok til at placere et objekt på det. Til denne test lagde jeg LED -testbrættet set i trin 2 med forsiden nedad på det første lag og dækket med et lag frisk epoxy. Dette fungerede godt, lysdioderne sprang ikke af brættet. Jeg konkluderede her, at uden en ordentlig form, er den klareste overflade, jeg kan lave, luft/epoxy -grænsefladen. 'Toppen' af støbningen har en betydelig miscus. Miskus er begrænset til selve kanten af kabinettet og fjernes let med en kværn. Til den første rigtige test havde jeg brug for en rektangulær plastform. Den bedste løsning, jeg fandt, var en 'smeer kaas' container. Det var ikke perfekt, så jeg lavede det mindre med et par lag tapeindpakket foamcore. Dette var ikke en stjerneform, men at vælge toppen som skærmens overflade gav mig lidt spillerum. Formen blev let tørret med olie på et køkkenrulle. Jeg droppede flerlags hældningsproceduren ovenfra. Jeg loddet ledninger fra møntcellebatteriholderen til printkortet. Celleholderen blev varmlimet (ok, klistret) til bunden af printkortet. Batteriholderen var fyldt med stickie-tack, og programmeringshovedet beskyttet med endnu mere stickie tack (plasticine ville også fungere godt). Dette blev derefter placeret med forsiden opad i formen. Den klæbrige klæbebeskyttelse, der beskytter batteriet og hovedet, blev presset fast i bunden af formen og forankrede uret på plads. Klar epoxy blev hældt i formen, indtil det dækkede uret. Pin-headers var stadig ret lange, men kan skæres efter epoxy tørrer. Uret frigivet fra formen efter cirka 36 timer. Den beskyttende kitt blev fjernet med en skruetrækker. Kanterne blev glattet med en boremaskine. Uret var støbt lidt stort til at blive brugt som et armbåndsur. Jeg kan prøve at skære det ned, hvis jeg kan finde en båndsav. Foreløbig bliver det et lommeur. Tape-over-foamcore gav en kølig tekstur og ultraklar overflade. Næste gang vil jeg prøve at lave hele formen ved hjælp af dette materiale, noget mere i nærheden af armbåndsurets størrelse.

Trin 12: Yderligere forbedringer

Yderligere forbedringer
Yderligere forbedringer

Ud over de softwareopdateringer, der er beskrevet i køreplanen, er der flere forbedringsområder.

Hardware En 4x5 -matrix med 0805 lysdioder ville optage samme plads som det eksisterende 1206 -array. Jeg købte flere typer 0805 lysdioder for at prøve i fremtidige designs. Den tidligere nævnte temperatursensor kan tilføjes for at lave en avanceret 'club-mode' opgraderingspakke. Printkortet er designet til fremstilling af Olimex som et dobbeltsidet bord (~ $ 33). De arbejder direkte fra Eagle -filer og paneler (lav flere mindre tavler fra et stort bord) gratis. Jeg har ikke gjort dette, men jeg ville købe en hvis en anden fik dem lavet. Software Der er meget ekstra plads på PIC'en. Der er planlagt et speedometer/kilometertæller. Spil kan tilføjes.

Anbefalede: