INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Mit Arduino Pooldeck öffnen
09.05.2019, 12:23
Beitrag #1
Mit Arduino Pooldeck öffnen
Hallo,

ich hoffe ich bin hier richtig und ihr könnt mir weiterhelfen.
Folgende Situation: Bei einem eingelassenen Pool soll sich das Verdeck per Fingerabdruckscanner öffnen. Wenn sich das Verdeck durch einen 24V Gleichstrommotor öffnet, wird über einen ACS724 20A Sensor die Stromstärke gemessen. Geht diese nach oben, weil das Verdeck den Endanschlag erreicht hat oder weil jemand eingeklemmt wird, soll das Verdeck abschalten, und sich beim erneuten Scannen des Fingers wieder schließen.
Da ich an meinen Schreibtisch diesen Motor nicht betreiben kann, habe ich mir eine Autobatterie und einen Wischermotor organisiert, womit ich das simuliere. Ein Taster auf dem Steckbrett simuliert den Fingerabdruckscanner. Ich habe die Kabel mittels Relais so gelegt, dass durch das betätigen des Tasters die Drehrichtung des Wischermotors geändert wird.
Wenn ich mir von dem ACS724 die Amperezahl ausgeben lassen möchte, kommen nie die wahren Ampere raus, trotz unzähliger YouTube-Tutorials.
Dennoch lässt sich, wenn der Motor frei dreht, ein stabiler Wert auslesen. Wenn ich ihn versuche festzuhalten, geht dieser Wert nach oben. Jedoch Schaltet der Motor nicht ab. Kann mir jemand sagen warum?
Ein weiteres Problem ist, dass beim Anfahren der Strom auch kurzzeitig sehr hoch ist, diese Spitze darf jedoch nicht beachtet werden; wie mache ich das?
Und wie hinterlege ich, dass wenn der Wischermotor dann durch festhalten seinen "Endanschlag" erreicht hat, sich dieser durch erneutes drücken des Tasters (--> Fingerabdruckscanner) andersrum dreht (um das Verdeck zu schließen)?

Ich hoffe das war halbwegs verständlich und ich bedanke mich schon im Vorfeld für eure Mühe!

Beste Grüße
Toughkix


Code:
// feste Variablen
const int Knopf = 12;
const int SRD = 11;
const int AnAus = 10;
const int ACS = A4;

//variable Variablen
int zaehler = 0;
int Knopf_Status = 0;
int Knopf_letzter_Status = 0;

//ACS
#define ACS A3
float sensitivity = 0.1;
float vpp = 0.0048828125;

bool geschaltet = false;      // geschaltet dient zur Speicherung des Schaltzustandes
int empfindlichkeit = 5;    // empfindlichkeit speichert wie oft der Taster abgefragt wird

void setup()
{
  pinMode (Knopf, INPUT_PULLUP);         //simuliertFingerabdruckscanner
  pinMode (SRD, OUTPUT);          //Relais (drehrichtung)
  pinMode (AnAus, OUTPUT);        //Relais (Motor an/aus)
  pinMode (ACS, INPUT);           //Hall_sonde
  Serial.begin(9600);
}


void loop()
{
  if (digitalRead(Knopf) == LOW)  // Abfrage ob der Taster gedrückt ist  
  {
    if (geschaltet == false) {        // Abfrage ob der unser logischer Schalter aus ist
      geschaltet = true;              // sollte er aus sein, setzen wir geschaltet auf true
    }
    else {
      geschaltet = false;             // sollte der an sein, setzen wir geschaltet auf false
    }
  }

  if (geschaltet == true) {           // sollte der Schalter an sein, schalten wir die LED ein
    digitalWrite(SRD, HIGH);      
  }

  if (geschaltet == false) {          // sollte der Schalter aus sein, sollte der Schalter aus
    digitalWrite(SRD, LOW);
  }
  delay(empfindlichkeit);

  
  //Auslesen Stromstärke
  int RawValue = analogRead(ACS);
  //float Volt = RawValue * vpp;
  //Volt -= 2.5;
  //float Ampere = Volt / sensitivity;
  Serial.println(RawValue);
  
  //Motor abschalten
  if(RawValue <= 400)
  {
    digitalWrite (AnAus, HIGH);
  }
  if(RawValue > 400)
  {
    digitalWrite(AnAus, LOW);
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.05.2019, 13:05 (Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2019 13:06 von MicroBahner.)
Beitrag #2
RE: Mit Arduino Pooldeck öffnen
Sowas lässt sich mit einem 'endlichen Automaten' lösen. Das ist sozusagen das schweizer Taschenmesser für Steuerungsuafgaben.
Du musst dir überlegen, in welchen Zuständen dein System sein kann. Z.B.
-Ruhezustand
-erstes Anfahren
-normale Bewegung
-Überstrom erkannt
...

Und dann musst Du noch die Ereignisse festlegen, durch die ein Zustandswechsel zustande kommt. Das können externe Signale, oder der Ablauf von Zeitüberwachungen sein. Z.B.
-im Ruhezustand: Taster gedrückt -> Motor starten und in 'Zustand erstes Anfahren' wechseln.
-im 'erstes Anfahen' : Zeit überwachen ( Anlaufstrom ), Wenn abgelaufen -> normale Bewegung
im 'normale Bewegung': Strom überwachen. Wenn zu hoch, Motor stopp -> Überstrom erkannt
u.s.w.

Du musst Dir dann alle Abläufe und die möglichen Situationen überlegen.
Dann kann man das z.B. mit der 'switch'-Anweisung in Code übersetzen.
Wichtig ist, sich erstmal die Äbläufe klarzumachen, bevor man mit dem Codieren beginnt.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino Neuling: Zugeklappten Laptop mit Arduino aufwecken + Kiste aufklappen? Ikearegal 2 8.809 02.02.2014 07:59
Letzter Beitrag: Ikearegal
  Tor öffnen manuwestern 1 5.113 13.08.2013 11:57
Letzter Beitrag: citsin

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste