Buat Jam Arduino yang Tepat Menggunakan Hanya Satu Kawat - TIADA Perkakasan Luaran Diperlukan!

Buat Jam Arduino yang Tepat Menggunakan Hanya Satu Kawat - TIADA Perkakasan Luaran Diperlukan!

Isi kandungan:

Anonim

Bagaimana untuk membuat jam Arduino - tanpa menggunakan pengayun luaran atau cip jam:

(lebih banyak projek saya di laman web penyelidikan kami - klik logo arduino atas laman utama)

Anda perlu:

Papan Arduino (hanya kira-kira apa-apa rasa akan berfungsi dengan baik) dan perisian

1 LED

1 Jumper Wire

(Contoh Pendawaian Diperbaharui Di bawah …)

Saya seorang Jurutera Elektrik selama 20+ tahun dan baru saja menemui platform Arduino beberapa bulan lalu. Tidak perlu dikatakan saya jatuh cinta dengannya dan kini saya tertarik dengan projek. Untuk Krismas tahun ini, saya ingin membuat beberapa hadiah yang sangat penting untuk ibu bapa saya. Untuk Ibu saya, ia pasti satu reka bentuk jam 'one-of'. Saya tidak bimbang dengan mengekalkan masa penjimatan siang atau tahun lompat - semata-mata dengan tepat menyimpan hari minggu dan masa.

Bagaimana untuk menghasilkan denyutan jam dengan cara yang unik tetapi tepat walaupun? Pasti saya boleh menggunakan IC jam tertanam mewah atau pengayun kristal 32,768 yang biasa, tetapi saya mahukan sesuatu yang berbeza daripada yang lain. Saya mula menggunakan pemasa 555 untuk menghasilkan gelombang persegi 100Hz yang mantap. Ini bekerja dengan baik tetapi saya kehilangan kira-kira 1 saat sejam. Tiada masalah - saya hanya menulis algoritma untuk membetulkan kedua yang hilang dalam perisian. Saya gembira. Kemudian saya dapati bahawa walaupun pemasa dalaman Arduino tidak benar-benar boleh dipercayai untuk masa penyimpanan, output PWM analog mempunyai gelombang persegi yang sangat stabil 490Hz. Kitaran tugas ditentukan oleh nilai yang ditulis pada pin analog. (iaitu - 0 adalah sifar voltan, 127 adalah kitaran tugas 50%, 255 adalah logik tinggi / 5V).

Saya memutuskan untuk mencuba output analog PWM berwayar terus ke pin 2 gangguan dan ia bekerja hebat! Selain itu, ia tetap sempurna dengan jam masa nyata komputer saya untuk yang kedua tanpa memerlukan pampasan perisian. Saya telah menjalankannya selama beberapa hari sekarang dan ia terus melakukan seperti yang saya harapkan …. semua dengan satu dawai dan beberapa kod.

Hadiah selesai akan mempunyai PCB Custom Eagle CAD untuk bekalan kuasa dan logik, ditempatkan dalam kepingan plexiglass. Tema keseluruhan adalah pencahayaan LED biru ais untuk mensimulasikan jam analog. Walaupun kepungan mempunyai putih pada LCD biru memaparkan hari, masa, dan suhu bilik, kabel siri menghubungkan dari kotak projek ke jam sebenar. Menggunakan kaunter dekad 12 bit, servo, dan banyak LED biru Saya menyalakan segmen jam yang sesuai pada muka jam analog yang direka khas pada plexiglass. Servo dipasang di tengah-tengah muka jam dan mempunyai armature dipasang dengan LED dipasang untuk menyala minit di belakang kaca. (setiap minit servo bertukar menjadi 6 darjah, menerangi minit yang sesuai). Saya berharap dapat menyelesaikannya tidak lama lagi dan akan membuat video produk akhir …. Saya harap dia suka !!

Rangka pendawaian mudah Arduino dan kod demo untuk membuat jam anda sendiri menggunakan kaedah ini. Juga pautan ke Makmal Litar menunjukkan cara menggunakan kaedah 555 timer @ 100Hz jika anda memilih demikian.

Kod dan pautan di bawah …

Litar Oscillator 555 Pemasa (jika anda ingin mencuba kaedah ini)

www.circuitlab.com/circuit/b575r9/555-100hz-oscillator/

Kod Demo Jam:

/ * Demo jam dalaman mudah: oleh Joseph Unik aka Relic1974

Menggunakan output PWM analog sebanyak 490Hz dengan kitaran duti 50% kepada

menyimpan masa yang sangat tepat;). Sambungkan LED ke pin 13 ke

menonton detik berkedip. Sambung jumper dari pin Analog 0

untuk Digital Pin 2 (mengganggu 0). Menunjukkan minit ke siri

memantau. http://www.planetxresearch.com logo 'Arduino'

untuk lebih banyak projek dan helah …

(Jangan ragu untuk menggunakan kod ini untuk berkembang menjadi berfungsi sepenuhnya

jam atau projek lain di bawah Creative Commons;)

*/

int clockInt = 0; / // pin digital 2 kini mengganggu 0

int masterClock = 0; // menghitung isyarat jam tepi yang terbit

int seconds = 0; // pembolehubah

int minit = 0; // pembolehubah

int ledPin = 13;

batal persediaan ()

{

attachInterrupt (clockInt, clockCounter, RISING);

/ / clockInt adalah gangguan kami, fungsi jamCounter dipanggil kapan

// dipanggil pada pinggir jam RISING

analogReference (DEFAULT);

pinMode (ledPin, OUTPUT);

Serial.begin (57600);

analogWrite (0, 127); // ini memulakan jam PWM kami dengan kitaran tugas 50%

}

void clockCounter () // dipanggil oleh gangguan

{

masterClock ++; // dengan setiap jam naik tambah 1 untuk mengira masterclock

jika (masterClock == 489) // mencapai 490Hz

{

detik ++; // selepas satu kitaran 490Hz tambah 1 saat;)

masterClock = 0; // Reset selepas 1 saat tercapai

nada (13, 100, 500); // menggunakan nada denyut LED tanpa panggilan lengah;)

}

kembali;

}

kekosongan gelung ()

{

jika (saat == 60) // SEKARANG MELAKUKAN DENGAN PENCEGAHAN TANAH REAL

{

minit ++; // minit peningkatan 1

saat = 0; / / reset semula pembolehubah detik

Serial.print ("Minutes =");

Serial.println (minutes);

}

}

Demo projek saya dalam kerja-kerja di sini

Bekalan: