Forum: Mikrocontroller und Digitale Elektronik Uhrwerk ansteuern Bascom


von Andrzej M. (durasmart)


Lesenswert?

Hallo Leute,

ich habe ein Mega Problem.
Ich habe hier alte Uhren rumliegen mit "Schrittmotoren" ( heißt diese 
müssen um einen Takt zu machen, immer umgepolt werden)
Damit das ganze auch sinn macht, diese logisch anzusteuern, haben die 
auch eine Lichtschranke verbaut. (Die Zahnräder des Uhrwerks haben 
unterschiedlich breite Stege, somit kann ist zu unterschiedlichen 
stellungen die Lichtschranke länger oder dementsprechend kürzer 
unterbrochen.

Die Funktion der Uhr sollte folgender maßen sein:

Man lege die Batterie ein, der Sekundenzeiger läuft los im schnellgang 
und die Lichtschranke ist eingeschalten und erfasst eine große Pause von 
ca. 500ms, dann sollte der Sekundenzeiger die letzten Schritte bis zur 
12 Uhr position noch im langsameren Gang machen.
Steht der Sekundenzeiger läuft automatisch der Minuten/Stundenzeiger los 
und dieser bewirkt 3 große Zeiten bei der Lichtschranke.
5 sekunden, 10 sekunden und 15 sekunden, nach den 15 sekunden wird mit 
einer bestimmten anzahl schritten, die 12 Uhr position dann auch 
erreicht.

Das habe ich soweit auch Programmiert bekommen in Bascom, jedoch bin ich 
immer davon ausgegangen, wenn die Zeiger alle auf der 12 Uhr position 
schon stehen. Stelle ich jetzt die Zeiger unterschiedlich ein, und z.b. 
die Lichtschranke ist jetzt schon unterbrochen (was sie bei 12 Uhr 
position nicht ist) dann läuft mein Referrenzlauf nicht mehr.

Ich weis nicht wie ich es hinbekomme, das vorab die Lichtschranke 
abgefragt wird, und erst dann bei lichtdurchlass die referenzfahrt 
ausgelöst wird.

Sinnvoll wäre es, wenn ich jeden einzelnen Schritt (impuls) den der 
Motor bekommt, auch erfasse und dazu passend die Lichtschranke abfrage, 
denn beim Sekundenzeiger z.b. habe ich ja 60 Schritte und die 
Lichtschranke verhält sich dazu: 0001 0001 0001 0001 0001 0001 0001 0001 
0001 0001 0001 0001 0001 1111 0010
beginnden von 0 uhr auf 12 uhr fahrend.

Das Uhrwerk ist mit 2 Motoren ausgestattet, daher ist auch der 
sekundenlauf extra.

Wie würde man es hinbekommen, ersteinmal überhaupt die Impulse sinnvoll 
anzusteuern, ich habe dies zurzeit so gemacht: (mit hilfe vom Timer0)
1
Sekundentakt:
2
   If Sekunde = 10 Then
3
   Portb.1 = 0
4
   Portb.2 = 1
5
   Elseif Sekunde = 20 Then
6
   Portb.1 = 1
7
   Portb.2 = 0
8
   Elseif Sekunde = 30 Then
9
   Sekunde = 10
10
   End If
11
   Return
Aber in diesem fall werden schon 2 Impulse /Schritte gemacht.

Wie kann ich das anstellen, das ich im Hauptprogramm immer nur einen 
Schritt aktiviere, dann die Lichtschranke Abfrage, diesen wert mit einem 
vorgegebenen Bit code vergleichen lasse, wenn diese ubereinstimmen, wird 
ein flag oder so gesetzt und das weiterführen mit dem nächsten bit code. 
weil wichtig sind ja wie oben zu sehen, nur die letzte 3 4er Gruppen.
Und sobald diese übereinstimmen, mit einem vorgabewert, sollte die 
Sekunde stehen bleiben.

Und wie ist es machbar, das ich überhaupt ersteinmal die Lichtschranke 
abfrage, denn wenn die Lichtschranke unterbrochen ist, und die Sekunde 
ihren referrenzlauf durchführt, erkennt sie die bit folge ja nicht.
Also muss erst einmal der Minuten/Stunden Motor angesteuert werden, mit 
z.b. 30 Schritten und wenn dann die Lichtschranke licht durchlässt, dann 
sollte die sekunde die referenz ausführen, dann wie oben beschrieben der 
weitere ablauf.

Ich hoffe ich habe mich etwas verständich ausgedrückt, falls nicht bitte 
ich um entschuldigung und bei noch offenen fragen bitte melden.

ich danke euch im voraus für etwalige hilfe.

grüße

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.