-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: Einfache Zeitsteuerung / M-Unit

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.02.2006
    Ort
    Saarbruecken
    Alter
    55
    Beiträge
    22

    Einfache Zeitsteuerung / M-Unit

    Anzeige

    Hi @ all,

    Ich möchte eine Pumpensteuerung für einen Zimmerspringbrunnen (2 Pumpen) bauen.
    Über 4 versch. Taster soll der Modus ausgewählt werden.
    Taste 1 = Pumpe 1 soll 30 min laufen, dann 15 min Pause. Dann wieder von vorn beginnen.
    Taste 2 = Pumpe 2 soll 30 min laufen, dann 15 min Pause. Dann wieder von vorn beginnen.
    Taste 3 = Pumpe 1 soll 30 min laufen, dann Pumpe 2 für 30 min. Dann wieder von vorn beginnen.
    Taste 4 = Pumpe 1 und 2 sollen beide gleichzeitig 30 min laufen, dann 15 min Pause. Dann wieder von vorn beginnen.

    Für Pumpe 1 und 2 wurden die beiden Digitalports (Ausgänge) gewählt. Über einen Vorwiderstand soll ein Transistor jeweils ein Relais ansteuern.

    Für Taster 1 bis 4 wurden die Digitalports Ports 3 bis 6 gewählt. Alle haben einen 10k Pull up Widerstand, die Eingänge liegen also auf High und werden durch die Taster auf Low gezogen.

    Hier noch das Listing:

    '************************************************* *******************************
    '
    ' C-Control Basic pumpe.bas
    ' Aufgabe:
    '
    ' Taste 1 steuert Pumpe 1 für 30 min - dann 15 min Pause
    '
    ' Taste 2 steuert Pumpe 2 für 30 min - dann 15 min Pause
    '
    ' Taste 3 steuert Pumpe 1 dann Pumpe 2 mit den gleichen Zeiten
    '
    ' Taste 4 steuert Pumpe 1 und 2 gleichzeitig mit den gleichen Zeiten wie oben
    '
    '************************************************* *******************************
    ' ---------- Definitionen ----------
    '
    'Ausgänge
    define Pumpe1 port[1] 'ohne Pullup-Widerstand
    define Pumpe2 port[2] 'ohne Pullup-Widerstand
    '
    'Eingänge
    define Taster1 port[3] 'mit Pullup-Widerstand
    define Taster2 port[4] 'mit Pullup-Widerstand
    define Taster3 port[5] 'mit Pullup-Widerstand
    define Taster4 port[6] 'mit Pullup-Widerstand
    '
    '
    define Minuten Word
    define Anzeit 30 ' 30 min
    '
    ' ---------- Programmoperationen ----------
    Pumpe1 = off
    Pumpe2 = off
    Taster1 = on
    Taster2 = on
    Taster3 = on
    Taster4 = on

    if Taster1 = off then gosub Programm1
    if Taster2 = off then gosub Programm2
    if Taster3 = off then gosub Programm3
    if Taster4 = off then gosub Programm4

    #Programm1
    Pumpe2 = off
    Pumpe1 = on
    for Minuten = 1 to Anzeit
    next Minuten
    Pause 45000 ' 15 min Auszeit
    return


    #Programm2
    Pumpe1 = off
    Pumpe2 = on
    for Minuten = 1 to Anzeit
    next Minuten
    Pause 45000 ' 15 min Auszeit
    return

    #Programm3
    Pumpe1 = on
    Pumpe2 = off
    for Minuten = 1 to Anzeit
    next Minuten
    Pumpe1 = 0
    Pumpe2 = on
    for Minuten = 1 to Anzeit
    next Minuten
    return

    #Programm4
    Pumpe1 = on
    Pumpe2 = on
    for Minuten = 1 to Anzeit
    next Minuten
    Pause 45000 ' 15 min Auszeit
    return
    zugeschnitte Drähte sind immer zu kurz.
    Oszillatoren schwingen nie, Verstärker immer.

  2. #2
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    64
    Beiträge
    12.365
    Schönes Beispiel ich habe es jetzt nicht geprüft aber es sieht recht übersichtlich aus.
    Wenn damit keine Frage verbunden ist, dann könnte man ja darüberhinaus noch überlegen, ob man mit Spannungsteilern mehrere Tasten an einen A/D-Port bringt um auch noch eine Aus- Funktion zu realisieren.

    Ich will aber das sehr übersichtliche Beispiel damit nicht stören.
    Manfred

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.02.2006
    Ort
    Saarbruecken
    Alter
    55
    Beiträge
    22
    Hallo Manfred,
    sicher ging es um Fragen zu meinem Lsting, hatte ich nur vergessen zu schreiben.
    Es funktioniert nämlich nicht. Und ich kann den fehler einfach nicht finden. Da ich schon sehr lange nicht mehr mit der c-control gearbeitet habe, denke, das es nur eine Kleinigkeit im Programm sein kann. Vielleicht wirfst du mal einen Blick über den Quelltext.

    Grüße Michael
    zugeschnitte Drähte sind immer zu kurz.
    Oszillatoren schwingen nie, Verstärker immer.

  4. #4
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    64
    Beiträge
    12.365
    Wie sieht denn die Umgebung aus, hast Du es mit Trace getestet und dir in der (verkürzten) Warteschleife die entsprechenden Zustände ausgeben lassen?
    Kannst Du mit der HW die Steuereingänge ansprechen und auch ohne Pumpen (z.B. mit LED) die Funktion prüfen?
    Manfred

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    07.02.2006
    Ort
    Saarbruecken
    Alter
    55
    Beiträge
    22
    Hallo Manfred,

    ich habe die Ausgänge (Pumpen) durch LEDs ersetzt, die Eingänge (Taster habe ich provisorisch mit einer Drahtbrücke simuliert, die Platine auf dich ich die M-Unit draufgesetzt habe, hat nämlich Schraubklemmen. Ich arbeite mit der ccontrol Basic Version 1.33. Den Trace Befehl kenne ich nicht.
    Wird das compilierte Programm auf die M-Unit übertragen, dann der START-Jumper gesetzt, so leuchtet sofort die LED für Pumpe 1 ohne das ein Taster simuliert wird. Eigentlich reagiert die Schaltung auch garnicht auf simulierte Tastereingaben. Nach Ablauf der Zeit (habe die Zeit zum testen gekürzt) wechselt das Programm auf LED2 (Pumpe2), das Programm läuft also quasi ohne das irgendweine Taste gedrückt bzw. simuliert wird.

    Grüße Michael
    zugeschnitte Drähte sind immer zu kurz.
    Oszillatoren schwingen nie, Verstärker immer.

  6. #6
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    64
    Beiträge
    12.365
    Das Hauptprogramm soll natürlich für sich ablauffähig sein, es läuft nach der Abfrage der Taster in die Unterprogramme.
    Ein Loop zur Tastaturabfrage im Hauptprogramm wäre hier ein erster Schritt.
    ...
    Danach ist es sicher besser wenn das Program nicht im Unterprogramm wartet sondern von dort einen Wartezeitwert mitnimmt und das Warten wieder im Hauptprogramm durchführt wo es zur Not wieder ansprechbar ist.
    Manfred

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    07.02.2006
    Ort
    Saarbruecken
    Alter
    55
    Beiträge
    22
    Hallo Manfred,
    wie ich ja schon vorher in meinen Hinweisen geschrieben habe, bin ich nicht sonderlich fit mit dieser ccbasic-Software und deren Befehle. Ich dachte eigentlich eher, das jemand, der sich auskennt mein Listing kopiert und geändert bzw. verbessert erneut postet.

    Grüße Michael
    zugeschnitte Drähte sind immer zu kurz.
    Oszillatoren schwingen nie, Verstärker immer.

  8. #8
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    64
    Beiträge
    12.365
    Ich habe nichts dagegen wenn es jemand macht.

    Falls nicht, orientiere Dich an dem Beispiel hier mit dem
    http://www.roboternetz.de/phpBB2/vie...=197281#197281

    DO
    -
    if Taster1 = off then gosub Programm1
    if Taster2 = off then gosub Programm2
    if Taster3 = off then gosub Programm3
    if Taster4 = off then gosub Programm4
    -
    LOOP

    Damit das Hauptprogramm solange abfragt bis die Eingabe kommt.
    Manfred

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    07.02.2006
    Ort
    Saarbruecken
    Alter
    55
    Beiträge
    22
    Hallo Manfred,
    zuerst mal Danke für deine schnelle Antworten.
    Also vielleicht habe ich vergessen zu erwähnen, das ich noch eine ältere M-Unit besitze, der Beispiel-link bezieht sich auf eine M-Unit 2.0.
    Ich habe nun wie oben angegeben, die DO LOOP Schleife genau so in meinem Programm gesetzt. Beim compilieren bekomme ich aber dann die Fehlermeldung: undefiniertes Label LOOP.

    Grüße Michael
    zugeschnitte Drähte sind immer zu kurz.
    Oszillatoren schwingen nie, Verstärker immer.

  10. #10
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    64
    Beiträge
    12.365
    Dafür gibt es dann das (Label) an der Stelle des DO
    und das GOTO (Label) an der Stelle des LOOP.

    Am besten auch an einem Programm Beispiel heraussuchen. (für die Synatx)
    Manfred

    http://www.b-kainka.de/ccbsp.htm

    #Loop
    Einer = Hour mod 10
    Zehner = Hour / 10
    Daten1 = Zehner * 16 + Einer
    Einer = Minute mod 10
    Zehner = Minute / 10
    Daten2 = Zehner * 16 + Einer

    goto Loop

    end

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •