SmartFarm: Unterschied zwischen den Versionen
Zeile 530: | Zeile 530: | ||
=== Türsteuerung === | === Türsteuerung === | ||
<div style="width:820px; height: | <div style="width:820px; height:1030px; overflow:auto; border: 1px solid #000"> | ||
<pre> | <pre> | ||
Zeile 539: | Zeile 539: | ||
// Zeiterfassung für die Türsteuerung (State Machine) | // Zeiterfassung für die Türsteuerung (State Machine) | ||
// ************************************************************ | // ************************************************************ | ||
bool stmZeitErfassungTuer(unsigned int nStunden); | bool stmZeitErfassungTuer(unsigned int nStunden); | ||
Zeile 552: | Zeile 549: | ||
// Türsteuerung Manuellen und Automatik-Betrieb (State Machine) | // Türsteuerung Manuellen und Automatik-Betrieb (State Machine) | ||
// ************************************************************************ | // ************************************************************************ | ||
int TuerBetrieb(bool bTuerBewegungAuto, bool bTouchTuer, int nAbstand, bool bKippschalter); | int TuerBetrieb(bool bTuerBewegungAuto, bool bTouchTuer, int nAbstand, bool bKippschalter); | ||
Version vom 8. Februar 2021, 19:53 Uhr
Autoren: Isaac Mpidi Bita, Dominik Hermelingmeier
Betreuer: Prof. Göbel
→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)
Einleitung
Diese Arbeit wurde im Rahme der Veranstaltung "Angewandte Elektronik" im Masterstudiengang "Business and Systems Engineering" (BSE/BaSE) angefertigt. Es werden folgende Ziele verfolgt:
- Auswertung von Sensorinformationen
- Ansteuerung von verschiedenen Sensoren und Aktuatoren
- Verarbeitung von Signalen im Rahmen der Mess- und Regelungstechnik mit einem Microcontroller
Die Veranstaltung wird mit einem mechatronischen Projekt begleitet, welches die folgenden Phasen beinhaltet:
- Projektplanung und Schaltungsentwurf
- Beschaffung der Bauteile und Materialien
- Entwicklung (z. B. Platinenlayout) und Fertigung mit anschließender Inbetriebnahme
- Projektdemonstration, -abnahme und -dokumentation
Heutzutage spielt das Konzept "SMART" eine wichtige Rolle in zahlreichen alltäglichen Bereichen. In der Landwirtschaft gewinnt der Einsatz moderner Techniken, genauer gesagt Informations- und Kommunikationssysteme, immer mehr an Bedeutung. Diese Revolution wird in dem Bereich als "Landwirtschaft 4.0" bezeichnet. Im Rahmen des Moduls "Angewandte Elektrotechnik" ist das Projekt SmartFarm entstanden.
Das Projekt "SmartFarm" verfolgt das Ziel, mit Sensorsystemen und Aktuatoren die Tierhaltung im Einklang mit den Tieren zu erleichtern und zu optimieren. Der Fokus liegt auf der einer Tür- und Helligkeitssteuerung in einem Hühnerstall. Zudem besteht die Möglichkeit, sowohl die Tür als auch die Lampe manuell anzusteuern. Das Projekt "SmartFarm" bietet viele weitere Erweiterungsmöglichkeiten, die im Ausblick eingegangen wird.
Ein geschlossener Stall schützt die Hühner über Nacht vor Raubtieren. Die Türsteuerung verschafft dem Tierhalter Unabhängigkeit und Flexibilität beim Öffnen und Schließen der Tür. Aus der Lampensteuerung resultiert eine erhöhte Legeleistung in der dunklen Jahreszeit durch einen künstlich verlängerten Tag.
Anforderungsmanement
Allgemeine Projektanforderungen
- Entwurf eines mechatronischen Systems für die Helligkeit- und Türsteuerung eines Hühnerstalls
- Erfassung der Helligkeit bzw. der Zeit für die Öffnung der Tür
- Erfassung der Helligkeit bzw. der Zeit für die Helligkeitsteuerung
- Erarbeiten einer alternativen Lösung für die manuelle Türsteuerung (unabhängig von der Helligkeit)
- Vorstellung und Erarbeiten eines Konzepts für eine geregelte Bewegung der Tür
- Erarbeitung einer Energieversorgungssystem für das System
- Softwareentwicklung nach HSHL Standard in SVN
Lastenheft
Detaillierte Anforderung werden in einer Lastenheft in Form eines Excel-Tabelle zusammengefasst. Diese gliedert sich in die folgenden Punkten entsprechend SysML-Standard:
- Projektziel
- Functional Requirements
- Physical Requirements
- Usability Requirements
- Business Requirements
- Performance Requirements
- Non-functional Requirements
- Extended Requirements
- Meilensteinen
ID | Typ (I = Info, A = Anforderung) | Kapitel | Inhalt | Ersteller | Datum |
---|---|---|---|---|---|
REQ-000 | I | 0 | Projektziel | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-001 | A | 0.1 | Mit Sensorsystemen und Aktuatoren die Tierhaltung im Einklang mit den Tieren erleichtern und optimieren. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-100 | I | 1 | Functional Requirements | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-110 | A | 1.1 | Ein mechatronisches System für die Helligkeit- und die Türsteuerung muss entworfen werden. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-140 | A | 1.3 | Der Zustand der Tür und der Lampe müssen nur an bestimmsten Zeiten im Automatik-Betrieb geändert werden. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-150 | A | 1.4 | Die Tür muss bei ausreichende Außenhelligkeit aufgehen, andersfalls muss es zu sein. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-200 | I | 2 | Physical Requirements | I. Mpidi Bita & D. Hermelingmeier | 02.05.2020 |
REQ-210 | A | 2.1 | Ein Gehäusekonzept muss erarbeitet werden. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-210 | A | 2.2 | Der ausgewählte Motor muss die Tür heben können. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-230 | A | 2.3 | Die Masse der Tür muss auf keinen Fall ein Wert von 5 Kg überschreiten. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-240 | A | 2.4 | Die Länge des Seils muss eine komplette Öffnung bzw. Schließung der Tür ermöglichen | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-250 | A | 2.5 | Die Zugfestigkeit des Seils muss dem Heben und Senken der Holztür standhalten. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-300 | I | 3 | Usability Requirements | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-310 | A | 3.1 | Eine alternative Lösung zur manuelle Ansteuerung muss angeboten werden. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-311 | A | 3.1 | Es muss eine Möglichkeit bestehen, jeder Zeit die Tür zu öffnen bzw. zu schließen. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-312 | A | 3.2 | Es muss eine Möglichkeit bestehen, jeder Zeit die Beleuchtung an- bzw. auszuschalten. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020
|
REQ-400 | I | 4 | Business Requirements | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-500 | I | 5 | Performance Requirement | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-520 | A | 5.2 | Der Motor darf sich maximal mit einer Geschwindigkeit von 9 RPM drehen. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-600 | I | 6 | Non functional Requirement | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-610 | A | 6.1 | Toolanforderungen | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-611 | A | 6.1.1 | Das Projekt geht bei der Entwicklung nach dem V-Modell vor. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-613 | A | 6.1.3 | Als Versionsverwaltungstool wird SVN oder Git eingesetzt. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-620 | A | 6.2 | Qualitätsicherung | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-620 | A | 6.2 | Sowohl für die implementierte Software als auch für die Modelle müssen
geeignete Tests erstellt werden:
|
I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-700 | I | 7 | Extended Requirement | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-720 | A | 7.2 | Die echte Uhrzeit muss für den Ansteuerung erfasst werden. | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-800 | I | 7 | Meilensteine | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
REQ-810 | A | 8.1 | Erstellung des Lastenhefts | I. Mpidi Bita & D. Hermelingmeier | 05.05.2020 |
044 | A | 4.2 | Funktionaler und technischer Systemplan | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
045 | A | 4.3 | Komponentenspezifikationen | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
046 | A | 4.4 | Simulink/Modell und MATLAB-Parameterdatei und C++-Code | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
047 | A | 4.5 | Komponentetest in der Form eines Unittestberichts | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
048 | A | 4.6 | Integrationstest in der Form eines Modultestberichts | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
049 | A | 4.7 | Systemtest in der Form eines Systemtestberichts | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
049 | A | 4.7 | Abnahmetest in der Form eines Wiki-Artikels | I. Mpidi Bita & D. Hermelingmeier | 20.10.2020 |
Tab.1: Auszug aus dem Lastenheft
Funktionaler Systementwurf
Gesamtsystem
FE-Software
FE-Hardware
Eingabe:
- Helligkeitssensor: Helligkeitsaufnahme
- Touch-Sensor: Manuelle Ansteuerung der Tür und der Lampe
- Ultraschallsensor: Regelung der Türgeschwindigkeit
Mikrocontroller: Systemsteuereinheit
Ausgabe:
- UV-Lampe: Erzeugt künstliches Tageslicht im Stall
- Türsteuerung: Ein Motor öffnet oder schließt die Tür
Stückliste
Technischer Systementwurf
TE-Software
TE-Hardware
Komponentenspezifikation
Softwarespezifikationen
Betriebsmodis - Stallsystem
Tageslichtabfrage mit Hysterese
Spezifikation der Türsteuerung
Türstatus - Manuell-Betrieb
Türstatus - Automatikbetrieb
Zeiterfassung für die Türsteuerung
Spezifikation der Lampensteuerung
Lampenstatus - Manuell-Betrieb
Lampenstatus - Automatikbetrieb
Zeiterfassung für die Helligkeitssteuerung
Implementierung
Programmablaufplan
Türsteuerung im Automatik-Betrieb
Helligkeitssteuerung im Automatik-Betrieb
Modellierung und Simulation des Stall-Systems in MATLAB-Simulink
Implementierung des Stall-Systems in C/C++
Bibliotheken-Einbindung und Variablen definition
// ******************************************************************************************** // Bibliotheken einbinden // ******************************************************************************************** #include "Parameter.h" #include "Sensor_Signalaufbereitung.h" #include "Tuersteuerung.h" #include "Helligkeitssteuerung.h" #include "Aktuator_Signalausgabe.h" #include "Wire.h" // ******************************************************************************************** // Variablen Definition // ******************************************************************************************** hSENSOR_SIGNAL SenSig; hAKTUATOR_AUSGABE AktSig; hHELLIGKEITSSTEUERUNG Helligkeitssteuerung; hTUERSTEUERUNG Tuersteuerung;
Main-Funktion
//********************************************************************************************* // SETUP-Funktion: // the setup function runs once when you press reset or power the board //********************************************************************************************* void setup(){ Serial.begin(9600); Wire.begin(); } //********************************************************************************************* // LOOP-Funktion: // the loop function runs over and over again forever //********************************************************************************************* void loop(){ // ************************************************************* // Start - Helligkeitssteuerung Helligkeitssteuerung.StartHS(SenSig, AktSig); // ************************************************************* // ************************************************************* // Start - Helligkeitssteuerung Tuersteuerung.StartTS(SenSig, AktSig); // ************************************************************* Serial.println(' '); }
Türsteuerung
class hTUERSTEUERUNG { private: // ************************************************************ // Zeiterfassung für die Türsteuerung (State Machine) // ************************************************************ bool stmZeitErfassungTuer(unsigned int nStunden); // ************************************************************ // Entscheidung Türbewegung im Automatik-Betrieb // ************************************************************************ int Entscheidung_Tuerbewegung_Automatik(bool bTuerFlag, bool bHelligkeitszustand); // ************************************************************************ // Türsteuerung Manuellen und Automatik-Betrieb (State Machine) // ************************************************************************ int TuerBetrieb(bool bTuerBewegungAuto, bool bTouchTuer, int nAbstand, bool bKippschalter); // ************************************************************************ public: hTUERSTEUERUNG() { // Zeiterfassung für die Türsteuerung (State Machine) ZustandZeiterfassung = S1_KEINE_TUERSTEUERUNG_MOEGLICH_S1; bTuerFlag = TUER_FLAG_AUS; // Türsteuerung Manuellen und Automatik-Betrieb (State Machine) ZustandTuerBetrieb = S2_AUTOMATIK_BETRIEB_TUERSTEUERUNG; ZustandTuerManuelinnen = S0_NEUTRAL; ZustandTuerAutomatikinnen = S0_NEUTRAL; bMotor = STOPP; bMotorrichtung = NACH_UNTEN; bTuerZustand = CLOSE; }; // ************************************************************************ // Abfrage Türzustand // ************************************************************************ int getTuerZustand(); // ************************************************************************ // Abfrage Betrieb // ************************************************************************ // bool getTuerBetrieb(); // ************************************************************************ // Start-Funktion // ************************************************************************ void StartTS(hSENSOR_SIGNAL &SenSig, hAKTUATOR_AUSGABE &AktSig); // ************************************************************************ };
Helligkeitssteurung
Sensor-Signalaufbereitung
Aktuator-Signalausgabe
Testphase
Ergebnis
Zusammenfassung
Lessons Learned
Projektunterlagen
Projektplan
Projektdurchführung
YouTube Video
Ausblick
Weblinks
Literatur
→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)