Infraröd varvräknare med Arduino (3 / 4 steg)

Steg 3: Skriva koden

Koden är ganska mycket liknar den här: http://playground.arduino.cc/Learning/Tachometer, faktum är att jag skrev baserat på koden. Bara i stället för att räkna hur många gånger sensorerna säger Hej till varandra varje viss tid, jag räknar hur länge tills de ser andra igen efter det senaste mötet. Jag tycker också, att använda micros(), som returnerar microcontroller tid i mikrosekunder, ger ett betydligt mer exakt resultat än om jag använde millis() på samma plats.

Här är koden:

int sensorvalue;
int state1 = hög;
int state2;
float rps;
float varvtal.
lång prevMillis = 0;
långa intervall = 200.
långa currentTime;
lång prevTime = 1;
lång diffTime;
int sensorthreshold = 30.
Detta värde anger gräns mellan mörka och ljusa,
Det måste provas som kan komma att ändras enligt de
avståndet lysdioderna placeras.
för att se vilket nummer är bra, kolla sensorvalue variabelvärdet
som skrivs ut i den seriella monitorn

void setup()
{
Serial.BEGIN(9600);
pinMode(13,OUTPUT); tilldela stift 13 ledde som indikator eftersom vi inte kan se IR-ljus
}
void loop()
{
sensorvalue = analogRead(0); läsa från stift 0
IF(sensorvalue < sensorthreshold)
state1 = hög;
annat
state1 = låg;
digitalWrite(13,state1); som iR är ljus osynligt för oss, det ledde på stiftet 13
Ange status för kretsen.

IF(state2!=state1) {//counts när staten ändrar, som är från (mörk till ljus) eller
från (ljus till mörk), kom ihåg att IR-ljus är osynligt för oss.
om (state2 > state1) {
currentTime = micros(); Får arduino tid i mikrosekunder
diffTime = currentTime - prevTime; beräkna tid diff från den senaste möta upp
RPS = 1000000/diffTime; beräkna hur många rev per andra, bra att veta
RPM = 60000000/diffTime; beräkna hur många rev per minut

osignerade långa currentMillis = millis();

skriva ut till serial varje intervall - definieras vid variabler deklaration
om (currentMillis - prevMillis > intervall) {/ / se om nu redan ett intervall lång
prevMillis = currentMillis;
Serial.Print(RPS); Serial.Print ("rps"); Serial.Print(rpm); Serial.println ("rpm");
}

prevTime = currentTime;
}
state2 = state1;
}

/*
endast för test för att bestämma sensorthreshold
Delay(500);
Serial.println(sensorvalue);
*/
}

Knepig sak var på att definiera det sensorthreshold värdet. Jag gjorde detta: kommentera den viktigaste rutinen, och ta bort kommentar avsnittet tester som kan ses i nedanstående koder. Den sätt Arduinoen kommer att skriva till seriell övervaka och uppdatera sensor värdet i skärmen varje 500 ms. kompilera och ladda upp din kod till din styrelse, sedan öppna seriell bildskärmen. Vända och stoppa hjulet så att sensorerna är blockerade och ser vilket nummer visas i följetong monitor (i mitt fall runt 37-40), sedan vända och stoppa där sensorerna kan se varandra genom fönstret och ser vad nummer på skärmen nu (i mitt fall 14-19). Ange sedan ett tal som sensorthreshold variabelvärde som du nu vet vad är en bra nummer att skilja mellan "se" eller "ser inte" (jag in 30 i mitt fall, eftersom min "ser" är 37-40 och "se" 14-19, inställningen mellan 20-36 kan göra samma funktion också, men inte riktigt säkra eftersom värdet kan ibland vara 35 eller 21 på grund av störningar från miljö-lampor i de elektriska anslutningarna, eller andra saker som ärligt talat inte förstår jag riktigt om). Så, för kort, kolla numret när IR-sensorer kan se varandra och kolla det när sensorerna är blockerade, sedan hitta en rad i mellan att du är säker på att det kommer att skilja mellan "ser" och "ser".

Nedan är den kod modifieringen för att kontrollera hur bra många för sensorthreshold variabel:

...
void loop()
{
sensorvalue = analogRead(0); läsa från stift 0
/*
IF(sensorvalue < sensorthreshold)
...
state2 = state1;
}
*/

endast för test för att bestämma sensorthreshold
Delay(500);
Serial.println(sensorvalue);
}

Se Steg
Relaterade Ämnen

Läst RPM från Arduino-baserad IR-varvräknare med MATLAB GUI

Hej igen, ett par dagar jag postat tillbaka en instructable av IR varvräknare med arduino, då insåg jag att snarare än läsning av RPM värdet i Arduino IDE seriell monitor, presentera RPM i en ordentlig ram skulle se mer hi-tech. Så försökte jag att g...

Enkel, enkel och billig DIY stegräknare med Arduino

Jag lånade en accelerometer 4 månader tillbaka från en vän men jag insåg det är aldrig satts in i dess bästa användning. Så varför inte göra något bra av den. Jag har redan https://play.google.com/store/apps/details?id=com.noom.walk installerat i tel...

Åtgärd RPM - optisk varvräknare

Detta Instructable visar dig hur man gör en Bärbar Digital optisk varvräknare med hjälp av en Arduino Uno.I stället för en slitsad sensor har den en reflektion baserad sensor. Så:1. du behöver inte oroa dig för tjockleken på rotorn2. antal blad komme...

DIY Digital RPM varvräknare | RPM Counter med Arduino

Hej gott folk, jag skriver denna artikel för att dela mitt senaste projekt DIY RPM varvräknare eller du kan säga RPM counter. När du skapar ett projekt många gånger vi måste kontrollera varvtal och vi behöver RPM varvräknare som kan räkna runt Per mi...

Arduino-baserad optiska varvräknare

över tio år sedan, jag har lagt upp en webbsida med detaljerade instruktioner om att bygga en enkel elmotor baserat på en från den Beakman världen TV-show. Jag kallade det "Beakmans elmotor" sidan och under åren har det haft hundratusentals, om...

Uber Home Automation med Arduino & Pi

[REDIGERA] Jag skapade ett forum för att samarbeta på gateway kod.http://homeautomation.proboards.com/Board/2/openha...För några år sedan, blev jag en hundägare för första gången. Kändes inte som lämnar Cody i kenneln ensam hela dagen. Jag hade en we...

DIY cykel varvräknare

Jag kommer att visa dig hur man bygger en cykel hastighetsmätare. Det visar din hastighet,medelhastigheten, temperaturen, restid och det totala avståndet. Du kan ändra det med knappen. Dessutom visas hastigheten på en varvräknare. Jag byggde det efte...

Hur man öppnar en Honda CB/CX/GL stil varvräknare och hastighetsmätare

en dag medan ridning min 1981 Honda GL500 hade jag miss-lyckan av att ha skruvarna som håller ratten inför min varvräknare FN-tråd sig efter 29 år av vibrationer och orsaka ansiktet för att snurra runt fritt i fodralet. Tyvärr så är inte helt enkelt...

Hur man mäter AC nuvarande med Hall effekt Sensor med Arduino eller andra gemensamma Microcontrollers

Vänligen se ett nytt enklare tillvägagångssätt härMål: Detta Instructable visar hur att göra en gränssnittet box som, när skarvas i en förlängningssladd, tillåter gemensamma mikrokontroller som Arduino att mäta AC nuvarande som DC spänning signal pro...

AtoZ av RC hobby + DIY radio med ARDUINO

Wikipedia definierar RC-fordon somEn fjärrkontroll fordon är några fordon som kontrolleras distans ett sätt som inte begränsar sin rörelse med ett yttre ursprung till enheten. Detta är ofta en radio kontroll enhet, kabel mellan kontroll och fordon, e...

IoT vägguttag med Arduino och ESP8266

I detta instructable, jag visa dig hur du lägger till förbättrad tillgänglighet, intelligens och anslutning till ett vanligt vägguttag. Detta görs med en kombination av mikrokontroller, Arduino, olika sensorer, ESP8266 och en blandning av programvaru...

BLDC Motor Control med Arduino, bärgades HD motor och hallgivare

det finns ett stort intresse dessa dagar bland hobbyister kontrollera borstlösa DC (BLDC) motorer, som har bättre prestanda och bättre energieffektivitet övertraditionella DC-motorer, är men svårare att använda. Många off-the-shelf produkter finns fö...

Knappsats med Arduino utan med hjälp av knappsatsen bibliotek (första Tutorial)

Knappsats används vanligtvis i de flesta projekt så att kunden att ta itu med projekt som (realtidsklocka (RTC) justera dag, tid, åtkomstkontroll,... etc) men om du använder den med knappsatsen bibliotek för Arduino är det så lätt och inte bra så här...

PIR rörelsedetektor med Arduino: Drivs på lägsta energiläge som konsumtion

Denna video visar snabbt och lätt strategi för att minska energiförbrukningen för ATMEGA 328P baserade Arduino styrelser med cirka 70-75% med PIR eller PID sensorer för rörelsedetektering.Detta projekt införs efter saker-1) gränssnitt Pyroelectric/Pa...

Hard Drive varvräknare för en stationär dator

trött på den gamla tråkiga hårddisk indikatorn LED, en puney LED.Då är ett val att lägga till en HDD (hårddisk) varvräknare.Här tach visar aktivitetens HDD på en stationär dator. Inte för fordonsindustrin.Byggd med 555 och 4017 kombinationen. Men "In...

Hur man gör en elektronisk tärning med ARDUINO

Hey guys vi är tillbaka med en annan cool Arduino projekt för dig. I detta Instructable kommer jag visa dig hur man gör en elektronisk tärning med Arduino. Jag vet att du kommer att gilla den. Titta på videon.Steg 1: komponenter1. LED (7)2. IC 4017 (...

Bänk PSU strömförsörjning från gamla ATX med Arduino och LCD-skärm

Hej alla och Välkommen till min första Instructable.Jag har alltid velat en bänk PSU för enkel åtkomst till en strömkälla, och något som jag kan lita på när du arbetar med olika projekt. Jag ville ha ett NÄTAGG som:• ger 12v och 5v 3.3V utgångar• ger...

Billiga hinder sensor - med Arduino!

När jag började med arduino och elektronik, jag alltid velat göra saker på billigt sätt.Ingenting har förändrats.Steg 1: delar Behöver du:-Infraröd LED-Infraröd fotodiod-Arduino-Tråd av något slag-Eltejp, silvertejp, även Varmlimma!-Värme Krymp-Kansk...

Kontrollera allt och spara energi med Arduino

Jag använde detta för min egen mycket specifikt problem men det skulle kunna användas för någonting egentligen.Problemet:De flesta högtalare är inte smart, och så du måste stänga dem off manuellt, särskilt studio typ monitorhögtalare. På grund av det...