Daftar Isi:

Pengukur Kapasitor ATTiny85: 4 Langkah
Pengukur Kapasitor ATTiny85: 4 Langkah

Video: Pengukur Kapasitor ATTiny85: 4 Langkah

Video: Pengukur Kapasitor ATTiny85: 4 Langkah
Video: DIGISPARK ATTINY85 DEVELOPMENT BOARD 2024, Juli
Anonim
Pengukur Kapasitor ATTiny85
Pengukur Kapasitor ATTiny85
Pengukur Kapasitor ATTiny85
Pengukur Kapasitor ATTiny85

Instruksi ini untuk meteran Kapasitor berdasarkan ATTiny85 dengan fitur berikut.

  • Berdasarkan ATTiny85 (DigiStamp)
  • SSD1306 0.96" Layar OLED
  • Pengukuran frekuensi untuk kapasitor bernilai rendah 1pF - 1uF menggunakan osilator 555
  • Pengukuran waktu pengisian daya untuk kapasitor bernilai tinggi 1uF - 50000uF
  • 2 port terpisah yang digunakan untuk metode meminimalkan kapasitansi berbintang
  • Dua nilai arus yang digunakan untuk Waktu Pengisian Daya untuk meminimalkan waktu untuk kapasitor besar
  • 555 metode self zeros saat start up, dapat di-rezero dengan menekan tombol
  • Tes cepat yang digunakan untuk memilih metode mana yang harus digunakan untuk setiap siklus pengukuran.
  • Akurasi metode waktu pengisian daya dapat ditingkatkan dengan dukungan untuk penyesuaian frekuensi jam OSCVAL

Langkah 1: Skema dan Teori

Skema dan Teori
Skema dan Teori

Skema menunjukkan ATTiny menggerakkan layar OLED SSD1306 melalui antarmuka I2C. Ini didukung langsung dari baterai LiOn 300mAh dan titik pengisian disertakan yang dapat digunakan dengan pengisi daya eksternal yang kompatibel dengan LiOn.

Metode pengukuran pertama didasarkan pada pengukuran frekuensi osilator berjalan bebas 555. Ini memiliki frekuensi dasar yang ditentukan oleh resistor dan kapasitor yang harus memiliki akurasi tinggi karena ini menentukan keakuratan pengukuran. Saya menggunakan kapasitor polistiren 1% 820pF yang saya miliki tetapi nilai lain sekitar 1nF dapat digunakan. Nilai harus dimasukkan ke dalam perangkat lunak bersama dengan perkiraan kapasitansi yang menyimpang (~ 20pF). Ini memberikan frekuensi dasar sekitar 16KHz. Output dari 555 dimasukkan ke PB2 dari ATTiny yang diprogram sebagai penghitung perangkat keras. Dengan mengukur hitungan selama periode sekitar 1 detik frekuensi dapat ditentukan. Hal ini dilakukan pada saat start up untuk menentukan frekuensi dasar. Ketika kapasitor yang diuji ditambahkan secara paralel ke kapasitor dasar maka frekuensinya diturunkan dan ketika ini diukur dan dibandingkan dengan frekuensi dasar maka nilai kapasitansi yang ditambahkan dapat dihitung.

Fitur bagus dari metode ini adalah bahwa nilai yang dihitung hanya bergantung pada keakuratan kapasitor dasar. Periode pengukuran tidak masalah. Resolusi tergantung pada resolusi pengukuran frekuensi yang cukup tinggi sehingga kapasitansi tambahan yang sangat kecil pun dapat diukur. Faktor pembatas tampaknya adalah 'suara frekuensi' dari osilator 555 yang bagi saya setara dengan sekitar 0.3pF.

Metode ini dapat digunakan pada rentang yang layak. Untuk meningkatkan jangkauan saya menyinkronkan periode pengukuran untuk mendeteksi tepi pulsa yang masuk. Ini berarti bahwa bahkan osilasi frekuensi rendah seperti 12Hz (dengan kapasitor 1uF) diukur secara akurat.

Untuk kapasitor yang lebih besar rangkaian diatur menggunakan metode waktu pengisian. Dalam hal ini kapasitor yang diuji dilepaskan untuk memastikannya dimulai pada 0, kemudian diisi melalui resistansi yang diketahui dari tegangan suplai. Sebuah ADC di ATTiny85 digunakan untuk memantau tegangan kapasitor dan waktu untuk pergi dari 0% sampai 50% biaya diukur. Ini dapat digunakan untuk menghitung kapasitansi. Karena referensi untuk ADC juga tegangan suplai maka ini tidak mempengaruhi pengukuran. Namun, ukuran absolut dari waktu yang dibutuhkan memang bergantung pada frekuensi clock ATTiny85 dan variasi dalam hal ini mempengaruhi hasilnya. Suatu prosedur dapat digunakan untuk meningkatkan akurasi jam ini menggunakan register penyetelan di ATTiny85 dan ini akan dijelaskan kemudian.

Untuk melepaskan kapasitor ke 0V, MOSFET saluran-n digunakan bersama dengan resistor bernilai rendah untuk membatasi arus pelepasan. Ini berarti bahkan kapasitor bernilai besar dapat dikosongkan dengan cepat.

Untuk mengisi kapasitor 2 nilai resistor pengisian digunakan. Nilai dasar memberikan waktu pengisian yang wajar untuk kapasitor dari 1uF hingga sekitar 50uF. MOSFET saluran-p digunakan untuk paralel dalam resistor yang lebih rendah untuk memungkinkan kapasitor bernilai lebih tinggi diukur dalam interval yang wajar. Nilai yang dipilih memberikan waktu pengukuran sekitar 1 detik untuk kapasitor hingga 2200uF dan secara proporsional lebih lama untuk nilai yang lebih besar. Pada nilai akhir yang lebih rendah, periode pengukuran harus dijaga cukup lama untuk memungkinkan penentuan transisi melalui ambang 50% dilakukan dengan presisi yang cukup. Tingkat pengambilan sampel ADC adalah sekitar 25uSec sehingga periode minimum 22mSec memberikan presisi yang masuk akal.

Karena ATTiny memiliki IO terbatas (6 pin) maka alokasi sumber daya ini perlu dilakukan dengan hati-hati. 2 pin diperlukan untuk tampilan, 1 untuk input timer, 1 untuk ADC, 1 untuk kontrol pelepasan dan 1 untuk kontrol laju pengisian. Saya ingin kontrol tombol tekan untuk memungkinkan re-zeroing pada titik mana pun. Hal ini dilakukan dengan hi-jacking jalur I2C SCL. Karena sinyal I2C adalah saluran terbuka maka tidak ada konflik listrik dengan membiarkan tombol menarik garis ini rendah. Layar akan berhenti bekerja dengan tombol ditekan tetapi ini tidak ada konsekuensinya karena dilanjutkan saat tombol dilepaskan.

Langkah 2: Konstruksi

Konstruksi
Konstruksi
Konstruksi
Konstruksi
Konstruksi
Konstruksi

Saya membuatnya menjadi kotak cetak 3D berukuran 55mm x 55mm.dirancang untuk menampung 4 komponen utama; papan DigiStamp ATTiny85, layar SSD1306, baterai LiOn, dan sedikit papan prototipe yang memegang pengatur waktu 55 dan elektronik kontrol pengisian daya.

Lampiran di

Bagian yang dibutuhkan

  • Papan DigiStamp ATTiny85. Saya menggunakan versi dengan konektor microUSB yang digunakan untuk mengunggah firmware.
  • Layar OLED SSD1306 I2C
  • Baterai LiOn 300mAh
  • Potongan kecil papan prototipe
  • Chip pengatur waktu CMOS 555 (TLC555)
  • n-Channel MOSFET AO3400
  • p-Channel MOSFET AO3401
  • Resistor 4R7, 470R, 22K, 2x33K
  • Kapasitor 4u7, 220u
  • Kapasitor Presisi 820pF 1%
  • Saklar geser miniatur
  • 2 x 3 pin header untuk port pengisian daya dan port pengukuran
  • Tekan tombol
  • Lampiran
  • Kaitkan kawat

Alat yang dibutuhkan

  • Besi solder titik halus
  • Pinset

Pertama-tama buat sirkuit timer 555 dan komponen pengisian daya pada papan prototipe. Tambahkan lead terbang untuk koneksi eksternal. Pasang sakelar geser dan titik pengisian daya dan port pengukur ke dalam enklosur. Pasang baterai dan lakukan kabel daya utama ke titik pengisian daya, sakelar geser. Hubungkan ground ke tombol tekan. Tempelkan ATTiny85 di tempatnya dan selesaikan pengaitnya.

Anda dapat melakukan beberapa modifikasi hemat daya pada papan ATTiny sebelum memasang yang akan sedikit mengurangi arus dan memperpanjang masa pakai baterai.

www.instructables.com/Reducing-Sleep-Curre…

Ini tidak penting karena ada saklar daya untuk mematikan meteran saat tidak digunakan.

Langkah 3: Perangkat Lunak

Software untuk Capacitor Meter ini dapat ditemukan di

github.com/roberttidey/CapacitorMeter

Ini adalah sketsa berbasis Arduino. Dibutuhkan perpustakaan untuk tampilan dan I2C yang dapat ditemukan di

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Ini dioptimalkan untuk ATTiny untuk mengambil memori minimal. Pustaka I2C adalah metode bit bang berkecepatan tinggi yang memungkinkan penggunaan 2 pin apa pun. Ini penting karena metode I2C menggunakan port serial menggunakan PB2 yang bertentangan dengan penggunaan input timer/counter yang diperlukan untuk mengukur frekuensi 555.

Perangkat lunak ini disusun di sekitar mesin keadaan yang melakukan pengukuran melalui siklus keadaan. Sebuah ISR mendukung overflow dari penghitung waktu untuk memperpanjang perangkat keras 8 bit. ISR kedua mendukung ADC yang beroperasi dalam mode kontinu. Ini memberikan respons tercepat ke sirkuit pengisian yang melintasi ambang batas.

Pada awal setiap siklus pengukuran, fungsi getMeasureMode menentukan metode mana yang paling tepat digunakan untuk setiap pengukuran.

Ketika metode 555 digunakan, waktu penghitungan hanya dimulai ketika penghitung telah berubah. Demikian juga waktu hanya berhenti setelah interval pengukuran nominal dan ketika tepi terdeteksi. Sinkronisasi ini memungkinkan penghitungan frekuensi yang akurat bahkan untuk frekuensi rendah.

Ketika perangkat lunak dimulai, 7 pengukuran pertama adalah 'siklus kalibrasi' yang digunakan untuk menentukan frekuensi dasar 555 tanpa kapasitor tambahan. 4 siklus terakhir dirata-ratakan.

Ada dukungan untuk menyesuaikan register OSCAL untuk penyetelan jam. Saya menyarankan untuk mengatur OSCCAL_VAL ke 0 pada awalnya di bagian atas sketsa. Ini berarti kalibrasi pabrik akan digunakan sampai penyetelan dilakukan.

Nilai kapasitor basis 555 perlu disesuaikan. Saya juga menambahkan perkiraan jumlah kapasitansi nyasar.

Jika resistor yang berbeda digunakan untuk metode pengisian maka nilai CHARGE_RCLOW dan CHARGE_RCHIGH dalam perangkat lunak juga perlu diubah.

Untuk menginstal perangkat lunak, gunakan metode digistamp normal dengan mengunggah perangkat lunak dan menghubungkan port usb saat diminta. Biarkan sakelar daya dalam posisi mati karena daya akan disuplai oleh USB untuk operasi ini.

Langkah 4: Operasi dan Kalibrasi Tingkat Lanjut

Pengoperasiannya sangat mudah.

Setelah menyalakan unit dan menunggu kalibrasi nol selesai, hubungkan kapasitor yang diuji ke salah satu dari dua port pengukuran. Gunakan port 555 untuk kapasitor bernilai rendah <1uF dan port pengisian daya untuk kapasitor bernilai lebih tinggi. Untuk kapasitor elektrolit, hubungkan terminal negatif ke titik arde bersama. Selama pengujian kapasitor akan diisi hingga sekitar 2V.

Port 555 dapat diubah dengan menahan tombol tekan selama sekitar 1 detik dan melepaskannya. Pastikan tidak ada yang terhubung ke port 555 untuk ini.

Kalibrasi tingkat lanjut

Metode pengisian bergantung pada frekuensi clock absolut dari ATTiny85 untuk mengukur waktu. Jam menggunakan osilator RC internal yang diatur untuk memberikan clock 8MHz nominal. Meskipun stabilitas osilator cukup baik untuk variasi tegangan dan suhu, frekuensinya dapat keluar beberapa persen meskipun sudah dikalibrasi dari pabrik. Kalibrasi ini mengatur register OSCCAL saat start up. Kalibrasi pabrik dapat ditingkatkan dengan memeriksa frekuensi dan membuat pengaturan nilai OSCCAL yang lebih optimal agar sesuai dengan papan ATTiny85 tertentu.

Saya belum berhasil memasukkan metode yang lebih otomatis ke dalam firmware, jadi saya menggunakan prosedur manual berikut. Dua variasi dimungkinkan tergantung pada pengukuran eksternal apa yang tersedia; baik pengukur frekuensi yang mampu mengukur frekuensi bentuk gelombang segitiga pada port 555, atau sumber gelombang persegi dengan frekuensi yang diketahui mis. 10KHz dengan level 0V/3.3V yang dapat dihubungkan ke port 555 dan mengesampingkan bentuk gelombang untuk memaksa frekuensi itu ke penghitung. Saya menggunakan cara kedua.

  1. Start up meter pada daya normal tanpa kapasitor terhubung.
  2. Hubungkan pengukur frekuensi atau generator gelombang persegi ke port 555.
  3. Mulai ulang siklus kalibrasi dengan menekan tombol.
  4. Pada akhir siklus kalibrasi, tampilan akan menampilkan frekuensi yang ditentukan oleh penghitung dan nilai OSCCAL saat ini. Perhatikan bahwa penggunaan berulang dari siklus kalibrasi akan beralih antara menampilkan frekuensi terukur dan tanpa tampilan normal.
  5. Jika frekuensi yang ditampilkan kurang dari yang diketahui maka itu berarti frekuensi clock terlalu tinggi dan sebaliknya. Saya menemukan peningkatan OSCCAL menyesuaikan jam sekitar 0,05%
  6. Hitung nilai OSCCAL baru untuk meningkatkan jam.
  7. Masukkan nilai OSCCAL baru ke OSCCAL_VAL di atas firmware.
  8. Bangun kembali dan unggah firmware baru. Ulangi langkah 1 -5 yang seharusnya menunjukkan nilai OSCCAL baru dan pengukuran frekuensi baru.
  9. Jika perlu ulangi langkah lagi sampai hasil terbaik tercapai.

Catatan penting untuk melakukan bagian pengukuran penyetelan ini saat berjalan pada daya normal bukan USB untuk meminimalkan pergeseran frekuensi karena tegangan suplai.

Direkomendasikan: