Stap 4: Het aanmaken van de Code
Deze stap was veruit de meeste intensieve tijdgedeelte van dit project. Gelukkig voor u, heb ik het meeste werk al gedaan! In deze stap, zal ik proberen uit te leggen van de stromingsleer en de weg die ik nam te krijgen van spanning naar luchtvolumestroom met behulp van enkele relevante vergelijkingen. Ik heb ook mijn Arduino code als een PDF-document toegevoegd, dus voel je vrij om een kijkje nemen op die en het wijzigen van parameters als nodig zijn voor uw ontwerp.
1. converteren tussen digitale en analoge signalen:
Wanneer een analoog signaal (zoals de spanning geproduceerd door onze druksensor) wordt verwerkt door de Arduino, wordt het geconverteerd naar een digitale waarde tussen 0 en 1023. Onze eerste stap in de code na lezing van deze waarde is het weer converteren naar een analoge waarde. Hier is de bit code doen enkel dat:
inputVolt = analogRead(analogInPin); Spanning gelezen in (0 tot 1023)
volt = inputVolt*(vs/1023.0);
2. converteren van een spanning onder druk:
Het doel van de drukopnemer is om te schakelen van een drukverschil in een spanning, maar nu willen we om het drukverschil op basis van een bepaalde spanning. Het gegevensblad biedt een vergelijking om enkel dat te doen, en met sommige herschikken, de druk kan als volgt worden berekend:
pressure_psi = (15/2)*(volt-2.492669); Druk in psi
Je kan merken dat een waarde van 2.492669 wordt gebruikt in plaats van de 2.5 dat ik verwacht de sensor dat te produceren bij evenwicht. Ik vastbesloten deze nauwkeuriger waarde na een aantal kalibraties bleek dat de waarde van mijn evenwicht niet precies 2.5 V was. U wellicht aanpassen dit nummer op basis van uw eigen sensor van tendensen.
3. psi aan Pa
De vergelijking die is gegeven in de data sheet geeft ons de druk in de psi. Verdere berekeningen om gemakkelijker te maken, zullen we dit omzetten naar Pascals, oftewel de SI-eenheid voor druk.
pressure_pa = pressure_psi * 6894.75729; Druk in Pa
4. berekening van de massastroom van de druk
Deze volgende stap impliceert enige kennis van stromingsleer en creatieve algebra, maar uiteindelijk kun je converteren uw drukverschil in een massastroom. De follow-vergelijking kan worden herschikt om op te lossen voor W, de massastroom in kg/s:
dP=((W^2)/2rho)*(1/A2^2−1/A1^2)
Waar dP is de verandering van druk in de buis in Pa, W is de massastroom in kg/s, rho is de dichtheid van de lucht in kg/m ^ 3, en A1 en A2 zijn de gebieden van de doorsnede van de twee verschillende secties van uw buis in m ^ 2. Na opnieuw te rangschikken en met inbegrip van waarden voor rho, en de A1 en A2 voor mijn specifieke buis ontwerp, ik was in staat om te berekenen W met de volgende code:
massFlow = 1000*sqrt((abs(pressure_pa)*2*rho)/((1/(pow(area_2,2)))-(1/(pow(area_1,2))); Massastroom van de lucht
De syntaxis van Arduino maakt dit een beetje rommelig, dus zorg ervoor om te controleren uw haakjes. Ik omvatte ook een factor van 1000 dus dat in stap 5, we met L/s in plaats van m eindigen ^ 3/s, waardoor het volume in een standaard eenheid.
5. massastroom te volumestroom
Deze stap is vrij eenvoudig-we massastroom kunt omzetten in volumestroom door te delen door de dichtheid.
volFlow = massFlow/rho; Volumestroom van lucht
6. computing volume
Ten slotte hebben we bereikt dat een punt waar volume kan worden berekend. Aangezien Arduino niet over de mogelijkheid beschikt voor het uitvoeren van integralen, moeten we onze volumetrisch debiet handmatig optellen in de tijd. Aangezien het volumetrisch debiet is eenvoudig volume na verloop van tijd, kunnen wij het volumetrisch debiet samenvatten over kleine stukjes van tijd om te berekenen van de totale volume. Dit kan gebeuren met behulp van een vertraging in de Arduino en elke volumestroom tarief waarde door een kleine dt-waarde te vermenigvuldigen.
volume = volFlow * dt + volume; Totaalvolume (in wezen geïntegreerd na verloop van tijd)
DT = 0,001;
delay(1);
Dat is alle de wiskunde! De rest van de code is gewoon het opzetten van het LCD-scherm, variabelen definiëren en het instellen van de besturingselementen voor knoppen.
De als-instructie in de code zorgt ervoor dat het volume moet worden berekend, alleen wanneer de knop wordt geduwd. Deze functie voorkomt dat de berekening wordt beïnvloed door lawaai, en ook kan de gebruiker om aan te geven wanneer lucht eigenlijk door de buis stroomt.