CO2 Laser vatten flöde Monitor - Arduino Powered / Windows kontrollerade (5 / 7 steg)
Steg 5: Programmet Arudino...
Du kan nu stänga upp rutan när som helst men det kan vara lättare att felsöka problem om du först programmera Arduino. Skissen är fäst som CO2WaterFlowMonitor.ino.
Öppna CO2WaterFlowMonitor.ino genom att använda Arduino kompilatorn, bifoga USB-porten till datorn och tryck på knappen Ladda upp i programvaran Arduino. Det är allt som finns att det - om du vill lära dig hur det fungerar...
Grunderna
Första, vi vill hålla det så enkelt som möjligt. Vi visar vad varje stift gör överst på skissen med ett makro. EEPROM.h-huvud används för våra EEPROM inställningen av flödet. Detta innebär att makt kan gå på och av men inställningen inte.
Läsa vattnet flödessensorn
Vi kommer använda den Arduino avbrott 0 för att räkna pulser från flödessensorn vatten. För att göra det vi först installera ett par globala variabler och skapa en mycket grundläggande avbryta tjänsten rutin (ISR) som stöter g_uiFlowDetect varje gång en puls från flödessensorn vatten upptäcks.
Setup
Varje Arduino skiss har en setup. I vår, kommer vi att...
-Ställ in varje stift på rätt...
-Setup seriell utgång som Windows-programvaran kommer att läsa och skicka våra första meddelande till det...
-Stäng av (COM att NC1) varje relä och sedan tystnaden summern (linje 55)...
-Bifoga vår ISR (Flow upptäcka) för att avbryta 0 (PIN 2), och inaktivera tillfälligt avbrott...
-Läsa larm tröskeln från EEPROM, eller "bränna den" i om man inte var där...
Nästa kommer stora slingan att användas att upptäcka och utgång (till USB-seriell port) av flöde, som och tydliga larm när sjunker under tröskeln och accepterar indata för att ändra tröskeln från Windows-programvaran. För att åstadkomma detta införs följande hjälpare funktioner...
UpdateThreshold
Denna funktion används för att lagra nya tröskelvärdet i EEPROM och skicka ett meddelande om ändringen till Windows-programvaran.
Kommunicera med Windows programvaran via WriteOutput och upptäcka lasereffekt
Funktionen skickar statusuppdateringar till Windows-programvaran. Formatet är korta och enkla. Om raden börjar med en asterisk innebär det att ett larm kommer att tystas eftersom laser power är inaktiverad. Efter laser power upptäckt genom att läsa PIN 8, skicka vi det aktuella flödet ett snedstreck och sedan det nuvarande tröskelvärdet för larm. Dessa siffror är i kvartalet-sekunder.
Main-Loop - fånga den flödar som väntan på input från Windows-programvaran
På toppen av huvudloop rensas flödet klassar variabeln (medan avbrott är inaktiverat). Avbryter är då aktiverad och en 1/4 sekund vänta är angiven för seriell in från USB-porten (skickas via Windows-programvaran). Under den 250 millisekunden "vänta", alla pulser från pulssensorn vatten flödet ökar värdet för räknaren flödet klassar genom att åberopa ISR.
På linje 117 kontrollera vi om Windows-programvaran skickas ett nytt tröskelvärde (en enda bytevärde med den nya tröskeln). Om det gjorde det, sätts bRC till 1 (för en byte). I så fall UpdateThreshold() anropas och slingan startas. Detta håller oss från signalering ett larm på grund av avbruten 250 ms. väntan.
Ställa in och rensa larmet
I den sista halvan av huvudloop tröskeln är jämfört med flödet och när det faller under kursen för att 1/4 sekund, är larmet och reläet kopplas...
På linje 131 testa vi om flödet är mindre än tröskeln. Om det är kontrollera vi om lasersystem är makt, genom att testa ENABLE_ALARM_PIN (linje 134). Om alarmet är aktiverat, summern ljuder (linje 136), annars (linje 140) det är tystade.
Linjerna 142 genom 145 orsaka varje relä att ansluta COM till NC1 (normalt sluten). Detta inaktivera laser. En rad 146 status skickas till Windows-programvaran och sedan på linje 147 loopen återanvänder.
När alarmet inte utlöses koden faller genom att line 149 där summern tystnat och varje relä slås för att ansluta COM till ingen (normalt öppen), aktivera lasern. På linje 154 slutar till sist öglan genom att skicka status till Windows-programvaran.