Stap 2: Code!
Ter verbetering van de nauwkeurigheid van de sensor van het bereik, zal de code berekenen wat de snelheid van het geluid is volgens de omgevingstemperatuur. De formule voor de snelheid van het geluid door lucht bij een bepaalde temperatuur is: Vair = (331.3 + 0.606 * Tc) m/s waar Vair is de snelheid van het geluid en Tc is de temperatuur in Celsius volgens http://en.wikipedia.org/wiki/Speed_of_sound. Zodra de snelheid van het geluid is berekend, wordt de afstand gemeten in andere bereik van de ultrasone sensor-codes is dezelfde manier. De tijd wordt vermenigvuldigd met de snelheid en dan gehalveerd zodat u met eenheden van afstand tot het object.
Als u van plan over het gebruik van dit bij extreme temperaturen, zorg om de temperatuursensor gegevensblad aangezien zij een aanbevolen temperatuurbereik zal geven. Soms de temperatuursensoren enkel fijn zal werken in een groot bereik maar moet u mogelijk de code een beetje te maken voor de variaties van de temperatuursensor output te wijzigen.
Ten slotte, zoals met al mijn code, ben ik met behulp van een eenvoudige foutopsporing truc mijn vriend heeft me geleerd. Met behulp van een Boolean-waarde en als verklaringen, u kunt gemakkelijk seriële communicatie inschakelen of uitschakelen door het veranderen van debug op true of false.
Ik aangesloten de oorspronkelijke codebestand, anders de code rechtstreeks vanuit hier kan worden gekopieerd:
/*******************************************************************************************************
********************************************************************************************************
Verbeterd bereik van de ultrasone Sensing gemaakt door Calvin Kielas-Jensen
Met behulp van een Arduino UNO, verbinden met een TMP36 temperatuur sensor data pin A0 en een 4 pin bereik van de ultrasone sensor met trig pin op digitale pin 8 en echo pin op digitale pin 9.
Dit script verbetert de nauwkeurigheid van een bereik van de ultrasone sensor door het meten van de omgevingstemperatuur. Geluid beweegt door middel van lucht bij een snelheid afhankelijk van de omgevingstemperatuur volgens de volgende vergelijking: Vair = (331.3 + 0.606 * Tc) m/s waar Vair is de snelheid van het geluid en Tc is de temperatuur in Celsius.
Iedereen is welkom om te gebruiken en deze code wijzigen zolang ik krediet gegeven ben. Dank u voor het respecteren van de open source-beweging!
******************************************************************************************************** *******************************************************************************************************/
De meerderheid van deze code is genomen en gewijzigd uit de ARDX temperatuur sensor code en de PING
sensor code.
int temperaturePin = A0; Stel de temperatuur pin input float temperatuur; Ingestelde temperatuur variabele
Booleaanse debug = true; Voor seriële communicatie set debug op true, sneller code debug op false ingesteld
lange duur, cm; Cm voor afstand sensing en tijd instellen
int trig = 10, echo = 9; Pinnen voor trig en echo instellen
VOID Setup {als (debug) {Serial.begin(9600);}}
void loop {temperatuur = (getVoltage(temperaturePin) - 0,5) * 100;
Als (debug) {Serial.println(temperature);}
Geef een korte lage puls vooraf om een schoon hoog puls: pinMode (trig, uitvoer); digitalWrite (trig, laag); delayMicroseconds(2); digitalWrite (trig, hoge); delayMicroseconds(5); digitalWrite (trig, laag); duur = pulseIn (echo, hoge);
cm = microsecondsToCentimeters (duur, temperatuur); Als (debug) {Serial.println(cm); Serial.println("cm"); } }
zweven getVoltage (int pin) {terugkeer (analogRead(pin) *. 004882814); //Converting van 0 tot 1024 op 0 tot 5v}
lang microsecondsToCentimeters (lange microseconden, lang temp) {terugkeer (microseconden * (331.3 + 0.606 * temp)) / 2; //Multiplying de snelheid van het geluid via een bepaalde temperatuur van de lucht door de //length van de tijd het neemt om het bereiken van het object en terug, gedeeld door 2}