Innholdsfortegnelse:

01//atch: 12 trinn
01//atch: 12 trinn

Video: 01//atch: 12 trinn

Video: 01//atch: 12 trinn
Video: Виниловый сайдинг! Секреты монтажа и полезные хитрости, о которых мало кто знает! 2024, Oktober
Anonim
01/\/atch
01/\/atch
01/\/atch
01/\/atch
01/\/atch
01/\/atch

01/\/atch, fordi … "det er 10 typer mennesker i verden, de som leser binær og de som ikke gjør det" - en slashdot tag line. 01/\/atch er et binært armbåndsur med en LED -skjerm. Ytterligere funksjoner er tilgjengelige via et rullende menysystem på 3x4 LED -matrisen. Gjeldende funksjoner inkluderer: spenningsmåler, binær teller, klubbmodus og tidsvisning. Klokken er fullt programmerbar. Fremtidige fastvareoppgraderinger vil omfatte: stoppeklokke/tidtaker, alarm, sykkelhastighetsmåler/kilometerteller, datalogging og en avansert konfigurasjonsmeny. Se den i aksjon: https://www.youtube.com/embed/l_tApl3JmmMA Alle prosjektfilene er i.zip -arkivet på denne siden. Skjematisk og PCB i Cadsoft Eagle -format. Firmware i mikroBasic. Teksten i denne instruksen er inkludert som.odt (OO.org/open tekst) og.pdf filer. Topplaget PCB-kunst (speilvendt) er inkludert som. PDF klar for toneroverføring eller fotoprosess. Det kopieres flere ganger på et enkelt ark fordi jeg må doble opp på transparenter. 01/\/atch ble inspirert av Mini Dotclock, og en påfølgende samtale i kommentarfeltet: https://www.instructables.com /ex/i/47F2F12223BA1029BC6B001143E7E506Dette er også et halvt skritt mot en overflatemontert nixie -klokke jeg jobber med. 01/\/atch -prosjektet er en introduksjon til overflatemonterte komponenter og tid som holder logikk uten den ekstra kompleksiteten til en nixie -rørstrømforsyning. (https://www.instructables.com/ex/i/2C2A7DA625911029BC6B001143E7E506/?ALLSTEPS) En liten googling viste opp denne binære klokken på thinkgeek: https://www.thinkgeek.com/gadgets/watches/6a17/The 01/ \/atch er basert på en PIC16F913/6. Denne PIC ble opprinnelig valgt fordi den hadde en maskinvare LCD -driver. Jeg tenkte at jeg kunne gjøre LCD -driveren til en LED -multiplexer med noen få transistorer. Dette viste seg ikke å være tilfelle. Det er fortsatt et godt valg fordi det har tonnevis med programmeringsplass og svært få begrensede I/O -pinner. F913 koster omtrent $ 2,00 på Mouser. PIC16F913 Detaljer: https://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE & nodeId = 1335 & dDocName = en020199PIC16F916 Detaljer (samme som 913, med mer programplass): https:// www. microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1335&dDocName=en020201PIC16F913/6 Datablad (PDF -format): https://ww1.microchip.com/downloads/en/DeviceDoc/41250E.pdf 3D -bildene som ble brukt i denne instruksjonen fra Eagle Board -filer med Eagle3D og POV ray: https://www.matwei.de/doku.php? id = no: eagle3d: eagle3d

Trinn 1: Display

Vise
Vise
Vise
Vise
Vise
Vise

Det binære displayet består av 12 lysdioder i en 3x4 matrise. Hver kolonne med fire lysdioder representerer en firbit 'nibble', eller en halv byte. Hver kolonne kan vise 0-15 i binær (1+2+4+8 = 15). Tid vises i de tre radene som timer/titalls minutter/minutter. Dette er ikke sant binært, men et forenklet delsett som gjør klokken lettere å lese. Thinkgeek -klokken bruker for eksempel "sannere" binær for å representere minutter med en hel byte. Uansett hva jeg foretrekker, vil den sanne nørden vise tid ved bruk av Unix -epoken, i binær! (https://en.wikipedia.org/wiki/Unix_timestamp) LED -multiplexen er grei. Radene (4) kobles til pinnene på PIC gjennom strømbegrensende motstander. Bare en strømbegrensningsmotstand brukes for hver rad fordi bare én LED per rad lyser. Lysdiodene kjøres på 20ma, ved bruk av 56 ohm motstander (56ohm @ 3 volt = 20ma). Lysdiodene kan kjøres høyere fordi de er multiplekset, databladet oppførte noe rundt 40ma. Jeg synes de er for lyse på bare 20ma-multipleksede. Kolonner (3) er koblet til jord med NPN-transistorer. Transistorene byttes av PIC -pinner gjennom 1Kohm -motstander. Multiplexen fungerer ved å jorde en kolonne med lysdioder gjennom transistoren mens du tenner de riktige LED -radene for den kolonnen. Dette gjentas for hver kolonne kort etter hverandre, slik at matrisen ser ut til å være kontinuerlig tent. PIC Timer0 driver multiplexen. Den teller til 256 og endrer deretter radverdier og den jordede kolonnen. Transistor: NPN Transistor, NPN/ 32V/ 100mA, (Mouser #512-BCW60D $ 0,05).

Trinn 2: LED -valg

LED -valg
LED -valg
LED -valg
LED -valg

På denne klokken ble gule og røde lysdioder i størrelse 1206 brukt med en strømbegrensende motstand på 56 ohm. Fargene ble valgt for lav pris. Røde, gule og oransje lysdioder er omtrent 10 cent hver, mens blå LED er 40 cent og over. Dessuten er LED -blått desidert avkjølt nå. Gi meg beskjed hvis du finner noen lilla.

Bildet viser de 5 LED -typene jeg auditionerte. Mouser Art.nr. 121SURCS530A28 Everlight LED SMD Red Water Clear $ 0.110 638-1121UYCS530A28 Everlight LED SMD Yellow Water Clear $ 0.110 Everlight rød og gul ble brukt på prototypeklokken. Jeg liker Lite-On rød og oransje bedre, de vil bli brukt på neste klokke jeg lager.

Trinn 3: Grensesnitt/knapper

Grensesnitt/knapper
Grensesnitt/knapper

En nerdete klokke trenger et nerdete grensesnitt. Kapasitive berøringssensorer er raseri akkurat nå, men krever ganske mange ekstra komponenter. I stedet gikk jeg med en Darlington -transistorbasert berøringssensor med pinhoder som kontaktpunkt. Hva er geekier enn en pin -header? Ingenting. Jeg så ideen først her: (https://www.kpsec.freeuk.com/trancirc.htm):"Ett Darlington -par er tilstrekkelig følsomt for å reagere på den lille strømmen som huden din passerer, og den kan brukes til å gjør en berøringsbryter som vist i diagrammet. For denne kretsen som bare tenner en LED, kan de to transistorene være laveffekttransistorer for generelle formål. 100 kOhm-motstanden beskytter transistorene hvis kontaktene er forbundet med et stykke ledning. "A PNP -transistor ble lagt til denne enkle designen (i stedet for lysdioden i diagrammet) slik at den kunne gi høy/lav utgang til PIC. En nedtrekksmotstand ble lagt mellom PIC-pinnen og bakken for å forhindre falske knappetrykk. Denne bryteren er solid state, vanntett og lite strøm - med den ekstra nørden til pinhoder. Brytere blir avstoppet ved hjelp av Timer2 på PIC. Når du trykker på en bryter, startes Timer2 (8 bit timer) med en 16 forhåndskalkulator og 16 postscaler. På timer 2 avbryter PIC -kontrollene for å se om knappene fremdeles er trykket. Etter to påfølgende avbrudd uten at noen knapper er trykket ned, stoppes timeren og knappene konfigureres for ytterligere inngang. Den øverste bryteren er koblet til PIC -avbruddspinnen. Inngang på denne pinnen kan bringe PIC ut av hvilemodus. Dette lar oss bruke en fin strømstyringsteknikk: PIC -en er i lavstrømsmodus når skjermen ikke er i bruk. Inngang på knappene vekker PIC og gjenopptar driften. Transistorer: Darlington Transistor, SOT-23, (Mouser #512-MMBT6427, $ 0,07). PNP-transistor, SOT-23, (Mouser #512-BCW89, $ 0,06).

Trinn 4: Hold tiden

Tiden holder
Tiden holder

Microchip app note 582 beskriver de grunnleggende prinsippene bak en PIC -basert klokke med lav effekt. (Http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011057) Klokken er enkel og elegant. En 32.768 kHz urkrystall er koblet til timer1 -oscillatorpinnene på PIC. Timer1 er flott for dette fordi det kan øke selv om PIC sover. Timer1 er konfigurert til å telle til 65536 (2 sekunder ved 32.768 kHz) og vekke PIC fra hvilemodus med et avbrudd. Når PIC -en våkner, øker den tiden med to sekunder. PIC er bare aktiv og bruker strøm i en kort stund hvert få sekund. Jeg brukte en billig kvartsur -krystall fra Citizen. Jeg selv om Citizen -navnet kan gi klokken min legitimitet. CFS206 (12.5pf) har omtrent +/- 1.7 minutters nøyaktighet per år (20ppm). To 33pF kondensatorer fullfører den eksterne krystallkretsen. 33pF er sannsynligvis litt mye, men det var tilgjengelig lokalt til en rimelig pris. En bedre krystall kan brukes for mer nøyaktig tid. Krystall: Citizen KHz Range Crystals, 32.768 KHZ 12.5pF, (mouser #695-CFS206-327KFB, $ 0.30). Kondensatorer: 2x33pF, 1206 SMD.

Trinn 5: Spenningsmåler

Spenningsmåler
Spenningsmåler

Som om vi ikke hadde sunket til dypet av geekerie med en binær klokke, slår vi på en spenningsreferanse og inngangspinne for å lage en spenningsmåler. Spenningsreferansen er Microchip MCP1525. Dette er en 2,5 volt referanse med et driftsområde på 2,7 til 10+ volt. På den avbildede klokken brukes TO-92-pakken, selv om fremtidige klokker vil bruke overflatemonteringsversjonen (SOT-23). Referansen drives av en PIC -pinne, slik at den kan slås av for å spare strøm. På dette tidspunktet kan vi måle opptil 2,5 volt ved hjelp av PICs analoge digitale omformer. Vi tar dette et skritt videre og legger til en motstandsspenningsdeler til multimeterinngangen. Ved å bruke to motstander (100K/10K) deler vi inngangsspenningen med 11 og gir et nytt inngangsområde på ~ 30 volt. Dette er et godt poeng som omfatter alle lavspenningene vi sannsynligvis vil støte på (1,2/1,5 volt batterier, 3 volt myntceller, 5 volt logikk, 9 volt batterier og 12 volt strømskinner). En 22Kohm -motstand kan erstattes av 10K -motstanden som gir et mindre område, men høyere oppløsning. Regnearket som følger med denne instruksjonsboken kan hjelpe deg med å velge motstandsverdier. Grunn- og målesonder kobles til programmeringsoverskriften på baksiden av klokken. MCP1525 Detaljer: https://www.microchip.com/stellent/idcplgidcplg? IdcService = SS_GET_PAGE & nodeId = 1335 & dDocName = no019700

Trinn 6: Programmering av topptekst/eksterne tilkoblinger

Programmering av topptekst/eksterne tilkoblinger
Programmering av topptekst/eksterne tilkoblinger
Programmering av topptekst/eksterne tilkoblinger
Programmering av topptekst/eksterne tilkoblinger

Klokken er 'programmerbar'. Et ICSP -topptekst bringes ut på baksiden slik at ny fastvare kan installeres. Overskriften er en rad med lavprofil kvinnelige pin-kontakter jeg fant i min lokale elektronikkbutikk. Det samme kan du få ved å kutte en DIP -kontakt av høy kvalitet på halvveien. Jeg kobler ICSP-pluggen min med en pin-header "gender-changer"-sett inn et stykke pin-header i kontakten, og koble deretter ICSP-pluggen til pin-headeren. Du trenger en ICSP -programmerer for å sette ny programvare i klokken. En enkel JDM2 ICSP -programmerer er inkludert i Cadsoft Eagle -filene.

Når den ikke brukes til programmering, kan ICSP -hodet brukes til datainnsamling, hendelseslogging, etc. Alle ICSP -pinnene er tilgjengelige for bruk, som nevnt i tabellen nedenfor. Spenningsmålerpinnen (pin 1/6) er ganske mye dedikert til den bruken på grunn av spenningsdeleren. Multimeter - ADC, I/O, med motstandsdeler. (PIN2, PORTA0/AN0) MCLR - pin bare inngang. Schmitt utløserinngang for bråkete signaler. (PIN1, RE3) Vcc - +3 volt Vss - bakkenål Data - Inngang/utgang med avbrudd ved endring, valgfri svak opptrekk (PIN27, RB6) Klokke - I/O med avbrudd ved endring, alternativ svak pull-up (PIN28, RB7)

Trinn 7: Fastvare

Fastvare
Fastvare

Firmware ble skrevet med mikroBasic freeware -versjon. Gjeldende fastvare er v0.1. Fremtidige firmwares vil trolig bli skrevet i C. Konfigurasjonsalternativer er angitt i fastvaren. De skal være som følger: MCLR - DISABLEDBODEN/BOREN - DISABLEDWDT - DISABLEDOscillator -Intern Osc, NO clock -out. Jeg klarte ikke å programmere 16F913 med min favoritt PIC programmeringsprogramvare (WinPIC800), men DL4YHS 'WinPIC fungerte bra (https://www.qsl.net/dl4yhf/winpicpr.html).v0.1Konfigurasjon/Menysystem - Menyalternativer ruller over displayet og velges/avanseres ved hjelp av de to inngangsknappene. Tid - viser tiden i binær (standard når en knapp trykkes). Klik - en teller. Noen ganger finner jeg ut at jeg utfører tellinger. Trafikk teller, fugl teller, uansett. 01/\/atch subs som en binær teller. Klubbmodus - Den virkelige verdien til en hvilken som helst klokke bestemmes av "klubb" -modus. 01/\/atch bruker en tilfeldig tallgenerator for å blinke mønstre på LED -displayet. Det er også mulig å inkludere ordfragmenter ved å bruke det interne matriseskriftbiblioteket (mer kommer). Hastigheten kan justeres med knapp 1. Den ultimate klubboppgraderingspakken vil inkludere en temperatursensor som styrer hastigheten på mønsterendring. Når brukeren varmes opp, endres mønstrene raskere. Volt - spenningsmåler. Viser for øyeblikket rå ADC -avlesning i 10 biter. Oppgraderes til faktisk voltverdi i v0.2. Set - Set time. Exit - Exit -meny, sett PIC i hvilemodus.

Trinn 8: Rullemenysystem

Rullende menysystem
Rullende menysystem

Rullemenysystem Du får tilgang til funksjoner via rullemenysystemet. Menyelementer lastes som bitmaps i en matrise og ruller kontinuerlig "oppover". Rullingen er basert på et multiplum av Timer0 mux -driveren. Rullemenyen "tidsavbrudd" ved bruk av et multiplum av Timer1 (sekundteller) etter omtrent 10 sekunder. Menyalternativer (Bruke klokken) (Dette gjelder fastvareversjon 0.1) Når et nytt batteri settes i klokken, vises 'SET 'menyalternativ som standard. Trykk på knapp 2 for å gå til innstilt modus. Gjeldende tid vises (12:11). Bruk knapp 1 for å øke timene, trykk på knapp 2 for å gå videre til neste tidsenhet (timer, 10 minutter, minutter). Trykk på knapp 2 etter at minuttene er angitt for å spare tid og gå tilbake til rullemenyen. For å spare strøm er displayet og PIC vanligvis av. Trykk på knapp 1 for å vekke PIC og vise gjeldende tid i 10 sekunder. Trykk på knapp 2 mens tiden vises for å få tilgang til rullemenyen. Klokkefunksjonene er tilgjengelige via rullemenyen. Trykk på knapp 1 for å gå videre til neste menyelement, trykk på knapp 2 for å velge et menyelement. Se det i aksjon: https://www.youtube.com/embed/l_tApl3JmmMKnappfunksjoner for hvert menyalternativ er skissert i tabellen under. B1 og B2 er forkortelser for knapp 1 og knapp 2.

Trinn 9: Firmware veikart

Firmware veikart
Firmware veikart

v0.2

En avslutningsbekreftelse/dialog. Oppsett-Utvid oppsettalternativene til å omfatte: Varighet i tide/tidsavbrudd for meny (og en modus som alltid er på). Lysstyrke (driftssyklus). Rullehastighet. Meny Skriftoppgradering -'E 'og' B 'ser veldig ille ut, bruk' e ',' b '. Flytt til 1Mhz eller 32.768khz oscillator (4MHz i v0.1). v0.3 Stoppeklokke (tidsøkning fremover) -Starter å telle sekunder, og øker deretter minutter og timer etter visningsgrensen på 15:59. Timer/alarm (tidsøkning bakover) -En dekrementeringstimer, alle lysdioder blinker når timeren når 0. EEPROM (loggingsverdier for flashminne) -Lagre spenninger, tellinger, alternativer, stoppeklokke osv. For å blinke EEPROM -minne. -Logg antall dager siden batteribytte. Også: antall timer med visning på. v0.4 Eksterne maskinvarefunksjoner (ved bruk av ICSP -topptekst): Hendelseslogging ved avbrudd. Sykkelteller/speedometer. Justerbar enhetsvisning (binær eller desimal skrift).

Trinn 10: PCB

PCB
PCB
PCB
PCB
PCB
PCB

PCB og krets er i ørneformatet. Jeg inkluderte også en haug med biblioteker jeg brukte til å lage tavlen som kan være nødvendig.

Kretskortet er designet med for det meste overflatemonterte komponenter. Tavlen ble laget med blekkskriver -transparenter på et fotopositivt bord. Dette var mitt første overflatemonteringsbrett (både ets og montering). Jeg lagde et ensidig brett og brukte jumperwires for sporene i bunnlaget. Tavlen ble laget med tanke på produksjon av Olimex, så sjekkfilen for 10mill -reglene ble brukt ved utformingen av brettet. Ingenting er fryktelig lite, men det er absolutt utfordrende. Alt ble håndloddet ved hjelp av et jern på 10 euro, stickie-tack og et sterkt lys. Et forstørrelsesglass var ikke nødvendig. Krystallet ble igjen som en overflatemonteringskomponent. Metallboksen er et karakteristisk utseende element, og mye mer identifiserbar enn en overflatemontert svart boks. Prototypen på bildet bruker også en TO-92 spenningsreferanse-den siste PCB indikerer en SOT-23-versjon som jeg ikke (ennå) hadde for hånden da jeg laget tavlen. Krets og kretskort er i prosjektarkivet (Cadsoft Eagle -format - freeware -versjon www.cadsoft.de). Komponentplassering kan sees i PCB -filen. Jeg lagde også en PDF med topplaget speilet og kopiert flere ganger. Dette bør være klart for toneroverføring eller fotoprosess. Deleliste (gjennom hull) 32.768kHz Watch Crystal (0206 metallboks) Pin header -x4 Programming header - 6 pins Parts list (surface mount) SO -300 PIC16F1206 0.1uF kondensator 1206 33pf kondensatorer - x2 1206 LED (gul, rød, oransje, etc) -x12 1206 Motstand - 4x56 ohm 1206 Motstand - 3x1Kohm 1206 Motstand - 3x10Kohm 1206 Motstand - 3x100Kohm SOT -23 NPN transistor (100ma eller mer) SOT -23 PNP transistor (generelt formål) SOT -23 NPN Darlington transistor (generelt formål), hfe på ~ 10000) SOT-23 MCP1525 Spenningsreferanse (2,5 volt) Batteri CR2032 3v litium

Trinn 11: Potting the Watch

Potting the Watch
Potting the Watch
Potting the Watch
Potting the Watch
Potting the Watch
Potting the Watch

Potting the watch For å gjøre klokken egnet til daglig bruk, trengte den et etui. Jeg besøkte AFF Materials (https://www.aff-materials.com/) for å kjøpe polyesterharpiks. En hyggelig fyr der foreslo at jeg skulle bruke en klar epoxy i stedet. Ifølge ham krymper polyesterharpiksen ~ 5%, noe som kan ødelegge forbindelsene på kretskortet. Den klare epoksyen krymper bare ~ 2%. Han foreslo også at gasser fra polyesteren kan skade komponentene mens den herdes. Etter å aldri ha jobbet med en klar epoxy før, gjorde jeg noen teststøp. Jeg begynte med å kaste noen prøver i et isbitbrett. Solsikkefrøolje, silikon smøremiddel og silikon sykkelsmøremiddel ble testet som slippmidler. En prøve ble utført uten slippmiddel. Silikon smøremidlene perlet i bunnen av formen og etterlot posemerker på epoksyen. Kontrollen suger til bunnen av formen. Oljen fungerte ganske bra, men etterlot seg en liten rest i epoksyet. Deretter trengte jeg å vite hvordan jeg skulle gjøre en flerlags støping med dette materialet. En polyesterharpiks helles vanligvis i lag. Et første lag får stivne (ca. 15 minutter) til en gel. Et objekt plasseres på det første laget og et andre lag med fersk harpiks helles på toppen. Arbeidstiden til epoksyen min er omtrent 60 minutter. Jeg helte et første lag og sjekket det etter 30 minutter - fremdeles mykt. Etter omtrent 1 time og 15 minutter hadde det første laget stivnet nok til å plassere et objekt på det. For denne testen la jeg LED -testkortet sett i trinn 2 med forsiden ned på det første laget, og dekket med et lag fersk epoxy. Dette fungerte bra, lysdiodene dukket ikke opp av brettet. Jeg konkluderte her med at uten en skikkelig form, er den klareste overflaten jeg kan lage luft/epoxy -grensesnittet. 'Toppen' av støpingen har en betydelig miscus. Miskusen er begrenset til ytterkanten av foringsrøret og fjernes enkelt med en kvern. For den første virkelige testen trengte jeg en rektangulær plastform. Det beste alternativet jeg fant var en 'smeer kaas' container. Det var ikke perfekt, så jeg gjorde det mindre med et par lag med tape-pakket foamcore. Dette var ikke en fantastisk form, men å velge toppen som skjermoverflate ga meg litt spillerom. Formen ble lett tørket med olje på et papirhåndkle. Jeg droppet flerlags hellingsprosedyren ovenfra. Jeg loddet ledninger fra myntcellebatteriholderen til kretskortet. Celleholderen ble varmlimt (ok, klissete) til bunnen av kretskortet. Batteriholderen var fylt med stickie-tack, og programmeringshodet beskyttet med enda mer stickie tack (plasticine ville også fungere bra). Dette ble deretter plassert, med forsiden opp, i formen. Klistrelappen som beskytter batteriet og hodet ble presset godt ned i bunnen av formen og forankret klokken på plass. Klar epoxy ble hellet i formen til den dekket klokken. Pinnehodene var fremdeles ganske lange, men kan kuttes etter at epoksyet har tørket. Uret ble sluppet ut av formen etter omtrent 36 timer. Beskyttelsesmassen ble fjernet med en skrutrekker. Kantene ble glattet med en borepressekvern. Klokken var støpt litt stor for å brukes som et armbåndsur. Jeg kan prøve å kutte den ned hvis jeg finner en båndsag. Foreløpig blir det en lommeur. Tape-over-foamcore ga en kul tekstur og ultraklar overflate. Neste gang skal jeg prøve å lage hele formen ved hjelp av dette materialet, noe mer i nærheten av armbåndsurets størrelse.

Trinn 12: Ytterligere forbedringer

Ytterligere forbedringer
Ytterligere forbedringer

I tillegg til programvareoppdateringene som er skissert i veikartet, er det flere forbedringsområder.

Maskinvare En 4x5 -matrise med 0805 lysdioder vil ta den samme plassen som den eksisterende 1206 -serien. Jeg kjøpte flere typer 0805 lysdioder for å prøve i fremtidige design. Den tidligere nevnte temperatursensoren kan legges til for å lage en avansert "klubbmodus" oppgraderingspakke. Kretskortet ble designet for produksjon av Olimex som et dobbeltsidig brett (~ $ 33). De jobber rett fra Eagle -filer og paneler (gjør flere mindre brett fra ett stort brett) gratis. Jeg har ikke gjort dette, men jeg ville kjøpe en hvis noen andre hadde laget dem. Programvare Det er mye ekstra plass på PIC. Det er planlagt speedometer/kilometerteller. Spill kan legges til.

Anbefalt: