Isi kandungan:

Meter Kapasitor ATTiny85: 4 Langkah
Meter Kapasitor ATTiny85: 4 Langkah

Video: Meter Kapasitor ATTiny85: 4 Langkah

Video: Meter Kapasitor ATTiny85: 4 Langkah
Video: How to make a LED digital counter using 7- Segment Display 2024, Julai
Anonim
Meter Kapasitor ATTiny85
Meter Kapasitor ATTiny85
Meter Kapasitor ATTiny85
Meter Kapasitor ATTiny85

Petunjuk ini adalah untuk meter Kapasitor berdasarkan ATTiny85 dengan ciri-ciri berikut.

  • Berdasarkan ATTiny85 (DigiStamp)
  • Paparan OLED SSD1306 0.96"
  • Pengukuran frekuensi untuk kapasitor nilai rendah 1pF - 1uF menggunakan pengayun 555
  • Pengukuran masa cas untuk kapasitor bernilai tinggi 1uF - 50000uF
  • 2 port berasingan yang digunakan untuk kaedah meminimumkan kapasitansi tetap
  • Dua nilai arus digunakan untuk Charge Time untuk meminimumkan masa untuk kapasitor besar
  • Sifar diri kaedah 555 semasa memulakan, boleh dibuat semula dengan menekan butang
  • Ujian cepat yang digunakan untuk memilih kaedah mana yang harus digunakan untuk setiap kitaran pengukuran.
  • Ketepatan kaedah masa pengecasan dapat ditingkatkan dengan sokongan untuk penyesuaian frekuensi jam OSCVAL

Langkah 1: Skematik dan Teori

Skematik dan Teori
Skematik dan Teori

Skema menunjukkan ATTiny menggerakkan paparan OLED SSD1306 melalui antara muka I2C. Ia digerakkan secara langsung dari bateri LiOn 300mAh dan titik pengecasan disertakan yang boleh digunakan dengan pengecas luaran yang serasi dengan LiOn.

Kaedah pengukuran pertama didasarkan pada mengukur frekuensi pengayun bebas bebas 555. Ini mempunyai frekuensi asas yang ditentukan oleh perintang dan kapasitor yang seharusnya mempunyai ketepatan tinggi kerana ini menentukan ketepatan pengukuran. Saya menggunakan kapasitor polistirena 1% 820pF yang saya ada tetapi nilai lain sekitar 1nF boleh digunakan. Nilai harus dimasukkan ke dalam perisian bersama dengan perkiraan kapasiti sesat (~ 20pF). Ini memberikan frekuensi asas sekitar 16KHz. Output 555 dimasukkan ke PB2 ATTiny yang diprogramkan sebagai kaunter perkakasan. Dengan mengukur kiraan dalam jangka masa 1 saat, frekuensi dapat ditentukan. Ini dilakukan pada permulaan untuk menentukan frekuensi asas. Apabila kapasitor yang diuji ditambahkan secara paralel ke kapasitor asas maka frekuensi diturunkan dan apabila ini diukur dan dibandingkan dengan frekuensi asas maka nilai kapasitansi tambahan dapat dikira.

Ciri bagus kaedah ini adalah bahawa nilai yang dikira hanya bergantung pada ketepatan kapasitor asas. Tempoh pengukuran tidak menjadi masalah. Resolusi bergantung pada resolusi pengukuran frekuensi yang cukup tinggi sehingga kapasitansi tambahan yang sangat kecil dapat diukur. Faktor yang mengehadkan ialah 'frekuensi bunyi' pengayun 555 yang bagi saya setara dengan sekitar 0.3pF.

Kaedah ini boleh digunakan dalam jarak yang baik. Untuk meningkatkan julat, saya menyegerakkan tempoh pengukuran untuk mengesan tepi denyutan yang masuk. Ini bermaksud bahawa ayunan frekuensi rendah seperti 12Hz (dengan kapasitor 1uF) diukur dengan tepat.

Untuk kapasitor yang lebih besar litar diatur untuk menggunakan kaedah masa pengecasan. Dalam ini kapasitor yang diuji adalah pelepasan untuk memastikan ia bermula pada 0, kemudian dicas melalui rintangan yang diketahui dari voltan bekalan. ADC di ATTiny85 digunakan untuk memantau voltan kapasitor dan masa untuk pergi dari caj 0% hingga 50% diukur. Ini mungkin digunakan untuk mengira kapasitans. Oleh kerana rujukan untuk ADC juga voltan bekalan maka ini tidak mempengaruhi pengukuran. Walau bagaimanapun, ukuran mutlak masa yang diambil bergantung pada frekuensi jam ATTiny85 dan variasi ini mempengaruhi hasilnya. Prosedur boleh digunakan untuk meningkatkan ketepatan jam ini menggunakan register penalaan di ATTiny85 dan ini dijelaskan kemudian.

Untuk melepaskan kapasitor ke 0V MOSFET saluran n digunakan bersama-sama dengan perintang nilai rendah untuk mengehadkan arus pelepasan. Ini bermaksud kapasitor nilai yang besar dapat dikeluarkan dengan cepat.

Untuk mengecas kapasitor 2 nilai pengecas perintang digunakan. Nilai asas memberikan masa pengecasan yang berpatutan untuk kapasitor dari 1uF hingga sekitar 50uF. MOSFET saluran p digunakan untuk selari pada perintang yang lebih rendah untuk membolehkan kapasitor nilai yang lebih tinggi diukur dalam selang masa yang munasabah. Nilai yang dipilih memberikan masa pengukuran sekitar 1 saat untuk kapasitor hingga 2200uF dan secara proporsional lebih lama untuk nilai yang lebih besar. Pada akhir nilai yang lebih rendah, tempoh pengukuran mesti disimpan cukup lama untuk membolehkan menentukan peralihan melalui ambang 50% yang harus dilakukan dengan ketepatan yang cukup. Kadar pensampelan ADC adalah sekitar 25uSec sehingga jangka masa minimum 22mSec memberikan ketepatan yang wajar.

Oleh kerana ATTiny mempunyai IO terhad (6 pin) maka peruntukan sumber ini perlu dilakukan dengan teliti. 2 pin diperlukan untuk paparan, 1 untuk input pemasa, 1 untuk ADC, 1 untuk kawalan pelepasan dan 1 untuk kawalan kadar caj. Saya mahukan kawalan butang tekan untuk membolehkan sifar semula pada bila-bila masa. Ini dilakukan dengan menggunakan jack I2C SCL. Oleh kerana isyarat I2C adalah longkang terbuka maka tidak ada konflik elektrik dengan membiarkan butang menarik garis ini rendah. Paparan akan berhenti berfungsi dengan menekan butang tetapi ini tidak berakibat kerana ia disambung semula apabila butang dilepaskan.

Langkah 2: Pembinaan

Pembinaan
Pembinaan
Pembinaan
Pembinaan
Pembinaan
Pembinaan

Saya menjadikannya menjadi kotak bercetak 3D 55mm x 55mm kecil. Direka bentuk untuk memegang 4 komponen utama; papan ATTiny85 DigiStamp, paparan SSD1306, bateri LiOn, dan sebilangan kecil papan prototaip yang memegang 55 pemasa dan elektronik kawalan cas.

Lampiran di

Bahagian diperlukan

  • Papan DigiStamp ATTiny85. Saya menggunakan versi dengan penyambung microUSB yang digunakan untuk memuat naik firmware.
  • Paparan SSD1306 I2C OLED
  • Bateri 300MAH LiOn
  • Jalur kecil papan prototaip
  • Cip pemasa CMOS 555 (TLC555)
  • n-Saluran MOSFET AO3400
  • p-Saluran MOSFET AO3401
  • Perintang 4R7, 470R, 22K, 2x33K
  • Kapasitor 4u7, 220u
  • Kapasitor Ketepatan 820pF 1%
  • Suis slaid miniatur
  • Header 2 x 3 pin untuk port cas dan port pengukuran
  • Tekan butang
  • Pagar
  • Memasang wayar

Alat yang diperlukan

  • Besi pematerian titik halus
  • Pinset

Pertama, buat litar pemasa 555 dan komponen pengecasan pada papan prototaip. Tambahkan petunjuk terbang untuk sambungan luaran. Lekatkan suis slaid dan titik pengecasan dan port pengukuran ke dalam kandang. Lekatkan bateri dan lakukan pendawaian kuasa utama ke titik cas, suis slaid. Sambungkan tanah ke butang tekan. Lekatkan ATTiny85 di tempatnya dan selesaikan pengaitnya.

Anda boleh melakukan pengubahsuaian penjimatan kuasa pada papan ATTiny sebelum dipasang yang akan mengurangkan arus sedikit dan memanjangkan hayat bateri.

www.instructables.com/Mengurangkan-S tidur-Curre…

Ini tidak kritikal kerana terdapat suis kuasa untuk mematikan meter ketika tidak digunakan.

Langkah 3: Perisian

Perisian untuk Kapasitor Meter ini boleh didapati di

github.com/roberttidey/CapacitorMeter

Ini adalah lakaran berasaskan Arduino. Ia memerlukan perpustakaan untuk paparan dan I2C yang boleh didapati di

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Ini dioptimumkan agar ATTiny mengambil memori minimum. Perpustakaan I2C adalah kaedah bit bang berkelajuan tinggi yang membolehkan menggunakan 2 pin. Ini penting kerana kaedah I2C menggunakan port bersiri menggunakan PB2 yang bertentangan dengan menggunakan pemasa / input pembilang yang diperlukan untuk mengukur frekuensi 555.

Perisian ini disusun di sekitar mesin keadaan yang melakukan pengukuran melalui kitaran keadaan. ISR menyokong limpahan dari kaunter pemasa untuk memperluas perkakasan 8 bit. ISR kedua menyokong ADC beroperasi dalam mod berterusan. Ini memberikan tindak balas terpantas ke litar pengecasan yang melintasi ambang.

Pada permulaan setiap kitaran pengukuran, fungsi getMeasureMode menentukan kaedah mana yang paling tepat untuk digunakan untuk setiap pengukuran.

Apabila kaedah 555 digunakan, masa penghitungan hanya bermula apabila pembilang telah berubah. Begitu juga waktunya hanya dihentikan setelah selang pengukuran nominal dan ketika sisi dikesan. Penyegerakan ini memungkinkan pengiraan frekuensi yang tepat walaupun untuk frekuensi rendah.

Semasa perisian bermula, 7 pengukuran pertama adalah 'kitaran penentukuran' yang digunakan untuk menentukan frekuensi asas 555 tanpa kapasitor tambahan. Purata 4 kitaran terakhir.

Terdapat sokongan untuk menyesuaikan daftar OSCAL untuk penalaan jam. Saya cadangkan tetapkan OSCCAL_VAL ke 0 pada mulanya di bahagian atas lakaran. Ini bermaksud penentukuran kilang akan digunakan sehingga penalaan dilakukan.

Nilai kapasitor asas 555 perlu diselaraskan diperlukan. Saya juga menambah jumlah anggaran untuk kapasiti sesat.

Sekiranya perintang yang berbeza digunakan untuk kaedah pengecasan, maka nilai CHARGE_RCLOW dan CHARGE_RCHIGH dalam perisian juga perlu diubah.

Untuk memasang perisian, gunakan kaedah digistamp biasa untuk memuat naik perisian dan menyambungkan port usb apabila diminta. Biarkan suis kuasa dalam kedudukan mati kerana kuasa akan dibekalkan oleh USB untuk operasi ini.

Langkah 4: Operasi dan Penentukuran Lanjutan

Operasi sangat mudah.

Setelah menghidupkan unit dan menunggu penentukuran sifar selesai, sambungkan kapasitor yang diuji ke salah satu daripada dua port pengukuran. Gunakan port 555 untuk kapasitor nilai rendah <1uF dan port cas untuk kapasitor nilai lebih tinggi. Untuk kapasitor elektrolitik sambungkan terminal negatif ke titik bumi bersama. Semasa menguji kapasitor akan dicas hingga sekitar 2V.

Pelabuhan 555 dapat dihidupkan semula dengan menahan butang tekan selama kira-kira 1 saat dan melepaskan. Pastikan tiada yang disambungkan ke port 555 untuk ini.

Penentukuran lanjutan

Kaedah caj bergantung pada frekuensi jam mutlak ATTiny85 untuk mengukur masa. Jam menggunakan pengayun RC dalaman yang disusun untuk memberikan jam 8MHz nominal. Walaupun kestabilan pengayun cukup baik untuk variasi voltan dan suhu, frekuensi boleh keluar beberapa peratus walaupun dikalibrasi kilang. Penentukuran ini menetapkan daftar OSCCAL pada permulaan. Kalibrasi kilang dapat diperbaiki dengan memeriksa frekuensi dan membuat pengaturan nilai OSCCAL yang lebih optimum agar sesuai dengan papan ATTiny85 tertentu.

Saya belum berjaya memasukkan kaedah yang lebih automatik ke dalam firmware, jadi saya menggunakan prosedur manual berikut. Dua variasi boleh dilakukan bergantung pada ukuran luaran yang tersedia; sama ada meter frekuensi yang mampu mengukur frekuensi bentuk gelombang segitiga pada port 555, atau sumber gelombang persegi frekuensi yang diketahui, mis. 10KHz dengan tahap 0V / 3.3V yang dapat disambungkan ke port 555 dan menimpa bentuk gelombang untuk memaksa frekuensi itu ke kaunter. Saya menggunakan kaedah kedua.

  1. Mula meter dengan kuasa normal tanpa kapasitor disambungkan.
  2. Sambungkan meter frekuensi atau penjana gelombang persegi ke port 555.
  3. Mulakan semula kitaran penentukuran dengan menekan butang.
  4. Pada akhir kitaran penentukuran, paparan akan menunjukkan frekuensi seperti yang ditentukan oleh pembilang dan nilai OSCCAL semasa. Perhatikan bahawa penggunaan berulang kalibrasi akan beralih antara menunjukkan frekuensi yang diukur dan paparan tanpa normal.
  5. Sekiranya frekuensi yang dipaparkan kurang dari yang diketahui maka ini bermaksud frekuensi jam terlalu tinggi dan sebaliknya. Saya dapati kenaikan OSCCAL menyesuaikan jam sekitar 0.05%
  6. Hitung nilai OSCCAL baru untuk meningkatkan jam.
  7. Masukkan nilai OSCCAL baru ke dalam OSCCAL_VAL di bahagian atas firmware.
  8. Bina semula dan muat naik firmware baru. Ulangi langkah 1 -5 yang harus menunjukkan nilai OSCCAL baru dan pengukuran frekuensi baru.
  9. Sekiranya perlu, ulangi langkah lagi sehingga hasil terbaik dicapai.

Catatan penting untuk melakukan pengukuran bahagian penalaan ini ketika berjalan pada daya normal bukan USB untuk meminimumkan peralihan frekuensi kerana voltan bekalan.

Disyorkan: