Talaan ng mga Nilalaman:

Arduino Digital Clock Na-synchronize ng 60Hz Power Line: 8 Hakbang (na may Mga Larawan)
Arduino Digital Clock Na-synchronize ng 60Hz Power Line: 8 Hakbang (na may Mga Larawan)

Video: Arduino Digital Clock Na-synchronize ng 60Hz Power Line: 8 Hakbang (na may Mga Larawan)

Video: Arduino Digital Clock Na-synchronize ng 60Hz Power Line: 8 Hakbang (na may Mga Larawan)
Video: How to make a LED digital counter using 7- Segment Display 2024, Nobyembre
Anonim
Ang Arduino Digital Clock Na-synchronize ng 60Hz Power Line
Ang Arduino Digital Clock Na-synchronize ng 60Hz Power Line

Ang batay sa Arduino na digital na orasan ay na-synchronize ng linya ng kuryente na 60Hz. Mayroon itong isang simple at murang karaniwang anode 4 na digit na 7 segment na pagpapakita na nagpapakita ng mga oras at minuto. Gumagamit ito ng isang cross over detector upang matukoy kapag ang papasok na 60Hz sine wave ay tumatawid sa zero voltage point at nakakuha ng isang 60 Hz square wave.

Sa loob ng maikling panahon, ang dalas ng papasok na alon ng sine mula sa linya ng kuryente ay maaaring mag-iba nang bahagya dahil sa pag-load, ngunit sa mahabang panahon ay nag-average ito ng 60Hz nang eksakto. Maaari nating samantalahin ito upang makakuha ng mapagkukunan ng tiyempo upang ma-synchronize ang aming orasan.

Hakbang 1: Ang Diagram ng Circuit

Ang Circuit Diagram
Ang Circuit Diagram

Mayroong dalawang mga bersyon ng circuit depende sa kung nais mong gumamit ng isang transpormer na may isang center tap o isa na wala, sa alinmang kaso ang operasyon ng circuit ay halos magkapareho. Para sa build na ito ginamit ko ang isang wall adapter (walang gitnang tapikin) na naglalabas ng 12V AC. Gagamitin ko ang disenyo na ito (Digital Clock1 Circuit Diagram) para sa paglalarawan ng circuit. Tandaan na mahalagang gumamit ng isang adapter sa dingding na naglalabas ng 12V AC hindi 12V DC upang maaari kaming mag-tap sa AC sine wave para sa tiyempo. Maaari mo ring gamitin ang isang transpormer na naglalabas ng 9V AC, alisin ang R19 at gawin din ito, ngunit ang 12V ay karaniwang magagamit. Ganito gumagana ang circuit:

Ang 120V AC sa 60Hz ay na-convert sa 12V AC sa pamamagitan ng transpormer TR1. Pinakain ito upang i-diode ang D4 at maitama upang ang boltahe lamang na + ang pinakain, at hinuhusay ng humigit-kumulang DC na may ripple, ng capacitor C3. Ang boltahe sa C3 ay pinakain sa 7805 boltahe regulator (U6) sa pamamagitan ng risistor R19. Ginagamit ang R19 upang mabawasan ang boltahe sa C3 na sa aking kaso ay sinusukat sa humigit-kumulang 15VDC. Maaari itong makontrol ng 7805 ngunit sa antas na ito ng pag-input ng 7805 ay dapat na bumaba ng humigit-kumulang na 10VDC at bilang isang resulta ay medyo mainit. Sa pamamagitan ng paggamit ng R19 upang mahulog ang boltahe sa halos 10VDC pinipigilan namin ang U6 mula sa pag-init ng sobra. Kaya't ito ay hindi isang mahusay na diskarte sa pag-convert ng kuryente, ngunit gumagana ito para sa aming mga layunin. TANDAAN: gumamit ng hindi bababa sa isang 1 / 2W risistor o higit pa dito. Ang circuit ay nakakakuha ng tungkol sa 55 ma, kaya ang pagwawaldas ng kuryente sa R19 ay tungkol sa 1 / 3W batay sa P = I ** 2 * R o P = 55ma x 55ma x 120 ohms = 0.363W. Susunod na U6 ay naglabas ng purong 5V DC na may C4 at C5 sa output upang ma-filter ang anumang ingay sa linya ng kuryente na 5V. Pinapagana ng 5V DC ang lahat ng mga IC sa pisara.

Mula sa TR1 kumukuha rin kami ng isang sample ng hindi na-filter na AC signal at pakainin ito sa potentiometer RV1 na ginagamit upang ayusin ang antas na pinakain sa cross over detector. Ang R18 at R17 ay bumubuo ng isang divider ng boltahe upang higit na mabawasan ang antas ng boltahe ng AC na papasok. Tandaan na papasok ito sa 12V AC at kailangan nating bawasan ito sa mas mababa sa 5 V upang gumana ito sa aming cross over detector na kung saan ay lamang pinalakas ng 5VDC. Ang R15 at R16 ay nagbibigay ng kasalukuyang paglilimita habang ang D1 at D2 ay inilaan upang maiwasan ang labis na pag-overtake ng op-amp U5. Sa ipinakita na pagsasaayos ang output ng U5 sa pin 1 ay kahalili sa pagitan ng + 5V at 0V sa tuwing ang papasok na sine wave ay nagbabago mula positibo hanggang negatibo. Bumubuo ito ng isang 60 Hz square wave na kung saan ay pinakain sa microcontroller, U4. Ang program na na-load sa U4 pagkatapos ay ginagamit ang 60Hz square wave na ito upang madagdagan ang orasan bawat minuto at oras. Kung paano ito tapos ay tatalakayin sa seksyon ng programa ng software at sa mga komento sa software.

Ang U7 ang rehistro ng paglilipat ng 74HC595 ay ginagamit dahil mayroon kaming isang limitadong bilang ng mga digital na pin sa microprocessor, kaya ginagamit ito upang mapalawak ang bilang ng mga output. Gumagamit kami ng 4 digital na pin sa microprocessor ngunit makokontrol ang 7 mga segment sa display sa pamamagitan ng 74HC595. Ito ay nagagawa sa pamamagitan ng paglilipat ng paunang natukoy na mga pattern ng mga piraso, na nakaimbak sa microcontroller, at kung saan kumakatawan sa bawat digit na ipapakita, sa rehistro ng shift.

Ang display na ginamit dito ay karaniwang anode, kaya kailangan nating baligtarin ang mga antas ng signal na lalabas sa 74HC595 upang mai-on ang isang segment. Kapag ang isang segment ay dapat na naka-on ang signal na lalabas sa 74HC595 output pin ay nasa + 5V, ngunit kailangan namin ang pin na pinapakain nito sa display na nasa 0V upang mai-on ang segment ng display. Kaya upang gawin ito kailangan namin ng hex inverters U2 at U3. Sa kasamaang palad ang isang inverter IC ay mahahawakan lamang ang 6 na kabaligtaran kaya kailangan natin ang dalawa sa kanila kahit na sa pangalawa ay isa lamang ang ginagamit namin sa 6 na gate. Sayang sa kasamaang palad. Maaari kang magtanong kung bakit hindi gumamit ng isang karaniwang display ng uri ng cathode dito at alisin ang U2 at U3? Kaya ang sagot ay maaari mo, nagkataon lamang na mayroon akong isang karaniwang uri ng anode sa aking mga supply ng bahagi. Kung mayroon ka o nais na gumamit ng isang karaniwang display ng uri ng cathode alisin lamang ang U2 at U3 at rewire Q1 - Q4 upang ang mga kolektor ng transistor ay konektado sa mga display pin at ang mga transistor emitter ay konektado sa lupa. Q1 - Q4 control kung alin sa apat na 7-segment na ipinapakita ang aktibo. Kinokontrol ito ng microcontroller, sa pamamagitan ng mga pin na konektado sa base ng transistors Q1 - Q4.

Ang pagtaas at itakda ang mga pindutan ay gagamitin upang manu-manong itakda ang tamang oras ng orasan pagdating sa aktwal na paggamit ng orasan. Kapag ang pindutan ng Itakda ay pinindot sa sandaling ang pindutan ng Pagdagdag ay maaaring magamit upang hakbangin sa mga oras na ipinapakita sa display. Kapag ang pindutan ng Itakda ay pinindot muli, ang pindutan ng pagtaas ay maaaring magamit upang hakbangin ang mga minutong ipinakita sa display. Kapag ang pindutan ng Itakda ay pinindot sa pangatlong pagkakataon, ang oras ay naitakda. Hilahin ng R13 at R14 ang mga pin ng microcontroller na nauugnay sa mga pindutang ito nang mababa kapag hindi ginagamit.

