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

Pengontrol Tampilan Fluorescent Vakum

Komponen dan persediaan

Arduino UNO
...atau apa pun Arduino 8 Bit
× 1
Tampilan PKS
teman kita
× 1
CD4094
sirkuit terintegrasi DIP
× 2
CD4017
sirkuit terintegrasi DIP
× 2
BC557
...atau transistor setara (2N3906, 2SA733, ecc) atau transistor PNP tegangan lebih tinggi
× 17
BC547
...atau transistor setara (2N3904, 2SC945, ecc)
× 2
PC817
optocoupler di mana-mana ditemukan di sebagian besar PSU yang beralih, bagian intinya
× 1
1N4007 – Tegangan Tinggi, Dioda Nilai Arus Tinggi
× 4
Kapasitor Elektrolit
lihat skema nilai dan voltase
× 4
Kapasitor 470nF
jenis apa pun yang bagus
× 1
Perfboard
alias:kertas karton, protoboard, atau solusi perakitan pilihan Anda
× 1
Resistor 1/4W
lihat skema nilai
× 24
Dupont Jumper
...atau koneksi dan postingan pilihan Anda
× 1
Kawat
kabel tipis untuk bagian belakang sirkuit dan juga untuk menghubungkan tampilan, jangan gunakan konektor di sana karena pin spasi bervariasi dan penyolderan cepat lebih mudah
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)
Kawat Solder
beli di toko lokal, tidak ada barang murah untuk ini, 0,5mm lebih disukai
Wire Clipper

Tentang proyek ini

Apa Gunanya?

Tampilan VFD tidak lagi tren karena beberapa alasan yang jelas, mereka terbuat dari kaca ("wah keren!"), Memiliki filamen pijar ("benarkah??"), Mereka pada dasarnya adalah tabung vakum ("menarik!"), Mereka membuat cahaya yang sangat terang, terkadang berwarna, membutuhkan plastik gelap di atasnya ("uh, keren lagi!").

Biasanya Anda memerlukan chip khusus untuk menjalankannya, sebagian besar modul/peralatan dilengkapi dengan chip ini yang dapat Anda kendalikan secara mandiri melalui I2C atau SPI (itu jauh lebih baik dalam hal kemudahan), jika Anda membeli atau memiliki salah satu dari display tersebut dan kekurangannya. chip seperti itu tidak mudah untuk "dihubungkan dan digunakan", yang ideal adalah membeli chip itu (biasanya dalam format SMD). Sirkuit ini memberikan antarmuka yang cukup baik untuk seperti Arduino dan dapat menggerakkan kemungkinan besar PKS apa pun, termasuk yang vintage "tabung" yang besar, tetapi tampilan matriks dengan banyak segmen bukanlah ide yang baik, Anda dapat memperluas sirkuit tapi RIBUAN... mhhh, mungkin tidak.

Pro dan Kontra

Pro

  • biaya hampir nol (semoga)
  • bagian yang mudah ditemukan
  • kemampuan tegangan tinggi (hingga ratusan Volt pada anoda)
  • tegangan jaringan dan anoda independen
  • hanya membutuhkan 3 jalur data digital
  • dapat diperluas (membutuhkan lebih banyak pekerjaan CPU untuk berjaga-jaga)
  • kode siap dibuat untuk setiap Arduino 8-bit

Kontra

  • membutuhkan banyak voltase dan suplai yang berbeda (tidak aneh untuk VFD)
  • tidak ada fungsi peredupan (kecuali dari penggerak tegangan)
  • menggunakan dua sumber daya Arduino, SPI dan timer1
  • Anda tidak dapat menggantung mikrokontroler, jika tidak, pemindaian akan terhenti di grid
  • Ini bukan sepasang resistor dan Led, ini membutuhkan sedikit kerja

Prinsip Operasi

Sebuah VFD biasanya bekerja secara multipleks, seperti matriks 2D dengan sumbu X dan Y, Anda perlu memanaskan filamen (katoda, Anda melihat kabel tipis di depannya), sambungkan ground pada filamen itu juga, tegangan positif ke grid (grid kontrol, satu titik sumbu X) dan lagi tegangan positif pada pin segmen (anoda, satu titik sumbu Y), pada titik ini segmen (hanya satu) menyala. Untuk menerangi segmen apa pun dan kombinasi apa pun, dan memiliki "sedikit" kabel di sekitarnya, multiplexing memilih satu kisi per waktu dan pada saat yang sama mengonfigurasi anoda untuk menerangi segmen yang sesuai di bawah kisi itu, sesaat setelah itu, ia memilih kisi lain dan mengonfigurasi anoda kali ini agar segmen yang sesuai menyala dengan benar di bawah kisi kedua itu. Mempercepat pemindaian berulang yang terus menerus ini menghasilkan gerakan yang sangat cepat sehingga di bawah mata kita tidak memilih satu grid per waktu, tetapi terlihat didorong sekaligus, inilah yang disebut POV (Persistence Of Vision).

Sirkuit ini menggunakan dua jenis sirkuit terpadu dari keluarga yang sama, dua CD4094 dan dua CD4017, 4094 menggerakkan anoda dan 4017 menggerakkan grid sebagai gantinya, 4094 dapat menyimpan konfigurasi tinggi\rendah pada outputnya dan bagus untuk anoda sisi, 4017 adalah chip klasik dengan 10 output sequencing, sempurna untuk grid. Setelah 4094 dimuat dengan konfigurasi anoda momen, sinyal "ok" (strobo) menerapkan pengaturan ini dan pada saat yang sama mengganti 4017 dengan satu langkah, memungkinkan pengurutan otomatis.

Bagian daya pada dasarnya hanya beberapa transistor BC557 (atau setara) yang memungkinkan ayunan tegangan yang lebih lebar pada anoda, karena tampilan ini memerlukan tegangan yang lebih tinggi daripada 5V Arduino. Grid digerakkan oleh 4017 secara langsung, optocoupler PC817 memungkinkan voltase yang lebih besar dari 5V di sekitar 4017 dan juga level voltase yang berbeda dari CD4094, ini menyederhanakan BANYAK keseluruhan.

Arduino harus menyediakan semua orkestrasi, artinya harus menyimpan semua konfigurasi segmen dan memuat rangkaian dengan pengaturan anoda di setiap sakelar grid, ini berarti sangat membutuhkan kode pintar untuk melakukannya di luar tindakan pengguna. Kode yang saya buat mengatur interupsi berbasis timer yang memuat ulang chip 4094 di setiap langkah, sebenarnya sekitar 1000 kali per detik, jadi untuk 10 grid memberikan kecepatan refresh 100Hz, itu bagus. Ada larik data yang menyimpan konfigurasi segmen dan dapat dimodifikasi dalam kode, tanpa prosedur tertentu atau tindakan selanjutnya, rutin interupsi akan mengunggah datanya sendiri.

Catu Daya

Tegangan grid pada chip 4017 dapat dari 5Vdc hingga 18Vdc dan setidaknya arus 50mA, tidak perlu diatur. Biasanya (sejauh yang saya lihat) 12V akan cukup untuk setiap situasi, meningkatkannya tampaknya tidak banyak meningkatkan kecerahan (jika itu tabung vakum, jaringan tidak memerlukan voltase yang besar).

Tegangan anoda dapat dari 0V hingga apa pun yang dapat ditahan oleh transistor Anda (50Vdc untuk BC557), biasanya jika tampilannya sempurna, 20-30Vdc akan melakukan pekerjaan dengan sempurna, tidak diatur dengan baik. Untuk pengaturan normal, suplai 50mA sudah lebih dari cukup.

Daya digital bisa 5Vdc atau juga 3.3Vdc untuk jenis Arduino atau MCU tersebut (belum dicoba), ini membutuhkan daya 100mA (semoga lebih sedikit), jika CD4094 menjadi lamban Anda dapat mengurangi jam SPI dalam kode dan\atau gunakan keluaran "Q'S" dari 4094 pertama untuk komunikasi yang lebih konsisten.

Pasokan filamen harus menyediakan setidaknya 5V 200-300mA arus, jika Anda sudah memiliki sumber DC, Anda dapat menghindari penyearah jembatan dan kapasitor 1000uF, tetapi Anda TIDAK BISA menggunakan suplai digital yang sama untuk\dari Arduino. Filamen sebenarnya untuk tampilan alat yang tidak terlalu besar berjalan seperti 3V dan dapat menarik 150mA.

Kiat dan Catatan

  • sebelum memasang kabel, jika Anda tidak tahu pin apa, lebih baik mencoba tampilan terlebih dahulu, biasanya sepasang baterai AA secara seri akan baik-baik saja untuk filamen (biasanya kontak samping), sementara sepasang batt 9V secara seri akan memberikan polarisasi positif untuk grid dan anoda; grid dan anoda sering dikelompokkan, ide yang baik adalah untuk menemukan "anoda nol" yang sebenarnya karena kemungkinan besar segmen pertama pada bagian numerik atau alfanumerik, sering sama dan dengan urutan yang sama untuk semua grid, menempatkan kabel di urutan terbalik secara tidak sengaja membuat perangkat lunak lebih kikuk di akhir, kisi-kisi, tampaknya, mengikuti urutan pin
  • mudahkan suplai filamen, naikkan arus sedikit demi sedikit, tetap dalam kegelapan dan saat Anda mulai melihat filamen menjadi sedikit berpijar, kurangi sedikit dan selesai, potensiometer daya sempurna, terkadang Anda menemukan ini di TV lama tapi sekarang sulit
  • menaikkan voltase pada jaringan dan anoda dengan cara yang wajar, fosfor dapat terbakar tanpa dapat diperbaiki, sirkuit juga bekerja memindai, jadi jika sistem hang, Anda akan memberikan terlalu banyak daya pada satu bagian jaringan secara terus-menerus
  • bermain dengan kompromi pada grid\tegangan anoda, perhatikan bahwa grid dapat mengkonsumsi beberapa arus, tidak perlu didorong, lebih baik perhatikan anoda
  • menggunakan transformator tunggal untuk seluruh proyek Anda\setup sangat ideal, juga beberapa solusi campuran dapat digunakan, tetapi mengganti PSU dan terutama yang terhubung ke ground dapat membuat Anda tidak nyaman, itu sebabnya untuk bereksperimen, SELALU ide yang baik untuk menggunakan klasik pasokan transformator
  • Anda dapat memperluas driver ini dengan menambahkan beberapa CD4094 dan\atau CD4017, tentu saja jika Anda membutuhkan 8 anoda atau kurang, Anda dapat menghapus 4094 kedua, skenario yang sama untuk 4017, tetapi jika Anda ingin driver siap pakai, buat saja selengkap mungkin
  • tidak ada resistor di dasar transistor anoda seperti yang Anda lihat, ini memberikan drive supercepat dan mempersempit daftar bagian tetapi membuat CD4094 mengkonsumsi beberapa daya, mereka tidak akan memanas hampir sama sekali tetapi beberapa spesimen chip mungkin memiliki output yang terlalu kuat, periksa konsumsi arus untuk berjaga-jaga, chip tidak akan meledak, karena daya yang dihamburkan DI DALAM batas maksimum yang diizinkan, arus dapat berada dalam kisaran 4mA per pin pada suplai 5V
  • layar lama yang lelah dapat diperbarui dengan beberapa guncangan saat ini pada filamen, jika seluruh layar yang redup dan bukan hanya bagian yang terbakar, mereka mengatakan bahwa Anda membawa kabel yang terlihat pijar (kuning) seperti lima kali berturut-turut selama beberapa detik setiap kali, tidak pernah mencobanya tetapi mungkin memerlukan dua kali tegangan pengenal filamen, ini membersihkannya tetapi tampaknya lebih berguna untuk yang sangat tua\antik... dan itu berisiko, itu bukan bola lampu, Anda bisa mematahkan kabelnya

Kode

  • Kode Arduino dengan rutinitas kerja
Kode Arduino dengan rutinitas kerjaArduino
/* Tampilan VFD Serbaguna Antarmuka Perangkat Keras Program Arduino Hak Cipta (C) 2019 Genny A. Carogna Program ini adalah perangkat lunak gratis:Anda dapat mendistribusikan ulang dan/atau memodifikasinya di bawah persyaratan Lisensi Publik Umum GNU yang diterbitkan oleh Free Software Foundation, baik versi 3 dari Lisensi, atau (sesuai pilihan Anda) versi yang lebih baru. Program ini disebarluaskan dengan harapan dapat bermanfaat, namun TANPA JAMINAN APAPUN; bahkan tanpa jaminan tersirat tentang KELAYAKAN DIPERDAGANGKAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat Lisensi Publik Umum GNU untuk lebih jelasnya. Anda seharusnya telah menerima salinan GNU General Public License bersama dengan program ini. Jika tidak, lihat .*//* kode ini menggunakan sumber daya dari Arduino dengan cara "di balik tirai", modul timer1 dan SPI digunakan dan sibuk * , jadi Anda mungkin memiliki masalah besar dalam menggunakan SPI, pin SPI, dan beberapa fungsi berdasarkan timer1... rangkaian yang diusulkan * tidak memiliki memori onboard, sehingga pengaturan segmen harus "dipindai" terus menerus, setiap grid, 100 kali per detik * , dari array segmen Arduino, ini diterjemahkan juga pada apa yang disebut pekerjaan CPU "overhaed", bahwa, untuk Anda ketahui, ini * tidak lebih dari penggunaan mikro biasa di akhir, mungkin mencapai sekitar 3 % CPU bekerja dalam hal waktu yang ditempati, Anda juga dapat mencoba * menggunakan alat SPI reguler Arduino tetapi perlu analisis mendalam tentang pengambilan dan prosedur * * kode ini berfungsi dengan Arduino 8 bit apa pun, juga 3.3V harus berfungsi ok, mungkin kurangi frekuensi SCK, mengingat CD4094 * dialiri daya dan mungkin "undervolt" (ya, persis prinsip overclock untuk menggoreng kekasih Anda PC) */#define ledLed 13 // pin led yang mengarahkan led ke led Anda tahu bahwa led on berarti beberapa hal terkait led (ilmuwan mumbojumbo tentunya)#define strobePin 4 // pin Arduino untuk didedikasikan garis "strobo"#menentukan strobeTahan 10 // mikrodetik // menahan waktu untuk mengganti optocoupler... tidak secepat megahertz tetapi dapat diterima// data untuk tampilan saya (perekam kaset video, pembaca CD audiophoolery, dan stereo kompak) ... jangan keberatan, hapus, dan cukup definisikan "gridAmount" dan "anodeAmount"#define JVC#define mitsubishiGrids 10#define mitsubishiAnodes 9#define marantzGrids 9#define marantzAnodes 14#define JVCGrids 11#define JVCAnodes 19#define mitsubishi define gridAmount mitsubishiGrids#define anodeAmount mitsubishiAnodes#elif defined marantz#define gridAmount marantzGrids#define anodeAmount marantzAnodes#elif defined JVC#define gridAmount JVCGrids#define anodeAmount JVCanodes/segmen ini/array#endif [0] berarti kisi nol, dan d bit yang paling tidak signifikan adalah segmen nol di kisi itu// Anda dapat mengakses dan memodifikasi larik ini sesuka Anda, dari mana pun, tanpa melakukan hal lain, efeknya langsung terlihat di// tampilan, dan tetap menyala selama Anda tidak melakukannya 't mengubah bit, untuk lebih dari 8 segmen per tampilan kisi, Anda memerlukan// wadah 16 atau 32 bit per kisi, ini dikelola secara otomatis dari #define(s) di atas#jika anodeAmount> 16volatile uint32_t segments[gridAmount] ={0}; // lebih dari 16 segmen per grid (32 bit diperlukan)#elif anodeAmount> 8volatile uint16_t segmen[gridAmount] ={0}; // lebih dari 8 segmen per grid (16 bit, transfer kembar)#elsevolatile uint8_t segmen[gridAmount] ={0}; // 8 atau kurang segmen per grid (8 bit)#endifvoid setup(){ // mengubah pin SPI dan beberapa pin fungsional sebagai output dengan cepat\langsung *portModeRegister(digitalPinToPort(PIN_SPI_SS)) |=digitalPinToBitMask(PIN_SPI_SS); *portModeRegister(digitalPinToPort(PIN_SPI_MOSI)) |=digitalPinToBitMask(PIN_SPI_MOSI); *portModeRegister(digitalPinToPort(PIN_SPI_SCK)) |=digitalPinToBitMask(PIN_SPI_SCK); *portModeRegister(digitalPinToPort(strobePin)) |=digitalPinToBitMask(strobePin); *portOutputRegister(digitalPinToPort(strobePin)) &=~digitalPinToBitMask(strobePin); // taruh rendah *portModeRegister(digitalPinToPort(ledLed)) |=digitalPinToBitMask(ledLed); *portOutputRegister(digitalPinToPort(ledLed)) &=~digitalPinToBitMask(ledLed); // masukkan delay rendah(800); // beberapa penundaan untuk menunggu reset CD4017 selesai (Anda perlu menjalankan kode SETELAH menyalakan 4017, ini membuatnya otomatis jika Anda menyalakan semua sekaligus) cli(); // nonaktifkan interupsi untuk memungkinkan kita mengubah beberapa hal tanpa kucing dan anjing melarikan diri ke mana-mana // konfigurasi timer1, itu membuat interupsi terjadi "grid kali 100" per detik... ini memberikan total refresh 100Hz yang ok TCCR1A =0; TCCR1B =0; TCNT1 =0; OCR1A =160000 / jumlah grid; TCCR1B |=(1 < 24 SPDR =~uint8_t(segments[turn]>> 24); // kita membutuhkan bit negasi pada CD4094 (karena susunan transistor) while (!(SPSR &(1 < 16 SPDR =~uint8_t(segments[turn]>> 16); // kita membutuhkan bit negasi pada CD4094 (karena susunan transistor) while (!(SPSR &(1 < 8 SPDR =~uint8_t(segments[turn]>> 8); // kita membutuhkan bit negasi pada CD4094 (karena susunan transistor) while (!(SPSR &(1 < 2) pos ++; uint16_t topeng =0xFF80; nomor uint8_t[] ={B00111111, B00000110, B01011011, B01001111, B01100110, B01101101, B01111101, B00100111, B01111111, B01101111, B00000000}; switch (pos) { kasus 0:kasus 1:kasus 4:kasus 5:kasus 6:kasus 7:kasus 8:segmen[pos] &=mask; segmen[pos] |=angka[val]; merusak; case 2:if (val ==1) segmen[1] |=(1 <<8); segmen lain[1] &=~(uint16_t(1) <<8); merusak; kasus 9:segmen[9] &=0xFFF0; if (val ==1) segmen[9] |=3; else if (val ==2) segmen[9] |=B1101; }}// easy peasy tujuh segmen nomor visualisasivoid marantzPrintNum(uint8_t val, uint8_t pos) { if (pos> 5) return; pos++; pos++; uint16_t topeng =0xFF80; // bitmask untuk menghapus digit angka uint8_t[] ={B00111111, B00000110, B01011011, B01001111, B01100110, B01101101, B01111101, B00100111, B01111111, B01101111, B00000000}; segmen[pos] &=topeng; // hapus segmen digit apa pun[pos] |=angka[val]; // set digit}// easy peasy tujuh segmen nomor visualisasivoid JVCPrintNum(uint8_t val, uint8_t pos) { // untuk datang (kamu benar-benar tidak peduli)}//

Skema

Saya menghindari menggambar SEMUA transistor BC557 karena mereka hanya terhubung di sana pada semua output CD4094, semuanya sama.

Ada pemilih jumper (berjalan di garis merah) yang harus Anda konfigurasikan pada chip 4017, itu me-reset dua 4017 pada penyelesaian pemindaian grid, Anda harus menghubungkan (atau menyolder) jumper terbang pada pin output SETELAH grid terakhir , jadi jika tampilan Anda memiliki 10 kisi, jumper akan menghasilkan output ke-11.

Koneksi Arduino digariskan dalam warna merah, Anda dapat menggunakan daya USB untuk itu tetapi sangat disarankan untuk menggunakan transformator gaya lama biasa untuk persediaan yang tersisa jika Anda sudah memiliki catu daya yang diarde seperti PC Anda. Pasokan ini harus semua DC kecuali mungkin suplai filamen, saya menambahkan beberapa dioda karena kemungkinan Anda memerlukan trafo terpisah dengan sekunder tegangan rendah. Daya filamen biasanya berkisar sekitar 3V 150mA, transformator AC 5V sudah cukup. Hal "pemberat" mungkin akan menjadi potensiometer daya wirevound seperti 100ohm, atau resistor tetap, atau juga beberapa dioda 1N4007 untuk mengurangi tegangan.

Transistor BC557 menarik anoda hingga tegangan anodik dan resistor 100kohm akan membiarkan penggerak tegangan turun ketika segmen mati, sedangkan CD4094 tetap pada 5V secara normal.

CD4017 akan ditenagai dengan tegangan jaringan dan tidak memerlukan transistor tambahan. Ada sirkuit reset "ghetto" untuk 4017 yang berlangsung seperti sepersepuluh detik, Anda harus menunggu sampai selesai sebelum menjalankan kode.
Skema "asli" untuk mengalirkan beberapa CD4017 memerlukan chip gerbang logika lainnya, saya menggunakan transistor NPN dan optocoupler itu sendiri untuk mereplikasi gerbang AND, cukup cepat saat menutup sehingga sempurna untuk tugas itu, saat melepaskannya agak lebih lambat tapi kami tidak peduli, terutama karena input clock pada 4017 dipicu oleh schmitt dan kecepatan yang diperlukan tidak "menakutkan" di sana.

Ada berbagai alasan untuk keripik dan barang-barang seperti yang Anda lihat, perhatikan baik-baik.

Proses manufaktur

  1. Membuat Boneka Permainan Squid menggunakan Arduino UNO
  2. Animasi Bitmap Pada ILI9341 TFT Touchscreen Display Shield
  3. Pengontrol DMX yang Dioperasikan Web
  4. Game Arduino Pong - Tampilan OLED
  5. Pengontrol Game Arduino
  6. Unopad - Pengontrol MIDI Arduino dengan Ableton
  7. Suhu Arduino. Monitor Dan Jam Waktu Nyata Dengan Tampilan 3.2
  8. Bermain Dengan Tampilan Berikutnya
  9. Voltmeter DIY dengan Arduino dan Tampilan Nokia 5110
  10. Suhu, Kelembaban, dan Tekanan BME280 pada Tampilan Berikutnya