Bagaimana cara memicu alarm ketika kertas toilet rendah?

47

Siapa pun dengan anak-anak tahu bahwa mereka tidak pernah membantu dengan kertas toilet. Adakah yang tahu cara melacak ketika suaranya rendah atau keluar dan membunyikan alarm? Saya hanya tidak tahu sensor apa yang digunakan yang dapat membantu.

Beberapa yang terlintas dalam pikiran adalah: berat, refleksi (warna kertas) atau tripwire laser - baik-baik saja pada gulungan. Saya tidak keberatan membangunnya, hanya saja saya tidak tahu sensor mana. Adakah yang tahu yang harus digunakan?

Jose Leon
sumber
5
Mungkin Anda juga harus memikirkan memasang sensor di kursi toilet, sehingga akan membunyikan alarm jika seseorang duduk ketika tidak ada kertas. :)
Peter Bloomfield
Mungkin orang bisa saja mencoba untuk mengukur resistensi radial dari gulungan (mudah-mudahan tidak terlalu tinggi) dan kemudian akan berkurang ketika tidak ada kertas yang tersisa.
jfpoilpret
Lupakan resistensi: hanya mencoba mengukurnya tetapi itu di atas kaliber maksimum multimeter saya (20M Ohm)
jfpoilpret
1
Nah, yang berikut ini mungkin merupakan diskusi yang lebih baik terletak di meta.arduino, tapi saya pikir pertanyaan ini biasanya salah satu yang menipu titik memiliki arduino SE. Ini tidak terikat langsung dengan arduinos karena untuk setiap proyek tidak boleh merancang solusinya terhadap alat, tetapi memilih alat yang terbaik untuk solusi (bagaimana jika menggunakan RPi lebih baik, atau CC2540?). Ini memang merupakan solusi rekayasa perangkat lunak mekanik + elektronis +. Dan tidak ada tempat SE terbaik yang saya tahu untuk menanyakan pertanyaan semacam itu.
zmo
@zmo Saya kemudian akan menyarankan OP untuk mengedit pertanyaannya untuk menambahkan kebutuhan untuk mengarahkan alarm melalui Arduino; yang akan membuatnya lebih baik untuk Arduino.SE
jfpoilpret

Jawaban:

47

Membawa beberapa gulungan sekaligus dan menggantung satu untuk digunakan. Letakkan dua lainnya di tiang vertikal pendek dalam jangkauan pengasuh. Pengasuh dapat mengambil gulungan lain bila diperlukan.

Secara mekanis merasakan kurangnya berat pada rak di bagian bawah tiang. Alarm terpicu ketika gulungan terakhir dihapus. Tidak ada yang harus ketahuan.

Untuk merasakan beratnya gunakan resistor peka gaya seperti FSR 400 (lihat lembar data ). Atau, Anda bisa menggunakan pegas koil untuk meletakkan kertas toilet dengan saklar mikro yang dilepaskan ketika kedua gulungan dilepas. Pilihan lain adalah detektor pemecah sinar IR di mana sirkuit selesai saat gulungan terakhir dilepas.

JRobert
sumber
@AnnonomusPerson Dia berbicara tentang mengukur berat beberapa gulungan kertas toilet, bukan lembaran individual atau gulungan kosong.
AJMansfield
1
Ini adalah ide yang bagus: daripada harus berurusan dengan mengukur jumlah kertas yang tersisa pada gulungan, mengukur jumlah gulungan yang tersisa untuk memberi tahu Anda saat Anda perlu mendapatkan lebih banyak gulungan.
AJMansfield
Sensor apa yang akan Anda gunakan untuk mendeteksi kekurangan berat badan?
jfpoilpret
3
Sensor tekanan kain adalah salah satu opsi, atau sensor cahaya pada alas yang tertutup jika ada gulungan.
Rob Hoare
Bisakah Anda memberikan contoh sensor tertentu yang dapat melakukan pekerjaan itu?
asheeshr
22

Saya percaya konsep sensor buluh yang diajukan oleh jfpoilpret dan jmathew adalah yang paling mudah untuk dicapai. Saya telah menggambar diagram bagaimana saya pikir akan terlihat.

Anda dapat menyesuaikan sensitivitas dengan menyesuaikan ketinggian kontak yang lebih rendah.

Ini benar-benar hanya membuat Anda ke kondisi "rendah" dan belum tentu keluar. Kecuali jika Anda ingin mengganti gulungan sementara masih ada beberapa lembar yang tersisa, menurut saya ini bukan solusi yang memuaskan. Saya lebih suka memiliki indikator "keluar" dan memiliki bel yang dapat didengar untuk meminta / memalukan pengguna untuk mengganti gulungan.

Desain ini dapat dicapai dengan menggunakan perangkat elektronik mandiri (tidak perlu Arduino). Namun itu Anda ingin gamify perubahan roll Anda bisa menggunakan Arduino untuk itu.

Perhatikan juga untuk sensor optik berbasis warna, sementara sebagian besar tabung kardus yang digunakan untuk tujuan ini berwarna coklat, saya telah melihat yang putih juga digunakan.

Diagram Sensor Reed

Arluin
sumber
6
Diagram yang bagus. Apa yang Anda gunakan untuk membuatnya?
jmathew
1
Hanya komentar iportant: Anda bahkan tidak memerlukan kontak buluh dalam situasi ini, tetapi hanya dua potong logam yang digunakan sebagai saklar sederhana. Kontak buluh didasarkan pada kekuatan magnet membuka atau menutup sakelar; itu diperlukan dalam jawaban saya di mana tidak ada kontak nyata antara kedua bagian. Tapi di sini, menggunakan buluh sepertinya tidak berguna, saya pikir.
jfpoilpret
@ jfpoilpret Saya tidak tahu istilah itu jenis saklar tertentu. Saya sedang memikirkan konsep yang lebih umum dari bahan yang bisa ditekuk kaku. Terimakasih atas klarifikasinya!
jmathew
@jmathew tidak masalah, lagipula, kita semua di sini untuk berbagi pengetahuan!
jfpoilpret
2
Saya menggunakan MS Visio 2007.
Arluin
14

Saya pikir saya melihat ini dalam seri 1 episode 2 dari James May's Manlab.

Mirip dengan jfpoilpret, gunakan sepotong bahan lebar pada pegas yang membuat kontak dengan gulungan setiap saat. Saya mengatakan 'lebar' sehingga ketika gulungan kosong buluh menyentuh dengan kontak pada salah satu pemegang gulungan di samping. Ketika menyentuh itu menyelesaikan sirkuit ke alarm Anda.

Ini gambar kasar yang menggambarkan apa yang saya maksud.

Dalam tanggapan Arluin disebutkan bahwa metode ini tidak akan menunjukkan bahwa gulungan itu kosong. Itu cukup benar. Jika kontak atas setebal gulungan kardus TP dan kontak bawah diposisikan di dalam bagian dalam gulungan kardus, kontak itu harus cukup dekat untuk keperluan praktis. Satu kaki gulungan TP tidak cukup setelah malam taco.

Lihatlah gambar imajinasiku

jathath
sumber
9

Gunakan detektor radiasi untuk mendeteksi jumlah kertas yang tersisa pada gulungan. Tempatkan sejumlah bahan radioaktif di tengah batang spool, dan letakkan detektor radiasi di tempat lain (Anda bisa memasangnya di sisi lain permukaan tempat dudukan gulungan, jika Anda mau; sensor radiasi sangat fleksibel) , dan ukur jumlah radiasi untuk menentukan berapa banyak kertas yang tersisa pada gulungan.

Sebagai alternatif, Anda dapat memiliki dispenser kertas toilet yang dikontrol secara elektronik (menekan tombol untuk mengeluarkan kertas toilet yang telah diprogram sebelumnya) dan meminta arduino melacak berapa banyak yang telah dikeluarkan.

Atau, pasang rotary encoder ke sisi batang spool (pastikan pas tanpa tergelincir di dalam gulungan), dan hitung rotasi gulungan untuk menentukan berapa banyak yang telah digunakan.

Tentu saja, dengan salah satu metode ini, Anda harus melakukan tes dan mengumpulkan data tergantung pada jenis / merek / bahan / dll kertas toilet yang tepat.

Khusus untuk ide kedua dan ketiga, saya akan merekomendasikan mengambil data dari sistem secara teratur, untuk melacak panjang khas gulungan sehingga Anda dapat menyesuaikan program untuk variasi yang signifikan. Bahkan dalam satu jenis kertas toilet, saya akan membayangkan bahwa akan ada beberapa variasi dalam panjang gulungan.

Untuk lebih menyenangkan, Anda dapat menggunakan detektor untuk mengumpulkan data deret waktu, jadi nanti Anda dapat mengunggahnya ke komputer dan membuat grafik "penggunaan kertas toilet dari waktu ke waktu" atau sesuatu.

AJMansfield
sumber
2
Saya penggemar berat menggunakan rotary encoder. Bahkan dapat dirancang pemegang TP memiliki encoder terpasang ke batang melalui gulungan, sehingga tidak menyebabkan bergerak pada encoder. Juga sebuah tombol dapat digunakan untuk mengatur ulang hitungan.
Steven10172
1
Tetapi masalah umum adalah menentukan jumlah rotasi maksimum karena ini tergantung pada jumlah lembaran dan ketebalannya.
jfpoilpret
Saya akan mengubah ini dari 'Pasang perangkat radiasi ke toilet roll' untuk menempelkannya ke roller tengah tempat duduknya. Efek yang sama, tetapi kurang pemeliharaan harus memasang kembali sensor untuk setiap roll
Robotnik
1
Anda dapat menentukan jumlah rotasi dengan mentransfer semua TP dari gulungan baru ke gulungan dalam gulungan terukur Anda dan menghitung rotasi dengan encoder (dengan hal DYI sederhana seperti sepasang dowel vertikal dan hanya membungkus satu ke yang lain) . Kemudian ketika itu kosong, ulangi. Membuat semuanya menjadi mudah digunakan juga karena Anda bisa terus menggunakan kembali spul yang sama dengan yang Anda pasang pada pembuat enkode, dan terus membungkus TP baru ke dalamnya.
Jason C
1
@ AJMansfield Saya bertanya-tanya apakah beberapa lingkaran terpotong dari karton di sisi-sisi gulungan penerima (dan beberapa perhatian) akan memberikan hasil yang memuaskan; jika gulungan berada pada batang dowel untuk dipindahkan, Anda cukup menusuk lubang di tengah cakram dan memasangnya. Di sisi positifnya, jika Anda selalu membeli merek TP yang sama, Anda hanya perlu melakukannya satu kali (dan Anda dapat menyimpan daftar jumlah spins untuk berbagai merek / jenis yang Anda temukan - Anda bisa pengelola bangga dari basis data penghitungan jumlah putaran TP opensource pertama di dunia).
Jason C
7

Saya pikir 'Arluin' dan 'jmathew' memiliki ide yang tepat. Gunakan tuas yang diletakkan di atas gulungan.

Namun saya akan melakukannya sedikit berbeda. Daripada mengandalkan kontak yang ditutup, Anda dapat menggunakan potensiometer. Dengan sistem ini, Anda dapat mengukur jumlah yang tersisa alih-alih hanya diberi tahu saat sudah rendah.

Dengan kontak seperti yang sudah disarankan, Anda mungkin akan tersangkut kertas di kontak saat menutup dan kemudian kertas rendah tidak akan terdeteksi.

(Anda mungkin perlu beban, ditunjukkan dengan warna biru pada diagram, untuk mendorong tuas ke bawah saat gulungan digunakan)

Anda perlu mencoba dan mendapatkan pot sedekat mungkin dengan gulungan agar ayunan pot maksimum dan karenanya resolusi maksimum dari jumlah yang tersisa.

Hal lain yang mungkin Anda inginkan adalah semacam rol di ujung tuas sehingga gulungan kertas dapat bergerak dengan mudah dengan sedikit seret di mana tuas menyentuh kertas.

Penyiapan yang diusulkan

DanJAB
sumber
4

Anda bisa membuka salah satu kartu ulang tahun yang sedang diputar itu dan menyesuaikan sakelar ke lengan dudukan. Setelah Anda mendengar 'Selamat Ulang Tahun "berdentang dari toilet, Anda tahu Anda dalam masalah! (Dan karena mereka sangat berdaya hal-hal ini berpadu selamanya ;-)) Saya telah menunjukkan pengaturan LED di sini tetapi Anda mendapatkan ide ...

Selamat ulang tahun

Menggertakkan
sumber
Bisakah Anda mengedit pertanyaan Anda untuk mengetahui bagaimana menghubungkan item itu ke papan Arduino? Terima kasih!
Anonymous Penguin
3

Saya membuat tachometer reflektansi untuk Arduino yang mungkin akan menyelesaikan masalah Anda. Rangkaian dasar cukup sederhana:

sirkuit takometer

Saya memiliki sebuah photoransistor yang diletakkan di sekitar yang merespon dengan baik terhadap lampu merah, dan yang lain dari Radio Shackyang cukup sensitif terhadap output IR LED TV jarak jauh. Untuk keperluan Anda, kabel hijau akan dihubungkan ke Pin Analog 0 dari Arduino, dan Anda hanya perlu mengambil sampel secara berkala, bukan menyiapkan sketsa yang digerakkan interupt. Trik untuk mendapatkan perbedaan sinyal yang dipantulkan antara kertas putih dan gulungan abu-abu adalah mengetahui bahwa sensitivitas cahaya dari sebuah transistor meningkatkan ketahanan terhadap GND, tetapi tegangan gelap juga naik. Saya datang dengan nilai 5 dan 3 megohm secara empiris, dengan memeriksa nilai-nilai AtoD dari objek gelap dan cahaya pada jarak beberapa inci dari detektor. Prosedur yang sama harus bekerja untuk deteksi Anda abu-abu vs putih. Meskipun beberapa hal yang terlihat sangat berbeda terlihat memiliki pantulan yang sama di IR. Berikut adalah pic dari tachometer lampu merah yang sudah selesai: masukkan deskripsi gambar di sini

Seharusnya sederhana untuk membuat papan sensor cukup kecil untuk masuk ke bagian belakang dispenser kertas Anda. Versi IR bahkan lebih kecil, tetapi terkubur terlalu dalam di centrifuge buatan sendiri untuk mendapatkan pic hari ini.

Orang Asing Wayfaring
sumber
3

Saya pikir pilihan lain yang layak dan murah untuk digunakan adalah sensor jarak seperti yang ada di telepon atau sensor inframerah medan tetap. Sensor ini cukup akurat dan dapat dengan mudah digunakan untuk "melihat" di belakang toilet roll dengan memasang sensor ke dudukan atau dinding tempat toilet roll diletakkan. Semua ide lain yang saya lihat di posting itu cukup tidak akurat atau terasa mengganggu ke toilet roll yang dalam jangka panjang saya merasa dapat memberikan kontaminasi. Sensor proximity tidak hanya cukup murah dan mudah digunakan, jika dikalibrasi dengan baik, mereka dapat menghasilkan akurasi dan reliabilitas yang sangat baik. Model ini sudah banyak digunakan dalam urinal pria untuk auto-flush. Misalnya pada ponsel Anda: Ponsel Anda akan secara akurat memberikan jarak 2,0 inci atau tak terbatas ketika tangan atau wajah Anda berada di dekat layar.

Aditya Somani
sumber
Untuk $ 10 Anda bisa mendapatkan ini adafruit.com/products/466 kisaran 1cm-15cm (sempurna untuk TP roll) dan dirancang agar mudah diintegrasikan dengan mikrokontroler.
Jason C
@Jason C: Upaya pertama menggunakan VCNL4000, tetapi seperti laporan lainnya, itu akan berhenti / berhenti / beku saat mengambil bacaan. Saya belum melihat ada yang menyelesaikan ini, bahkan ketika menurunkan MA.
Jose Leon
@Aditya Menggunakan sensor jarak HC-SR04 tidak membantu. Tidak ada perbedaan antara gulungan penuh TP dan yang kosong. Terbaik yang bisa saya tebak adalah 'gema' langsung menembus jaringan dan berhenti di batang logam yang memegang TP. Jadi, setidaknya untuk sensor itu, tidak berfungsi.
Jose Leon
@ JoseLeon, begitu. Itu memang aneh. Saya setuju dengan alasan Anda. Mungkin ada sensor lain di luar sana yang mungkin bekerja tetapi saya pikir alasan Anda bahwa gelombang infra merah seharusnya hanya melalui kertas toilet tampaknya valid.
Aditya Somani
2

Sensor jarak ultrasonik jarak pendek mungkin merupakan opsi yang efektif (dan cukup murah). Anda bisa mendapatkan kombinasi emitor + sensor yang terpasang pada sebuah chip. Sensor yang berbeda dapat bekerja dengan cara yang berbeda (selalu periksa lembar data). Keluaran umum meskipun menggunakan panjang pulsa untuk menunjukkan jarak yang dirasakan. Anda dapat memprosesnya di Arduino menggunakan pulseIn()fungsi.

Dalam hal pemasangan, Anda mungkin akan memasangnya tepat di belakang kertas toilet, menunjuk ke tengah gelendong. Pembacaan seringkali cukup tidak menentu, jadi Anda ingin mengambil beberapa pengukuran dan rata-rata (atau gunakan rata-rata bergerak sederhana). Dengan sedikit kalibrasi, Anda bisa menentukan jarak yang mewakili gulungan kosong.

Saat Anda mendeteksi jarak itu berulang kali untuk periode yang signifikan (mis. Satu menit atau lebih), Anda akan membunyikan alarm.

Sensor berbasis pantulan mungkin merupakan kemungkinan lain, meskipun saya bertanya-tanya apakah Anda mungkin kesulitan menemukan yang akan berfungsi dengan baik pada kertas toilet (tergantung seberapa lembut merek pilihan Anda!).

Peter Bloomfield
sumber
Saya tidak yakin Anda akan mendapatkan akurasi yang cukup dengan sensor ultrasound; IIRC, kebanyakan dari mereka memiliki akurasi sekitar 3-4 mm; secara umum itu cukup baik, tetapi mengingat diameter gulungan kertas toilet, itu mungkin terlalu tidak akurat.
jfpoilpret
Ya, itu sering benar untuk bacaan individu. Fluktuasinya cukup seragam, sehingga Anda dapat rata-rata membaca beberapa kali berturut-turut untuk menangkalnya. Itu berpotensi memberi Anda presisi ~ 1mm.
Peter Bloomfield
Apa yang terjadi ketika kertas toilet bergoyang satu mm ketika berputar menjauh dari sensor dengan sedikit kertas tersisa?
Anonymous Penguin
1
@AnnonomusPerson Anda akan selalu mendapatkan bacaan palsu ketika ada gerakan. Itu sebabnya Anda menunggu sampai bacaan stabil untuk periode yang signifikan sebelum bertindak.
Peter Bloomfield
@Peter R: Menggunakan sensor jarak HC-SR04 tidak membantu. Tidak ada perbedaan antara gulungan penuh TP dan yang kosong. Terbaik yang bisa saya tebak adalah 'gema' langsung menembus jaringan dan berhenti di batang logam yang memegang TP. Jadi, setidaknya untuk sensor itu, tidak berfungsi.
Jose Leon
2

Satu ide yang muncul di benak adalah sesuatu seperti itu:

  • tempelkan magnet kecil di dalam gulungan kertas, yaitu di dalam bagian karton (ini harus dilakukan setiap kali Anda mengubahnya; meskipun)
  • gunakan kontak buluh (sakelar elektromagnetik) di ujung tongkat yang dipasang dengan pegas agar selalu bersentuhan dengan gulungan kertas
  • satu pin dari kontak buluh dapat langsung dihubungkan ke input logis pin (atur sebagai pullup resistor input)
  • pin lain dari kontak buluh harus dihubungkan ke tanah

Jadi, begitu jarak antara magnet dan kontak buluh berada di bawah batas tertentu, saklar akan menutup sirkuit. Jarak itu akan berkurang saat gulungan kertas ditarik.

Perhatikan bahwa, alih-alih kontak buluh, Anda juga dapat menggunakan sensor Hall Effect, prinsip-prinsipnya tetap sama, hanya teknologi dan karakteristik yang berubah.

Kesulitan di sini adalah untuk menemukan sensitivitas yang tepat dari kontak buluh (atau kekuatan magnet) sehingga kontak buluh menjadi tertutup ketika jarak antara itu dan magnet cukup kecil untuk menghindari alarm yang akan diaktifkan terlalu cepat ).

jfpoilpret
sumber
Itu tidak akan berfungsi, alasan yang sama dengan sensor ultrasonik. Itu masih akan menyala dengan setidaknya 10 kaki masih di atasnya. Sensor warna adalah ide yang lebih baik.
Anonymous Penguin
Saya tidak melihat hubungannya dengan sensor ultrasonik. Bisakah Anda mengembangkan lebih lanjut MENGAPA tidak akan berhasil? Ada sejumlah besar sensor kontak buluh dan aula, apalagi berbagai jenis magnet.
jfpoilpret
Lapisan TP sangat tipis sehingga dapat diaktifkan dengan sedikit meninggalkan. Secara teori bisa saja diubah, tetapi sangat tidak efisien untuk mengeluarkan mikroskop atau apa pun untuk mengubah gulungan kertas toilet.
Anonymous Penguin
Mengaktifkan dengan sedikit ke kiri tidak terlalu buruk, karena pertanyaan OP adalah "... kertas toilet rendah "; rendah tidak selalu berarti kosong.
jfpoilpret
2

Solusi paling sederhana, namun terbaik, adalah menggunakan optocoupler yang terbuat dari satu IR LED dan opto-transistor. Anda membuat LED meringankan ke arah gulungan, LED berada di dalam gulungan terikat ke "pegangan". Setelah Anda melepaskan gulungan kardus, opto-transistor mendapatkan cahaya IR dari LED dan memicu gangguan penggantian pin pada Arduino, yang kemudian dapat memperingatkan Anda melalui banyak cara (cahaya, SMS, twitter, alarm ...).

Desain itu sangat murah, mudah dan cepat untuk dibangun. Meskipun masih ada satu hal yang perlu Anda lakukan: ketika tidak ada lagi kertas toilet, Anda harus benar-benar melepaskan gulungan kardus ;-)

Kalau tidak, solusi yang sama untuk roll cadangan adalah ide yang lebih baik :-)

zmo
sumber
Bukankah chip tunggal optocouplers yang termasuk emitor dan penerima? Lihat di sini: en.wikipedia.org/wiki/Opto-isolator
jfpoilpret
[...] adalah komponen yang mentransfer sinyal listrik antara dua sirkuit yang terisolasi dengan menggunakan cahaya [...] jadi pada dasarnya itulah yang kami lakukan, antara LED IR (satu sirkuit), dan fototransistor. Meskipun Anda benar, itu bukan komponen tunggal (seperti MOC3020).
zmo
2

Banyak opsi di sini tampaknya terlalu rumit dan mengganggu.

Sensor Warna

Pilihan lain, sedikit rumit (tapi menyenangkan) untuk diterapkan, tetapi tidak mengganggu dan mudah dipasang, adalah membangun sensor warna yang murah dan memasangnya di dinding di belakang gulungan. Ketika Anda mendeteksi warna gulungan (atau tidak adanya warna TP), itu rendah.

Anda juga dapat membeli satu untuk $ 8 .

Anda dapat menyesuaikan ambang dengan mengambil keuntungan dari ketipisan TP dan fakta bahwa itu mulai terlihat sedikit lebih gelap ketika hanya ada beberapa lembar yang tersisa.

Jika perlu, kalibrasi dapat dilakukan dengan menekan tombol setelah gulungan baru dipasang dengan lampu kamar mandi menyala.

Anda harus melakukan beberapa penyesuaian tergantung pada spesifikasi kamar mandi Anda. Jika Anda menambahkan beberapa kompleksitas tambahan dan mematikannya dari stopkontak AC yang diikat ke saklar lampu kamar mandi, Anda hanya bisa menyalakannya ketika lampu kamar mandi menyala, yang akan menyaring banyak data yang tidak dapat diandalkan.

Ini sangat mudah dipasang dan tidak melibatkan modifikasi pada gulungan itu sendiri. Anda dapat menempelkan sensor ke dinding dengan selotip dua sisi, atau meletakkannya di rak kecil di bawah gulungan menghadap ke atas (atau di atas menghadap ke bawah).

Istirahat sinar IR

Pasang LED IR kecil di satu sisi dispenser, tepat di atas gelendong. Pasang sensor foto IR di sisi lain dispenser. Ketika sensor melihat LED, gulungan rendah. Bisa juga dilakukan dengan laser murah (mis. Penunjuk laser dari rak di satu sisi dan fotosensor di sisi lain; tapi jangan sakiti mata Anda!)

Ini juga mudah dipasang (mis. Lem panas ke dispenser) dan tidak melibatkan modifikasi pada gulungan, meskipun lokasi sensor mungkin membuatnya mudah rusak saat Anda mengganti gulungan.


Saya juga sangat suka sensor buluh dan sensor jarak (BTW: $ 10 memberi Anda sensor jarak dekat yang bagus ) pilihan di sini.

Jason C
sumber
1
Sinar IR adalah pikiran pertama saya. Sederhana dan mudah diimplementasikan dan mungkin lebih dapat diandalkan daripada beberapa solusi lain, meskipun mungkin kurang menyenangkan :)
Kevin
Hehe, aku setuju. Saya pikir sensor warna akan menyenangkan, setidaknya dari sisi perangkat lunak; itu akan menjadi tantangan yang bagus untuk mengumpulkan data dan mencoba dan menghasilkan algoritma yang kebal terhadap, misalnya, perubahan pencahayaan alami atau pemicu palsu lainnya.
Jason C
1

Anda punya beberapa pilihan:

Catatan: Tautan yang diberikan hanyalah tautan pertama yang muncul. Kebanyakan dari mereka mahal dibandingkan dengan situs lain. eBay membelinya sekarang bisa cukup murah untuk sebagian besar barang-barang ini. Periksa tempat lain juga, termasuk Sparkfun .

  • Sensor Ping Ultrasonik . Ini tidak ideal dengan cara apa pun, tetapi mudah digunakan. Cukup tambahkan satu dengan penutup. Ini tidak ideal karena tidak akan cukup akurat untuk mengetahui kapan tepatnya itu kosong. Mungkin sedikit over / under sensitif. Berat akan lebih sulit, meskipun jika itu bergeser sama sekali.
  • Sensor warna (lebih disukai, tetapi harganya lebih mahal) . Anda menyebutkan ini dan ini mungkin ide terbaik. Ini akan memberi Anda nilai analog (untuk dibaca dengan Arduino) untuk merah, hijau, dan biru. [Dengan asumsi bahwa semakin tinggi kandungan warna itu, semakin tinggi tegangannya,] putih seharusnya hampir semuanya 100% dan coklat saya membayangkan bahwa kebanyakan dari mereka akan sekitar 30-40%. (Lebih lanjut, jika Anda tidak mengerti ini, lewati bagian ini)

Saya akan membahas lebih rinci tentang sensor warna:

Warna dibaca dengan tiga nilai di sini: merah, hijau, dan biru. Ada tiga sensor di papan tulis. Yang satu menyaring semuanya kecuali merah, yang lain biru, dan yang lainnya hijau. Sensor di papan mendeteksi jumlah cahaya yang masuk dan kemudian mengubahnya menjadi tegangan: antara 5V ("100% merah / hijau / biru") atau 0V ("0% merah / hijau / biru"). Ini kemudian dapat dikonversi menjadi angka oleh Arduino (0-1024 pada pin analog).

Masalah dengan pencahayaan: Sensor ini, dari apa yang saya tahu, memiliki LED yang selalu menyala. Anda ingin melakukan desolder atau menutupinya, kecuali jika Anda menginginkan tempat kertas toilet yang menyala. Sekarang tunggu ... sensor Anda akan berpikir bahwa ketika gelap, warnanya cokelat. Tidak masalah ... ada sesuatu yang bisa Anda pikirkan.

Gunakan pemilih warna seperti yang saya gunakan dan pilih cokelat . Di sebelah kiri ini, Anda dapat mengontrol "kecerahan yang disimulasikan." Selain itu adalah bentuk heksadesimal dari RGB. Anda ingin mengonversikannya ke nilai standar dengan kalkulator ini .

Dalam warna coklat, warna biru hampir tidak ada. Kita harus mengabaikan warna itu, kecuali jika Anda ingin cara memeriksa ulang apakah warnanya cokelat. Saya akan mengatakan itu harus selalu di bawah 40% untuk hampir semua warna coklat.

Dari apa yang bisa saya katakan dengan contoh warna coklat, merah cukup banyak 2x hijau. Rasio itu mungkin bervariasi, tetapi Anda harus memverifikasi bahwa itu agak ada. Untuk putih / abu-abu / hitam, semua warna adalah proporsional 1: 1: 1. Anda dapat menggunakan ini untuk mendeteksi apakah gelap, atau cokelat.

int rPin = A0;      //Red Pin
int gPin = A1;      //Green Pin
int bPin = A2;      //Blue Pin
int ledPin = 13;    //I made this code with a LED, not a speaker
boolean testTwice = false;

void setup() {
  pinMode(ledPin, OUTPUT);  
}

void loop() {
  int rValue = analogRead(rPin);
  int gValue = analogRead(gPin);
  int bValue = analogRead(bPin);

  if (bPin < 256) { //If this is false, either something is in the way or it's white. Going to verify that something's not in the way...
    int minRed = rPin * 0.4; //A little under a half for padding... this values may need to be adjusted. Adjust this one and the one below farther apart for less sensitive.
    int maxRed = rPin * 0.6; //A little over a half for padding... this values may need to be adjusted.
    if (gPin < maxRed && gPin > minRed) { //Verifys that red between minRed and maxRed
      digitalWrite(ledPin, HIGH);
      delay(5000);
      digitalWrite(ledPin, LOW);
    }
  }
  delay(5000); // No need to waste power... you might want to add an actutal sleep function if on battery power
}

Pertama, itu memverifikasi bahwa biru kurang dari 25%. Kemudian, itu memverifikasi bahwa merah dan hijau sama ... memberi atau mengambil 20%. (yaitu merah = 100 hijau = 80, merah = 110 hijau = 90, dll.). Jika itu benar, Anda dapat memastikan bahwa warnanya cokelat. Kemudian, LED menyala selama lima detik.

Anda dapat memodifikasi LED menjadi buzzer jika diinginkan. Anda mungkin harus menyesuaikan pernyataan if dengan memverifikasi bahwa biru kurang dari 256/1024 (1024 = resolusi pin analog) jika tidak bekerja dalam banyak cahaya atau bekerja dalam cahaya gelap. Karena kode nanti memverifikasi bahwa merah adalah sekitar 2x hijau, setiap warna putih tidak boleh melewati pernyataan if. Anda mungkin juga harus menyesuaikan minReddan maxRedmenjadi lebih jauh (jika tidak mendeteksi cokelat) atau lebih dekat (jika mendeteksi cokelat saat putih). Saya tidak dapat benar-benar menguji kode ini tanpa sensor warna.


Catatan: ini bisa sedikit gelisah. Saya akan merekomendasikan LED sehingga seluruh rumah tidak terbangun di tengah malam hanya karena kertas toilet yang rendah. Juga, jika Anda menghalangi sensor sama sekali ... Jika tidak di kamar mandi, saya akan merekomendasikan kamera dan mengambil bidikan setiap kali itu menjadi sangat rendah dengan saklar buluh seperti jawaban @ jfpolipret ... tapi ... (tidak ada permainan kata-kata) :)

Penguin Anonim
sumber
Haruskah sensor warna bekerja sama (yaitu tanpa harus menyetel sketsa) jika Anda mengubah warna kertas toilet Anda :-)?
jfpoilpret
@ jfpoilpret Saya tidak tahu apakah Anda menggunakan kembali kertas toilet Anda atau tidak tapi ... :) Saya menambahkan kode dengan mekanisme sehingga akan menjadi "mirip" tetapi tidak tepat.
Penguin Anonim
Saya pikir kertas toilet cukup lembut untuk menyerap ledakan ultrasonik dari sensor ultrasonik
TheDoctor
@ TheDoctor Sebenarnya bukan ide yang bagus, seperti yang saya tunjukkan. Ini cara yang tidak akurat.
Anonymous Penguin
1
@ jfpoilpret Jika Anda menambahkan tombol "kalibrasi" dan menekannya dengan lampu kamar mandi menyala setelah Anda memasang gulungan baru, Anda dapat mengukur warna yang benar.
Jason C
1

Kedengarannya seperti proyek yang keren, inilah 2 ct saya:

Arahkan kamera untuk mengambil foto gulungan dari samping, itu mungkin satu-satunya cara untuk mengetahui seberapa banyak kertas yang tersisa. (sunting: Anda dapat menggunakan pi raspberry dengan kamera csi dan membuat sinyal keluaran yang sesuai dengan jumlah lembar dan mengumpankan sinyal itu ke arduino ?!)

Untuk perkiraan mungkin cukup untuk menghitung rotasi gulungan, tetapi Anda perlu memperbaiki gulungan lebih baik agar tidak tergelincir. Atau Anda dapat menggunakan magnet seperti yang Anda lakukan pada sepeda, tetapi magnet harus dipasang secara langsung.

(sunting: satu gagasan lagi, pastikan ketebalan gulungan dengan mengukur sudut tutupnya)

Tukang koran
sumber
Halo dan selamat datang di Arduino Stack Exchange! Bisakah Anda katakan bagaimana Anda menghubungkannya ke Arduino? Terima kasih! Juga, saya tidak tahu seberapa bagus ide meletakkan kamera di kamar mandi. :)
Anonymous Penguin
Saya suka ide terakhir yang diedit; mungkin disederhanakan lebih lanjut dengan hanya menggunakan sakelar pada tutupnya, yang akan menutup sirkuit ketika tutupnya telah mencapai sudut tertentu; yang tampaknya lebih mudah daripada mengukur sudut itu sendiri.
jfpoilpret
1

Pilihan terbaik Anda adalah melampirkan rotary encoder ke sisi gulungan, dan menghitung rotasi gulungan untuk menentukan berapa banyak yang telah digunakan. Setelah mengetahui jumlah rotasi per rol, Anda dapat mengatur di mana Anda ingin notifikasi menyala. Lampirkan ke sistem pencatatan jenis dan Anda akan memiliki data historis penggunaan kertas serta penggunaan toilet.

stav
sumber
Saya setuju. Orang-orang tampaknya terlalu rumit dalam hal ini. Anda juga dapat tetap menggunakan kembali gulungan yang sama dengan encoder yang terpasang padanya dengan mentransfer TP dari gulungan baru ke gulungan sensor ketika Anda mengisi ulang (mis. Letakkan gulungan pada beberapa batang dowel murah, dan bungkus); itu juga memungkinkan Anda menghitung berapa rotasi untuk gulungan itu (saat Anda mengisinya).
Jason C
1

Saya katakan dapatkan sensor berat, dan programkan untuk berat gulungan. Ketika turun di bawah berat tertentu, mulailah mem-flash LED atau berbunyi bip.

I. Golsby
sumber
0

Cara lain untuk melakukannya, jika Anda hanya ingin bersenang-senang adalah dengan meletakkan batang logam di dalam gulungan, dan pelat logam di luar, dan mengukur kapasitansi yang harus berubah dengan TP yang tersisa karena konstanta dielektrik kertas.

Tapi itu pasti akan mengambil "rute indah". Namun, Arduino dapat mengukur kapasitansi dengan cukup mudah dan bahkan mungkin cukup sensitif, dan itu akan menghindar karena hanya akan menjadi pelat logam di belakang gulungan dan batang logam di gulungan. Anda bahkan mungkin dapat memperbaiki dudukan yang ada tanpa diketahui.

Cara yang lebih mudah adalah tongkat yang menempel pada poros potensiometer yang dipegang oleh bagian atas gulungan. Semakin sedikit TP, poros turun dan memutar pot. Mungkin perlu poros panjang untuk pengungkitan karena Anda tidak bisa menekan terlalu keras tanpa menghalangi fungsi menarik kertas toilet.

Seperti yang disarankan AJMansfield, Radioaktivitas sebenarnya digunakan untuk mengukur ketebalan benda dalam pengaturan industri. Jika Anda benar-benar ingin menjadi gila, mungkin Anda bisa menggunakan sumber radioaktif energi yang sangat rendah seperti kaleng pengganti garam yang terasa aneh yang sedikit di atas tingkat latar belakang dan rata-rata dalam waktu yang sangat lama (kertas toilet tidak boleh banyak berubah dari jam ke jam), jadi ini sebenarnya bisa menjadi cara yang masuk akal jika mahal untuk melakukan sesuatu.

Sensor pancaran sinar infra merah juga bagus, dan jika Anda memposisikannya dengan benar, Anda bisa membuatnya memblokir lebih banyak cahaya, lebih banyak gulungan itu bukan hanya memberi Anda dan atau menonaktifkan sinyal.

EDIT: Bukti Kerja dari konsep pendekatan kapasitif. Hanya membutuhkan arduino dan 2 kabel kaku. Precise sekitar 8 inci, dengan banyak suara. Cukup yakin Anda bisa mendapatkan akurasi setidaknya 1 inci. Waktu pengukuran adalah sekitar satu menit. Ini sangat sensitif terhadap lingkungannya. Anda harus memastikan logam apa pun dalam kaki tetap berada di tempat itu atau menggunakan pelindung.

float difference;
unsigned long i;
unsigned long j;
unsigned int temp;
volatile unsigned char blah;

void setup()
{
  pinMode(5,OUTPUT);
  Serial.begin(9600);
}

void loop()
{
 difference =0;
 Serial.print("Measuring: ");

 for(i=0;i<100;i++)
   {
     for(j=0;j<5000;j++)
     {
       digitalWrite(5,LOW);

       temp=analogRead(A0);

       digitalWrite(5,HIGH);

       temp = analogRead(A0)-temp;
       if(temp<1024)
       {
         difference += temp;
       }

     }
     //Random delay every 5000 samples helps avoid problems with interference by staggering the samples to cancel aliasing.
     delay(random(1,50));
     Serial.print("|");

   }
   Serial.print("\n");
   Serial.print("Value: ");
   Serial.print(difference/500000);
   Serial.print("\nMeasurement Complete. Press Enter to begin another test.\n");

   while(!Serial.available())
   {
     blah = 20;
   }
   Serial.read();


}

http://pastebin.com/2W5y81AB

EternityForest
sumber
Lebih baik memasukkan kode dalam jawaban Anda daripada tautan eksternal. Jika tautan rusak di masa depan, jawaban Anda akan tetap relevan.
sachleen