Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: gleichstrommotorantsteuerung Kategorie: C-Control I V1.1 (von Achim - 29.10.2006 16:26)
 Als Antwort auf gleichstrommotorantsteuerung von mark - 29.10.2006 12:38
Achim nutzt:  CC1-Station V1.1
> hi, ich möchte für ein schulprojekt(ballabschussgerät) einen motor ansteuern, welcher mir eine Ballnachführung regelt. Das heißt, der Motor ist so lange ein, bis ein endschalter nicht gedrückt ist.

Ist der Endschalter, wenn er gedrückt wird "ein" oder "aus"? Ich vermute mal, Du vermutest "ein", richtig? Hast Du das mal mit einem kleinen testprogramm überprüft? Das hängt nämlich von der Beschaltung ab. Wenn Du einen Schließer gegen Masse hast, wie bei der CC wegen interner Pull-Ups üblich, ist es nämlich genau umgekehrt: Gedrückt liest Du am Port 0 (Off) und losgelassen -1 (On)

> Wird dieser gedrückt, wartet der Motor eine bestimmte Zeit (pause) und setzt sich dann wieder in Bewegung. Durch die pause ist die Ballfolge variable.
> Außerdem muss der Motor am Anfang immer vom gedrückten Schalter aus starten(jetzt muss der Motor bei Schalter 1 nicht warten sonder wegstarten)

"Am Anfang" interpretiere ich als "beim allerersten Start und nur dann", richtig?
Also zeitlich gesehen andersherum, oder?

Am Anfang ist der Schalter aus und der Motor aus.
Der Motor bleibt aus, bis der Schalter (manuell?) auf "ein" geht.
Ab dann läuft folgender Zyklus:
1) Der Motor läuft, bis der Endschalter auf "ein" geht.
2) Dann wartet er eine pause und läuft dann weiter, unabhängig davon, ob der Endschalter ein oder aus ist?
3) Zyklus von vorne?

Aber dann kann es doch passieren, dass eine millionstel Sekunde, nachdem die pause vorbei und der Motor wieder an ist, der Endschalter immer noch auf "ein" ist, dann zieht regel 1) und der Motor hat sich so gut wie nicht fortbewegt - ad infinitum.

Oder wer garantiert, dass der Motor nur eingeschaltet wird, wenn der Endschalter nicht gedrückt ist? Beim allerersten Start ist er doch im Gegenteil sogar garantiert gedrückt!

> und am Schluss auch dort wieder stehen bleiben.

Was bedeutet "am Schluss".

> Ich habe schon mehrere Lösungsansätze geschrieben, doch keine Funktioniert.

Nun, "funktioniert nicht" eine denkbar grausame Fehlerbeschreibung, für jemanden, der Dir helfen will. Lässt es sich nicht compilieren? --> Fehlermeldung des Compilers bitte
Tut es nicht, was es soll? --> An welcher Stelle obiger Beschreibung tut es was statt des erwarteten?

> Könnte mir wer bitte einen Lösungsvorschlag schreiben?
> wenn etwas zu ungenau erklärt ist, einfach fragen
>
> so in der art müsste das Programm ablaufen:
> define schalter port[1]
> define ballmotor port[2]
>
>
> #loop1
> #anfang
> if schalter = 1 then goto warten

Die Werte von 1-Bit-Ports sind nie 1, sondern OFF (Basic-Konstante für 0) und ON (Basic-Konstante für -1) wie Manfred schon schrieb. Braucht man aber hier gar nicht, sondern
if schalter then goto warten
geht auch.

> goto loop1

Da Du den wait-Befehl kennst, würde ich hier aber statt der Schleife und dem if einfach
wait schalter
schreiben, das ist klarer. (Aber nur, wenn der bei gedrückt wirklich ON anzeigt (siehe oben), sonst natürlich
wait not schalter

>
> #loop
> #warten
> ballmotor = 1
> wait schalter
> if schalter = 1 then ballmotor = 0

Siehe oben:
Erst machst Du den Motor an und prüfst einen Bruchteil später, ob der Schalter an ist. Beim allerersten Start hast Du aber mit dem Anmachen gewartet, bis der Schalter an ist. Dann wette ich mal, bevor der Motor sich einen Millimeter bewegt hat, ist er auch schon wieder aus, weil der Schalter keine Zeit hatte, aus zu gehen.

Zwotens:
Nach
wait schalter
geht es dann weiter, wenn der Schalter an ist, richtig?
Was soll denn dann das nachfolgende
if schalter=1?
Das ist doch dann immer true.

> pause 50
> goto loop

Aaaalso, mal angenommen, Deine Schalterlogik stimmt und "gedrückt" heißt ON (was Du bitte noch verifizierst), und angenommen, Deine Höllenmaschine funktioniert so, dass der Endschalter nach einer gewissen Zeit des Laufens des Motos auf OFF geht, und dass der Motor danach noch solange laufen soll, bis der Schalte wieder auf ON geht, dann würde ich das so schreiben.

#anfang
wait schalter ' warten, bis erstmals Endschalter gedrückt

#loop
ballmotor = ON ' Maschine läuft, alle Mann in Deckung
wait not schalter ' warten, bis der Motor den Endschalter frei gemacht hat
wait schalter ' warten, bis der Ball? den Endschalter wieder betätigt
ballmotor = OFF ' Anhalten
pause 50
goto loop


Aber was schreibe ich mir die Finger wund, das steht ja auch alles schon so auf Manfred Homepage ... <SCNR>

HTH

Bye
 Achim

 Antwort schreiben

Bisherige Antworten: