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

Arduino Power

Komponen dan persediaan

Adafruit PowerBoost Charger Shield
× 1
Baterai Lipoly isi ulang (generik)
3.7 - 4.2V
× 1
Arduino UNO
× 1

Tentang proyek ini

Proyek yang melibatkan keluarga papan mikrokontroler Arduino biasanya tidak memerlukan sirkuit manajemen daya khusus. Anda menghubungkan sumber daya, perangkat melakukan booting, berfungsi dan kemudian berhenti ketika daya terputus. Tidak seperti sistem Raspberry Pi, tidak ada risiko merusak kartu memori SD.

Namun untuk beberapa aplikasi, Anda mungkin ingin memantau status daya dan merespons dengan cara yang lebih terkelola, daripada hanya mematikan.

Pertimbangkan perangkat penginderaan jauh yang mencatat data suhu, misalnya. Jika baterai habis saat tidak dijaga, log berhenti begitu saja. Tidak ada cara untuk segera mengetahui bahwa baterai lemah adalah masalahnya. Bisa jadi karena kegagalan perangkat lunak atau perangkat keras.

Demikian juga, untuk sistem portabel, akan sangat membantu jika mengetahui berapa lama masa pakai baterai yang tersisa dan kapan perlu diisi ulang.

Proyek ini menyajikan beberapa pendekatan untuk manajemen daya Arduino dengan sirkuit, perangkat lunak, dan deskripsi untuk masing-masing. Dimulai dengan sakelar hidup/mati sederhana hingga sistem pencatatan data yang menyertakan status baterai yang ditujukan untuk pemantauan lingkungan tanpa pengawasan.

Anda dapat memilih dan memilih subsistem mana yang Anda minati. Saya akan menjelaskan semuanya dalam kompleksitas yang meningkat tetapi Anda dapat mengomentari bagian-bagian yang tidak Anda minati.

Proyek ini dibangun berdasarkan ide-ide dalam proyek LiPoPi dan Pi Power, yang menyediakan fungsionalitas serupa untuk sistem Raspberry Pi.

Ikhtisar

Sistem menyediakan beberapa fungsi:

  • Menghidupkan/Mematikan menggunakan tombol tekan
  • Pantau tegangan baterai menggunakan ADC Arduino
  • Matikan sistem pada tegangan rendah
  • Rekam tegangan baterai dan pesan shutdown ke file
  • Menampilkan status baterai menggunakan LED Merah/Hijau

Saya akan memperkenalkan masing-masing secara bergantian, tetapi benang merah dari semuanya adalah kombinasi dari Adafruit PowerBoost dan Arduino.

Dengan masing-masing dari ini Anda menambahkan dan menyesuaikan dua fungsi, arduinoPowerSetup() dan arduinoPowerMonitor( ) , ke setup() standard standar dan loop() fungsi dalam kode Anda.

Adafruit PowerBoost Shield

Sistem ini menggunakan Baterai LiPoly yang dapat diisi ulang dan Pelindung Pengisi Daya Adafruit PowerBoost, yang dapat mengisi daya baterai dan meningkatkan outputnya hingga 5V.

Adafruit membuat tiga versi Power Boost - dua papan breakout dan Arduino Shield. Sebagian besar pekerjaan yang dijelaskan di sini menggunakan Power Shield, tetapi saya akan berbicara tentang penggunaan papan breakout nanti.

Silakan baca halaman ini tentang cara mengkonfigurasi PowerBoost Shield. Untuk menyiapkan kit Perisai, Anda perlu:

  • Solder pada strip header susun
  • Tapi jangan pasang sakelarnya
  • Solder pada panjang kabel (4 inci, inti padat 22AWG) ke Pin Pengaktifan
  • Menjembatani bantalan untuk pin Analog A0 di bagian bawah pelindung

Sirkuit Daya Hidup/Mati

Sirkuit dasar ini menggunakan penekanan tombol tekan sesaat untuk menyalakan sistem dan, saat berjalan, untuk mematikannya -mirip dengan cara kerja ponsel saya.

Saat Anda menekan dan menahan sistem yang dimatikan, PowerBoost dihidupkan dan memasok daya ke Arduino yang kemudian melakukan booting dan menjalankan program yang telah Anda muat ke dalamnya.

Saat Anda menekan tombol lagi, dan melepaskannya, Arduino menonaktifkan PowerBoost dan, karena tidak lagi memasok daya, Arduino mati.

Silakan baca halaman ini untuk detailnya. Berikut skemanya:

Catatan: Anda tidak perlu sirkuit ini untuk menggunakan sisa proyek ini. Anda dapat menggunakan sakelar opsional yang disediakan dengan pelindung PowerBoost. Perbedaan utamanya adalah sakelar dasar hanya mematikan sistem tanpa ada cara untuk merekam pesan log.

Pantau Tegangan Baterai

Arduino memiliki 6 Konverter Analog ke Digital (ADC) pada pin analog 0-5, yang membuat pengukuran tegangan menjadi mudah. Pelindung PowerBoost memungkinkan Anda menghubungkan tegangan Baterai (Vbat ) ke salah satunya dengan menjembatani bantalan solder yang sesuai seperti yang dijelaskan pada halaman PowerBoost Shield. Dalam contoh ini saya telah menautkannya ke Pin analog 0 .

Tegangan baterai LiPoly bervariasi dari sekitar 4.25V saat terisi penuh hingga sekitar 3.7V saat dipulangkan. ADC mengubah rentang tegangan 0V ke 5V ke dalam rentang bilangan bulat 0 hingga 1023 , dan kami mengakses nilai ini dengan memanggil analogRead() .

Cuplikan kode ini menunjukkan cara melakukannya serta menghitung status baterai relatif menggunakan voltase baterai minimum dan maksimum.

 float maxVoltage =4.25; float minVoltage =3,75; arduinoPowerVoltage =float(analogRead(arduinoPowerVoltagePin)) / 1024.0 * 5.0; float fractionalVoltage =(arduinoPowerVoltage - minVoltage) / (maxVoltage - minVoltage); 

Baterai LiPoly tidak kehilangan tegangan secara linier saat dilepaskan, tetapi cukup dekat bahwa kami dapat memperkirakan sisa masa pakai baterai menggunakan tegangan fraksional.

Jadi kita bisa mendapatkan tegangan baterai dan memperkirakan sisa masa pakainya, tetapi kita membutuhkan cara untuk mengomunikasikannya kepada pengguna. Kita bisa menggunakan tampilan alfanumerik dan di bagian selanjutnya saya akan menunjukkan cara memasukkan ini ke file di kartu SD. Tapi itu bisa berlebihan untuk banyak proyek.

Pendekatan yang lebih sederhana adalah dengan menggunakan RGB dan mengubah warna untuk mencerminkan masa pakai baterai. Misalnya:

  • Hijau - lebih dari 50%
  • Kuning - 20% hingga 50%
  • Merah - kurang dari 20% - waktu untuk mengisi ulang

Untuk menerapkannya, Anda cukup menambahkan RGB Led dan dua resistor 1K ke sirkuit dan menambahkan sedikit kode ke arduinoPowerMonitor() .

LED RGB biasanya menggunakan Common Anode jadi sirkuit ini bekerja dengan itu:

CATATAN: Dalam praktiknya, saya menggunakan catu daya 3.3V dengan LED saya.

CATATAN: Seperti yang akan saya tunjukkan nanti, mungkin ada 'osilasi' yang signifikan dalam tegangan terukur, untuk alasan yang tidak saya mengerti. Jika baterai mendekati salah satu nilai di mana warna LED berubah, Anda mungkin melihatnya beralih antara dua keadaan - sangat mengganggu. Perbaikan cepat adalah dengan menempatkan kapasitor 0,1uF antara pin analog A0 dan Tanah .

Tata letak papan tempat memotong roti ini tidak menunjukkan baterai atau Arduino. Sketsa arduino_2_voltage_led mengimplementasikan Power On/Power Off dan tampilan tegangan LED. Kode menyetel pin hijau atau merah ke rendah untuk menyalakan led dan tinggi untuk mematikannya.

CATATAN: Anda dapat memeriksa voltase terukur dan/atau debug dengan membatalkan komentar pada panggilan ke Serial dalam kode dan menjalankan Serial Monitor di IDEnya. Anda akan melihat tegangan baterai aktual dan fraksional. Untuk beberapa alasan panggilan pertama salah.

Mencatat Tegangan Baterai ke Kartu SD

Indikator tegangan LED berguna untuk sistem Arduino bertenaga baterai portabel di mana Anda tidak terlalu peduli dengan detailnya, Anda hanya ingin tahu kapan Anda perlu mengisi ulang baterai.

Namun, jika Anda memantau sensor dalam sistem mandiri, misalnya, Anda mungkin ingin merekam voltase baterai bersama dengan data sensor untuk memberi Anda gambaran yang lebih baik tentang konsumsi daya dari waktu ke waktu.

Untuk bagian proyek ini, saya menggunakan Adafruit Data Logging Shield yang dapat merekam data dalam CSV format file pada kartu SD terlampir, bersama dengan stempel waktu. Panduan Adafruit menjelaskan bagaimana SD dan RTC perpustakaan berfungsi dan Anda harus memahaminya sebelum mengerjakan bagian proyek ini.

Sirkuit tidak berubah dari contoh sebelumnya - sebaiknya simpan LED karena memberikan umpan balik langsung tentang status baterai, tetapi ini tidak perlu.

Karena kita mencatat data ke kartu, penting bagi kita untuk mencatat pesan shutdown. Dengan begitu kita dapat mengetahui apakah shutdown itu disengaja atau apakah ada kesalahan yang terjadi pada sistem.

Selain itu, karena kami memantau voltase, kami dapat memeriksa kapan voltase turun di bawah level minimum dan mematikan sistem dengan aman. Sekali lagi, kita dapat mencatat pesan tentang itu sebelum shutdown.

Sketsa untuk ini ada di arduino_3_voltage_logging. Ini mencakup beberapa rutinitas utilitas untuk menghasilkan string stempel waktu yang diformat dengan benar, dll. dan termasuk peretasan untuk mem-flash LED merah jika Anda lupa memasukkan kartu SD, yang selalu saya lakukan.

Seluruh tumpukan Arduino Uno, Data Logging Shield, PowerBoost Shield, dan papan tempat memotong roti terlihat seperti ini:

Data Tegangan

Berikut adalah plot tegangan Baterai dari waktu ke waktu yang menunjukkan penurunan bertahap selama periode sekitar 20 jam. Penurunannya tidak benar-benar linier tetapi, untuk tujuan memperkirakan daya yang tersisa, cukup dekat.

Seperti yang saya sebutkan sebelumnya, sangat membantu untuk menambahkan kapasitor 0,1uF antara Analog Pin A0 dan Tanah . Dalam contoh ini, garis ungu menunjukkan dampak kapasitor dibandingkan dengan aslinya dengan warna biru.

Mencatat Data Lingkungan ke Kartu SD

Untuk menyelesaikannya, berikut adalah satu lagi tambahan untuk proyek ini. Salah satu proyek yang ada dalam pikiran saya adalah monitor lingkungan mandiri untuk kebun saya - suhu, kelembapan tanah, dll.

Saya akan menginstal Arduino, dll, dalam kotak tertutup yang akan dibiarkan tanpa pengawasan selama beberapa waktu. Selain baterai yang hampir habis, saya ingin memastikan bahwa tidak ada uap air yang masuk ke dalam casing dan tidak mengalami suhu ekstrem yang dapat merusak sistem. Cara yang murah dan mudah untuk mengukur suhu dan kelembaban adalah sensor DHT22 - lihat Tutorial Adafruit untuk detailnya.

Dalam kode contoh saya, saya menggunakan pin digital 5 alih-alih pin 2, karena saya sudah menggunakannya untuk interupsi tombol Matikan.

Kode untuk ini ada di arduino_4_voltage_temp_humidity_logging. Setelah ini bekerja di papan tempat memotong roti, saya menghubungkannya ke Adafruit Proto Shield. Sensor DHT22 cukup besar - tapi murah. Lihat papan breakout lain dari Adafruit, Sparkfun, dll untuk alternatif lain.

Konservasi Daya dalam proyek Arduino

Tahap selanjutnya dalam proyek saya adalah mengurangi konsumsi daya dan memperpanjang masa pakai baterai.

Titik awal saya untuk ini adalah tutorial Adafruit yang luar biasa tentang Datalogging Daya Rendah dari Tony DiCola.

Kode

Github
https://github.com/craic/arduino_powerhttps://github.com/craic/arduino_power
Github
https://github.com/NeonHorizon/lipopihttps://github.com/NeonHorizon/lipopi
Github
https://github.com/craic/pi_powerhttps://github.com/craic/pi_power

Proses manufaktur

  1. Disipasi Daya
  2. Sumber Daya
  3. Bulldozer
  4. Baterai
  5. Arduino Spybot
  6. FlickMote
  7. TV Buatan Sendiri B-Gone
  8. Jam Master
  9. Tenaga angin
  10. Bagaimana Pengurangan Subsidi Mempengaruhi Industri Baterai Listrik