Arduino nano styra en dental vakuum motor genom att kontrollera flytande avfall nivå



/ *
////////////// DESCRIPTION ///////////////////////////////////////////////////////////
Detta är ett program för styra en dental vakuum motor.
Motorn behöver en 24 volts signal (via ett relä ansluten till arduino's digital utgång) att slå.
När avstängd på den fyller en bootle med flytande form patientens mun.
Flaskan har två nivå växlar (sensorer) för låg och hög nivå av vätska.
Motoriska tillstånd måste vara ON tills vätskan når hög. Sedan motoriska tillstånd måste vara OFF så vätskan går för att dränera (det händer bara när motorn är avstängd) och sedan aktiverat igen.
Allt detta fungerar när dental vakuum tips är på läkare händer.
Stativet för dental vakuum tips har en switch så när den placeras i monter växeln är öppen och när i tandläkarens hand är nära.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
kod av ALEXANDROS PAGONIDIS http://www.BiomedicalTechnology.gr ***

*/

#include < Time.h > //arduino kan läsa dags för 50 dagar från initiering och sedan återställer tid igen

osignerad länge;
osignerade långa time2;

numrerar av pins *** / / /
int lowLevelPin = 2; Digital pin (2) ansluten till låga brytare av bootle. Stift 1 i växel går till digital stift arduino och stift 2 av switch går till marken.
int highLevelPin = 3; Digital pin (3) ansluten till hög brytare av bootle. Stift 1 i växel går till digital stift arduino och stift 2 av switch går till marken.
int valveTipsPin = 4; Digital pin (4) ansluten till i montern switch där vakuum tips är placerade. Stift 1 i växel går till digital stift arduino och stift 2 av switch går till marken.
int motorPin = 12; Digital pin 5V DC relä modul häxa styr motor 24V AC singal (orsak min kinesiska modul är dum LOGIG är INVERTERAD så när POWER OFF nej till TURN ON THE MOTOR)
int ledPin = 13. inre ledde av arduino ombord

/*
DENNA ANSLUTNINGAR ÄR FÖR SPECIFIKA BÄGGE STOL MED CATANNI ELEKTRONIK
STIFT OCH NÅGRA AV KABLAR FÄRGER:
1,19,12,13,14: INTE ANSLUTEN

2, 3: 24VAC INPUT FRÅN BOX
9,11: 24VAC OUTPUR TILL MOTOR (STIFT 3,9 ÄR STIFTEN PÅ ETT NORMALT ÖPPET RELÄ)

4, 5: TIPS VÄXLA (VAR I STIFT 4 GUL-BRUN KABLAR 5 VIT-GRÅ KABLAR

6: FLASKA HÖG NIVÅGIVARE (KABEL RÖD)
7: FLASKA LÅG NIVÅGIVARE (KABEL VIT)
8: FLASKA COMMON, MITTEN (KABEL SVART)

*/

värden i swithes stat (hög = öppna eller låg = Stäng)
int valveTipsVal;
int lowLevelVal;
int highLevelVal;

fördröjningstiderna i uppdateringsförsök *** / / /
int timeOfReadings = 200.
int problemInLowLevelSwitch = 8000;
int timeOfMotorMinON = 4000;
int timeOfMotorMaxON = 8000;
int timeOfTipOnStand = 2500;
int timeOfTipRest = 999;

val att staterna om motorn är ON eller OFF *** / / /
int motorState; får värdena 0 eller 1

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

void setup()
{

Konfigurera pins som indata och aktiverar de inre pull-up resistorn
pinMode(lowLevelPin,INPUT_PULLUP);
pinMode(highLevelPin,INPUT_PULLUP);
pinMode(valveTipsPin,INPUT_PULLUP);

Konfigurera pins som utgångar
pinMode (motorPin, produktionen);
pinMode (ledPin, produktionen); internt på chip led-indikator

motorOFF(); När arudino TIPS_CHECKs upp motor bör vara avstängda

} / / slutet av installationen
////////////////////////////////

void loop()
{

/*
digitalRead med INPUT_PULLUP setup lyder:
HÖG när en växel eller knappen är som en öppen anslutning till marken.
LÅG när en växel eller knappen är som en sluten anslutning till marken.
*/

valveTipsVal=digitalRead(valveTipsPin);delay(1); Läs
lowLevelVal = digitalRead (lowLevelPin);delay(1); alla
highLevelVal=digitalRead(highLevelPin);delay(1); swithes

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

TIPS_CHECK:

medan (valveTipsVal == låg) //TIPS_CHECK medan *** när vakuum tips är tandläkarens hand, stand's växeln är stängd. *****
{
valveTipsVal=digitalRead(valveTipsPin);delay(1);
om (valveTipsVal == hög)
{goto TIPS_CHECK;} kolla på alla nivåer av koden om ventilen tips på stativ och om ja gå till TIPS_CHECK

fördröjning (timeOfReadings); tid av avläsningar... vänta för sensorer för att stabilisera och lugna ner proccessor från många avläsningar

LEVEL_CHECK_RUN:
{

lowLevelVal = digitalRead (lowLevelPin);delay(1); Läs
highLevelVal=digitalRead(highLevelPin);delay(1); nivå swithes

om (lowLevelVal == hög & & highLevelVal == hög) / / om brytare för hög öppen, låg nivå växla öppen
{lowLevelVal = digitalRead (lowLevelPin);delay(1);
highLevelVal=digitalRead(highLevelPin);delay(1);
motorON();
}

om (highLevelVal == hög & & lowLevelVal == låg) / / om brytare för hög öppen, låg nivå växla nära
{lowLevelVal = digitalRead (lowLevelPin);delay(1);
highLevelVal=digitalRead(highLevelPin);delay(1);
motorON();
}

medan (highLevelVal == låg) / / LEVEL_CHECK_RUN medan //while brytare för hög är nära
{
highLevelVal=digitalRead(highLevelPin);delay(1);

valveTipsVal=digitalRead(valveTipsPin);delay(1);
om (valveTipsVal == hög)
{goto TIPS_CHECK;} kolla på alla nivåer av koden om ventilen tips på stativ och om ja gå till TIPS_CHECK

motorOFF();

om (highLevelVal == hög) //if! 03!!! behöver en om det innan medan så få tid och runonce utanför while loop
{
int runonce = 0; att köra en gång vissa procedurer inne nästa samtidigt!!! 03!!!
tid = millis();

medan (highLevelVal == hög) //while! 03!!!
{lowLevelVal = digitalRead (lowLevelPin);delay(1); //read
highLevelVal=digitalRead(highLevelPin);delay(1); nivå swithes

valveTipsVal=digitalRead(valveTipsPin);delay(1);
om (valveTipsVal == hög)
{goto TIPS_CHECK;} kolla på alla nivåer av koden om ventilen tips på stativ och om ja gå till TIPS_CHECK

Time2 = millis();
om (time2 > (tid + problemInLowLevelSwitch) & & lowLevelVal! = hög & & (runonce == 0)) låg brytare för //if har ett problem och inte gå ut
{runonce ++; //with en runonce parameter att sluta räkna

Delay(timeOfMotorMinON); motoriska vistelse vände av för försening och sedan aktiverats igen

motorON();

gå till LEVEL_CHECK_RUN; behöver använda detta om du inte använder programsatsen runonce
}

om (lowLevelVal == hög & & (runonce == 0)) //if låg nivå växeln är stängd
{runonce ++;

Delay(timeOfMotorMaxON); motory vistelse vände foa försening och sedan aktiverats igen
så gå vätskor rinna.
motorON();

gå till LEVEL_CHECK_RUN; Använd inte men om du använder det fungerar okej.
}
} //end av samtidigt!!! 03!!!
} //end av om!!! 03!!!
} //end LEVEL_CHECK_RUN medan

} //end av LEVEL_CHECK_RUN

} / / end av TIPS_CHECK medan *** under den här raden tillhör koden så att tips på stand ***
//******************************** *******

motorOFF();
Switch(motorState) / / när vakuum tips i stå, stås växel är öppen så motor måste iväg.
men om motorn var aktiverad sedan när tandläkaren sätter spets på stativ
Det måste finnas en försening så avfall-vätskan inuti vakuum slangar går till boottle och än avlopp.
{
fall 1: delay(timeOfTipOnStand);
motorOFF();
bryta;
fall 0: delay(1);
motorOFF();
bryta;
standard: bryta;
}

Delay(timeOfTipRest); precausion om tips inte passar eller spets kommit ut på en gång.

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

void motorON() //turn motor på och motorstate 1
{//this är för switch(motorstate)
digitalWrite (motorPin, låg); Ja låg (inverterad logik), orsaka av dumma kinesiska modul
Delay(1);
motorState = 1;
digitalWrite (ledPin, hög);
fördröjning (1).

}

void motorOFF() //turn motor off och motorstate 0
{//this är för switch(motorstate)
digitalWrite (motorPin, hög); Ja hög (inverterad logik), orsaka av dumma kinesiska modul
Delay(1);
motorState = 0;
digitalWrite(ledPin,LOW);
fördröjning (1).
}

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

void blink() //put i koden för testning där du är när du använder swithes
{
digitalWrite (ledPin, hög); anger LED på
Delay(200); väntar på en sekund
digitalWrite (ledPin, låg); framhäver LED
Delay(200); väntar på en sekund
digitalWrite (ledPin, hög); anger LED på
Delay(200); väntar på en sekund

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

Relaterade Ämnen

X och O spel (beskrivningarna är tillgängliga genom att kontrollera bilderna)

Detta är ett klassiskt X och O spel. Projektet är tänkt att göras med hjälp av en laserskärare. Det är en enkel och rolig process att göra det. Det tog mer eller mindre en timme att skapa design och runt 30 minuter att klippa den med en laserskärare....

Arduino nano segway

För några dagar sedan fick jag en arduino nano och vad bättre sätt att testa den än för att göra en NANO SEGWAY!Vad är en segway?Så en segway är en robot som har två hjul som rullar vertikalt. Eftersom den har bara två hjul roboten tips främre eller...

DIY | 3 x 3 x 3 LED Cube för Arduino Nano +

Hej alla!Mitt namn är RGBFreak och jag skapade en YouTube-kanal ganska nyligen.Jag älskar DIY och jag älskar speciellt lysdioder, så det är därför jag bestämde mig att göra min egen 3 x 3 x 3 LED Cube!Du behöver följande produkter att göra denna LED...

Spela Wave-fil genom att använda arduino

detta är en enkel krets att spela wav-filer genom att använda arduino Nano V3.0, det bestå från 4 knappar, var och en spelar specifika wav fil laddas till SD-kort.Steg 1: delar 1-Arduino Nano V3.0 (jag använde den chines versionen kallas Funduino Nan...

Ljus intensitet uträkning med hjälp av BH1715 och Arduino Nano

Igår arbetade vi på LCD-skärmen visar, och samtidigt arbetar över dem vi insåg vikten av ljusintensiteten uträkning. Ljusintensiteten är inte bara viktigt i fysisk domän i denna värld men det har dess bra sagt roll i biologiska domän också. Korrekt u...

Kontrollera AC ljus genom att använda Arduino

Den första läraren alla tyder på arduino är blinkar en LED. Idag kommer jag visa dig hur man styr en AC ljus/apparat med samma Blink sketchControlling AC ljus eller apparat med arduino är enkelt som blinkar en LED genom att använda arduino.Allt du be...

Gränssnitt för 3-axlig gyroskop Sensor BMG160 med Arduino Nano

I dagens värld, mer än hälften av de ungdomar och barn tycker om spel och alla de som är förtjust i det, fascinerad av de tekniska aspekterna av gaming vet vikten av rörelse sensing i den här domänen. Vi var också förvånad av samma sak och bara att f...

PC Apps kontroll genom att använda Arduino

Detta är min första instructable och jag gjorde detta på grund av min nyfikenhet om möjligheterna att gränssnitt enheter som smartphone och laptop med arduino.Målet är att trådlöst styra den bärbara datorn med hjälp av arduino smartphone via Bluetoot...

Arduino Nano-Adapter - mer utrymme på din grindar

Välkommen!Först ut: detta är min första Instructable! Någon feedback att förbättra några kommande sådana är välkomna! :)Om du, precis som jag, har en Arduino Nano, har du säkert märkt att när du sätter det på en protoboard du omedelbart förlorar tre...

Reparera arduino nano (ingen effekt på USB)

Jag kortsluten min arduino nano klon igen, så det är dags att göra en tutorial video, hur fixa detta problem.Schottky diod: 0.5a 20V SOD-123 bostäderVideo:1. Kontrollera arduino. Ingen makt på USB, men Vin arbetsmetoder.2. kolla schottky diod -> yepp...

Arduino Nano och Visuino: styra 2 stegmotorer med Joystick

När man bygger Arduino projekt med stegmotorer, som CNC -maskin, plottereller Animerad konst, kommer det en tidpunkt när steppers behöver kontrolleras manuellt. Analoga styrspakar är billiga och lätt moduler för manuell kontroll, med variabel hastigh...

Arduino Nano och Visuino: styr Servo med Rotary Encoder

Det finns en hel del Instructables på hur man styr Servo med potentiometer, men ibland är det bra att styra med en Rotary Encoder. I detta Instructable kommer jag visa dig hur lätt det är att genomföra detta med hjälp av Visuino - en enkel att använd...

Modell järnväg - DCC kommando Station genom att använda Arduino:

Uppdatering 28 April 2016:Nu 16 valdeltagandet / poäng kontroll anlagen till kommando Station.Räls/växlar T1 - T8 finns tillgängliga via "B"-knappenRäls/växlar T9 - T16 finns tillgängliga via "C" nyckelUppdatering 10: e mars 2016:Nu la...

Fjärrstyrda roboten genom att använda Arduino

L293D är en dubbel H-bridge motorn förarens integrerade kretsar (IC). Motor förare agera som nuvarande förstärkare eftersom de tar en låg-nuvarande kontroll signal och ge en högre ström signal. Denna högre nuvarande signal används för att driva motor...

Arduino Nano och Visuino: kontrollera stegmotor med knappar

Stegmotorer används ofta i Arduino projekt, när något måste flyttas eller vände. I detta Instructable kommer jag visa dig hur lätt det är att ansluta Stepper Motor till Arduino Nano och styra med knappar.Observera att anteckningen på några av bildern...

Grunderna i förvandlar ditt Remote Controll fordon till ett autonomt System (Drone) genom att använda en Arduino

jag började detta projekt med målet att billigt vrida min RC helikopter till något av en UAV eller åtminstone att passa vissa sensorer att minska kollisioner och andra "mis haps."Nu är tyvärr i början av projektet missbedömde jag min lilla helik...

Arduino Nano baserat Microbot

detta instructable skapades för att föras in i roboten utmaningen. Om jag vinner, som delar ska naturligtvis gå till robotar som denna. Anteckningar om hur du inkluderar några av de mycket i prispaket ges i sista steget. Jag är 28, så klart, jag komm...

Jorden världen roterar med Arduino eller Raspberry Pi kontrollerade Stepper Motor

Detta instructable beskriver hur du uppgraderar din världen till en motoriserad version. Det ser otroligt bättre på hyllan när det sakta roterar, och någon demonstration med dina barn (att förklara den dag/natt cykeln eller årstiderna) vinner i intre...

Trådlös handskar som styr en robot genom att flytta fingrarna

Vi har en klar en robot styrs trådlöst via våra fingrar för att köra den... Vi använde två arduino kit... en på vår hand... och en på roboten... Vi använde flexibla sensorer på våra fingrar... flexibla sensorer är något liknande ett variabelt motstån...