Tandaan na narito namin ang U4 (Atmega328p) mula sa tipikal na Arduino UNO prototype board at inilagay ito sa prototype board kasama ang natitirang bahagi ng aming circuit. Upang gawin ito kailangan namin sa isang minimum na magbigay ng kristal X1 at mga capacitor C1 at C2 upang magbigay ng isang mapagkukunan ng orasan para sa microcontroller, itali ang pin 1, ang reset pin, mataas at magbigay ng 5VDC lakas.

Hakbang 2: Breadboard Ang Iyong Circuit

Breadboard Ang Iyong Circuit
Breadboard Ang Iyong Circuit
Breadboard Ang Iyong Circuit
Breadboard Ang Iyong Circuit

Hindi alintana kung ikaw ay nagtatayo ng circuit nang eksakto tulad ng ipinakita sa circuit diagram o marahil ay gumagamit ng isang bahagyang naiibang transpormer, uri ng pagpapakita o iba pang mga bahagi, dapat mo munang itago ang circuit upang matiyak na gumagana ito at naiintindihan mo kung paano ito gumagana.

Sa mga larawan maaari mong makita na ang breadboarding ng buong bagay na kinakailangan ng isang pares ng mga board pati na rin ang isang Arduino Uno board. Kaya upang ma-program ang microcontroller o mag-eksperimento o gumawa ng mga pagbabago sa software, kakailanganin mo ng una ang microcontroller IC sa isang UNO board upang maikonekta mo ang isang USB cable dito at ang iyong computer upang mai-upload ang programa o gumawa ng mga pagbabago sa software.

Kapag nakuha mo na ang orasan na gumagana sa breadboard at na-program ang iyong microcontroller, maaari mo itong i-unplug at i-plug ito sa socket sa iyong pangwakas na pagbuo ng permanenteng orasan sa prototype board. Tiyaking sundin ang mga pag-iingat na anti-static kapag ginawa mo ito. Gumamit ng isang anti-static na pulso strap habang hinahawakan ang microprocessor.

Hakbang 3: Paggawa ng Circuit sa Protoboard

Paggawa ng Circuit sa Protoboard
Paggawa ng Circuit sa Protoboard
Paggawa ng Circuit sa Protoboard
Paggawa ng Circuit sa Protoboard

Ang circuit ay itinayo sa isang piraso ng prototype board at wired point to point gamit ang # 30 AWG wire wrap wire. Nagbibigay ito ng isang matigas at maaasahang resulta. Dahil ang transpormer na mayroon ako ay isang male 5mm plug sa dulo ng cable, in-mount ko ang kaukulang babaeng sisidlan sa likod ng board sa pamamagitan ng paggupit, baluktot at pagbabarena ng isang piraso ng 1/2 malawak na flat na aluminyo na strip upang gumawa ng isang pasadyang bracket at pagkatapos ay i-bolt ito sa board na may maliit na mga nut ng 440 at bolts. Maaari mo lamang putulin ang konektor at solder ang natitirang mga wire ng kuryente sa board at i-save ang iyong sarili tungkol sa 20 min na trabaho, ngunit hindi ko nais ang permanenteng naka-attach na transpormer. sa board.

Hakbang 4: Lumilikha ng isang Socket para sa Display at Pagbibigay Nito ng Mga binti

Lumilikha ng isang Socket para sa Display at Pagbibigay ng Mga Legs
Lumilikha ng isang Socket para sa Display at Pagbibigay ng Mga Legs
Lumilikha ng isang Socket para sa Display at Pagbibigay ng Mga Legs
Lumilikha ng isang Socket para sa Display at Pagbibigay ng Mga Legs
Lumilikha ng isang Socket para sa Display at Pagbibigay ng Mga Legs
Lumilikha ng isang Socket para sa Display at Pagbibigay ng Mga Legs

Dahil ang display ay may 16 na mga pin, 8 isa bawat panig, na may spacing ng pin na kung saan ay mas malawak kaysa sa isang pamantayang 16 pin IC socket kailangan naming ayusin ang laki ng socket upang magkasya sa display. Maaari mo itong gawin sa pamamagitan lamang ng paggamit ng isang pares ng mga wire cutter upang i-snip ang plastik na kumokonekta sa dalawang gilid ng socket, paghiwalayin ang mga ito at magkahiwalay ang mga ito sa board na may spacing na tumutugma sa spacing ng mga pin sa display. Mapapakinabangan na gawin ito upang hindi mo na kailangang maghinang nang direkta sa mga display pin at ilantad ang display sa sobrang init. Maaari mong makita ang socket na nagawa ko ito sa tuktok ng board sa larawan sa itaas.

Upang maitayo nang tama ang display ay sinuksok ko ang dalawang 1 bolts sa ilalim ng dalawang butas ng sulok ng prototype board tulad ng ipinakita sa mga larawan upang makagawa ng isang simpleng paninindigan. Ito ay medyo tippy, kaya't kung gagawin mo ito, maaari mong nais na ilagay ang isang bagay na mabigat sa likod ng mga bolts upang patatagin ito.

Hakbang 5: Sinusuri ang Mga Kable ng Lupon ng Circuit at Paghahanda upang I-calibrate

Sinusuri ang Mga Kable ng Lupon ng Circuit at Paghahanda upang I-calibrate
Sinusuri ang Mga Kable ng Lupon ng Circuit at Paghahanda upang I-calibrate

Kapag ang circuit board ay wired up ngunit bago i-plug ang mga IC o ipakita o i-powering ito, magandang ideya na suriin ang mga koneksyon sa board sa isang DVM. Maaari mong itakda ang karamihan sa mga DVM upang ang mga ito ay beep kapag may pagpapatuloy. Itakda ang iyong DVM sa mode na ito at pagkatapos ay sundin ang iyong circuit diagram, suriin ang maraming mga koneksyon sa circuit hangga't maaari. Suriin para sa isang bukas na circuit, o malapit dito, sa pagitan ng mga puntos na + 5V at Ground. Suriing biswal na ang lahat ng mga bahagi ay konektado sa tamang mga pin.

Susunod na ikonekta ang iyong transpormer sa circuit at i-power up ito. Suriin na mayroon kang eksaktong 5V DC sa 5V power rail na may alinman sa isang saklaw o DVM bago ka mag-plug sa anumang mga IC o ang display.

Susunod na plug in LANG ang Op-Amp U5 IC bilang paghahanda para sa susunod na hakbang. Susuriin namin dito na ang aming cross over circuit ay bumubuo ng isang square wave at ayusin ang potentiometer RV1 para sa isang malinis na 60 Hz signal.

Hakbang 6: Pagkakalibrate ng Circuit

Pagkakalibrate ng Circuit
Pagkakalibrate ng Circuit
Pagkakalibrate ng Circuit
Pagkakalibrate ng Circuit

Ang tanging pag-calibrate na dapat gawin ay upang ayusin ang potentiometer RV1 para sa tamang antas ng signal na nagpapakain ng krus sa detektor. Mayroong dalawang paraan upang magawa ito:

1. Maglagay ng isang probe ng probe sa pin 1 ng U5 at siguraduhing ikonekta ang saklaw na probe ground wire sa circuit ground. Susunod na ayusin ang RV1 hanggang sa magkaroon ka ng malinis na square square tulad ng ipinakita sa larawan sa itaas. Kung ayusin mo ang RV1 ng masyadong malayo sa isang paraan o sa iba pa ay wala kang parisukat na alon o isang baluktot na parisukat na alon. Tiyaking ang dalas ng dalas ng alon ay 60 Hz. Kung mayroon kang isang modernong saklaw marahil sasabihin nito sa iyo ang dalas. Kung mayroon kang isang sinaunang saklaw tulad ng ginagawa ko pagkatapos ay tiyakin ang tagal ng panahon ng alon na humigit-kumulang na 16.66ms o 1/60 secs.

2. Gamit ang isang frequency counter o DVM sa Frequency mode sukatin ang dalas sa Pin 1 ng U5 at ayusin ang RV1 para sa eksaktong 60 Hz.

Kapag tapos na ang pagkakalibrate na ito, patayin ang circuit at i-plug ang lahat ng mga IC at ang display upang makumpleto ang konstruksyon ng circuit.

Hakbang 7: Ang Arduino Program

Ang programa ay ganap na nagkomento upang maaari mong malaman ang mga detalye ng bawat hakbang. Dahil sa pagiging kumplikado ng programa mahirap ilarawan ang bawat hakbang, ngunit sa isang napakataas na antas ganito ito gumagana:

Natatanggap ng microprocessor ang papasok na 60 Hz square wave at binibilang ang 60 cycle at nagpapalaki ng bilang ng segundo pagkatapos ng bawat 60 cycle. Kapag ang bilang ng segundo ay umabot sa 60 segundo, o 3600 na cycle, ang bilang ng minuto ay nadagdagan at ang bilang ng segundo ay na-reset sa zero. Kapag ang bilang ng minuto ay umabot sa 60 minuto ang bilang ng oras ay nadagdagan at ang bilang ng minuto ay na-reset sa zero. ang bilang ng oras ay na-reset sa 1 pagkatapos ng 13 oras, kaya't ito ay 12 oras na orasan. Kung nais mo ng isang 24 na oras na orasan baguhin lamang ang programa upang i-reset ang mga oras sa zero pagkatapos ng 24 na oras.

Ito ay isang pang-eksperimentong proyekto, kaya't sinubukan kong gumamit ng isang loop na Do-While upang pigilan ang switch bounce sa mga pindutan na Itakda at Pagdagdag. Gumana ito nang makatuwiran. Kapag ang pindutan ng Itakda ay pinindot nang isang beses, ang pindutan ng Pagdagdag ay maaaring magamit upang hakbangin sa mga oras na ipinapakita sa display. Kapag ang pindutan ng Itakda ay pinindot muli, ang pindutan ng pagtaas ay maaaring magamit upang hakbangin ang mga minutong ipinakita sa display. Kapag ang pindutan ng Itakda ay pinindot sa pangatlong pagkakataon, ang oras ay nakatakda at ang orasan ay nagsisimulang tumakbo.

Ang mga pattern ng 0 at 1 na ginagamit upang ipakita ang bawat numero sa mga display na 7-segment ay nakaimbak sa array na tinatawag na Seven_Seg. Nakasalalay sa kasalukuyang oras ng orasan, ang mga pattern na ito ay pinakain sa 74HC595 IC at ipinadala sa display. Alin sa 4 na digit ng display ang naka-on sa anumang oras upang matanggap ang data na ito ay kinokontrol ng microprocessor sa pamamagitan ng display na Dig 1, 2, 3, 4 na mga pin. Kapag ang circuit ay pinalakas, ang programa ay nagpapatakbo muna ng isang gawain sa pagsubok na tinatawag na Test_Clock na nagpapadala ng mga tamang digit upang magaan ang bawat display na may bilang mula 0 hanggang 9. Kaya't kung nakikita mo ito kapag pinapagana mo alam mong nabuo mo nang tama ang lahat.

Hakbang 8: Listahan ng Mga Bahagi

1 - Transformer 120VAC hanggang 12VAC tinatayang 100ma o higit pa1 - Prototype board tinatayang 3.5 "x 3.5" 1 - 4 digit 7 segment na display YSD-439K2B-35 o katumbas (Sparkfun) 2 - Maliit na mga pindutan ng push mount ng PCB HINDI (anuman) 4 - 2N3904 NPN transistors8 - 330 ohm resistors2 - 74LS04 Hex inverters1 - 74HC595 serial to parallel 8 bit shift register 1 - LM358 OP-AMP (Comparator) 1 - ATMEGA328P Microcontroller (Creatron) 4 - 4.7K resistors7 - 10K resistors1 - 1N4007 or 1N4001 diode2 diodes1 - 120 ohm, 1 / 2W o 1W resistor1 - PCB mount 10K potentiometer1 - 470uF 25V capacitor1 - 7805 TO220 package voltage regulator1 - 10uF 10V capacitor2 - 0.1 uF 10V capacitors1 - 16MHz crystal (Sparkfun) 2 - 22pF capacitors1 - Babae power jack (Opsyonal na magkasya sa male plug kung mayroon man sa iyong wall transformer) 2 - 16 pin IC sockets2 - 14 pin IC sockets1 - 8 pin IC socket1 - 28 pin IC socket2 - 1 "haba tinatayang # 4 o # 6 bolts at pagtutugma ng mani2 - 1 / 4 "haba # 4-40 bolts at pagtutugma ng nut1 - piraso ng 1/2" malawak na flat na aluminyo strip na pasadyang gupitin at drilled sa laki

# 30 AWG wire wrap wire # 22 AWG wireSolder

Inirerekumendang: