Stap 1: Code
Algemeen overzicht
De code die ik heb verstrekt is gebaseerd off van de eerdere projecten. Je misschien hebt gemerkt zijn er twee lus structuren. Het eerste is wat ik noem de "gegevenslus Aquistion" , die in wezen gegevens van de chipKIT zo snel leest als het kan. De tweede lus ik noemen de "berekeningen Loop". Deze lus behandelt alle berekeningen die we willen doen met de gegevens. De reden dat ik scheiden de gegevensbewerkingen van de overname van de gegevensberekeningen is ter bevordering van de prestaties. LabVIEW is slim genoeg om te compileren van de code in elke lus, dus het op een aparte kern van uw processor draaien zal.
Om de overdracht van gegevens tussen de twee lussen, gebruik ik een lokale variabele. Elke keer dat de lus van de berekening een iteratie uitgevoerd, leest het gegevens van de variabele "XYZ gekalibreerd waarden" .
Voor dit specifieke project heb ik ook twee gegevens percelen. Één geeft de ruwe gegevens, terwijl de andere de gefilterde gegevens worden weergegeven. De percelen zijn een goed hulpmiddel om te bepalen hoe effectief onze filtering is. Helaas bug de gegevens percelen uit als de berekeningen lus te snel itereert. Dus moet een vertraging worden opgenomen om de lus rate cap.
SubVI overzicht filteren
Al de filtering in dit project is gedaan in een aangepaste subVI. Deze subVI zorgt u ervoor dat de code netjes en begrijpelijk. Er zijn twee soorten filteren testmethoden binnen de subVI. De eerste is eenvoudige Middelingstijd, en de tweede is Low Pass Butterworth filter. Elke Filtering-methode heeft een selectie aan/uit schakelen. Wanneer de schakelaar ingeschakeld is, spuugt het de gefilterde gegevens. Wanneer de schakelaar uitstaat, spuugt het de ruwe ongefilterde gegevens.
Filteren met behulp van de gemiddelden
Als u uit het vorige project herinneren, zou de ruwe data input zo snel dat het was moeilijk om te lezen bijgewerkt. Om dit tegen te gaan, wij willen gemiddelde (neem het gemiddelde) van een paar gegevenspunten en die waarde wordt weergegeven. Als we het juiste aantal gegevenspunten gemiddeld, zullen de gegevens worden weergegeven in een leesbare tempo. Hiervoor gebruikte ik de "betekent PtByPt.vi". Hier is wat meer info over het als je nieuwsgierig bent over hoe het werkt.
Filteren met behulp van een Lowpass filter
Een ander probleem, u kan hebben ondervonden in de vorige instructable is de grillige jumpiness van de gegevens. Dit kan te wijten zijn aan externe trillingen of de aarzeling van uw hand. U kunt een Low-pass filter gebruiken om zich te ontdoen van deze. Voornamelijk het low-pass filter glad van uit de plotselinge sprongen tussen de gegevenspunten. Het bijzondere lowpass filter dat heb ik in dit project gebruikt is de "Butterworth Filter PtByPt.vi". Bent u nieuwsgierig hoe deze .vi werkt, Bekijk de documentatie. Merk op dat deze VI kan worden geconfigureerd om te fungeren als 4 verschillende soorten filters (lage frequentie doorlaten, hoge frequentie doorlaten, Bandpass of Bandstop). Wij zijn alleen betrokken met lage frequentie doorlaten filtering, vandaar de "hoog cuttof freq: fh" terminal wordt los gelaten.