Arduino nano controlar un motor de aspiración dental comprobando el nivel de residuos líquido

/ *
//////////////                            DESCRIPTION                      ///////////////////////////////////////////////////////////
Esta es una aplicación para controlar un motor de aspiración dental.
El motor necesita un 24 voltios señal (a través de un relé conectado a la salida digital del arduino) para encender.
Cuando su dado vuelta en él llena un bootle con boca de líquidos forma paciente.
La botella tiene dos interruptores de nivel (sensores) para bajo y alto nivel de líquido.
Estado motor debe ser ON hasta que el líquido llegue a alto nivel. Estado motor debe estar apagado para que el líquido va a drenar (que ocurre solamente cuando el motor está apagado) y luego se enciende otra vez.
Todo esto funciona cuando consejos de vacío dentales están en manos de los médicos.
El soporte para puntas de vacío dentales tiene un interruptor para que cuando se coloca en posición el interruptor está abierto y esté en manos del dentista cerca.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
código por ALEXANDROS PAGONIDIS http://www.BiomedicalTechnology.gr ***

*/

#include < Time.h > //arduino puede leer tiempo de 50 días de inicialización y luego restablece el tiempo otra vez

tiempo largo sin firmar;
tiempo2 largo sin firmar;

números de pines *** / / /
int lowLevelPin = 2;  pin digital (2) conectado al interruptor de nivel bajo de bootle.                      Pin 1 del interruptor va al pin digital de arduino y pin 2 del interruptor va al suelo.
int highLevelPin = 3;  pin digital (3) conectado al interruptor de nivel alto de bootle.                      Pin 1 del interruptor va al pin digital de arduino y pin 2 del interruptor va al suelo.
int valveTipsPin = 4;  pin digital (4) conectado al interruptor del soporte donde se colocan puntas de vacío. Pin 1 del interruptor va al pin digital de arduino y pin 2 del interruptor va al suelo.
motorPin INT = 12;  pin digital 5V DC Relés módulo la bruja controles 24V AC singal (causa mi chino módulo es estúpido LOGIG es invertida así cuando energía apagado NO para giro en el MOTOR) de motor
int ledPin = 13;  interior led de la placa arduino

/*
ESTE LAS CONEXIONES SON PARA SILLA DE SIRONA ESPECÍFICOS CON ELECTRÓNICA CATANNI
PERNOS Y ALGUNOS DE LOS COLORES DE LOS CABLES:
1,19,12,13,14: NO CONECTADO

2, 3: 24 VCA ENTRADA DE CAJA
9,11: 24VAC OUTPUR AL MOTOR (PERNOS 3,9 SON PATILLAS DE UN RELÉ NORMALMENTE ABIERTO)

4, 5: CONSEJOS DE INTERRUPTOR (DONDE EN PIN 4 CABLES AMARILLO-MARRÓN 5 BLANCO-GRIS CABLES

6: SENSOR DE NIVEL DE BOTELLA ALTA (CABLE ROJO)
7: SENSOR DE NIVEL BAJO DE BOTELLA (CABLE BLANCO)
8: BOTELLA COMÚN, MEDIO (CABLE NEGRO)

*/

valores del estado de los swithes (alto = abierto o bajo = cerrar)
int valveTipsVal;
int lowLevelVal;
int highLevelVal;

tiempos de retardo en milisegundos *** / / /
int timeOfReadings = 200;
int problemInLowLevelSwitch = 8000;
int timeOfMotorMinON = 4000;
int timeOfMotorMaxON = 8000;
int timeOfTipOnStand = 2500;
int timeOfTipRest = 999;

Val que indica si el motor es encendido o apagado *** / / /
int motorState;        Obtiene valores de 0 ó 1

//////////////////////////////////////

void setup()
{

configurar los pines como entrada y permitir que la resistencia interna de pull-up
pinMode(lowLevelPin,INPUT_PULLUP);
pinMode(highLevelPin,INPUT_PULLUP);
pinMode(valveTipsPin,INPUT_PULLUP);

configurar los pines como salidas
pinMode (motorPin, salida);
pinMode (ledPin, salida);        interna en el chip led indicador

motorOFF();                           Cuando arudino que tips_checks motor debe estar apagado

} / / fin de la instalación
////////////////////////////////

void loop()
{

/*
digitalRead con configuración INPUT_PULLUP dice:
ALTO cuando un interruptor o botón es como una conexión abierta en el suelo.
BAJA cuando un interruptor o botón es como una conexión cerrada al suelo.
*/

valveTipsVal=digitalRead(valveTipsPin);delay(1); leer
lowLevelVal = digitalRead (lowLevelPin);delay(1); todos
highLevelVal=digitalRead(highLevelPin);delay(1); swithes

////////////////////////////////////////

TIPS_CHECK:

mientras que (valveTipsVal == LOW) //TIPS_CHECK mientras *** al vacío consejos están en mano del dentista, del stand es cerrada. *****
{
valveTipsVal=digitalRead(valveTipsPin);delay(1);
Si (valveTipsVal == HIGH)
{goto TIPS_CHECK;}     comprobar en todos los niveles del código si consejos de válvula en el soporte y sí goto TIPS_CHECK

retardo (timeOfReadings);                               tiempo de lecturas... esperar para que sensores estabilizar y calmar proccessor de muchas lecturas


LEVEL_CHECK_RUN:
{

lowLevelVal = digitalRead (lowLevelPin);delay(1);   leer
highLevelVal=digitalRead(highLevelPin);delay(1);   swithes nivel

Si (lowLevelVal == alto & & highLevelVal == HIGH) / / si el interruptor de nivel alto abierto, bajo nivel interruptor abierto
{lowLevelVal = digitalRead (lowLevelPin);delay(1);
highLevelVal=digitalRead(highLevelPin);delay(1);
motorON();
}

Si (highLevelVal == HIGH & & lowLevelVal == LOW) / / si el interruptor de nivel alto abierto, bajo nivel interruptor de cierre
{lowLevelVal = digitalRead (lowLevelPin);delay(1);
highLevelVal=digitalRead(highLevelPin);delay(1);
motorON();
}



mientras que (highLevelVal == LOW) / / LEVEL_CHECK_RUN mientras //while interruptor de nivel alto es cercano
{
highLevelVal=digitalRead(highLevelPin);delay(1);

valveTipsVal=digitalRead(valveTipsPin);delay(1);
Si (valveTipsVal == HIGH)
{goto TIPS_CHECK;}                      comprobar en todos los niveles del código si consejos de válvula en el soporte y sí goto TIPS_CHECK

motorOFF();


Si (highLevelVal == HIGH) //if!!!!!! 03!!!!!!   Necesita un if antes del tiempo así que tiempo y runonce fuera el tiempo bucle
{
runonce int = 0;         para ejecutar una vez algunos procedimientos dentro de los próximos mientras!!! 03!!!!!!
tiempo = millis();

mientras que (highLevelVal == HIGH) //while!!!!!! 03!!!!!!
{lowLevelVal = digitalRead (lowLevelPin);delay(1);   leer
highLevelVal=digitalRead(highLevelPin);delay(1);   swithes nivel

valveTipsVal=digitalRead(valveTipsPin);delay(1);
Si (valveTipsVal == HIGH)
{goto TIPS_CHECK;}                comprobar en todos los niveles del código si consejos de válvula en el soporte y sí goto TIPS_CHECK

tiempo2 = millis();
Si (tiempo2 > (tiempo + problemInLowLevelSwitch) & & lowLevelVal! = alto & & (runonce == 0)) //if interruptor de nivel bajo tiene un problema y no se apagan
{runonce ++;                                                                           con un parámetro de runonce para dejar de contar

Delay(timeOfMotorMinON);                                                             motor se volvió de un retraso y luego se encienden otra vez

motorON();


Goto LEVEL_CHECK_RUN;  necesidad de usar esto en caso de no usar la declaración de runonce
}


Si (lowLevelVal == alto & & (runonce == 0)) //if interruptor de nivel bajo se cierra
{runonce ++;

Delay(timeOfMotorMaxON);                                                              Ciencias estancia vuelta del retraso de foa y entonces encendido otra vez
así que para drenar líquidos.
motorON();

Goto LEVEL_CHECK_RUN;    no lo use pero si usas funciona bien.
}
} //end de mientras! 03!!!!!!
} //end de if! 03!!!!!!
} //end LEVEL_CHECK_RUN mientras que

} //end de LEVEL_CHECK_RUN

} / / fin de TIPS_CHECK mientras *** bajo esta línea de código pertenece al caso que consejos de soporte ***
//********************************                                                           *******

motorOFF();
Switch(motorState) / al vacío consejos están en pie, interruptor de pie está abierta para que el motor debe estar apagado.
pero si el motor se enciende entonces cuando dentista pone la punta en el stand
debe haber un retraso para que residuos líquidos dentro de tubo de vacío va a boottle y de drenaje.
{
caso 1: delay(timeOfTipOnStand);
motorOFF();
rotura;
caso 0: delay(1);
motorOFF();
rotura;
default: break;
}


Delay(timeOfTipRest);                                                            PRECAUSION en el caso de punta no encaja o Punta sale a la vez.

} //End of loop//////////////////////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////

void motorON() //turn motor encendido y motorstate 1
{//this es para el switch(motorstate)
digitalWrite (motorPin, LOW); SÍ baja (lógica invertida), causa del estúpido módulo chino
Delay(1);
motorState = 1;
digitalWrite (ledPin, HIGH);
retardo (1);

}

vacío motorOFF() //turn motor y motorstate 0
{//this es para el switch(motorstate)
digitalWrite (motorPin, HIGH);  SÍ alto (lógica invertida), causa del estúpido módulo chino
Delay(1);
motorState = 0;
digitalWrite(ledPin,LOW);
retardo (1);
}

//////////////////////////////////////////////////////

void blink() //put en código para la prueba donde estás cuando utilice swithes
{
digitalWrite (ledPin, HIGH);   el LED se pone en
Delay(200);                  espera un segundo
digitalWrite (ledPin, LOW);    fija el LED apagado
Delay(200);                  espera un segundo
digitalWrite (ledPin, HIGH);   el LED se pone en
Delay(200);                  espera un segundo

}///////////////////////////////////////







Artículos Relacionados

Barrer el motor servo con Arduino Nano

Barrer el motor servo con Arduino Nano

Hola amigos.En este instructable, he mostrado cómo barrer un servo motor con Arduino Nano.Generalmente el motor servo es utilizado donde es baja velocidad pero con un alto esfuerzo de torsión es necesaria. Este trabajo puede hacerse también por un mo
Arduino Nano y Visuino: medir la velocidad del Motor (RPM) con optoacoplador y Encoder de disco

Arduino Nano y Visuino: medir la velocidad del Motor (RPM) con optoacoplador y Encoder de disco

Al construir un coche de la robusteza, es importante controlar la velocidad de la rotación de las ruedas. Antes de que podemos controlar la velocidad sin embargo, necesitamos ser capaces de medirlo. Una de las maneras más populares y más fácil de med
Arduino Nano: Control de cepillado Motor de CC con tablero de conductor de L9110S y Visuino

Arduino Nano: Control de cepillado Motor de CC con tablero de conductor de L9110S y Visuino

Motores DC cepillado a menudo se utilizan para robots coche alrededor, o variedad de otros proyectos interesantes de Arduino. Para controlar el motor con Arduino, necesita normalmente utilizar un controlador de motor. Hay un montón de diferentes cont
Arduino Nano y Visuino: Control de Motor paso a paso con los botones

Arduino Nano y Visuino: Control de Motor paso a paso con los botones

Motores paso a paso se utilizan en proyectos de Arduino, cuando algo necesita ser movido o dado vuelta. En este Instructable, les mostraré lo fácil que es conectar el Motor de paso a paso con Arduino Nano y controlar con los botones.Tenga en cuenta q
Arduino Nano y Visuino: Control de 2 motores paso a paso con Joystick

Arduino Nano y Visuino: Control de 2 motores paso a paso con Joystick

Al generar proyectos de Arduino con motores paso a paso, como máquina CNC , plottero Arte animado, llega un momento cuando los steppers necesitan ser controlada manualmente. Análogo palancas de mando son baratos y fácil módulos para el control manual
Arduino Nano y Visuino: Control de Motor paso a paso con codificador rotatorio

Arduino Nano y Visuino: Control de Motor paso a paso con codificador rotatorio

A veces es necesario tener un Motor de pasos seguir la rotación de un Codificador rotatorio para posicionamiento preciso. Yo he estado planeando Instructable sobre este por un tiempo, pero finalmente el par de días después otra pregunta del usuario V
Cómo comprar y controlar el motor sin cepillo

Cómo comprar y controlar el motor sin cepillo

Si quieres hacer tu propio rc avión o helicóptero tienes que aprender a controlar el motor sin cepillo. Más de la voluntad de trabajo ESC (Control electrónico de velocidad) no para nosotros, pero no todos. Alguien tiene que control ESC (utilizo Ardui
Arduino Nano basado Microbot

Arduino Nano basado Microbot

este instructable fue creado para ser introducido en el desafío Robot. Si gano, la voluntad de las partes por supuesto, ir en robots como este. Notas sobre cómo incluir algunos de los componentes del mismos en los paquetes de premios se dan en el últ
Escáner 3D control board arduino nano + drv8825

Escáner 3D control board arduino nano + drv8825

Este cuadro fue construido para el escáner 3d que imprimir con mi impresora 3d.Apoya los 1 pasos y 2 equipos láserArchivos a subir pronto!Paso 1: introducciónDiseñé la tarjeta controladora después de pasar algún tiempo buscando una placa arduino con
BRICOLAJE | 3 x 3 x 3 cubo del LED para Arduino Nano +

BRICOLAJE | 3 x 3 x 3 cubo del LED para Arduino Nano +

Hi todo el mundo!Mi nombre es RGBFreak y he creado un canal en YouTube hace poco.Me encanta el bricolaje y me gusta sobre todo LED, por lo que decidí hacer mi propia 3 x 3 x 3 cubo del LED!Usted necesitará los siguientes elementos para hacer este cub
Arduino Nano: Registrar información de GPS a la tarjeta MicorSD con Visuino

Arduino Nano: Registrar información de GPS a la tarjeta MicorSD con Visuino

Las tarjetas MicroSD son soporte de almacenamiento barato y fácil, y son muy convenientes para el almacenamiento de datos del sensor de Arduino . También hay una serie de barato disponibles Módulos de tarjeta MicroSD para Arduino, y ya hice Instructa
Escáner Rgb Led Pwm lámpara controlada por Arduino Nano

Escáner Rgb Led Pwm lámpara controlada por Arduino Nano

Reciclado escáner rgb led lámpara pwm controlado por Arduino NanoPaso 1: Resultado FinalEsto es lo que obtienes si sigues este instructable.Paso 2: Buscar una impresoraBusque un hp roto todo en una impresora. (Otras marcas también pueden tener las pi
Arduino nano segway

Arduino nano segway

Hace unos días recibí un arduino nano y qué mejor manera para probar que to hacer un SEGWAY NANO!!!!¿Qué es un segway?Así, un segway es un robot que tiene dos ruedas en que rollos verticalmente. Ya que cuenta con sólo dos ruedas del robot se vuelca e
Arduino Nano: Teclado de matriz de I2C PCF8574/PCF8574A GPIO y Visuino

Arduino Nano: Teclado de matriz de I2C PCF8574/PCF8574A GPIO y Visuino

Telclados numéricos de la matriz son algunas de las maneras más simples y más populares para entrar información del teclado en microcontroladores Arduino tipo. Ya hice un Instructable mostrando cómo puede conectar teclado al Arduino Nano. La desventa