Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Jam IV9 Numitron DIY paling sederhana dengan Arduino

Komponen dan persediaan

Arduino Nano R3
× 1
Maxim Integrated DS3231M - ±5ppm, I2C Real-Time Clock
× 1
TPIC6C595 register geser
× 4
Tabung IV9 Numitron
× 4
LED (generik)
× 2
Kapasitor 100 nF
× 4
1N4007 – Tegangan Tinggi, Dioda Nilai Arus Tinggi
× 2
Sakelar Geser
× 1
Resistor 1k ohm
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)
Kawat Solder, Bebas Timah

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Kali ini saya akan menunjukkan cara membuat jam tabung Numitron gaya Retro yang bagus. Selain waktu yang tepat, perangkat secara singkat menampilkan Tanggal, Tahun, dan Suhu Saat Ini setiap 30 detik.

Saya mendapat ide untuk membuat jam tangan ini dari halaman Github yang diberikan:https://github.com/theremotheman/simple_numitron_clock_with_4_shift_registers_and_rtc3231.

Saya pertama kali membuat proyek sesuai dengan instruksi di situs dan menemukan bahwa itu mengandung banyak kekurangan.

Ini penampakan prototipe pertama dengan 74HC595

Untuk IC 74HC595 Arus maksimum total menurut datasheet adalah 70 miliampere, yang dalam hal ini beberapa kali terlampaui (sekitar 160 miliamper untuk angka 8), sehingga setelah beberapa saat IC menjadi terlalu panas dan tidak berfungsi dengan baik. Kekurangan lainnya adalah terlalu banyak penundaan dalam perulangan kode sehingga waktu hanya dibaca sekali dalam 60 detik. Pada gambar Anda dapat melihat jam jadi yang dibuat terutama sesuai dengan instruksi pada halaman di atas. Pada awalnya, ia bekerja sepenuhnya normal, tetapi setelah beberapa saat, segmen acak diaktifkan dan IC-s, numitron, atau mikrokontroler dapat terbakar dengan sangat mudah. Dalam kasus pertama, masalah diselesaikan dengan menggunakan IC TPIC6C595 bukan 74HC595, yang disediakan untuk arus yang lebih besar. Juga harus diperhatikan bahwa kedua sirkuit terintegrasi ini tidak kompatibel dengan pin.

-------------------------------------------------- --------------------------------

https://www.pcbgogo.com/promo/from_MirkoPavleskiMK

-------------------------------------------------- ----------------------------------

Dan kode baru dibuat Menggunakan millis() Alih-alih fungsi delay() jadi sekarang jam real-time dibaca terus-menerus. Saya juga menambahkan sakelar yang mengubah intensitas cahaya numitron, dan dengan demikian masa pakainya. Seperti yang Anda lihat, perangkat ini relatif mudah dibuat dan menurut saya ini adalah cara paling sederhana untuk membuat jam tabung. Numitron tidak mahal, mudah didapat, dan tidak menggunakan catu daya tambahan bertegangan tinggi.

Hanya beberapa komponen yang diperlukan untuk membuat jam ini:

- Empat tabung Numitron IV9

- Empat sirkuit terpadu TPIC6C595

- Mikrokontroler Arduino

- Modul jam waktu nyata DS3231

- Dua LED selama beberapa detik

- Beralih

- dan empat kapasitor decoupling

Modul waktu nyata juga berisi termometer, jadi untuk tampilan suhu yang lebih akurat, terletak di luar kotak, dilindungi oleh jaring. Pertama, diinginkan untuk menyinkronkan jam waktu nyata dengan jam PC, dan kami melakukannya dengan bantuan perpustakaan DS1307RTC. Kemudian kami mengunggah kode dan dengan itu perangkat siap. Tinggal memodifikasi kodenya sehingga kita dapat mengatur waktu dengan bantuan tombol dan itu akan di periode berikutnya sebagai pembaruan proyek.

Terakhir, jam tersebut dipasang dalam kotak yang sesuai dan merupakan dekorasi yang indah di setiap etalase.

Kode

  • Kode Arduino
Kode ArduinoC/C++
#include  //rtc dengan suhu untuk ds3231RTC_DS3231 rtc; //menyetel modul rtc mana yang digunakan#include  //wiring#include  //time lib#include  //time function#include  //rtc #include #define led 7const int latchPin =13; //latchconst int clockPin =10; //clockconst int dataPin =11; //dataunsigned lama sebelumnyaMillis =0; // menyimpan terakhir kali Led berkedip interval panjang =30000; // interval saat berkedip (milidetik)unsigned long beforeMillisDiode =0; // menyimpan terakhir kali Led berkedip interval panjangDiode =500; // interval saat berkedip (milidetik)const int nums[12] ={ //mengatur array tampilan - menurut dokumen:pin1 adalah umum, pin2 adalah titik (tidak digunakan dalam sketsa), sisanya harus dihubungkan ke register geser satu per satu satu 0b10111110, //0 0b00000110, // 0b01111010, //2 0b01101110, ///3 0b11000110, //4 0b11101100, //5 0b11111100, ///6 0b00001110, ///7 0b11111110, //8 0b11101110, // 9 0b11001010, //st. 0b10111000 //celz.};int jam1; //jam angka pertamaint jam2; //jam angka detikint menit1; //menit angka pertamaint menit2; //menit angka detikint hari1; //hari angka pertamaint hari2; //hari angka kedua dalam bulan1; //bulan angka pertama di bulan2; //bulan angka keduaditahun1; //tahun angka pertama - konstan 2int tahun2; //tahun angka kedua - konstanta 0 (Anda ingin hidup selama itu untuk mengubahnya?)int year3; //tahun ketiga angka tahun4; //tahun angka keempatint jamDesimal; //penguraian desimal dari hourint minuteDecimal; //penguraian desimal dari minuteint dayDecimal; //penguraian desimal dari dayint monthDecimal; //penguraian desimal dari monthint year70; //tahun setelah unix epochint temp1; //angka suhu pertamaint suhu2; //angka suhu keduaint tempDecimal; //penguraian desimal suhu(dua angka pertama)void setup() { pinMode (led,OUTPUT); pinMode(latchPin, OUTPUT); //set pin ke output sehingga Anda dapat mengontrol shift register pinMode(clockPin, OUTPUT); //set pin ke output sehingga Anda dapat mengontrol register geser pinMode(dataPin, OUTPUT); //set pin ke output sehingga Anda dapat mengontrol register geser Serial.begin(9600); // inisialisasi SPI:SPI.begin(); // ambil pin SS rendah untuk memilih chip:digitalWrite(clockPin,LOW); }void loop() { tmElements_t tm; //nama dari DS1307RTC library RTC.read(tm); // baca rtc waktu/tanggal/tahun menitDesimal =tm.Menit / 10; //parsing output agar dapat dibaca(lebih pendek) dengan membagi sepuluh jamDesimal =tm.Jam / 10; //parsing output agar dapat dibaca(lebih pendek) dengan membagi sepuluh hariDesimal =tm.Hari / 10; //parsing output agar dapat dibaca(lebih pendek) dengan membagi sepuluh bulanDesimal =tm.Bulan / 10; //parsing output agar dapat dibaca(lebih pendek) dengan membagi sepuluh tahun70 =tm.Tahun - 30; //tampilkan tahun sebenarnya dengan mengurangkan dari unix epoch(1970) hour1 =hourDecimal; //sesederhana itu hour2 =tm.Hour - 10 * hourDecimal; //membuat kalkulasi untuk menampilkan hanya angka kedua dari dua digit string minute1 =minuteDecimal; //menit sederhana2 =tm.Menit - 10 * menitDesimal; //membuat kalkulasi untuk menampilkan hanya angka kedua dari dua digit string day1 =dayDecimal; //hari2 sederhana =tm.Hari - 10 * hariDesimal; //membuat kalkulasi untuk menampilkan hanya angka kedua dari dua digit string month1 =monthDecimal; //bulan sederhana2 =tm.Bulan - 10 * bulanDesimal; //membuat perhitungan untuk menampilkan hanya angka kedua dari dua digit string year1 =2; //nomor tahun pertama, apakah Anda benar-benar perlu mengubahnya? Anda punya mobil terbang dan lain-lain? tahun2 =0; //angka tahun kedua, jika kamu perlu mengubahnya, kamu harus bermain dengan cucu sebagai gantinya year3 =year70 / 10; //parsing output agar dapat dibaca (lebih pendek) dengan membagi sepuluh tahun4 =tahun70 - 10 * tahun3; //membuat perhitungan untuk menampilkan hanya angka kedua dari dua digit string tempDecimal =rtc.getTemperature()/10; //parsing output agar dapat dibaca (lebih pendek) dengan membagi sepuluh temp1 =tempDecimal; //temperatur sederhana2 =rtc.getTemperature() - 10 * tempDecimal; //membuat perhitungan untuk menampilkan hanya angka kedua dari dua digit string if (millis() - beforeMillisDiode>=intervalDiode) { PreviousMillisDiode =millis(); digitalWrite(led, !digitalRead(led)); //ubah status led}if (milis() - sebelumnyaMillis>=interval) { sebelumnyaMillis =milis(); digitalWrite (clockPin, RENDAH); SPI.transfer (0b00000000); SPI.transfer (0b00000000); SPI.transfer (0b00000000); SPI.transfer (0b00000000); digitalWrite (clockPin, TINGGI); penundaan (500); //numitron dimatikan selama 0,5 detik untuk membuat efek 'bernapas' digitalWrite (clockPin, LOW); SPI.transfer (angka[bulan2]); SPI.transfer (angka[bulan1]); SPI.transfer (angka[hari2]); SPI.transfer (angka[hari1]); digitalWrite (clockPin, TINGGI); penundaan (1500); digitalWrite (clockPin, RENDAH); SPI.transfer (0b00000000); SPI.transfer (0b00000000); SPI.transfer (0b00000000); SPI.transfer (0b00000000); digitalWrite (clockPin, TINGGI); penundaan (500); //numitron dimatikan selama 0,5 detik untuk membuat efek 'bernapas' digitalWrite (clockPin, LOW); SPI.transfer (angka[tahun4]); SPI.transfer (angka[tahun3]); SPI.transfer (angka[tahun2]); SPI.transfer (angka[tahun1]); digitalWrite (clockPin, TINGGI); penundaan (1500); digitalWrite (clockPin, RENDAH); SPI.transfer (0b00000000); SPI.transfer (0b00000000); SPI.transfer (0b00000000); SPI.transfer (0b00000000); digitalWrite (clockPin, TINGGI); penundaan (500); //numitron dimatikan selama 0,5 detik untuk membuat efek 'bernapas' digitalWrite (clockPin, LOW); SPI.transfer (0b10111000); SPI.transfer (0b11001010); SPI.transfer (angka[temp2]); SPI.transfer (angka[temp1]); digitalWrite (clockPin, TINGGI); penundaan (1500); digitalWrite (clockPin, RENDAH); SPI.transfer (0b00000000); SPI.transfer (0b00000000); SPI.transfer (0b00000000); SPI.transfer (0b00000000); digitalWrite (clockPin, TINGGI); penundaan (500); //numitron dimatikan selama 0,5 detik untuk membuat efek 'bernapas' } else { digitalWrite (clockPin, LOW); SPI.transfer (angka[menit2]); SPI.transfer (angka[menit1]); SPI.transfer (angka[jam2]); SPI.transfer (angka[jam1]); digitalWrite (clockPin, TINGGI); }}

Skema


Proses manufaktur

  1. Game Arduino Gyroscope dengan MPU-6050
  2. Jam Arduino dengan waktu sholat Islam
  3. Jam Master
  4. Suhu Arduino. Monitor Dan Jam Waktu Nyata Dengan Tampilan 3.2
  5. Voltmeter DIY dengan Arduino dan Tampilan Nokia 5110
  6. MobBob:Robot Arduino DIY Dikendalikan oleh Smartphone Android
  7. Roda Pengukur Sederhana DIY dengan Rotary Encoder
  8. Pengukur IoT dengan Arduino, Yaler &IFTTT
  9. Matriks LED Tunggal Arduino Flip Clock
  10. Jam Alarm Sederhana dengan DS1302 RTC