Talaan ng mga Nilalaman:

Wort-Uhr: 5 Hakbang
Wort-Uhr: 5 Hakbang

Video: Wort-Uhr: 5 Hakbang

Video: Wort-Uhr: 5 Hakbang
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Nobyembre
Anonim
Wort-Uhr
Wort-Uhr

Kumusta magkasama!

Ito ang aking unang maituturo at kung mayroon kang anumang mga ideya kung paano ito mapabuti o gawing mas madaling maunawaan mangyaring huwag mag-atubiling makipag-ugnay sa akin!

Sa una pa lang, ang ganitong uri ng "orasan" ay hindi ko ideya! Nakita ko ang maraming througout sa internet at maaari silang maging orderd para lamang sa isang pares ng mga pera sa diefferent webstores. Ngunit ayaw kong bumili ng isa, nais kong gumawa ng isa sa aking sarili upang malaman at maunawaan kung paano ito gumagana.

Isang salita sa mga kasapi na "hindi german" … Paumanhin para sa katotohanang ito ay isang "German Wort Uhr" lamang. Maaari itong madaling mai-convert sa ingles o anumang iba pang wika, ngunit dahil ako ay isang Aleman ginawa ko ito sa aking wika. Kung kailangan mo ng suporta para sa iyong wika makipag-ugnay sa akin at susubukan kong tulungan ka.

Magsimula na tayo …

Hakbang 1: Ang Iskematika

Ang Iskolar
Ang Iskolar

Ang eskematiko ay tuwid na pasulong at kung ang larawan ay hindi magandang basahin, mayroon ding isang PDF file.

Magsimula tayo sa ibabang kaliwang sulok. Mayroong isang simpleng power supply gamit ang isang LM7805 upang makabuo ng isang matatag na 5V output para sa PIC, shift register (74HC164) at real time chip DS3231. Ang lahat ng mga LED ay ibinibigay din mula sa bahaging ito. Ang D22 sa kanang dulo ay para lamang sa pagpapahiwatig ng supply ng kuryente at madaling maiiwan kung hindi gusto.

Maaari mong gamitin ang anumang DC power supply para sa orasan na may mas mababa sa 40V, ngunit pagkatapos ay dapat mong piliin ang naaangkop na halaga para sa C7. Dapat itong magkaroon ng isang rating ng boltahe na hindi bababa sa doble ng input boltahe at tandaan na lumilikha ka ng init sa LM7805 kaya't dapat mong subukang panatilihing mas mababa ang boltahe ng pag-input hangga't maaari dahil ang lahat ay pag-aaksaya lamang ng enerhiya. Ang pinakamahusay na magkasya ay isang bagay sa pagitan ng 9V isang 12V DC.

Huwag mag-abala tungkol sa polarity ng iyong supply ng kuryente … Ang p-channel MOSFET (Q1) ay gumaganap bilang isang maling proteksyon sa polarity at ang orasan ay hindi gagana at hindi makakakuha ng anumang pinsala. Maaari mong suriin ito sa "power" LED D22 kung naka-mount.

Sa kanang bahagi ng eskematiko ay ang mga serial-in parallel-out shift register. Napagpasyahan kong gamitin ang mga ito dahil hindi ko nais na gumamit ng isang malaking PIC na may maraming I / O-Ports. Nais kong gumamit ng isang mas maliit at mayroon pa rin akong 16F1829 sa bahay kaya't ang pagpipilian ay malinaw na. Ang data (IN_1, IN_2 at IN_3) ay ibinibigay ng PIC (tingnan ang seksyon ng code sa ibaba) at ang REGISTER_CLK din. Para sa pagiging simple sa aking code at layout ng PCB ginamit ko ang dalawa sa 74HC164 para sa mga oras at ang huli para sa "lohika".

Sa kaliwang sulok sa itaas ay ang PIC at lahat ng kinakailangang mga bahagi. Ginamit ko ang panloob na orasan kaya't hindi kinakailangan ng oszillator. Tatlong resistors lamang para sa SCL, SDA at MCLR. Para sa katotohanang ginamit ko ang 32kHz bilang isang pahiwatig ng "eksaktong mga segundo" hindi na kailangan para sa isang medyo matatag at tumpak na dalas para sa PIC.

Sa gitna mayroong DS3231 na may isang minimum sa mga panlabas na bahagi. Sa katunayan ginamit ko lamang ang mga input ng SDA at SCL para sa komunikasyon sa paglipas ng I²C at ang output na 32kHZ bilang isang panlabas na sanggunian ng orasan para sa Timer1 ng PIC16F1829. Para sa output na ito sinabi ng datasheet na ito ay isang panlabas na pull-up risistor na kinakailangan. Ang iba pang mga output na hindi ko ginamit sa proyektong ito at iniwan silang hindi konektado.

Sa gitna din, ang mga LED … Tulad ng nababasa mo sa eskematiko ginamit ko ang mga asul na LED (iyong may malinaw na pabahay) at isang halaga ng risistor na 1k Ohms. Kung balak mong gawin ang proyektong ito sa iyong sarili dapat mong piliin ang mga halaga ng mga resistor na ito ayon sa kulay at uri ng mga LED na iyong pinili. Tandaan din kung saan mo nais na i-set up ang orasan. Ang aking isa ay nakatayo sa aking silid tulugan samakatuwid ayoko sa mga LED na masyadong maliwanag at pumili ng isang mas malaking halaga para sa mga resistors. Gumawa ng ilang pagsubok sa isang breadboard na may mga LED at halaga ng risistor bago i-mount ang mga ito sa PCB.

Hakbang 2: Layout

Layout
Layout
Layout
Layout
Layout
Layout

Matapos matapos ang eskematiko oras na upang ruta ang PCB. Para doon ginamit ko ang KiCAD (para sa eskematiko din). Mayroong hindi masyadong maraming sasabihin, ruta lamang ang mga linya.

Para sa katotohanan na nai-print ko ang pabahay ng orasan nang mag-isa, napakahalaga kung saan matatagpuan ang mga LED sa tuktok na layer. Inilagay ko lamang ang mga LED at resistor sa tuktok na layer, dahil inorder ko ang aking PCB na bahagyang naka-mount (lahat ng mga bahagi ng SMD) at dahil ang piniling kumpanya na para doon ay naglalagay lamang ng mga bahagi sa isang gilid at hindi dobleng panig.

Maaari mong makita ang paglalagay sa dalawang 3-dimensional na larawan na ginawa ko mula sa KiCAD.

Kung interesado ka … Posibleng i-export ang KiCAD PCB sa Eagle at pagkatapos ay madali itong maitayo ang pabahay, dahil mayroon kang sanggunian mula sa PCB.

Hakbang 3: "Logic" ng "Wort-Uhr"

Pinakamalaking bahagi para sa proyektong ito ay ang code para sa PIC…

Sa unang paghahanap ng "lohika" ng pasalitang oras sa Aleman at isinalin ito sa code.

Sa kasamaang palad hindi posible na mai-upload nang direkta ang file ng Excel, ngunit inaasahan kong ang PDF export ay sapat na nababasa para sa iyo. Kung hindi, mangyaring makipag-ugnay sa akin at magpapadala ako sa iyo ng orihinal na Excel file. Sa PDF maaari mong makita kung paano ko nai-set up ang lohika para sa aking orasan. Maaari mong makita kung paano ko napunta ang iba't ibang mga oras at kung paano ang pagbaybay. Ang pagkalkula sa loob ng code (pangunahin kung mga pahayag na iba pa) ay maaaring makuha mula sa impormasyon sa kanang bahagi ng talahanayan. Ang isang bahagi ay para sa minuto at isang bahagi para sa oras.

Tulad ng nakikita mong ito ay walang mahika at madaling ma-code sa C. Ang "trickiest" na punto sa loob ng lohika ay kung paano hawakan ang oras tulad ng nakikita mo sa file na sa simula lamang ng isang oras na ipinapakita ang aktwal na oras. Sa Aleman (marahil ito ay maaaring isang tukoy na bagay lamang sa Bavarian) ang "susunod na oras" ay ginamit nang maaga.

Para sa pag-coding ginamit ko ang MPLABX bilang aking pinili na IDE.

Hakbang 4: Mga Code ng Snippet

Mga Code ng Snippet
Mga Code ng Snippet
Mga Code ng Snippet
Mga Code ng Snippet

Hindi ko mai-post ang aking code dito, ngunit kung balak mong isulat ang iyong sariling code bibigyan kita ng ilang mga pahiwatig kung ano ang "nadapa" ako sa panahon ng pag-unlad …

Una ang "pagrehistro" -filling:

Kung lumilipat ka ng bagong data sa mga pagrehistro nang madalas at sa sobrang ikot ay ginawa ko ang eksperyensya, na ang mga LED ay nagsimulang mag-flicker. Kaya gumawa ako ng ilang "mga humaharang na watawat", na everey minuto lamang ang isang bagong "pagkalkula" ng pasalitang oras ay tapos na at magrehistro ang pag-update ay ginawa.

Ang code para sa pagpuno ng mga rehistro ay nasa larawan sa itaas. Tulad ng nakikita mong pinupuno ko ang lahat ng 3 mga rehistro nang kahanay kaya kailangan ko ng 3 mga pin ng PIC para sa data at 1 pin para sa CLK. Ang 74HC164 ay kumukuha ng bagong data sa isang paglipat sa linya ng CLK mula 0 hanggang 1.

Ang natitirang code ay higit sa lahat nakasalalay sa PIC, ang "pasalitang oras" -logic at paghawak ng komunikasyon at mga pindutan. Pangunahin ay ibinibigay ng Microchip MPLABX dahil ginamit ko ang module na MSSP.

Ang isang magandang ideya ay ang pagbabasa ng datasheet ng DS3231 sapagkat ang data ay nakaimbak sa loob bilang BCD upang maaari mong "ibahin" ito sa iyong code. Sa ngayon na nababahala ako ako ay isang "natututo sa pamamagitan ng paggawa" na tao at NG COURSE ay hindi nabasa ang datasheet … Gastos ako ng maraming mga nerbiyos at oras.

Tulad ng napansin mo, mayroong dalawang paraan ng "pagsunod sa oras" sa pagpapatupad na ito.

  1. Maaari mong basahin ang aktwal na oras sa labas ng DS3231
  2. Maaari mong "bilangin ang mga segundo" sa mismong PIC at isabay lamang ang oras sa DS3231 paminsan-minsan

Nasa sa iyo ito at ang parehong paraan ay praktibal at tuwid. Ginamit ko ang unang pagpipilian at sinabay lamang ang oras kapag inaayos ang oras sa pamamagitan ng mga pindutan (oras ng pagsulat sa DS3231) o bawat 24 na oras (oras ng pagbabasa mula sa DS3231), dahil nais kong ipatupad ang higit pang lohika sa pamamagitan ng aking sarili. Pinapaikot ko rin ang aking orasan sa gabi (23:00 hanggang 05:00) kaya't medyo madali iyon sa aking palagay.

Hakbang 5: Ang Pabahay

Huling ngunit hindi bababa sa oras na ito ng pagkuha ng isang maikling pagtingin sa pabahay.

Tulad ng nabanggit ko sa itaas, ginawa ko ang pabahay nang mag-isa (gamit ang Eagle) at nai-print ang mga ito sa aking 3D-Printer kaya't mas mabuti akong tingnan ang mga posisyon ng iba't ibang mga LED.

Nakalakip maaari mong makita ang mga STL file kung nais mong gamitin ang mga ito.

Inaasahan kong makakatulong sa iyo ang pagtuturo na ito kapag nagtatayo ng iyong sariling "Wort-Uhr". Kung mayroon pang mga "bukas na katanungan" huwag mag-atubiling makipag-ugnay sa akin. Pinakamahusay na paraan sa pamamagitan ng pagbibigay ng puna sa ibaba, dahil maaaring hindi ka lamang ang may isang tukoy na katanungan.

Inirerekumendang: