¿Cómo activar una alarma cuando el papel higiénico es bajo?

47

Cualquier persona con niños sabe que nunca ayuda con el papel higiénico. ¿Alguien sabe cómo rastrear cuando está bajo o apagado y hacer sonar una alarma audible? Simplemente no sé qué sensor usar que pueda ayudar.

Algunos de los que me vinieron a la mente son: por peso, por reflejo (el color del papel) o algún cable de láser, todo en el carrete. No me importa construirlo, es solo que no sé qué sensor. Alguien sabe cuál usar?

Jose Leon
fuente
55
Quizás también debería pensar en instalar un sensor en el asiento del inodoro, para que suene la alarma si alguien se sienta cuando no hay papel. :)
Peter Bloomfield
Tal vez uno podría tratar de medir la resistencia radial de un rollo (con suerte, no es demasiado alto) y luego disminuirá cuando no quede suficiente papel.
jfpoilpret
Olvídate de la resistencia: solo intenté medirla pero está por encima del calibre máximo de mi multímetro (20M Ohm)
jfpoilpret
1
Bueno, lo que sigue puede ser una discusión mejor ubicada en el meta.arduino, pero creo que esta pregunta es típicamente una que engaña al punto de tener un arduino SE. No está directamente vinculado a los arduinos, ya que para cada proyecto no se debe diseñar su solución contra una herramienta, sino elegir las herramientas que sean mejores para la solución (¿y si usar un RPi es mejor o un CC2540?). De hecho, es una solución de ingeniería mecánica + electrónica + software. Y no conozco el mejor lugar SE para hacer ese tipo de preguntas.
zmo
@zmo Entonces sugeriría que el OP edite su pregunta para agregar la necesidad de activar la alarma a través de un Arduino; eso lo mejoraría para Arduino.SE
jfpoilpret

Respuestas:

47

Saque varios rollos a la vez y cuelgue uno para usar. Coloque los otros dos en un poste vertical corto al alcance de la niñera. La niñera puede tomar otro rollo cuando sea necesario.

Detecte mecánicamente la falta de peso en el estante en la parte inferior del poste. La alarma se dispara cuando se retira el último rollo. Nadie tiene que quedar atrapado.

Para detectar el peso, utilice una resistencia sensible a la fuerza como la FSR 400 (consulte la hoja de datos ). Alternativamente, puede usar un resorte helicoidal liviano para descansar el papel higiénico con un micro interruptor que se libera cuando se retiran ambos rollos. Otra opción sería un detector de rotura de haz IR donde el circuito se completa cuando se retira el último rollo.

JRobert
fuente
@AnnonomusPerson Él está hablando de medir el peso de varios rollos completos de papel higiénico, no de hojas individuales o rollos vacíos.
AJMansfield
1
Esta es una gran idea: en lugar de tener que lidiar con la medición de la cantidad de papel que queda en el rollo, mida el número de rollos restantes para indicarle cuándo necesita obtener más rollos.
AJMansfield
¿Qué sensor usarías para detectar la falta de peso?
jfpoilpret
3
Un sensor de presión de tela es una opción, o un sensor de luz en la base que está cubierto si hay un rollo presente.
Rob Hoare
¿Podría proporcionar un ejemplo de un sensor específico que podría hacer el trabajo?
asheeshr
22

Creo que el concepto de sensor de láminas presentado por jfpoilpret y jmathew es el más fácil de lograr. He dibujado un diagrama de cómo creo que se vería.

Puede ajustar la sensibilidad ajustando la altura del contacto inferior.

Esto realmente solo lo lleva a una condición "baja" y no necesariamente fuera. A menos que desee cambiar los rollos mientras todavía queden algunas hojas, esto no me parece una solución satisfactoria. Prefiero tener un indicador de "fuera" y un timbre audible para pedir / avergonzar al usuario para que reemplace el rollo.

Este diseño podría lograrse usando electrónica independiente (no se necesita arduino). Sin embargo, si deseaba gamificar el cambio de rollo, podría usar un arduino para eso.

Tenga en cuenta también para los sensores ópticos basados ​​en color, mientras que la gran mayoría de los tubos de cartón utilizados para este propósito son marrones, también he visto los blancos en uso.

Diagrama del sensor de láminas

Arluin
fuente
66
Bonitos diagramas. ¿Qué usaste para hacerlos?
jmathew
1
Solo un comentario importante: ni siquiera necesita un contacto de lámina en esta situación, sino solo dos piezas de metal utilizadas como un simple interruptor. Un contacto de lámina se basa en fuerzas magnéticas que abren o cierran un interruptor; eso era necesario en mi respuesta donde no había contacto real entre ambas partes. Pero aquí, usar una caña parece inútil, creo.
jfpoilpret
@jfpoilpret No sabía que el término era un tipo específico de cambio. Estaba pensando en el concepto más general de un material rígido y flexible. ¡Gracias por la aclaración!
jmathew
@jmathew no hay problema, después de todo, ¡todos estamos aquí para compartir conocimientos!
jfpoilpret
2
Usé
14

Creo que vi esto en la serie 1 episodio 2 de James May's Manlab.

Similar a jfpoilpret, use una pieza ancha de material en un resorte que haga contacto con el rollo en todo momento. Digo 'ancho' para que cuando el rollo esté vacío, la caña toque con un contacto en uno de los soportes del rollo en el lateral. Cuando toca, completa un circuito a su alarma.

Aquí hay una imagen cruda que describe lo que quiero decir.

En la respuesta de Arluin se mencionó que este método no mostraría que el rollo estaba vacío. Eso es bastante cierto. Si el contacto superior es tan grueso como el rollo de cartón TP y el contacto inferior se coloca dentro de la parte interna del rollo de cartón, debe acercarse lo suficiente para fines prácticos. Un pie de rollo de TP no es suficiente después de la noche de tacos.

Contempla la imagen de mi imaginación

jmathew
fuente
9

Use un detector de radiación para detectar la cantidad de papel que queda en el rollo. Coloque una cierta cantidad de material radiactivo en el medio de la varilla del carrete y coloque el detector de radiación en otro lugar (puede montarlo en el otro lado de la superficie en la que está montado el soporte del rollo, si lo desea; los sensores de radiación son extremadamente flexibles) y mida las cantidades de radiación para determinar cuánto papel queda en el rollo.

Alternativamente, podría tener un dispensador de papel higiénico controlado electrónicamente (botón para dispensar una longitud preprogramada de papel higiénico) y hacer que el arduino simplemente haga un seguimiento de cuánto se ha dispensado.

O conecte un codificador rotatorio al lado de la barra del carrete (asegúrese de que encaje sin deslizarse dentro del rollo) y cuente las rotaciones del rollo para determinar cuánto se ha usado.

Por supuesto, con cualquiera de estos métodos, tendrá que hacer pruebas y recopilar datos según el tipo / marca / material / etc. exacto de papel higiénico.

Especialmente para la segunda y tercera ideas, recomendaría tomar datos del sistema con regularidad, para realizar un seguimiento de la longitud típica de un rollo para que pueda ajustar el programa para cualquier variación significativa. Incluso dentro de un tipo de papel higiénico, me imagino que habría alguna variación en la longitud del rollo.

Para divertirse aún más, puede instrumentar el detector para recopilar datos de series temporales, para luego cargarlo en una computadora y hacer un gráfico de "uso del papel higiénico a lo largo del tiempo" o algo así.

AJMansfield
fuente
2
Soy un gran fanático del uso de un codificador rotatorio. Incluso podría diseñarse si el soporte TP tenía el codificador conectado a la varilla a través del rollo, lo que no causa movimiento en el codificador. También se podría usar un botón para restablecer el conteo.
Steven10172
1
Pero un problema común sería determinar el número máximo de rotaciones, ya que esto depende del número de hojas y su grosor.
jfpoilpret
Cambiaría esto de 'Conectar dispositivo de radiación al rollo de papel higiénico' para conectarlo al rodillo central en el que se asienta. El mismo efecto, pero menos mantenimiento de tener que volver a colocar el sensor para cada lanzamiento
Robotnik
1
Puede determinar el número de rotaciones transfiriendo todo el TP de un nuevo rollo al carrete en su rollo medido y contando las rotaciones con el codificador (con una simple cosa DYI como un par de tacos verticales y simplemente envolver uno sobre el otro) . Luego, cuando esté vacío, repita. Hace que todo sea fácil de usar también porque puedes seguir reutilizando tu mismo carrete al que ya has conectado el codificador y seguir envolviendo un nuevo TP en él.
Jason C
1
@AJMansfield Me pregunto si algunos círculos cortados de cartón a los lados del rollo receptor (y algo de cuidado) darían resultados satisfactorios; Si los rollos están en varillas de espiga para transferir, simplemente puede hacer un agujero en el centro de los discos y deslizarlos. En el lado positivo, si siempre compra la misma marca de TP, solo tendría que hacerlo una vez (y puede tener a mano una lista de la cantidad de giros para las diferentes marcas / tipos que descubre, podría ser el orgulloso mantenedor de la primera base de datos de conteo de giros de TP de código abierto del mundo).
Jason C
7

Creo que 'Arluin' y 'jmathew' tienen la idea correcta. Use una palanca apoyada en la parte superior del rollo.

Sin embargo, lo haría un poco diferente. En lugar de confiar en que los contactos se cierren, puede usar un potenciómetro. Con este sistema, puede medir la cantidad restante en lugar de simplemente recibir una notificación cuando baja.

Con un contacto como los sugeridos anteriormente, es posible que el papel se atasque en el contacto al cerrarse y luego no se detecte un nivel bajo de papel.

(Es posible que necesite un peso, que se muestra en azul en el diagrama, para empujar la palanca hacia abajo mientras se usa el rollo)

Debería intentar acercar el bote al rollo lo más posible para obtener el máximo balanceo del bote y, por lo tanto, la resolución máxima de la cantidad restante.

Otra cosa que puede desear es algún tipo de rodillo en el extremo de la palanca para que el rollo de papel se pueda mover fácilmente con un pequeño arrastre donde la palanca hace contacto con el papel.

Configuración propuesta

DanJAB
fuente
4

Podrías abrir una de esas tarjetas de cumpleaños y adaptar el interruptor al brazo del soporte. Una vez que escuchas el "Feliz cumpleaños" sonando desde el inodoro, sabes que estás en problemas. ...

feliz cumpleaños

Arena
fuente
¿Puedes editar tu pregunta para saber cómo conectar ese elemento a una placa Arduino? ¡Gracias!
Anonymous Penguin
3

Construí un tacómetro de reflectancia para un Arduino que probablemente resolvería tu problema. El circuito básico es bastante simple:

circuito de tacómetro

Tenía un fotoransistor por ahí que respondía bien a la luz roja, y otro de Radio Shackeso era bastante sensible a la salida IR de los antiguos LED remotos de TV. Para sus propósitos, el cable verde se conectaría al pin analógico 0 de Arduino, y solo tiene que muestrear periódicamente, no configurar un boceto controlado por interrupción. El truco para obtener una diferencia de señal reflejada entre el papel blanco y el rollo gris es saber que la sensibilidad a la luz de un fotransistor aumenta a medida que aumenta la resistencia a GND, pero el voltaje oscuro también aumenta. Obtuve los valores de 5 y 3 megaohmios de forma empírica, marcando los valores de AtoD en objetos oscuros y claros a una distancia de unas pocas pulgadas del detector. El mismo procedimiento debería funcionar para su detección de gris vs blanco. Aunque algunas cosas que se ven bastante diferentes visiblemente tienen la misma reflectancia en IR. Aquí hay una foto del tacómetro de luz roja terminado: ingrese la descripción de la imagen aquí

Debe ser simple hacer que la placa del sensor sea lo suficientemente pequeña como para caber en la parte posterior de su dispensador de papel. La versión IR es aún más pequeña, pero está enterrada demasiado profundamente en una centrífuga de fabricación casera como para tener una foto hoy.

Extraño caminante
fuente
3

Creo que otra opción decente y barata de usar es un sensor de proximidad como los del teléfono o un sensor infrarrojo de campo fijo. Estos sensores son bastante precisos y se pueden usar fácilmente para "mirar" la parte posterior del rollo de papel higiénico montando el sensor en el soporte o en la pared donde se coloca el papel higiénico. Todas las otras ideas que vi en la publicación eran bastante inexactas o se sentían intrusivas hacia el papel higiénico, lo que a la larga creo que puede proporcionar contaminación. Un sensor de proximidad no solo es bastante económico y fácil de usar, si está bien calibrado, puede permitir una muy buena precisión y fiabilidad. Este modelo ya se usa ampliamente en los urinarios de los hombres para enjuagarse automáticamente. Por ejemplo, en su teléfono: su teléfono proporcionará con precisión una distancia de 2.0 pulgadas o infinito cuando su mano o su cara estén cerca de la pantalla.

Aditya Somani
fuente
Por $ 10 puede obtener este rango adafruit.com/products/466 de 1 cm a 15 cm (perfecto para rollo TP) y diseñado para integrarse fácilmente con un microcontrolador.
Jason C
@Jason C: El primer intento fue usar VCNL4000, pero como otros informes, se detendría / detendría / congelaría mientras tomaba lecturas. No he visto a nadie resolver esto, incluso al bajar el mA.
Jose Leon
@Aditya El uso del sensor de proximidad HC-SR04 no ayudó. No hubo diferencia entre un rollo completo de TP y uno vacío. Lo mejor que puedo adivinar es que el 'eco' iba directamente a través del tejido y se detenía en la barra de metal que sostenía el TP. Entonces, al menos para ese sensor, no funcionó.
Jose Leon
@JoseLeon Ya veo. Eso es bastante extraño de hecho. Estoy de acuerdo con tu razonamiento. Tal vez hay otro sensor que podría funcionar, pero creo que su razonamiento de que las ondas infrarrojas deberían pasar por el papel higiénico parece válido.
Aditya Somani
2

Un sensor de distancia de ultrasonido de corto alcance podría ser una opción efectiva (y bastante barata). Puede obtener una combinación de emisor + sensor montada en un chip. Los diferentes sensores pueden funcionar de diferentes maneras (siempre consulte la hoja de datos). Sin embargo, una salida común usa la longitud de un pulso para indicar la distancia detectada. Podrías procesar eso en Arduino usando la pulseIn()función.

En términos de instalación, probablemente lo colocarías directamente detrás del papel higiénico, apuntando al centro del carrete. Las lecturas suelen ser bastante erráticas, por lo que debe tomar varias medidas y promediarlas (o usar un promedio móvil simple). Con un poco de calibración, puede determinar qué distancia representa un carrete vacío.

Cuando detecta esa distancia repetidamente durante un período significativo (por ejemplo, un minuto o más), suena la alarma.

Un sensor basado en reflectancia podría ser otra posibilidad, aunque me pregunto si podría tener dificultades para encontrar uno que funcione correctamente en el papel higiénico (¡dependiendo de qué tan suave sea su marca preferida!).

Peter Bloomfield
fuente
No estoy seguro de que obtenga suficiente precisión con un sensor de ultrasonido; IIRC, la mayoría de ellos tienen una precisión de aproximadamente 3-4 mm; en general es lo suficientemente bueno, pero teniendo en cuenta el diámetro de un rollo de papel higiénico, puede ser demasiado impreciso.
jfpoilpret
Sí, eso suele ser cierto para una lectura individual. Sin embargo, las fluctuaciones son bastante uniformes, por lo que puede promediar varias lecturas consecutivas para contrarrestarlo. Potencialmente, puede darle una precisión de ~ 1 mm.
Peter Bloomfield
¿Qué sucede cuando el papel higiénico se mueve un mm mientras gira lejos del sensor con un poco de papel restante?
Anonymous Penguin
1
@AnnonomusPerson Siempre obtendrás lecturas espurias cuando haya movimiento. Es por eso que espera hasta que la lectura sea constante durante un período significativo antes de actuar en consecuencia.
Peter Bloomfield
@ Peter R: El uso del sensor de proximidad HC-SR04 no ayudó. No hubo diferencia entre un rollo completo de TP y uno vacío. Lo mejor que puedo adivinar es que el 'eco' iba directamente a través del tejido y se detenía en la barra de metal que sostenía el TP. Entonces, al menos para ese sensor, no funcionó.
Jose Leon
2

Una idea que se me ocurre sería algo así:

  • pegue un pequeño imán dentro del rollo de papel, es decir, dentro de la parte de cartón (esto debe hacerse cada vez que lo cambie; sin embargo)
  • use un contacto de lámina (interruptor electromagnético) en la punta de un palo montado con un resorte para estar siempre en contacto con el rollo de papel
  • Un pin del contacto Reed puede conectarse directamente a un pin lógico de entrada (configúrelo como una entrada de resistencia pullup)
  • el otro pin del contacto de láminas se debe conectar a tierra

Por lo tanto, tan pronto como la distancia entre el imán y el contacto de láminas esté por debajo de algún límite, el interruptor cerrará el circuito. Esa distancia disminuirá mientras se estira el rollo de papel.

Tenga en cuenta que, en lugar de un contacto de lámina, también puede usar un sensor de efecto Hall, los principios siguen siendo los mismos, solo cambian la tecnología y las características.

La dificultad aquí será encontrar la sensibilidad correcta del contacto de láminas (o la fuerza del imán) para que el contacto de láminas se cierre cuando la distancia entre este y el imán sea lo suficientemente pequeña como para evitar una alarma que se activaría demasiado pronto. )

jfpoilpret
fuente
Eso no funcionará, la misma razón que un sensor ultrasónico. Todavía se disparará con al menos 10 pies todavía en él. El sensor de color es una mejor idea.
Anonymous Penguin
No veo la relación con el sensor ultrasónico. ¿Podrías desarrollar más POR QUÉ no funcionará? Hay grandes cantidades de sensores de contacto de láminas y de efecto Hall, y mucho menos diferentes tipos de imanes.
jfpoilpret
Una capa de TP es tan delgada que podría activarse con un poco más. Teóricamente podría modificarse, pero es realmente ineficiente sacar el microscopio o lo que sea para cambiar un rollo de papel higiénico.
Anonymous Penguin
Activar con un poco de izquierda no es tan malo, ya que la pregunta OP es "... el papel higiénico es bajo "; bajo no necesariamente significa vacío.
jfpoilpret
2

La solución más simple, pero mejor, sería usar un optoacoplador hecho de un LED IR y un opto-transistor. Hace que el LED se aligere hacia el rollo, estando el LED dentro del rollo atado al "mango". Una vez que retira el rollo de cartón, el opto-transistor obtiene la luz IR del LED y activa una interrupción de cambio de pin en el Arduino, que luego puede alertarlo de muchas maneras (luz, SMS, twitter, alarma ...).

Ese diseño es realmente barato, fácil y rápido de construir. Aunque todavía hay una cosa que debes hacer: cuando no hay más papel higiénico, debes quitar el rollo de cartón ;-)

De lo contrario, el mismo tipo de solución para los rollos de repuesto es una mejor idea :-)

zmo
fuente
¿No son optoacopladores los chips individuales que incluyen tanto el emisor como el receptor? Ver aquí: en.wikipedia.org/wiki/Opto-isolator
jfpoilpret
[...] es un componente que transfiere señales eléctricas entre dos circuitos aislados mediante el uso de luz [...], así que básicamente eso es lo que hacemos, entre un LED IR (un circuito) y un fototransistor. Aunque tiene razón, no es un solo componente (como el MOC3020).
zmo
2

Muchas de las opciones aquí parecen demasiado complicadas e intrusivas.

Sensor de color

Otra opción, un poco complicada (pero divertida) de implementar, pero no intrusiva y fácil de instalar, es construir un sensor de color barato y montarlo en la pared detrás del rollo. Cuando detecta el color del rollo (o la ausencia del color de TP), es bajo.

También puede comprar uno por $ 8 .

Puede ajustar el umbral aprovechando la delgadez de TP y el hecho de que comienza a verse un poco más oscuro cuando solo quedan unas pocas hojas.

Si es necesario, la calibración se puede hacer presionando un botón después de instalar un nuevo rollo con las luces del baño encendidas.

Tendría que hacer algunos ajustes dependiendo de los detalles de su baño. Si agrega algo de complejidad adicional y lo apagaba de un tomacorriente de CA que estaba conectado al interruptor de la luz del baño, solo podía encenderlo cuando las luces del baño estaban encendidas, lo que filtraría una gran cantidad de datos poco confiables.

Esto es muy fácil de instalar y no implica modificaciones en el rollo en sí. Puede pegar el sensor a la pared con cinta adhesiva de doble cara o colocarlo en un estante pequeño debajo del rollo hacia arriba (o en la parte superior hacia abajo).

Rotura de haz IR

Monte un pequeño LED IR en un lado del dispensador, justo encima del carrete. Monte un fotosensor IR en el otro lado del dispensador. Cuando el sensor ve el LED, el rollo está bajo. También se podría hacer con un láser barato (por ejemplo, un puntero láser estándar en un lado y un fotosensor en el otro; ¡pero no se lastime los ojos!)

Esto también es fácil de instalar (p. Ej., Pegamento caliente en el dispensador) y no implica modificaciones en el rollo, aunque la ubicación de los sensores podría dañarlos fácilmente cuando reemplace los rollos.


También me gusta mucho el sensor de láminas y el sensor de alcance (BTW: $ 10 le ofrece un excelente sensor de distancia de corto alcance ) aquí.

Jason C
fuente
1
Haz IR fue mi primer pensamiento. Simple y fácil de implementar y probablemente más confiable que algunas de las otras soluciones, aunque quizás sea menos divertido :)
Kevin
Jeje, estoy de acuerdo. Creo que un sensor de color sería divertido, al menos desde el lado del software; Sería un buen desafío recopilar datos e intentar encontrar un algoritmo que fuera inmune a, por ejemplo, cambios en la iluminación natural u otros desencadenantes falsos.
Jason C
1

Tienes pocas opciones:

Nota: Los enlaces proporcionados son solo los primeros que aparecen. La mayoría de ellos son caros en comparación con otros sitios. eBay comprarlo ahora puede ser bastante barato para la mayoría de estos artículos. Compruebe también otros lugares, incluido Sparkfun .

  • Sensor ultrasónico de ping . Esto no es ideal de ninguna manera, pero son fáciles de usar. Simplemente agregue uno con un gabinete. No es ideal porque no será lo suficientemente preciso como para saber cuándo está vacío. Puede ser un poco más / menos sensible. Sin embargo, el peso sería más difícil si cambiara.
  • Sensor de color (preferible, pero cuesta más) . Mencionaste esto y esta es probablemente la mejor idea. Le dará valores analógicos (para leer con Arduino) para rojo, verde y azul. [Suponiendo que cuanto mayor sea el contenido de ese color, mayor será el voltaje,] el blanco debería ser prácticamente todo al 100% y el marrón, me imagino que la mayoría de ellos sería del 30-40%. (Más tarde, si no comprende esto, omita esta parte)

Voy a entrar en más detalles sobre el sensor de color:

Los colores se leen con tres valores aquí: rojo, verde y azul. Hay tres sensores en el tablero. Uno filtra todo excepto el rojo, otro azul y el otro verde. Los sensores en el tablero detectan la cantidad de luz entrante y luego la convierten a un voltaje: entre 5V ("100% rojo / verde / azul") o 0V ("0% rojo / verde / azul"). Esto puede ser convertido en un número por el Arduino (0-1024 en un pin analógico).

Un problema con la iluminación: este sensor, por lo que puedo decir, tiene un LED que siempre está encendido. Querrá desoldar eso o cubrirlo, a menos que desee un soporte de papel higiénico iluminado. Ahora espera ... tu sensor pensará que cuando está oscuro, es marrón. No hay problema ... aquí hay algo en lo que debes pensar.

Use un selector de color como el que estoy usando y seleccione un marrón . A la izquierda de este, puede controlar el "brillo simulado". Además de eso está la forma hexadecimal de RGB. Querrás convertir eso a valores estándar con esta calculadora .

En marrón, el color azul es casi inexistente. Deberíamos ignorar ese color, a menos que desee una forma de verificar que sea marrón. Yo diría que siempre debe ser inferior al 40% para casi cualquier tono de marrón.

Por lo que puedo decir con una muestra de tono marrón, el rojo es casi 2 veces el verde. Esa proporción puede variar, pero debe verificar que sea algo existente. Para blanco / gris / negro, todos los colores son proporcionales 1: 1: 1. Puede usar esto para detectar si está oscuro o marrón.

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
}

Primero, verifica que el azul sea inferior al 25%. Luego, verifica que el rojo y el verde son iguales ... más o menos el 20%. (es decir, rojo = 100 verde = 80, rojo = 110 verde = 90, etc.). Si eso es cierto, puedes establecer que es marrón. Luego, un LED se enciende durante cinco segundos.

Puede modificar el LED para que sea un timbre si lo desea. Es posible que tenga que ajustar la declaración if para verificar que el azul sea inferior a 256/1024 (1024 = resolución del pin analógico) si no funciona con mucha luz o funciona con luz oscura. Como el código luego verifica que el rojo es aproximadamente 2 veces el verde, cualquier tono de blanco no debería pasar esa declaración if. También es posible que tenga que ajustar minRedy maxRedpara estar más lejos (si no detecta marrón) o más cerca (si detecta marrón cuando está blanco). Realmente no puedo probar este código sin sensor de color.


Nota: estos pueden ser un poco inquietos. En su lugar, recomendaría un LED para que toda la casa no se despierte en medio de la noche solo por el bajo nivel de papel higiénico. Además, si obstruye el sensor ... Si no estuviera en el baño, recomendaría una cámara y haga que tome una foto cada vez que esté muy baja con un interruptor de láminas como la respuesta de @ jfpolipret ... pero ... (sin juego de palabras) :)

Pingüino anónimo
fuente
¿Funcionará igual el sensor de color (es decir, sin tener que ajustar el boceto) si cambia el color del papel higiénico :-)?
jfpoilpret
@jfpoilpret No sé si reutilizas el papel higiénico o no, pero ... :) Estoy agregando código con mecanismos para que sea "similar" pero no exacto.
Anonymous Penguin
Creo que el papel higiénico es lo suficientemente suave como para absorber la explosión ultrasónica de un sensor ultrasónico
TheDoctor
@TheDoctor Realmente no es una buena idea, como señalé. Es una forma de imprecisión.
Anonymous Penguin
1
@jfpoilpret Si agregó un botón "calibrar" y lo presionó con las luces del baño encendidas después de instalar un nuevo rollo, puede medir el color correcto.
Jason C
1

Suena como un proyecto genial, aquí están mis 2 ct:

Apunte una cámara para tomar fotos del rollo de lado, esa es probablemente la única forma de averiguar realmente cuánto papel queda. (editar: ¡¿Podría usar una frambuesa pi con la cámara csi y crear una señal de salida correspondiente al número de hojas y alimentar esa señal al arduino ?!)

Para una estimación, también podría ser suficiente para contar las rotaciones del rollo, pero debe fijar el rollo mejor para que no se deslice. O bien, puede usar imanes como lo hace en las bicicletas, pero deben estar unidos al rollo directamente en ese momento.

(Editar: una idea más, medir el grosor del rollo midiendo el ángulo de la tapa)

Repartidor de periódicos
fuente
Hola y bienvenido a Arduino Stack Exchange. ¿Puedes decir cómo lo conectas a un Arduino? ¡Gracias! Además, no sé qué buena idea es poner una cámara en el baño. :)
Anonymous Penguin
Me gusta tu última idea editada; podría simplificarse aún más con solo usar un interruptor en la tapa, que cerraría el circuito cuando la tapa haya alcanzado un cierto ángulo; eso parece más fácil que medir el ángulo mismo.
jfpoilpret
1

Su mejor opción es conectar un codificador rotatorio al lado del rollo y contar las rotaciones del rollo para determinar cuánto se ha utilizado. Una vez que sepa el número de rotaciones por rollo, puede establecer dónde desea que se active su notificación. Adjúntelo a un sistema de registro y tendrá datos históricos del uso del papel y del uso del inodoro.

stav
fuente
Estoy de acuerdo. La gente parece estar complicando demasiado esto. También puede seguir reutilizando el mismo rollo con el codificador conectado transfiriendo TP de un nuevo rollo al rollo del sensor cuando lo rellena (por ejemplo, coloque los rollos en un par de varillas de tacos baratos y envuélvalos); eso también le permite contar cuántas rotaciones para ese rollo (a medida que lo rellena).
Jason C
1

Digo que consigas un sensor de peso y lo programes para el peso del rollo. Cuando caiga por debajo de cierto peso, comience a parpadear un LED o emita un pitido.

I. Golsby
fuente
0

Otra forma de hacerlo, en caso de que solo quiera por diversión, sería colocar una varilla de metal dentro del rollo y una placa de metal en el exterior, y medir la capacitancia que debería cambiar con el TP restante debido al constante dieléctrica del papel.

Pero eso sería tomar la "ruta escénica" con seguridad. Aún así, el Arduino puede medir la capacitancia con bastante facilidad e incluso podría ser lo suficientemente sensible, y se mantendría fuera del camino porque solo sería una placa de metal detrás del rollo y una varilla de metal en el rollo. Incluso podría adaptar un soporte existente sin que se note.

Una forma más fácil sería un palo conectado al eje de un potenciómetro sostenido por la parte superior del rollo. Menos TP, el eje baja y gira el bote. Es posible que necesite un eje largo para aprovechar porque no puede presionar demasiado sin impedir la función de tirar del papel higiénico.

Como sugirió AJMansfield, la radioactividad en realidad se usa para medir el grosor de las cosas en entornos industriales. Si realmente quisiera volverse loco, tal vez podría usar una fuente radiactiva de energía extremadamente baja como una lata de ese sustituto de sal de sabor extraño que está un poco por encima de los niveles de fondo y promedio durante tiempos extremadamente largos (el papel higiénico no debería cambiar mucho de una hora a otra) por hora), por lo que esta podría ser una forma razonable aunque costosa de hacer las cosas.

Los sensores infrarrojos de rotura de haz también son buenos, y si lo coloca correctamente, podría bloquear más luz cuanto más lleno estuviera el rollo en lugar de simplemente darle una señal de encendido o apagado.

EDITAR: Prueba de trabajo del concepto del enfoque capacitivo. Solo necesita un arduino y 2 cables rígidos. Preciso a aproximadamente un octavo de pulgada, con mucho ruido. Bastante seguro de que podría obtener con precisión al menos 1 pulgada de precisión. El tiempo de medición es de aproximadamente un minuto. Es realmente sensible a su entorno. Tendrías que asegurarte de que todo el metal dentro de un pie permaneciera donde estaba o usar protecció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

EternidadBosque
fuente
Es mejor incluir código en su respuesta en lugar de un enlace externo. Si el enlace se rompe en el futuro, su respuesta seguirá siendo relevante.
sachleen