////////////// DESCRIPTION ///////////////////////////////////////////////////////////
Dit is een toepassing voor controleren een tandheelkundige vacuüm motor.
De motor moet een 24 volt signaal (via een relais aangesloten op de arduino digitale uitgang) om te zetten van ON.
Wanneer haar aangezet het vult een bootle met vloeistoffen formulier patiënt mond.
Fles heeft twee niveauschakelaars (sensoren) voor laag en hoog niveau van de vloeistof.
Motor staat moet aan totdat de vloeistof hoog niveau bereikt. Vervolgens motor staat moet OFF vloeistof gaat naar afvoer (dat gebeurt alleen als de motor is OFF) en vervolgens weer ingeschakeld.
Dit alles werkt als tandheelkundige vacuüm tips op artsen handen zijn.
De stand voor tandheelkundige vacuüm tips heeft een schakelaar dus wanneer geplaatst in stand de schakelaar OPEN is en als de schakelaar in de tandarts de hand sluiten.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
code door ALEXANDROS PAGONIDIS http://www.BiomedicalTechnology.gr ***
*/
#include < Time.h > //arduino van initialisatie gelezen en tijd voor 50 dagen en vervolgens wordt opnieuw ingesteld keer
niet-ondertekende lange tijd;
unsigned long time2;
aantal pins *** / / /
int lowLevelPin = 2; digitale pin (2) aangesloten op laag niveau schakelaar van bootle. Pin 1 van switch gaat naar digitale pin van de arduino en pin 2 van schakelaar gaat naar de grond.
int highLevelPin = 3; digitale pin (3) aangesloten op hoog niveau schakelaar van bootle. Pin 1 van switch gaat naar digitale pin van de arduino en pin 2 van schakelaar gaat naar de grond.
int valveTipsPin = 4; digitale pin (4) aangesloten op de stand van switch waar vacuüm tips zijn geplaatst. Pin 1 van switch gaat naar digitale pin van de arduino en pin 2 van schakelaar gaat naar de grond.
int motorPin = 12; digitale pin 5V DC Relais module heks besturingselementen motor van 24V AC singal (oorzaak mijn CHINESE MODULE IS dom LOGIG IS omgekeerd zo wanneer POWER OFF NO TURN ON THE motor)
int ledPin = 13; interne onder leiding van arduino board
/*
DEZE VERBINDINGEN ZIJN VOOR SPECIFIEKE SIRONA STOEL MET CATANNI ELECTRONICS
PINNEN EN EEN AANTAL KABELS KLEUREN:
1,19,12,13,14: GEEN VERBINDING
2, 3: 24VAC-INGANG VAK
9,11: 24VAC OUTPUR MOTOR (PINNEN 3,9 ZIJN PINS VOOR EEN NORMAAL OPEN RELAY)
4, 5: TIPS SCHAKELEN (WAAR IN PIN 4 GEEL-BRUINE KABELS 5 WIT-GRIJZE KABELS
6: FLES HOOG NIVEAU SENSOR (KABEL ROOD)
7: FLES LAGE NIVEAU SENSOR (KABEL WIT)
8: FLES COMMON, MIDDEN (KABEL ZWART)
*/
waarden van swithes staat (hoog = OPEN of laag = sluiten)
int valveTipsVal;
int lowLevelVal;
int highLevelVal;
vertragingstijden in msec. *** / / /
int timeOfReadings = 200;
int problemInLowLevelSwitch = 8000;
int timeOfMotorMinON = 4000;
int timeOfMotorMaxON = 8000;
int timeOfTipOnStand = 2500;
int timeOfTipRest = 999;
val dat staten als motor is ON of OFF *** / / /
int motorState; Deze eigenschap haalt de waarden 0 of 1
//////////////////////////////////////
VOID Setup
{
configureren van pinnen als input en inschakelen van de interne pull-up weerstand
pinMode(lowLevelPin,INPUT_PULLUP);
pinMode(highLevelPin,INPUT_PULLUP);
pinMode(valveTipsPin,INPUT_PULLUP);
configureren van pinnen als uitgang
pinMode (motorPin, OUTPUT);
pinMode (ledPin, OUTPUT); interne op chip led-indicator
motorOFF(); Wanneer arudino die tips_checks van de motor moet worden uitgeschakeld
} / / einde van setup
////////////////////////////////
void loop
{
/*
digitalRead met INPUT_PULLUP setup luidt als volgt:
HOGE wanneer een schakelaar of knop als een open verbinding met de grond is.
LAAG wanneer een schakelaar of knop als een gesloten verbinding met de grond is.
*/
valveTipsVal=digitalRead(valveTipsPin);delay(1); lezen
lowLevelVal = digitalRead (lowLevelPin);delay(1); alle
highLevelVal=digitalRead(highLevelPin);delay(1); swithes
////////////////////////////////////////
TIPS_CHECK:
terwijl (valveTipsVal == LOW) //TIPS_CHECK terwijl *** als vacuüm tips in de hand van tandarts zijn, stand van schakelaar wordt gesloten. *****
{
valveTipsVal=digitalRead(valveTipsPin);delay(1);
Als (valveTipsVal == HIGH)
{goto TIPS_CHECK;} controleren op alle niveaus van de code als ventiel tips op stand zijn en ja goto TIPS_CHECK
vertraging (timeOfReadings); tijd van lezingen... wachten op sensoren te stabiliseren en kalmeren proccessor van vele lezingen
LEVEL_CHECK_RUN:
{
lowLevelVal = digitalRead (lowLevelPin);delay(1); lezen
highLevelVal=digitalRead(highLevelPin);delay(1); niveau swithes
Als (lowLevelVal == HIGH & & highLevelVal == HIGH) / / als hoog niveauschakelaar OPEN, laag niveau schakelaar OPEN
{lowLevelVal = digitalRead (lowLevelPin);delay(1);
highLevelVal=digitalRead(highLevelPin);delay(1);
motorON();
}
Als (highLevelVal == HIGH & & lowLevelVal == LOW) / / als hoog niveauschakelaar OPEN, laag niveau schakelaar sluiten
{lowLevelVal = digitalRead (lowLevelPin);delay(1);
highLevelVal=digitalRead(highLevelPin);delay(1);
motorON();
}
terwijl (highLevelVal == LOW) / / LEVEL_CHECK_RUN tijdens het //while hoog niveauschakelaar is sluiten
{
highLevelVal=digitalRead(highLevelPin);delay(1);
valveTipsVal=digitalRead(valveTipsPin);delay(1);
Als (valveTipsVal == HIGH)
{goto TIPS_CHECK;} controleren op alle niveaus van de code als ventiel tips op stand zijn en ja goto TIPS_CHECK
motorOFF();
Als (highLevelVal == HIGH) //if!!! 03!!! moet een if voordat de moeite dus krijgen tijd en runonce buiten de while lus
{
int runonce = 0; om uit te voeren zodra bepaalde procedures binnen de volgende terwijl!!! 03!!!
tijd = millis();
terwijl (highLevelVal == HIGH) //while!!! 03!!!
{lowLevelVal = digitalRead (lowLevelPin);delay(1); lezen
highLevelVal=digitalRead(highLevelPin);delay(1); niveau swithes
valveTipsVal=digitalRead(valveTipsPin);delay(1);
Als (valveTipsVal == HIGH)
{goto TIPS_CHECK;} controleren op alle niveaus van de code als ventiel tips op stand zijn en ja goto TIPS_CHECK
time2 = millis();
Als (time2 > (tijd + problemInLowLevelSwitch) & & lowLevelVal! = hoog & & (runonce == 0)) //if laag niveau schakelaar heeft een probleem en niet afgaan
{runonce ++; met een runonce-parameter aan stopt met tellen
delay(timeOfMotorMinON); motor verblijf van draaide voor een vertraging en vervolgens weer ingeschakeld
motorON();
goto LEVEL_CHECK_RUN; noodzaak om dit te gebruiken in het geval dat u niet de runonce-instructie gebruiken
}
Als (lowLevelVal == HIGH & & (runonce == 0)) //if laag niveauschakelaar is gesloten
{runonce ++;
delay(timeOfMotorMaxON); motory verblijf draaide foa vertraging en vervolgens weer ingeschakeld
dus ga vloeistoffen voor de afvoer.
motorON();
goto LEVEL_CHECK_RUN; gebruik niet maar als je ermee werkt oke.
}
} //end van terwijl!!! 03!!!
} //end als!!! 03!!!
} //end LEVEL_CHECK_RUN terwijl
} //end van LEVEL_CHECK_RUN
} / / einde van TIPS_CHECK terwijl *** onder deze regel code behoort tot geval dat tips op stand zijn ***
//******************************** *******
motorOFF();
switch(motorState) / / wanneer vacuüm tips in stand zijn, stand van schakelaar open is, zodat de motor moet worden uitgeschakeld.
maar als de motor was dan ingeschakeld wanneer van tandarts het puntje op stand zet
Er moet een vertraging zodat afval-vloeistof binnen vacuüm buis naar boottle en dan de afvoer gaat.
{
geval 1: delay(timeOfTipOnStand);
motorOFF();
breken;
geval van 0: delay(1);
motorOFF();
breken;
standaard: breken;
}
delay(timeOfTipRest); precausion in het geval tip niet passen of tip komen tegelijk.
} //End of loop//////////////////////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
VOID motorON() //turn motor aan / motorstate 1
{//this is voor de switch(motorstate)
digitalWrite (motorPin, laag); Ja lage (omgekeerde logica), oorzaak van domme Chinees module
delay(1);
motorState = 1;
digitalWrite (ledPin, hoge);
vertraging (1);
}
ongeldig motorOFF() //turn motor uit en motorstate 0
{//this is voor de switch(motorstate)
digitalWrite (motorPin, hoge); Ja hoog (omgekeerde logica), oorzaak van domme Chinees module
delay(1);
motorState = 0;
digitalWrite(ledPin,LOW);
vertraging (1);
}
//////////////////////////////////////////////////////
VOID blink() //put in de code voor het testen van waar u zich bij het gebruik van swithes
{
digitalWrite (ledPin, hoge); Hiermee stelt u de LED op
delay(200); wacht een seconde
digitalWrite (ledPin, laag); de LED vertrekt
delay(200); wacht een seconde
digitalWrite (ledPin, hoge); Hiermee stelt u de LED op
delay(200); wacht een seconde
}///////////////////////////////////////