Forum: Mikrocontroller und Digitale Elektronik Endlage per Software


von Christopher (Gast)


Lesenswert?

Guten Morgen miteinander!

Ich habe folgendes Problem mit einer Endlagerfassung per Software.

Ruheposition -> Endschalter rechts und gleichzeitig Begrenzung rechts.
Andere Richtung Endschalter links.

Links gibt es keine Probleme, nur rechts da der Endschalter auch die 
Startposition bestimmt. Bei Start ist der Endschalter rechts also 
betätigt. Ich könnte das über ein Flag machen oder einen 
Zustandsautomaten. Hat jemand eine bessere Idee?

Danke

von Rahul, der Trollige (Gast)


Lesenswert?

> Hat jemand eine bessere Idee?

Ich sehe nicht mal ein Problem...

von Christopher (Gast)


Lesenswert?

Also, wenn ich den Endschalter auf Betätigung abfrage
z.B if(Endschalter rechts) Motor = Stop;
dann fährt das doch nie los.

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Für einen DC-Motor überbrückt man die beiden Endschalter mit einer 
Diode, sodaß der Motor nach Umpolen wieder losläuft. Die Software muß 
eben auch die Fahrtrichtung berücksichtigen.

von Werner (Gast)


Lesenswert?

Da du sowieso Motor_rechts oder Motor_links machen musst wäre es doch 
einfach Motor_rechts=0; zu machen...

von Christopher (Gast)


Lesenswert?

Ja sicher, die Fahrtrichtung kann ich ja noch mit dabei berücksichtigen.
Da hab ich noch gar nicht dran gedacht.

von Karl H. (kbuchegg)


Lesenswert?

Christopher wrote:
> Also, wenn ich den Endschalter auf Betätigung abfrage
> z.B if(Endschalter rechts) Motor = Stop;
> dann fährt das doch nie los.

Warum sollte er das nicht.
Obiges wird ja doch wohl nur dann zur Ausführung kommen,
wenn der Motor nach rechts fährt.
Also kann der Motor aus dieser Position nur nach links
wieder wegfahren. Beim Fahren nach links interessiert
sich doch kein Mensch dafür, ob jetzt der Endschalter
für rechts angeschlagen hat.

von Rahul, der Trollige (Gast)


Lesenswert?

>Beim Fahren nach links interessiert sich doch kein Mensch dafür, ob jetzt >der 
Endschalter für rechts angeschlagen hat.

Wenn die Strecke lang genug ist, kommt der "Wagen" irgendwann wieder 
beim rechten Endlagenschalter an... ;-)

Ernsthaft (in Pseudo-C):

if (Fahrtrichtung == rechts)
while ((--Schritte-- > 0) && (!(Endlagenschalter_rechts))
{
   fahre_nach_rechts();
}
Motor_stop();

if (Fahrtrichtung == links)
while ((--Schritte > 0) && (!(Endlagenschalter_links))
{
   fahre_nach_links();
}
Motor_stop();

Und wo liegt jetzt das Problem? Man kann natürlich noch auswerten, ob 
die  Position oder der Endlagenschalter erreicht wurde...

von Christopher (Gast)


Lesenswert?

Hallo,

so ähnlich hab ich es jetzt auch gemacht. Läuft. Danke

von Karl H. (kbuchegg)


Lesenswert?

> Wenn die Strecke lang genug ist, kommt der "Wagen" irgendwann
> wieder beim rechten Endlagenschalter an... ;-)

Da brauchst du aber ein verdammt langes Kabel :-)


von Rahul, der Trollige (Gast)


Lesenswert?

>Da brauchst du aber ein verdammt langes Kabel :-)

Ja, vermutlich... Die Schleppkette wir auch nicht ohne sein. ;-)

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.