Stap 4: problemen
Probleem: Nou was mijn eerste poging een ramp. De temperaturen waren helemaal over de plaats en niet erg stabiel.
Solution1: Een van de problemen was dat ik was het voeden van de Arduino met 5V van de USB-poort van de computer via een hub met 4 poorten. Nou, deze spanning gemeten ongeveer 4.65V en gevarieerd alot. Dus ik een 5 voegde Volt regulator en condensatoren en een 6 Volt voeding. Zie schema.
Sommigen van u sharp-eyed lezers zal merken dat de voeding (zie afbeelding) wordt begroot op 6 VDC uitvoer en dat de 7805 regulator is opgegeven voor een minimum van 7 VDC. Nou, stak de meeste van deze voedingen eigenlijk in meer spanning dan tarieven. Met deze vastgehaakt, was de output 7.5VDC en de output van de regelgever was een consistente 5.1VDC uitvoer.
Solution2: De software die eerst schreef ik bemonsterd de temperatuur 10 keer, het gemiddeld dan output. Het herhaald dit elke minuut. Nou, besloten heb ik om een voortschrijdend gemiddelde. De manier waarop die dit werkt is dat het voortdurend monsters van de spanning en het gemiddelde van de laatste 25 monsters en het uitgangen.
Programmeurs: Ik heb een matrix met 25 element voor elke sensor en een verwijzing naar de matrix.
float TempArray [NUM_SAMPLES] [MAX_TEMPS];
byte ArrPtr = 0;
Ik lees in de graven voor elke sensor en opgeslagen in de opslaglocatie van de matrix waarnaar wordt verwezen door de ArrPtr.
Toen ik verhoogd de ArrPtr ++ en het proces herhaald. Als de ArrPtr = 25 dan is ingesteld op 0.
Elke array wordt opgeteld en gemiddeld door te delen door 25, dan dit gemiddelde graaf waarde wordt geconverteerd naar een temperatuur.
Dit is net als een low pass filter. De sensor is gemiddeld ongeveer 50 seconden. De temperatuur mag niet in die periode aanzienlijk veranderen.