Tuvalet kağıdı az olduğunda bir alarm nasıl tetiklenir?


47

Çocukları olan herkes tuvalet kağıdına asla yardımcı olmadıklarını bilir. Düşük veya düşük olduğunda izlemeyi bilen ve sesli bir alarm veren var mı? Hangi sensörün işe yarayacağını bilmiyorum.

Akla gelen bazıları: ağırlık olarak, yansıma (kağıdın rengi) veya bir miktar lazer tripwire - makarada. Yapmayı umursamıyorum, sadece hangi sensörün olduğunu bilmiyorum. Hangisini kullanacağını bilen var mı?


5
Belki de klozet yuvasına bir sensör yerleştirmeyi düşünmelisiniz, bu nedenle eğer biri kağıt yoksa biri oturduğunda alarm çalar. :)
Peter Bloomfield

Belki bir kişi bir rulonun radyal direncini ölçmeye çalışabilir (umarım çok yüksek değildir) ve daha sonra kalan kağıt kalmadığında azalır.
jfpoilpret

Direnişi unutun: sadece ölçmeye çalıştım ama bu benim multimetrenin (20M Ohm) maksimum kalibresinin üstünde
jfpoilpret

1
Peki, takip eden şey meta.arduino'da daha iyi bir tartışma olabilir, ancak bu sorunun tipik olarak bir arduino SE'ye sahip olma noktasını aldatan bir soru olduğunu düşünüyorum. Her projede olduğu gibi doğrudan arduinolara bağlı değildir, çözümünü bir araca göre tasarlamayacaktır, ancak çözüm için en iyi olan araçları seçin (RPI kullanmak daha iyi veya CC2540 ise?). Gerçekten de mekanik + elektronik + yazılım mühendisliği çözümü. Ve bu tür sorular sormak için bildiğim en iyi SE mekanı yok.
zmo

@zmo daha sonra OP'ye, alarmı bir Arduino ile sürmeye olan ihtiyacı eklemek için sorusunu düzenlemesini öneririm; Bu Arduino için daha iyi yapardı.SE
jfpoilpret

Yanıtlar:


47

Bir seferde birkaç rulo getirin ve kullanmak için bir tane asın. Diğer ikisini, bakıcının ulaşabileceği kısa dikey bir direğe koyun. Sitter gerektiğinde başka bir rulo alabilir.

Mekanik olarak direğin altındaki rafta ağırlık eksikliği hissedin. Son rulo çıkarıldığında alarm tetiklenir. Kimse kısa tutulmak zorunda değil.

Ağırlığı hissetmek için, FSR 400 gibi kuvvete duyarlı bir direnç kullanın (bkz. Veri sayfası ). Alternatif olarak, tuvalet kağıdını her iki rulo çıkarıldığında serbest bırakılan bir mikro anahtar ile üzerine koymak için hafif bir helezoni yay kullanabilirsiniz. Başka bir seçenek de, son rulo çıkarıldığında devrenin tamamlandığı bir IR ışın kırılma dedektörü olacaktır.


@Anonomer Kişi Bireysel çarşaflar veya boş rulolar yerine birkaç tam tuvalet kağıdı rulosunun ağırlığını ölçmekten bahsediyor .
AJMansfield

1
Bu harika bir fikir: ruloda kalan kağıt miktarını ölçmek zorunda kalmak yerine, ne zaman daha fazla rulo almanız gerektiğini size söyleyen rulo sayısını ölçün.
AJMansfield

Ağırlık eksikliğini tespit etmek için hangi sensörü kullanırsınız?
jfpoilpret

3
Bir kumaş basınç sensörü bir seçenektir veya bir rulo varsa kaplanmış tabandaki bir ışık sensörüdür.
Rob Hoare

İşi yapabilen belirli bir sensör örneği verebilir misiniz?
asheeshr

22

Jfpoilpret ve jmathew tarafından ortaya konan kamış sensörü kavramının gerçekleştirilmesi en kolay olduğuna inanıyorum. Nasıl görüneceğini düşündüğüm bir şema çizdim.

Alt kontağın yüksekliğini ayarlayarak hassasiyeti ayarlayabilirsiniz.

Bu gerçekten sadece "düşük" bir koşul alır ve mutlaka dışarı değil. Ruloları değiştirmek istemediğiniz sürece, bir kaç sayfa kalmışken, bu bana tatmin edici bir çözüm gibi gelmiyor. "Dışarıda" göstergesine sahip olmayı ve kullanıcıyı rulonun yerini alması konusunda uyarmak / utandırmak için sesli bir zili çalmayı tercih ederim.

Bu tasarım bağımsız elektronikler kullanılarak gerçekleştirilebilir (arduino gerekmez). Ancak bunun için bir arduino kullanabileceğin rulonun değişimini oynamak istedin.

Renk bazlı optik sensörler için de dikkat edin, bu amaçla kullanılan karton tüplerin büyük çoğunluğu kahverengi iken, kullanımda beyaz olanları da gördüm.

Reed Sensör Diyagramı


6
Güzel diyagramlar Onları yapmak için ne kullandın?
Jmathew

1
Sadece önemli bir yorum: bu durumda bir kamış bağlantısına bile ihtiyacınız yok , ancak basit bir anahtar olarak kullanılan sadece iki metal parçası. Bir kamış kontağı, bir anahtarı açan veya kapatan manyetik kuvvetlere dayanır; cevabımda, her iki kısım arasında gerçek bir temasın olmadığı yerlerde gerekliydi. Ama burada, bir kamış kullanmak sadece işe yaramaz görünüyor, sanırım.
jfpoilpret

@jfpoilpret Terimin belirli bir anahtar olduğunu bilmiyordum. Sert bükülebilir bir malzemenin daha genel konseptini düşünüyordum. Açıklama için teşekkürler!
Jmathew

@jmathew sorun değil, sonuçta, hepimiz bilgiyi paylaşmak için buradayız!
jfpoilpret

2
MS Visio 2007'yi kullandım.
Arluin

14

Sanırım bunu James May's Manlab'ın 1. dizisinin 2. bölümünde görmüştüm.

Jfpoilpret'e benzer şekilde, her zaman rulo ile temas eden bir yay üzerinde geniş bir malzeme parçası kullanın. Ben 'geniş' diyorum, böylece rulo boşaldığında, yan taraftaki rulo tutuculardan birine temas eden kamış dokunuyor. Dokunulduğunda alarmınıza bir devre tamamlar.

İşte ne demek istediğimi anlatan kaba bir görüntü.

Arluin'in cevabında bu yöntemin rulonun boş olduğunu göstermeyeceği belirtildi. Bu hemen hemen doğru. Üst temas, TP karton rulosu kadar kalınsa ve alt temas, karton rulonun iç kısmına yerleştirilmişse, pratik amaçlar için yeterince yaklaşmalıdır. Taco gecesinden sonra TP rulosunun bir ayağı yeterli değildir.

Hayal gücümün imajına bakın


9

Ruloda kalan kağıt miktarını tespit etmek için bir radyasyon dedektörü kullanın. Makara çubuğunun ortasına bir miktar radyoaktif madde yerleştirin ve radyasyon dedektörünü başka bir yere yerleştirin (isterseniz, radyasyon sensörleri son derece esnekdir), rulo tutucunun monte edildiği yüzeyin diğer tarafına monte edebilirsiniz ve ruloda ne kadar kağıt kaldığını belirlemek için radyasyon miktarlarını ölçün.

Alternatif olarak, elektronik olarak kontrol edilen bir tuvalet kağıdı dağıtıcısına (önceden programlanmış bir tuvalet kağıdı uzunluğunu dağıtmak için düğmeye basabilirsiniz) ve arduino'nun ne kadar dağıtıldığını takip etmesini sağlayabilirsiniz.

Veya makara çubuğunun yan tarafına bir döner kodlayıcı takın (rulonun içine kaymadan uyduğundan emin olun) ve ne kadar kullanıldığını belirlemek için rulonun dönüşlerini sayın.

Tabii ki, bu yöntemlerden herhangi birinde, tuvalet kağıdı tipine / markasına / malzemesine / vb. Kesin olarak bağlı olarak testler yapmanız ve veri toplamanız gerekecektir.

Özellikle ikinci ve üçüncü fikirler için, bir rulonun tipik uzunluğunu takip etmek için sistemden düzenli olarak veri almanızı tavsiye ederim, böylece programı önemli bir değişiklik için ayarlayabilirsiniz. Bir tuvalet kağıdı türünde bile, rulo uzunluğunda bir miktar değişiklik olacağını hayal ediyorum.

Daha da eğlenceli olması için, dedektörü zaman serisi verilerini toplamak üzere gösterebilir, böylece daha sonra bir bilgisayara yükleyebilir ve "zaman içinde tuvalet kağıdı kullanımı" grafiği veya benzeri bir şey yapabilirsiniz.


2
Döner kodlayıcı kullanmanın büyük bir hayranıyım. TP tutucunun enkodere çubuktan tutturulmuş şekilde sarılması, böylece enkoder üzerinde hareket etmemesine neden olabilir. Ayrıca sayımı sıfırlamak için bir düğme kullanılabilir.
Steven10172

1
Ancak, ortak bir problem, maksimum dönme sayısının belirlenmesidir; çünkü bu, tabaka sayısına ve kalınlığına bağlıdır.
jfpoilpret

Bunu, radyasyon cihazını tuvalet rulosuna takmadan, üzerine oturduğu orta silindire takmaya değiştirirdim. Aynı etki, ancak her rulo için sensörü yeniden bağlamak zorunda kalmanın daha az bakımı
Robotnik

1
Tüm TP'yi yeni bir rulodan ölçülen rulonuzdaki makaraya aktararak ve kodlayıcı ile rotasyonu sayarak dönüş sayısını belirleyebilirsiniz (birkaç dikey dübel gibi basit bir DYI nesnesiyle ve sadece birini diğerine sarın) . Sonra boşaldığında tekrarlayın. Her şeyi kullanımı da kolaylaştırır, çünkü kodlayıcıyı daha önce eklemiş olduğunuz aynı makarayı tekrar kullanmaya devam edebilir ve üzerine yeni TP sarmaya devam edebilirsiniz.
Jason C

1
@AJMansfield Acaba rulonun kenarlarında kartondan kesilen bazı daireler (ve bazı bakımlar) tatmin edici sonuçlar verir mi? Rulolar aktarma için dübel çubukları üzerindeyse, disklerin ortasındaki bir deliği düp açabilirsiniz. Artı tarafta, her zaman aynı TP markasını satın alırsanız, sadece bir kez yapmanız gerekir (ve keşfettiğiniz farklı markalar / türler için spin sayısının listesini elinizde tutabilirsiniz. dünyanın ilk açık kaynaklı TP spin sayısı veritabanının gururlu sağlayıcısı).
Jason C

7

Bence 'Arluin' ve 'jmathew' doğru fikirleri var. Rulonun üstüne oturan bir kol kullanın.

Ancak biraz farklı yaparım. Kapanan kontaklara güvenmek yerine, bir potansiyometre kullanabilirsiniz. Bu sistemle, düşük olduğunda bildirilmek yerine kalan miktarı ölçebilirsiniz.

Önceden önerilenler gibi bir kişiyle, kağıdın kapandıkça sıkışmasına neden olabilir ve ardından düşük kağıt algılanmaz.

(Kolu kullanılırken kolu aşağıya doğru itmek için şemada mavi renkte gösterilen bir ağırlığa ihtiyacınız olabilir)

Potun maksimum salınımı ve dolayısıyla maksimum miktar çözünürlüğü için potu ruloya mümkün olduğunca yaklaştırmaya çalışmanız gerekir.

İstediğiniz bir diğer şey, kolun ucunda bir tür silindirdir, böylece kağıt rulosu, kolun kağıda temas ettiği yerde küçük bir sürükleme ile kolayca hareket edebilir.

Önerilen kurulum


4

Doğum günü kartı oynayanlardan birini açıp, anahtarı tutucu kola adapte edebilirsiniz. Bir kez 'Mutlu Doğum Günü' 'tuvaletten chiming duyduğunuzda başınız belada demektir! (Ve çok düşük güçte oldukları için sonsuza dek zili çalıyorlar ;-)) Burada bir LED kurulumu gösterdim, ama siz anlıyorsunuz ...

iyi ki doğdun


Lütfen bu öğeyi Arduino kartına nasıl bağlayacağınızı söylemek için sorunuzu düzenleyebilir misiniz? Teşekkürler!
Anonim Penguen

3

Arduino için problemini çözebilecek bir yansıma takometre kurdum. Temel devre oldukça basittir:

takometre devresi

Kırmızı ışıkta iyi cevap veren bir fotoransistörüm vardı ve bir diğeri de Radio Shack'tenBu eski TV uzaktan LED'lerinin IR çıkışına oldukça hassastır. Amacınız için, yeşil kablo Arduino'nun Analog Pim 0'ına bağlanacaktı ve kesme tahrikli bir çizim yapmamak için sadece periyodik olarak numune almanız gerekiyor. Beyaz kağıt ve gri rulo arasında yansıtılan bir sinyal farkını elde etmenin püf noktası, bir photransistörün ışık hassasiyetinin GND'ye karşı artan direnci arttırdığını bilmesidir, ancak karanlık voltaj da artar. AtoD değerlerini dedektörden birkaç inç uzaklıktaki karanlık ve aydınlık nesnelerden kontrol ederek 5 ve 3 megohm değerine çarparak geldim. Gri vs beyazı algılamak için de aynı işlem uygulanmalıdır. Oldukça farklı görünen bazı şeyler IR'de aynı yansımaya sahip olsa da. İşte bitmiş kırmızı ışıklı takometrenin bir resmi: görüntü tanımını buraya girin

Sensör kartını kağıt dağıtıcınızın arkasına sığacak kadar küçük yapmak basit olmalıdır. IR versiyonu daha küçük, ancak bugün bir fotoğrafını çekmek için ev yapımı santrifüjde çok derine gömüldü.


3

Bence başka bir nezih ve ucuz seçenek kullanmak, telefondakiler gibi bir yakınlık sensörü veya sabit alanlı kızılötesi sensördür. Bu sensörler oldukça hassastır ve sensörü tutacağa veya tuvalet rulosunun yerleştirildiği duvara monte ederek tuvalet rulosunun arkasına "bakmak" için kolayca kullanılabilir. Yayında gördüğüm diğer tüm fikirler ya oldukça yanlıştı ya da uzun vadede kirlenme sağlayabileceğimi düşündüğüm tuvalet rulosuna müdahalesiz hissettim. Bir yakınlık sensörü sadece oldukça ucuz ve kullanımı kolay değildir, eğer iyi ayarlanmışsa, çok iyi bir doğruluk ve güvenilirlik sağlayabilir. Bu model zaten erkek pisuarlarında otomatik olarak yıkamaya yönelik geniş kullanımda. Örneğin, telefonunuzda: Telefonunuz, eliniz veya yüzünüz ekrana yakın olduğunda, doğru bir şekilde 2.0 inç veya sonsuz mesafe sağlayacaktır.


10 $ için bu adafruit.com/products/466 1cm-15cm aralığını (TP rulo için mükemmel) ve bir mikrodenetleyici ile kolayca entegre olacak şekilde alabilirsiniz.
Jason C

@Jason C: İlk deneme VCNL4000 kullanıyordu, ancak diğer raporlarda olduğu gibi okumalar sırasında durur / durur / donardı. MA'yı düşürürken bile kimsenin bunu çözdüğünü görmedim.
Jose Leon

@Aditya HC-SR04 yakınlık sensörünü kullanmak yardımcı olmadı. Tam bir TP rulosu ile boş olan arasında fark yoktu. Tahmin edebileceğim en iyi şey 'eko' düz dokudan gidiyordu ve TP'yi tutan metal barda durdu. Yani, en azından bu sensör için, işe yaramadı.
Jose Leon

@JoseLeon görüyorum. Bu gerçekten çok garip. Sebepine katılıyorum. Belki orada işe yarayabilecek başka bir sensör var ama kızılötesi dalgaların tuvalet kağıdına girmesi gerekçesinin geçerli göründüğünü düşünüyorum.
Aditya Somani,

2

Kısa menzilli bir ultrason mesafe sensörü etkili (ve oldukça ucuz) bir seçenek olabilir. Bir çip üzerine monte edilmiş bir verici + sensör kombinasyonu elde edebilirsiniz. Farklı sensörler farklı şekillerde çalışabilir (her zaman veri sayfasını kontrol edin). Yaygın bir çıkış, algılanan mesafeyi belirtmek için darbenin uzunluğunu kullanır. pulseIn()Fonksiyonu kullanarak Arduino'da bunu işleyebilirsiniz .

Kurulum açısından, büyük olasılıkla, makarayı ortasına gelecek şekilde doğrudan tuvalet kağıdının arkasına sığdırırsınız. Okumalar genellikle oldukça değişkendir, bu nedenle birkaç ölçüm almak ve bunları ortalamalandırmak (veya basit bir hareketli ortalama kullanmak) istersiniz. Bir miktar kalibrasyonla, hangi mesafenin boş bir makarayı temsil ettiğini belirleyebilirsiniz.

Bu mesafeyi önemli bir süre (örneğin bir dakika veya daha fazla) tekrar tekrar tespit ettiğinizde, alarmı çalarsınız.

Yansıtmaya dayalı bir sensör başka bir olasılık olabilir, ancak tuvalet kağıdında düzgün çalışacak birini bulmakta zorluk çekip çekmeyeceğinizi merak ediyorum (tercih ettiğiniz markanın ne kadar yumuşak olduğuna bağlı olarak!).


Bir ultrason sensörüyle yeterince hassasiyet alacağınızdan emin değilim; IIRC, çoğu yaklaşık 3-4 mm hassasiyete sahiptir; Genel olarak bu yeterli, ancak bir tuvalet kağıdı rulosunun çapını göz önüne alarak bu çok yanlış olabilir.
jfpoilpret

Evet, bireysel okuma için bu genellikle doğrudur. Dalgalanmalar yine de tekdüzedir, bu yüzden onu önlemek için arka arkaya birkaç okuma yapabilirsiniz. Bu potansiyel olarak size ~ 1mm hassasiyet verebilir.
Peter Bloomfield

Tuvalet kağıdı sensörden uzaklaşırken bir miktar kağıdın kalması durumunda bir mm kıpırdarsa ne olur?
Anonim Penguin

1
@AnonomusPerson Hareket olduğunda her zaman sahte okumalar alırsınız. Bu nedenle, üzerinde işlem yapmadan önce okumaların uzun bir süre boyunca sabit kalmasını bekleyin.
Peter Bloomfield

@Peter R: HC-SR04 yaklaşım sensörünü kullanmak yardımcı olmadı. Tam bir TP rulosu ile boş olan arasında fark yoktu. Tahmin edebileceğim en iyi şey 'eko' düz dokudan gidiyordu ve TP'yi tutan metal barda durdu. Yani, en azından bu sensör için, işe yaramadı.
Jose Leon

2

Akla gelen bir fikir, böyle bir şey olurdu:

  • Kağıt rulosunun içine küçük bir mıknatıs yapıştırın, yani karton parçanın içine (bu her değiştirdiğinizde yapılmalıdır;)
  • her zaman kağıt rulosuyla temas halinde olacak şekilde bir yay ile monte edilmiş bir çubuğun ucunda bir kamış kontağı (elektro-manyetik anahtar) kullanın
  • Kamış kontağının bir pimi doğrudan bir giriş mantıksal pimine bağlanabilir (bir çekme direnci girişi olarak ayarlayın)
  • Kamış kontağının diğer pimi toprağa bağlanmalıdır.

Böylece, mıknatıs ile saz kontağı arasındaki mesafe bir sınır altında kaldığı sürece, anahtar devreyi kapatır. Kağıt rulosu çekilirken bu mesafe azalır.

Kamış teması yerine, ayrıca bir Hall Efekt sensörü kullanabileceğinizi unutmayın, prensipler aynı kalır, sadece teknoloji ve özellikler değişir.

Buradaki zorluk, reed kontağının (veya mıknatısın kuvvetinin) doğru hassasiyetini bulmak olacaktır; böylece reed kontağı ile mıknatıs arasındaki mesafe çok kısa sürede devreye girecek bir alarmı önlemek için yeterince küçük olduğunda kapanacaktır. ).


Bu işe yaramaz, ultrasonik sensörle aynı sebepten dolayı. Hala üzerinde en az 10 fit olacak şekilde sönecektir . Renk sensörü daha iyi bir fikirdir.
Anonim Penguin

Ultrasonik sensör ile ilişkiyi görmüyorum. Neden işe yaramayacağını daha fazla geliştirebilir misiniz? Farklı mıknatıs çeşitlerinden bağımsız olarak, büyük miktarlarda kamış teması ve salon efekt sensörü vardır.
jfpoilpret

Bir TP tabakası o kadar incedir ki, biraz sola aktive olur. Teorik olarak ince ayar yapılabilir, ancak mikroskobu çıkarmak ya da bir rulo tuvalet kağıdını değiştirmek için ne olursa olsun verimsizdir.
Anonim Penguin

Biraz sola hareket etmek o kadar da kötü değil çünkü OP sorusu “... tuvalet kağıdı düşük ”; Düşük mutlaka mutlaka boş anlamına gelmez.
jfpoilpret

2

En basit ancak en iyi çözüm, bir IR LED ve bir opto-transistörden yapılmış bir optocoupler kullanmak olacaktır. LED'in ruloya doğru aydınlanmasını sağlarsınız; LED, rulonun içindedir ve "tutamağa" bağlıdır. Karton rulosunu çıkardıktan sonra, opto-transistör IR ışığını LED'den alır ve Arduino'da bir pim değişim kesintisini tetikler ve bu sizi birçok yönden uyarabilir (ışık, SMS, twitter, alarm…).

Bu tasarım gerçekten ucuz, kolay ve yapımı hızlı. Yapmanız gereken tek şey hala var olsa: artık tuvalet kağıdı varken, aslında karton rulo olması gerekir kaldırıldı ;-)

Aksi takdirde, yedek rulolar için aynı çözüm daha iyi bir fikir olabilir :-)


Optocouplers, hem verici hem de alıcıyı içeren tekli fişler değil midir? Buraya bakın: en.wikipedia.org/wiki/Opto-isolator
jfpoilpret

[…] Işık kullanarak elektriksel sinyalleri iki yalıtılmış devre arasında aktaran bir bileşendir […] bu yüzden temelde yaptığımız şey, bir IR LED (bir devre) ve bir fototransistör arasındadır. Haklı olsan da, tek bir bileşen değil (MOC3020 gibi).
zmo

2

Buradaki seçeneklerin birçoğu karmaşık ve müdahaleci görünüyor.

Renk sensörü

Uygulamak, ancak müdahalesiz ve kurulumu kolay, biraz karmaşık (ama eğlenceli) bir diğer seçenek, ucuz bir renk sensörü oluşturmak ve bunu rulonun arkasındaki duvara monte etmektir. Rulonun rengini (veya TP renginin yokluğunu) algıladığınızda, düşüktür.

Ayrıca 8 $ için bir tane satın alabilirsiniz .

TP'nin inceliğinden ve yalnızca birkaç sayfa kaldığında biraz daha koyu görünmeye başlamasından yararlanarak eşiği ayarlayabilirsiniz.

Gerekirse, banyo lambaları açıkken yeni bir rulo takıldıktan sonra bir düğmeye basarak kalibrasyon yapılabilir.

Banyonuzun özelliklerine bağlı olarak birkaç ayar yapmanız gerekecektir. Ekstra bir karmaşıklık eklerseniz ve banyo ışık anahtarına bağlı bir AC prizinden çekerseniz, yalnızca banyo ışıkları açıkken açabilirsiniz, bu da pek çok güvenilmez veriyi filtreleyecektir.

Bu, montajı çok kolaydır ve rulonun kendisinde değişiklik yapmayı gerektirmez. Sensörü duvara çift taraflı bant ile yapıştırabilir veya rulo yukarı bakacak şekilde (veya yukarı bakacak şekilde) küçük bir rafa yerleştirebilirsiniz.

IR ışın sonu

Dağıtıcının bir tarafına, makaranın hemen yukarısına küçük bir IR LED monte edin. Dağıtıcının diğer tarafına bir IR fotoğraf sensörü takın. Sensör LED'i gördüğünde, rulo düşüktür. Çok ucuz bir lazerle de yapılabilir (örneğin bir tarafta kapalı bir lazer işaretçi ve diğer tarafta bir fotosensör; ancak gözlerinizi incitmeyin!)

Bu, aynı zamanda montajı kolaydır (örn. Dağıtıcıya sıcak tutkal) ve ruloların modifikasyonunu içermez, bununla birlikte sensörlerin yerleri ruloları değiştirirken zarar vermelerini kolaylaştırabilir.


Ayrıca sazlık sensörünü ve menzil sensörünü (BTW: 10 $ size kısa mesafeli bir mesafe sensörü sağlar ) seçeneklerinden gerçekten çok beğeniyorum.


1
IR ışını benim ilk düşüncemdi. Basit ve kolay uygulanabilir ve belki de daha az eğlenceli olsa da, diğer çözümlerden bazılarına göre muhtemelen daha güvenilir :)
Kevin

Hehe, katılıyorum. En azından yazılım tarafından bir renk sensörü eğlenceli olacağını düşünüyorum; veri toplamak ve örneğin doğal ışıklandırma veya diğer yanlış tetikleyicilerdeki değişimlere karşı bağışıklık kazanmış bir algoritmayı denemek ve bulmak iyi bir zorluk olacaktır.
Jason C,

1

Birkaç seçeneğiniz var:

Not: Verilen linkler sadece ilk çıkanlardır. Çoğu diğer sitelere göre daha pahalı. eBay şimdi satın al bu öğelerin çoğu için oldukça ucuz olabilir. Sparkfun dahil diğer yerleri de kontrol edin .

  • Ultrasonik Ping Sensörü . Bu hiçbir şekilde ideal değildir, ancak kullanımı kolaydır. Sadece bir muhafaza ile bir tane ekleyin. İdeal değil çünkü tam olarak ne zaman boş olduğunu söyleyecek kadar doğru olmayacak. Hassasiyet biraz / aşırı duyarlı olabilir. Eğer ağırlık kayıyor olsa da, daha da zorlaşacaktır.
  • Renk sensörü (tercih edilir, ancak maliyeti daha fazla) . Bundan bahsettiniz ve bu muhtemelen en iyi fikir. Size kırmızı, yeşil ve mavi için analog değerler (Arduino ile okumak için) verir. [Bu rengin içeriği ne kadar yüksekse, voltaj o kadar yüksek olursa,] beyazın% 100’de hemen hemen hepsinde olması gerekir ve kahverengi de çoğunun yaklaşık% 30-40 olacağını düşünürdüm. (Daha sonra, bunu anlamadıysanız, bu kısmı atlayın)

Renk sensöründe daha fazla ayrıntıya gireceğim:

Renkler burada üç değerle okunur: kırmızı, yeşil ve mavi. Tahta üzerinde üç sensör var. Biri kırmızı, başka mavi ve diğer yeşil dışındaki her şeyi filtreler. Kart üzerindeki sensörler gelen ışık miktarını algılar ve daha sonra bunu 5V ("% 100 kırmızı / yeşil / mavi") veya 0V ("% 0 kırmızı / yeşil / mavi") arasında bir voltaja dönüştürür. Bu daha sonra Arduino tarafından bir sayıya dönüştürülebilir (analog pin üzerinde 0-1024).

Aydınlatmayla ilgili bir sorun: Bu sensörün anlatabileceğim şeyden önce sürekli yanan bir LED'i var. Aydınlatılmış bir tuvalet kağıdı tutucusu istemediğiniz sürece, bunu sökmek veya örtmek isteyeceksiniz. Şimdi bekle ... sensörün karanlık olduğunda kahverengi olduğunu düşünecek. Sorun değil ... işte aklınıza gelebilecek bir şey.

Kullandığım gibi bir renk toplayıcı kullanın ve bir kahverengi seçin . Bunun solunda, "benzetilmiş parlaklığı" kontrol edebilirsiniz. Bunun yanında RGB'nin onaltılık şeklidir. Bu hesaplayıcı ile bunu standart değerlere dönüştürmek isteyeceksiniz .

Kahverengi renkte mavi renk neredeyse yoktur. Kahvenin kahverengi olduğunu kontrol etmenin bir yolu olmadıkça, bu rengi yoksaymalıyız. Hemen hemen her% 40'ın altında olması gerektiğini söyleyebilirim.

Kahverengi bir örnek tonuyla söyleyebileceklerime göre kırmızı, yeşilin 2 katıdır. Bu oran değişebilir, ancak bir şekilde var olduğunu doğrulamalısınız . Beyaz / gri / siyah için, tüm renkler 1: 1: 1 ile orantılıdır. Karanlık mı yoksa kahverengi mi olduğunu tespit etmek için bunu kullanabilirsiniz.

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
}

İlk olarak, mavinin% 25'ten az olduğunu doğrular. Sonra, kırmızı ve yeşilin eşit olduğunu doğrular ...% 20 verir ya da alır. (yani, kırmızı = 100 yeşil = 80, kırmızı = 110 yeşil = 90 vb.). Bu doğruysa, kahverengi olduğunu hemen hemen belirleyebilirsiniz. Ardından, bir LED beş saniye boyunca yanar.

İsterseniz LED'i zil sesi olarak değiştirebilirsiniz. Çok fazla ışıkta çalışmıyorsa veya karanlık ışıkta çalışıyorsa, mavinin 256/1024'ten (1024 = analog pimin çözünürlüğü) daha az olduğunu doğrulayarak if ifadesini ayarlamanız gerekebilir. Kod daha sonra kırmızının yeşilin yaklaşık 2 katı olduğunu doğruladığından, beyaz renkteki herhangi bir ifade ifadeyi geçmemelidir. Ayrıca ayarlamak gerekebilir minRedve maxRed(kahverengi tespit değilse) veya daha yakın (beyaz olduğunda ise kahverengi tespit) öteye olmak. Renk kodu olmadan bu kodu gerçekten test edemiyorum.


Not: Bunlar biraz karışıklık olabilir. Bunun yerine bir LED öneriyorum, bu yüzden bütün ev gecenin ortasında sadece tuvalet kağıdı yüzünden uyanmıyor. Ayrıca, sensörü hiçbir şekilde engellemezseniz ... Banyoda olmasaydı, bir kamera öneriyorum ve her seferinde @ jfpolipret'in cevabı gibi bir kamış anahtarıyla çok alçaltırken ... ... (amaçlanan hiçbir punto) :)


Tuvalet kağıdınızın rengini değiştirirseniz, renk sensörü de aynı şekilde çalışacak mı (yani çizimi ayarlamanız gerekmez).
jfpoilpret

@jfpoilpret Tuvalet kağıdınızı yeniden kullanır mısınız, yoksa bilmiyorum ama ... :) Mekanizmaları içeren bir kod ekliyorum, böylece "benzer" olacak ama kesin olmayacak.
Anonim Penguen

Tuvalet kağıdının ultrasonik patlamayı ultrasonik bir sensörden emecek kadar yumuşak olduğunu düşünüyorum
TheDoctor

@Doktor Belirttiğim gibi gerçekten iyi bir fikir değil. Hatalı olmanın yolu.
Anonim Penguin

1
@jfpoilpret Yeni bir rulo taktıktan sonra bir "kalibre" düğmesi ekleyip banyo ışıklarıyla bastırdıysanız, doğru rengi ölçebilirsiniz.
Jason C

1

Harika bir proje gibi geliyor, işte benim 2 ct:

Rulonun yanlarından fotoğrafını çekmek için bir kamerayı işaret edin, bu muhtemelen ne kadar kağıt kaldığını bulmanın tek yoludur. (düzenleme: csi kamera ile bir ahududu pi kullanabilir ve yaprak sayısına karşılık gelen bir çıkış sinyali oluşturabilir ve bu sinyali arduino'ya besleyebilir ?!)

Bir tahminde, rulonun dönüşlerini saymak da yeterli olabilir, ancak rulonun daha iyi karıştırılması ve böylece kaymaması gerekir. Ya da bisikletlerde yaptığınız gibi mıknatısları kullanabilirsiniz, ancak o zaman doğrudan ruloya takılması gerekir.

(düzenleme: bir fikir daha, kapağın açısını ölçerek rulonun kalınlığını ölçün)


Arduino Stack Exchange'e merhaba ve hoş geldiniz! Lütfen bir Arduino’ya nasıl bağladığınızı söyleyebilir misiniz? Teşekkürler! Ayrıca, bir tuvalete kamera koymak ne kadar iyi bir fikir olduğunu bilmiyorum. :)
Adsız Penguen

Son düzenlenen fikrini beğendim; kapak üzerinde belli bir açıya ulaştığında devreyi kapatan sadece bir anahtar kullanılarak basitleştirilebilir; açıyı ölçmekten daha kolay gözüküyor.
jfpoilpret

1

En iyi seçeneğiniz, rulonun yanına bir döner kodlayıcı bağlamak ve ne kadar kullanıldığını belirlemek için rulonun dönüşlerini saymaktır. Rulo başına dönüş sayısını öğrendikten sonra, bildiriminizin nereye ateşlenmesini istediğinizi ayarlayabilirsiniz. Bir günlük sistemine ekleyin, tuvalet kullanımının yanı sıra kağıt kullanım geçmiş verileriniz olur.


Katılıyorum. İnsanlar bunu çok karmaşık hale getiriyor gibi görünüyor. Ayrıca, yeniden doldurduğunuzda TP'yi yeni bir silindirden sensör silindirine aktararak (örneğin birkaç ucuz dübel çubuğuna ruloları koyun ve sarın) aynı ruloyu, eklenmiş kodlayıcı ile tekrar kullanmaya devam edebilirsiniz; Bu aynı zamanda, o rulo için kaç tane dönüş olduğunu saymanıza izin verir (doldurduğunuzda).
Jason C

1

Bir ağırlık algılayıcı alıyorum ve bunu rulonun ağırlığı için programlıyorum. Belli bir ağırlığın altına düştüğünde, bir LED'i yanıp sönmeye başlayın veya bir bip sesi çıkarın.


0

Bunu yapmak için başka bir yol, eğlenmek istemeniz durumunda, rulonun içine metal bir çubuk ve dışarıdan metal bir plaka koymak ve TP nedeniyle değişmesi gereken kapasiteyi ölçmek olacaktır. kağıdın dielektrik sabiti.

Ama bu kesin "manzara rotasını" izliyor olacaktı. Yine de, Arduino kapasitansı oldukça kolay bir şekilde ölçebilir ve yeterince hassas bile olabilir ve yolun dışında kalacaktır çünkü yalnızca rulonun arkasındaki metal bir plaka ve rulonun içindeki metal bir çubuk olacaktır. Farkında olmadan mevcut bir tutucuya güçlendirme bile yapabilirsiniz.

Daha kolay bir yol, rulonun tepesinde tutulan bir potansiyometrenin miline tutturulmuş bir çubuk olacaktır. Daha az TP, mil alçalır ve kazanı döndürür. Kaldıraç için uzun bir şaft gerekebilir, çünkü tuvalet kağıdı çekme işlevini engellemeden çok fazla baskı yapamazsınız.

AJMansfield'in önerdiği gibi, Radyoaktivite aslında endüstriyel ortamlardaki şeylerin kalınlığını ölçmek için kullanılır. Gerçekten çıldırmak istemeniz durumunda, arka plan seviyelerinin üzerinde küçük bir miktar olan ve son derece uzun zamanlar boyunca ortalamanın üzerinde tuhaf bir tat alma tuzunun bir konservesi gibi son derece düşük enerjili bir radyoaktif kaynak kullanabilirsiniz (tuvalet kağıdı saatten fazla değişmemelidir). saat)), bu yüzden eğer şeyler yapmak için pahalı bir yol eğer bu makul olabilir.

Kızılötesi ışın kırılma sensörleri de iyidir ve onu doğru yerleştirirseniz, daha fazla ışığı engellemesini sağlayabiliyorsanız, rulo yalnızca size ve açık veya kapalı sinyal vermek yerine doluydu.

EDIT: Kapasitatif yaklaşım kavramının çalışma kanıtı. Sadece bir arduino ve 2 sert tel gerekir. Çok fazla gürültü ile yaklaşık bir inç 8'de kesin. En az 1 inç hassasiyetle güvenilir bir şekilde yapabileceğinize eminim. Ölçüm süresi yaklaşık bir dakikadır. Çevreye karşı gerçekten hassas. Bir ayaktaki metal bir şeyin bulunduğu yerde kaldığından emin olmalısınız veya ekranlama kullanın.

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


Harici bir bağlantı yerine cevabınıza kod eklemek daha iyidir. Bağlantı gelecekte koparsa, cevabınız yine de geçerli olacaktır.
sachleen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.