Stap 5: Controlesysteem
·
Blokdiagram
Met betrekking tot het blokdiagram, dit project werd oorspronkelijk geconceptualiseerd als een float gecontroleerd bal valve Schakelactor gebruikt uitlekken en laten vullen een langzaam vullen reservoir gelijkaardig aan vele projecten in mijn lab. De Arduino ingangssignalen ontvangt drie zweven schakelaars, beoordeelt hun combinatie, bepaalt de vereiste status van de klep, en draait de servo en geeft de status van de klep op het LCD-display. De hele bedieningscircuit wordt aangedreven door een externe 6.0VDC NiMH-batterij.
· Bedrading
Raadpleeg het diagram Fritzing en de foto's van de bedrading. Om samen te vatten de bedrading, een 6.0VDC NiMH-batterij (vertegenwoordigd door de AA-batterij in het diagram) bevoegdheden de Arduino, servo en LCD display via één van de macht rails op het bord brood. De Arduino Vin grond pinnen zijn aangesloten op de macht en gemalen rails respectievelijk (deze vermengen zal vernietigen de Arduino). De Arduino is ook aangesloten op: 3 zweven schakelaars (vertegenwoordigd door de tilt switches in het diagram) op digitale (input) pin 2, 3 en 4; de draad van het signaal van de servo op PWM pin 9; en op de SDA en SCL pinnen van het LCD-scherm weer te geven van haar een SDA en SCL pinnen.
Ik geboord acht kleine gaatjes in het deksel van mijn behuizing en warm sommige vrouw-vrouw jumper er in gelijmd, zodat de gebruiker uit zweven schakelaars wijzigen kan zonder dat om het even wat worden ontleed. Ik had enkele mannelijke jumper tips soldeer aan mijn float switches kan inpluggen en ze los te koppelen in het vak een module. Ik wilde in deze iteratie, houd de batterij externe voor opladen en veiligheid doeleinden. Het is eenvoudig gehouden met klittenband aan één van de haakjes. Het bevoegdheden het systeem vergelijkbaar met de vlotter schakelaars, door inpluggen in- en externe jumper gelijmd in de deksel van de behuizing.
· Code
Om samen te vatten de Arduino-code, het bestaat uit een belangrijkste script en slechts drie eenvoudige functies aanroept. Het hoofdscript: invoer bibliotheken wire.h, LiquidCrystal_I2C.h en servo.h, en een instantie van hun objecten; pin 2, 3 en 4 wordt gedefinieerd als digitale input pinnen met die zin de staat van de vlotter schakelaars; Pin 9 definieert als een PWM-uitgang pins gebruikt door de servo-object; Hiermee definieert u variabelen om te houden van de Staten van de vlotter schakelaars, servo-object min. en max PWM frequenties (0 en 1023) overeen moeten komen met de open en gesloten posities, een toewijzing variabele die als de enige variabele die u wijzigen dienen wilt om de juiste mate van beurt voor uw servo, en sommige tekenreeksen voor het LCD-scherm weer te geven; met deze opdracht start de hoofdlus, die verzoekt de drie functies levelSense, servoPosition en displayThis en vervolgens vertragingen voor 100ms. de staat van de vlotter schakelaars attributen levelSense gewoon door digitaal lezen aan hun respectieve geheelvariabelen. servoPosition analoge schrijft de toegewezen "open" frequentie met de servo tegen pin 9 wanneer alle drie zweven schakelaars worden opgeheven en sets de LCD char variabele naar een tekenreeks "OPEN". Wanneer de vlotter schakelaars alle zijn gedaald, Pin 9 analoge schrijft de toegewezen "gesloten" frequentie naar de servo en de LCD display variabele wordt gewijzigd in "Gesloten." Als de middelste pin (3) ooit synchroon met de hoge (4) en lage (2) pinnen is de klep wordt "gesloten" en de LCD-variabele wordt gewijzigd in "Error." Ten slotte is diplayThis een twee lijn-functie die die gebruikmaakt van het LCD-scherm object weer te geven van de huidige char variabele op de onderste rij van de LCD display weergegeven.