Forum: Mikrocontroller und Digitale Elektronik Wie soll ich die Programmierung dieser Aufgabe angehen?


von Patrick A. (tuxifant)


Angehängte Dateien:

Lesenswert?

Hallo,

wir besitzen mehrere PKW und nur einer davon passt in die Garage (nicht, 
weil die anderen so groß wären, sondern weils ne Einzelgarage ist ;-) ). 
Angetrieben wird das Tor elektrisch.

1. Jetzt stört es meine Eltern, wenn man angefahren kommt und das Tor 
unnötig öffnet, weil die Garage schon belegt ist.
2. Sollte ein PKW zu dicht am Tor geparkt werden und man öffnet von 
innen, kann das unschöne Dellen geben.

Das Problem soll nun folgendermaßen gelöst werden:
1. Bewegungsmelder triggert den Controller, der pollt ne Lichtschranke 
in der Garage ab und lässt entsprechend ne Ampel außerhalb leuchten.
2. Der Schalter zum Öffnen von innen wird umgeklemmt auf den uC, welcher 
dann entsprechend ein Relais ansteuert. Allerdings soll beim ersten 
Drücken das Tor nur aufgehen, wenn genug Raum vor dem Schwingtor ist 
(wieder mit einer Lichtschranke realisiert). Andernfalls geht eine 
Warnlampe an. Wird innerhalb eines Zeitraumes X der Schalter erneut 
betätigt, öffnet sich das Tor trotzdem (die Schranke könnte zB bewusst 
von irgendwelchen niederen Gegenständen verdeckt sein).


Die Hardware dafür habe ich soweit schon hier liegen, mir stellt sich 
nur die Frage, wie ich das "am besten" programmiere.

Mein Modell aus dem Anhang funktioniert so:
* Eigentlich liegt der uC meist im Sleep Mode. Per externem Interrupt 
wird lediglich ein Bit gesetzt, Sleep Mode beendet, ISR verlassen. Im 
Main-Programm wird dann active_f1 und/oder active_f2 ausgeführt.
* active_f1 erledigt Aufgabe 2: Sensor einlesen, beim ersten Drücken 
evtl Warnlampe, beim zweiten öffnen. Weg frei --> Tor auf; die Wartezeit 
auf den zweiten Tastendruck ist in dieser Version des Diagramms noch 
nicht enthalten
* active_f2 gehört zu Task 1: Sensor lesen, Garage frei? --> rote oder 
grüne Lampe, nach 30 Sekunden wieder in Schlafmodus


Die Idee mit diesem Active Mode in der main hatte ich deshalb, weil die 
beiden Tasks ja quasiparallel laufen sollen, daher soll die Ausführung 
nicht durch eine laufende ISR verweigert werden.
Oder sollte ich diese active_* komplett in eine jeweilige ISR packen=

Ich hoffe, jemand macht sich die Mühe, diese Fragestellung durchzulesen. 
:-)


Gruß Patrick

von Ratzepimmel (Gast)


Lesenswert?

Ich nicht! Selber denken  ist angesagt!

von Patrick A. (tuxifant)


Lesenswert?

Nur, dass man mich nicht falsch versteht: Den Code an sich bekomme ich 
selbst hin, die Frage war vielmehr dahingehend gerichtet, welchen Teil 
ich in die ISR packe und was nicht und ob das überhaupt so funktionieren 
könnte, wie ich mir das überlegt hab.

von Helmut L. (helmi1)


Lesenswert?

Deine Lichtschranken , Bewegungsmelder , Netzteile etc. brauchen 
zusammen mehr Leistung als der uC. Ich wuerde den durchlaufen lassen und 
in der Hauptroutine die Sachen alle abfragen und dementsprechend 
handeln.

von MaWin (Gast)


Lesenswert?

Ich glaube nicht, daß du dafür was programmieren musst und einen 
Mikrocontroller brauchst, es sei denn du hast deine Garagentorsteuerung 
selbst gebaut.

Du brauchst 2 Sensoren (steht ein Auto drinnen, steht ein Auto draussen 
zu dicht am Tor). DAfür kannst du kommerzielle Sensoren nehmen 
(Lichtschranken, Näherungsschalter, simple Taster unter einer 
Bodenplatte, denk dir was aus).

Dann hat deine bisherige Garagensteuerung vermutlich einen Eingang.
Tor bewegen. Es geht dann auf, wenn es zu war, und zu, wenn es aus war.

Bisher werden beide Steuerungen, die Funkfernsteuerung und der Taster 
von innen, an diesen Eingang geht,.

Nun darf der Taster von innen nur an die Steuerung weitergeleitet 
werden, wenn der Aussensensor kein vor dem Tor stehendes Auto meldet 
(übrigens würde das auch beim zumachen Schaden nehmen),
und das Signal der Funkbedienung darf nur an die Steuerung gehen, wenn 
der Sensor innen kein Auto meldet.

Natürlich kannst du auch den Sensor innen einfach aussen eine Lampe 
leuchten lassen (und den Sonsor aussen innen eine Lampe leuchten 
lassen), also kein Schutz, sondern nur Hinweis.

von Patrick A. (tuxifant)


Lesenswert?

Helmut Lenzen schrieb:
> Deine Lichtschranken , Bewegungsmelder , Netzteile etc. brauchen
> zusammen mehr Leistung als der uC.
Das ist natürlich nicht unwahr ... zumindest die Versorgung der 
Lichtschranken könnte ich ja nur bei Bedarf schalten. Wenn ich mich aber 
recht erinnere, wollen die nach nem Reset neu angelernt werden.
Ein exemplarisch von mir rausgesuchter Bewegungsmelder nimmt sich 20mA 
im Dauerbetrieb. Da liegen noch ein paar Zehnerpotenzen zum uC.


MaWin schrieb:
> DAfür kannst du kommerzielle Sensoren nehmen
> (Lichtschranken, Näherungsschalter, simple Taster unter einer
> Bodenplatte, denk dir was aus).
Ja, die hab ich schon. Handelsübliche Lichtschranken von Sick.

> Dann hat deine bisherige Garagensteuerung vermutlich einen Eingang.
> Tor bewegen. Es geht dann auf, wenn es zu war, und zu, wenn es aus war.
Stimmt.

> Bisher werden beide Steuerungen, die Funkfernsteuerung und der Taster
> von innen, an diesen Eingang geht,.
Nein, das ist die Krux, der Funkempfänger ist "im Innern". Und aus 
Gründen der Gewährleistung will ich da innen nicht rumfingern.
Wenn dem nicht so wäre, könnte ich mir nämlich den Bewegungsmelder 
sparen.

> Nun darf der Taster von innen nur an die Steuerung weitergeleitet
> werden, wenn der Aussensensor kein vor dem Tor stehendes Auto meldet
> (übrigens würde das auch beim zumachen Schaden nehmen)
Durchaus richtig, das wäre mein oben beschriebenes Problem 2 und könnte 
allein in Hardware realisiert werden, sofern ich halt wirklich ein 
Öffnen vermeiden will.
Aber jetzt folgendes Gedankenspiel: Ich bin vor der Garage und weiß, 
dass der Weg frei ist. Die Lichtschranke ist trotzdem blockiert (warum, 
sei jetzt dahingestellt). Das Tor lässt sich von außen über einen 
Schlossschalter öffnen (parallel zum inneren Schalter). Das ginge dann 
nicht.

> Natürlich kannst du auch den Sensor innen einfach aussen eine Lampe
> leuchten lassen (und den Sonsor aussen innen eine Lampe leuchten
> lassen), also kein Schutz, sondern nur Hinweis.
Mit Sicherheit die mit Abstand einfachste Lösung. Nur möcht ich nicht 
dauerhaft die Lampen brennen haben. ;-)


Klar ist, dass sich beide Tasks (uU mit Abstrichen) rein in Hardware 
realisieren ließen - vor allem die "Ist-die-Garage-belegt?"-Anzeige.

von Sven P. (Gast)


Lesenswert?

Das wäre eine prima Aufgabe für so eine LOGO!-Steuerung oder EASY von 
Moeller.

Dürfte sich aber auch mit einer Handvoll Relais machen lassen :-)

von Patrick A. (tuxifant)


Lesenswert?

Jaaa, deshalb dachte ich ja an nen uC. Im Prinzip hat Helmut Recht, so 
werd ich das jetzt auch tun, der Einfachheit wegen.
Würde mich dann aber trotzdem interessieren, welchen uC-Lösungsweg ihr 
wählen würdet, wenn die Leistungsaufnahme des uC von Relevanz wäre.

von Falk B. (falk)


Lesenswert?

Das "Problem" lässt sich gaaaanz langweilig mit einem Schild aus 
Pappe/Kunstoff/Holz lösen. Auf einer Seite "Besetzt", auf der anderen 
"Frei". Hängt man mit einem Strick an die Garage und dreht es beim Ein- 
und Ausfahren.

Ist aber langeweilig und viiiiiel zu pragmatisch.

MfG
Falk

von Patrick A. (tuxifant)


Lesenswert?

Ja, das wäre auch die Lösung meiner Mutter gewesen. Da fehlt mir die 
Technizität. ;-)

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

> Ja, das wäre auch die Lösung meiner Mutter gewesen. Da fehlt mir die
> Technizität. ;-)

Dann nimm anstatt Pappe irgend eine alte Platine aus einem Fernseher und 
löte dort die Bauteile runter. Die sind normalerweise aus Hartpapier, 
oben braun unten grün lackiert. Somit haste zwei Farben und ist 
technisch.

von Patrick A. (tuxifant)


Lesenswert?

XD GENIAL
mehr fällt mir dazu nicht ein

von Düsendieb (Gast)


Lesenswert?

Du hast in der Garage ein per Feder schräg gestelltes Blech, das von 
eingefahrenem Auto runtergedrückt wird. Das zieht dann an einem Seil, 
welches draußen ein Stop Schild aus einer Kiste zieht.

Braucht absolut keinen Standby Strom.

Die ganze Lichtschrankenmimik frisst dich übers Jahr arm.

Axel

von Patrick A. (tuxifant)


Lesenswert?

1
20mA * 12V * 24h * 265d ≈ 2kWh/a

Düsendieb schrieb:
> Die ganze Lichtschrankenmimik frisst dich übers Jahr arm.

Gerechnet mit großzügigen 0,30€/kWh bin ich bei 60 Cent p.a. Bei zwei LS 
wären das 1,20, rechnet man Bewegungsmelder und Netzteil hinzu, wärs was 
mehr.
Leider habe ich keine statistische Erhebung darüber, wie oft das Tor 
unnötig aufgemacht wird, sonst könnte man das gegenüberstellen.
Außerdem besteht ja immer noch die Gefahr für den Lack des außen 
geparkten PKW. Ich machs. :D

von Karl H. (kbuchegg)


Lesenswert?

Patrick A. schrieb:

> Ich machs.

Guter Gedanke.
So kompliziert ist das programmiertechnische Problem ja nicht, dass man 
es nicht auch noch verwerfen und ein 2.tes mal anfangen könnte.

Du hast dir Gedanken gemacht, hast dir etwas dazu überlegt, hast deine 
Gedanken in einen möglichen Ablauf gegossen. Jetzt ernte auch die 
Früchte deiner Vorarbeit, in dem du nachsiehst ob deine Gedankengänge 
richtig waren oder ob du etwas Grundlegendes übersehen hast. Das ist die 
Motiviation, die uns alle vorantreibt: wenns hinterher so funktioniert, 
wie man sich das vorher vorgestellt und ausgedacht hat.

von OhGuggeMolDoo (Gast)


Lesenswert?

Wenn man innen nicht sieht, ob außen ein Wagen steht? Fenster!
Wenn man außen nicht sieht, ob innen ein Wagen steht? Fenster!
Wenn man von innen und außen Wagen stehen sehen will? Fenster!

von heinzhorst (Gast)


Lesenswert?

OhGuggeMolDoo schrieb:
> Wenn man innen nicht sieht, ob außen ein Wagen steht? Fenster!
>
> Wenn man außen nicht sieht, ob innen ein Wagen steht? Fenster!
>
> Wenn man von innen und außen Wagen stehen sehen will? Fenster!

Dann hätte er sicher nicht hier, sondern im Fensterforum gefragt.

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.