Arduino nano commandez un moteur d’aspiration dentaire en vérifiant le niveau du liquide des déchets

/ *
//////////////                            DESCRIPTION                      ///////////////////////////////////////////////////////////
Il s’agit d’une application pour contrôler un moteur d’aspiration dentaire.
Le moteur a besoin d’un 24 volts signal (via un relais connecté à la sortie numérique de l’arduino) pour mettre en marche.
Lors de sa tournée sur elle remplit une bootle avec liquides forme bouche du patient.
Bouteille a deux interrupteurs de niveau (capteurs) pour bas et haut niveau de liquide.
État moteur doit être allumé jusqu'à ce que le liquide atteigne le niveau élevé. Puis État moteur doit être à OFF pour liquide va se pour écouler (qui se produit uniquement lorsque le moteur est éteint) et puis rallumé.
Tout cela fonctionne lorsque dentaires conseils sous vide sont sur les mains de médecins.
Le stand pour obtenir des conseils dentaires sous vide a un interrupteur donc lorsqu’il est placé dans le stand de l’interrupteur est ouvert et quand dans la main du dentiste, le commutateur est CLOSE.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
code par ALEXANDROS PAGONIDIS http://www.BiomedicalTechnology.gr ***

*/

#include < Time.h > //arduino peut lire le temps pour 50 jours d’initialisation et réinitialise ensuite fois

unsigned long temps ;
unsigned long time2 ;

nombre de broches *** / / /
int lowLevelPin = 2 ;  la broche numérique (2) connecté à l’interrupteur de niveau bas de bootle.                      La broche 1 du commutateur va à broches numériques de l’arduino et broche 2 du commutateur va à la terre.
int highLevelPin = 3 ;  la broche numérique (3) relié à l’interrupteur de niveau haut de bootle.                      La broche 1 du commutateur va à broches numériques de l’arduino et broche 2 du commutateur va à la terre.
int valveTipsPin = 4 ;  la broche numérique (4) connectés au commutateur du stand où sont placés les trucs sous vide. La broche 1 du commutateur va à broches numériques de l’arduino et broche 2 du commutateur va à la terre.
int motorPin = 12 ;  contrôle de la broche numérique 5V DC Relais module sorcière 24V AC singal (CAUSE mon chinois MODULE est stupide LOGIG est inversé donc lorsque POWER OFF non à tourner sur le moteur) du moteur
int ledPin = 13 ;  le conduit interne de la carte arduino

/*
CETTE CONNEXION EST POUR FAUTEUIL SIRONA SPÉCIFIQUE AVEC L’ÉLECTRONIQUE DE CATANNI
ÉPINGLES ET CERTAINES DES COULEURS DE CÂBLES :
1,19,12,13,14 : NON CONNECTÉ

2, 3: 24VAC ENTRÉE DE BOÎTE
9, 11 : OUTPUR 24VAC POUR MOTEUR (PINS 3,9 SONT DES BROCHES D’UN RELAIS NORMALEMENT OUVERT)

4, 5: CONSEILS CHANGER (OÙ EN PIN 4 JAUNE-BRUN 5 BLANC GRIS-CÂBLES

6: CAPTEUR DE NIVEAU HAUT DE BOUTEILLE (CÂBLE ROUGE)
7: CAPTEUR DE NIVEAU BAS DE BOUTEILLE (CÂBLE BLANC)
8: BOUTEILLE COMMON, MIDDLE (CÂBLE NOIR)

*/

les valeurs d’État se (haut = ouvert ou faible = fermer)
int valveTipsVal ;
int lowLevelVal ;
int highLevelVal ;

temps de retard en millisecondes pendant laquelle *** / / /
int timeOfReadings = 200 ;
int problemInLowLevelSwitch = 8000 ;
int timeOfMotorMinON = 4000 ;
int timeOfMotorMaxON = 8000 ;
int timeOfTipOnStand = 2500 ;
int timeOfTipRest = 999 ;

Val qui indique si le moteur est ON ou OFF *** / / /
int motorState ;        Obtient les valeurs de 0 ou 1

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

void setup()
{

configurer les broches comme intrant et activer la résistance de pull-up interne
pinMode(lowLevelPin,INPUT_PULLUP) ;
pinMode(highLevelPin,INPUT_PULLUP) ;
pinMode(valveTipsPin,INPUT_PULLUP) ;

configurer les broches comme sorties
pinMode (motorPin, sortie) ;
pinMode (ledPin, sortie) ;        TEMOIN led interne sur puce

motorOFF() ;                           Quand arudino que tips_checks moteur doit être mis hors service

} / / fin de l’installation
////////////////////////////////

void loop()
{

/*
digitalRead avec INPUT_PULLUP le programme d’installation se lit comme suit :
ÉLEVÉ par un interrupteur ou bouton est comme une connexion ouverte au sol.
FAIBLE lorsqu’un interrupteur ou bouton est comme une connexion fermée au sol.
*/

valveTipsVal=digitalRead(valveTipsPin);delay(1) ; lire
lowLevelVal = digitalRead (lowLevelPin);delay(1) ; tous les
highLevelVal=digitalRead(highLevelPin);delay(1) ; s'

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

TIPS_CHECK :

tandis que (valveTipsVal == faible) //TIPS_CHECK tout en *** lorsque vide conseils sont dans les mains du dentiste, commutateur du stand est fermé. *****
{
valveTipsVal=digitalRead(valveTipsPin);delay(1) ;
Si (valveTipsVal == HIGH)
{goto TIPS_CHECK;}     vérifier à tous les niveaux du code si valve conseils sont sur le stand et si oui goto TIPS_CHECK

retard (timeOfReadings) ;                               temps de lectures... attendez de capteurs à stabiliser et à calmer proccessor de nombreuses lectures


LEVEL_CHECK_RUN :
{

lowLevelVal = digitalRead (lowLevelPin);delay(1) ;   lire
highLevelVal=digitalRead(highLevelPin);delay(1) ;   niveau s'

Si (lowLevelVal == HIGH & & highLevelVal == haut) / / si l’interrupteur de niveau haut ouvert, faible niveau interrupteur ouvert
{lowLevelVal = digitalRead (lowLevelPin);delay(1) ;
highLevelVal=digitalRead(highLevelPin);delay(1) ;
motorON() ;
}

Si (highLevelVal == HIGH & & lowLevelVal == faible) / / si l’interrupteur de niveau haut ouvert, faible niveau switch CLOSE
{lowLevelVal = digitalRead (lowLevelPin);delay(1) ;
highLevelVal=digitalRead(highLevelPin);delay(1) ;
motorON() ;
}



même si (highLevelVal == faible) / / LEVEL_CHECK_RUN tout en //while interrupteur de niveau haut est CLOSE
{
highLevelVal=digitalRead(highLevelPin);delay(1) ;

valveTipsVal=digitalRead(valveTipsPin);delay(1) ;
Si (valveTipsVal == HIGH)
{goto TIPS_CHECK;}                      vérifier à tous les niveaux du code si valve conseils sont sur le stand et si oui goto TIPS_CHECK

motorOFF() ;


Si (highLevelVal == HIGH) //if!!! 03!!!   besoin un si avant le moment obtenir donc temps et runonce à l’extérieur le tout en boucle
{
runonce int = 0 ;         pour exécuter une fois certaines procédures à l’intérieur de l’autre tout en!!! 03!!!
temps = millis() ;

même si (highLevelVal == haute) //while!!! 03!!!
{lowLevelVal = digitalRead (lowLevelPin);delay(1) ;   lire
highLevelVal=digitalRead(highLevelPin);delay(1) ;   niveau s'

valveTipsVal=digitalRead(valveTipsPin);delay(1) ;
Si (valveTipsVal == HIGH)
{goto TIPS_CHECK;}                vérifier à tous les niveaux du code si valve conseils sont sur le stand et si oui goto TIPS_CHECK

TIME2 = millis() ;
Si (time2 > (temps + problemInLowLevelSwitch) & & lowLevelVal! = HIGH & & (runonce == 0)) //if bas commutateur de niveau a un problème et ne s’éteignent
{runonce ++ ;                                                                           avec un paramètre runonce pour arrêter le compteur

Delay(timeOfMotorMinON) ;                                                             séjour moteur tourné d’un retard et puis rallumé

motorON() ;


Goto LEVEL_CHECK_RUN ;  Il faut faire cela dans le cas où vous n’utilisez pas l’instruction runonce
}


Si (lowLevelVal == HIGH & & (runonce == 0)) //if interrupteur de niveau bas est fermé
{runonce ++ ;

Delay(timeOfMotorMaxON) ;                                                              séjour REDUITE tourné de foa retard et puis rallumé
donc les liquides vont se pour écouler.
motorON() ;

Goto LEVEL_CHECK_RUN ;    n’utilisez pas si vous l’utiliser fonctionne très bien.
}
} //end du tout!!! 03!!!
} //end d’if!!! 03!!!
} //end LEVEL_CHECK_RUN tandis que

} //end de LEVEL_CHECK_RUN

} / / fin de TIPS_CHECK tout en *** sous cette ligne code appartient au cas que les conseils sont sur support ***
//********************************                                                           *******

motorOFF() ;
Switch(motorState) / / lorsque vide conseils sont en position, commutateur du stand est ouvert, donc le moteur doit être désactivée.
mais si le moteur a été allumé puis quand dentiste met la pointe sur le stand
il doit y avoir un retard des déchets liquides à l’intérieur du tuyau à vide va à boottle, puis vidange.
{
cas 1: delay(timeOfTipOnStand) ;
motorOFF() ;
rupture ;
case 0: delay(1) ;
motorOFF() ;
rupture ;
par défaut : break ;
}


Delay(timeOfTipRest) ;                                                            precausion en cas de pointe ne s’adapter ou astuce sortent en même temps.

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

void motorON() //turn moteur en marche et motorstate 1
{//this est pour les switch(motorstate)
digitalWrite (motorPin, basse) ; Oui faible (logique inversée), la cause de la stupide module chinois
Delay(1) ;
motorState = 1 ;
digitalWrite (ledPin, HIGH) ;
retard (1) ;

}

void motorOFF() //turn moteur éteint et motorstate 0
{//this est pour les switch(motorstate)
digitalWrite (motorPin, HIGH) ;  Oui élevé (logique inversée), cause de stupide module chinois
Delay(1) ;
motorState = 0 ;
digitalWrite(ledPin,LOW) ;
retard (1) ;
}

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

void blink() //put dans le code d’essai où vous vous trouvez lorsque vous utilisez s'
{
digitalWrite (ledPin, HIGH) ;   définit la LED sur
Delay(200) ;                  attend une seconde
digitalWrite (ledPin, basse) ;    la LED se met
Delay(200) ;                  attend une seconde
digitalWrite (ledPin, HIGH) ;   définit la LED sur
Delay(200) ;                  attend une seconde

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







Articles Liés

Arduino Nano et Visuino : moteur pas à pas avec des boutons de contrôle

Arduino Nano et Visuino : moteur pas à pas avec des boutons de contrôle

Moteurs pas à pas sont souvent utilisés dans les projets de l'Arduino, chaque fois que quelque chose doit être déplacé ou transformé. Dans ce Instructable, je vais vous montrer comment il est facile à connecter le moteur pas à pas à l'Arduino Nano et
Servo-moteur de balayage avec Arduino Nano

Servo-moteur de balayage avec Arduino Nano

Bonjour les amis.Dans ce instructable, m'a montré comment balayer un servo moteur avec Arduino Nano.Généralement le moteur servo est utilisée lorsque est à vitesse réduite mais avec un couple élevé est nécessaire. ce travail peut être effectué par un
Arduino Nano et Visuino : commande de moteur pas à pas avec codeur rotatif

Arduino Nano et Visuino : commande de moteur pas à pas avec codeur rotatif

Il est parfois nécessaire d'avoir un Moteur pas à pas suivre la rotation d'un Encodeur rotatif pour un positionnement précis. J'ai été l'intention Instructable là-dessus pour une longue période, mais finalement couple de jours après encore une autre
Arduino Nano : Contrôle brossé DC moteur avec pilote L9110S et Visuino

Arduino Nano : Contrôle brossé DC moteur avec pilote L9110S et Visuino

Moteurs à courant continu brossé sont souvent utilisés pour robots de voiture autour, ou pour divers autres projets Arduino cool. Pour commander le moteur avec Arduino, vous devez généralement utiliser un pilote automobile. Il y a beaucoup de différe
Arduino Nano et Visuino: 2 moteurs pas à pas avec Joystick de contrôle

Arduino Nano et Visuino: 2 moteurs pas à pas avec Joystick de contrôle

Lorsque vous générez des projets Arduino avec moteurs pas à pas, tels que la machine CNC , plotterou Art animé, il arrive un moment où les steppers doivent être contrôlés manuellement. Analogiques Joysticks sont bon marché et faciles modules pour com
Arduino Nano et Visuino : mesurer la vitesse du moteur (tr/min) avec optocoupleur et encodeur disque

Arduino Nano et Visuino : mesurer la vitesse du moteur (tr/min) avec optocoupleur et encodeur disque

Lorsque vous générez une voiture robot, il est important de contrôler la vitesse de la rotation des roues. Avant que nous pouvons contrôler la vitesse cependant, nous devons être capable de la mesurer. Un des moyens plus faciles et les plus populaire
PWM Hardware Arduino pour les commandes de moteur pas à pas

PWM Hardware Arduino pour les commandes de moteur pas à pas

avec notre nouveau projet, JustAddSharks, nous sommes très désireux de soutenir le développement des logiciels libres aux contrôle aux traceurs laser. Nous sommes plus qu'heureux pour les gens de modifier nos coupeurs de laser, de remplacer le systèm
Commander vos moteurs L293D et Arduino

Commander vos moteurs L293D et Arduino

après de longues recherches et de tâtonnements, je suis venu vers une nouvelle procédure pas à pas concernant cette belle puce, les L293D.Chaque projet est un projet et chacun a ses propres configurations de puissance unique, donc vous devez être au
Commande de moteur Arduino Stepper

Commande de moteur Arduino Stepper

Ici et les liaisons connexes, nous explorons Arduino contrôle de moteurs pas à pas.Etape 1: sur la vidéo Le sketch Arduino ci-dessous remplace la bibliothèque Stepper que j'ai trouvé inutile. Il comprend également I2C afficheur comme montré dans la v
Commander un moteur avec une tablette et un Arduino Uno

Commander un moteur avec une tablette et un Arduino Uno

Contrôler vos inventions avec tablettes Android ! Ce tutoriel passe par une démo d'obtenir une tablette Android pour envoyer des commandes de série à une carte Arduino et ayant le jury tourner un moteur sur et en dehors.Étape 1: Choses vous aurez bes
Commande de moteurs avec Arduino

Commande de moteurs avec Arduino

il s'agit d'une simple Instructable vous dire comment vous pouvez contrôler des moteurs à courant continu avec un Arduino. Il a été demandé par un autre utilisateur, alors j'ai pensé aller de l'avant et jeter quelque chose ensemble. Je vais utiliser
ARDUINO commandé par moteur avec bouton rotatif et l293d ou puce SN754410NE

ARDUINO commandé par moteur avec bouton rotatif et l293d ou puce SN754410NE

Commande de moteur est très utile pour beaucoup de projets de bricolage. Dans la plupart des cas, le microcontrôleur peut contrôler tous les mouvements du stepper, mais dans certains cas, vous pouvez contrôler manuellement le moteur pas à pas pour ré
Commande de moteur simple 2 voies pour l’arduino

Commande de moteur simple 2 voies pour l’arduino

ATTENTION : Ceci n'est pas un moyen sûr de commander un moteur. Chaque broche de I/O ne peut gérer que 40 mA de courant. Je conseille d'utiliser un pont en H ou quelque chose dans ce sens.Quand je dis simple, je ne veux pas utiliser un contrôle de vi
Exécuter une commande de moteur avec un Arduino

Exécuter une commande de moteur avec un Arduino

Salut les gars,Cet article sur Comment faire fonctionner un moteur pas à pas avec un Arduino. Ces moteur pas à pas de jours utilisé dans de nombreux appareil électronique comme : système de caméra autofocus, CD-ROM pour le mouvement de la lentille, i