Forum: Mikrocontroller und Digitale Elektronik Lichtschranke mit µC ( Atmel T89C51CC01 )


von Hansknecht (Gast)


Lesenswert?

Hallo ihr alle,
ich bin ein ziemlicher neuling. Will aber mit meinem µC eine 
Lichtschranke ansteuern.

Ich möchte 2 Lcihtschranken im abstand von ca. 10cm an einer Türe 
anbringen. Sie soll dann die Personen zählen die rein laufen bzw. raus 
laufen. Die Anzahl der Perosnen im Raum möchte ich auf dem LCD Display 
ausgeben oder die noch freien Plätze, diese auswahl läßt sich in einem 
Menü treffen. Den µC und die Lichtschranke sind über eine serielle 
Schnttstelle miteinander verbunden!
Irgendwie weiß ich garnicht wie ich anfangen soll.
Über eine möglichst schnelle und genaue Antwort wäre ich sehr dankbar.

Mit freunldichen Grüßen
Hansknecht

von jack (Gast)


Lesenswert?

> Den µC und die Lichtschranke sind über eine serielle
>Schnttstelle miteinander verbunden!

Deine Lichtschranke ist schon fertig und hat eine serielle 
Schnittstelle?
Meinst Du das wirklich?

von Hansknecht (Gast)


Lesenswert?

nein....sie is nocht nich fertig....ich weiß garnicht wo ich anfangen 
soll...aber ich habe die aufgabe so  vertsanden das µC und Lichtschranke 
über eine serielle Schnittstelle verbunden werden sollen

von Karl H. (kbuchegg)


Lesenswert?

serielle Schnittstelle: Das ist doch Unsinn.
Von der Lichtschranke kriegst du ein schönes
digitales Signal. Das legst du an einen Portpin
des µC und wertest es aus. Solange die Lichtschranke
nicht weiter als sagen wir mal 20 Meter vom µC
entfernt ist, ist das die absolut einfachste Variante.

Lichtschranke:
Wie genau muss den die Zählung sein? Bei Lichtschranken
wird es dir des öfteren passieren, dass abends noch
5 Leute in den Raum hineingehen müssen, damit keiner
drinnen ist.

von Karl H. (kbuchegg)


Lesenswert?

> ich weiß gar nicht wo ich anfangen soll

Fang mal damit an dir Grundlagen über µC beizubringen.
http://www.mikrocontroller.net/articles/AVR-Tutorial
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

So eine Lichtschranke ist aus Sicht eines Programmes auch
nichts anderes als ein Schalter/Taster.

von Hansknecht (Gast)


Lesenswert?

die Lichtschranke ist nicht weiter als 20meter vom µC entfernt....also 
ich soll die Lichtschranke dann einfach ein einen freien Port 
anschließen und abfragen wann der Port gesetzt bzw. rückgestzt wird? 
oder hab ich das falsch verstanden?!




Lichtschranke: Sie sollte relativ genau sein! aber wieso wird es mir 
öffters passieren das am ende mein Zählerwert auf -5 ist!Meine 
Lichtschranke soll garnicht im - Bereich zählen können! :)
die soll von 0-99 gehen!

von Hansknecht (Gast)


Lesenswert?

Also die Grundlagen eines µC beherrsche ich schon! sonst würde ich 
niemals auf die idee kommen so etwas anzufangen! ich kann einfache 
programme! nix schweres, aber ich glaube meine grundkenntnisse sollten 
aussreichen um es zu meistern! progrmmiere auch nicht mit c sondern mit 
einem assambler..weil ich c plöd finde :D

von Karl H. (kbuchegg)


Lesenswert?

Hansknecht wrote:

> Lichtschranke: Sie sollte relativ genau sein! aber wieso wird es mir
> öffters passieren das am ende mein Zählerwert auf -5 ist!Meine
> Lichtschranke soll garnicht im - Bereich zählen können! :)
> die soll von 0-99 gehen!

Stell dich mal an eine Tür und beobachte die Leute wie sie
reindrängen. Wenn 20 Leute sich durch eine Tür zwängen
kann es dir passieren dass die Lichtschranke kein einziges
mal auf die gegenüberligende Seite durchkommt, weil
sich die Personen gegenseitig abschatten.




          +----+
          |    | +----+
          +----+ |    |
 L -----> +----+ +----+
          |    | +----+
          +----+ |    |
                 +----+

Und selbst wenn die einzeln durchgehen, in welcher Höhe
bringst du denn die Lichtschranke an? Zu tief darf es nicht
sein, sonst zählst du die Beine, zu hoch darf es nicht sein,
sonst flutschen kleine Personen unten durch. Also bleibt
nur eine Höhe knapp über der Gürtellinie. Ich würde mal sagen
so ca. bei 1m20. Jetzt haben Menschen aber auch Arme und die
bewegen sich beim Gehen. Wenn du also Pech hast, kriegst
du von einer Person 3 Lichtschrankenunterbrechungen:
der vorlaufende Arm, der Körper, der nachlaufende Arm.
Was passiert, wenn die Person ausgerechnet an der Position
deiner Lichtschranke wild zu gestikulieren anfängt brauch
ich dir wahrscheinlich nicht sagen: Dein Zähler wird
wie wild rauf und runter zählen.

Alles in allem: erwarte dir nicht zuviel. Aber wenn die
angezeigte Zahl tatsächlich stimmt, grenzt das an ein
Wunder.

Menschen sind nun mal keine Pakete oder Autos.




von Karl H. (kbuchegg)


Lesenswert?

> Also die Grundlagen eines µC beherrsche ich schon!

Wieso weist du dann nicht wo du anfangen sollst?

von Hansknecht (Gast)


Lesenswert?

ach noch ne frage?! hatt irgend einer von euch ein PAP für meine 
Aufgaben Stellung? damit würde mir der anfang sicher nicht so schwer 
fallen!

von Hansknecht (Gast)


Lesenswert?

irgendwie steh ich aufm schlauch....hab proberit n pap zu machen hab 
aber nur scheiß zusammen gewürfelt....irgendwie, find ich das rein 
kommen immer am schwersten!

von Karl H. (kbuchegg)


Lesenswert?

Was is'n ein PAP?

Schau doch mal in die Tutorials rein.
Dort findest du alles was du brauchst um einen
Taster auszuwerten und ein LCD anzusteuern.

von Hansknecht (Gast)


Lesenswert?

du hast recht.....aber ich muss einfach davon aus gehen das die menschen 
in einem kleinen abstand hintereinadner reinlaufen.....
mhh das mit armen und beinen ist wirklich ein problem....das aber glaube 
ich nicht wirklich zu beheben ist..oder? davon würde ich jetzt aber mal 
absehen wenn die fehlerqoute nicht alzu hoch ist!

von Rahul, der Trollige (Gast)


Lesenswert?

>Was is'n ein PAP?

Programmablaufplan (auch gerne auf Pappe gezeichnet...;-)

Irgendwie werde ich den Verdacht nicht los, dass hier jemand mal wieder 
danach fragt, ob ihm jemand anders die Hausaufgaben macht...

Ein Drehkreuz wäre sinnvoller...

von Hansknecht (Gast)


Lesenswert?

ich weiß wie man taster auswertet ich weiß wie man ein lcd 
ansteuert.....ich weiß nur nicht wie ich anfangen soll!
pap= programm ablauf plan....

von Hansknecht (Gast)


Lesenswert?

wie ein drehkreuz???? ich will einfach nur wissen wie ich anfangen soll! 
irgendwie bekomme ich es einfach nicht hin hab schon soviel scheiß 
programmiert und nix tut, zumindest wo wie ich es mir vorstelle...

von Hansknecht (Gast)


Lesenswert?

würde es so funktionieren....

lichtschranke an freien port
 port1 abfragen ob gesetzt, wenn nein sjmp$
 wenn ja,
 port2 abfragen, wenn nein zum port1 springen
 wenn ja,
 zähler ++

 wenn
 port2 gesetzt und dann port 1 gesetzt
 zähler --    (wie soll das gehen)

 und den zähler ewrt immer aufm lcd ausgeben, das sollte ja kein 
problem mehr sein

von Karl H. (kbuchegg)


Lesenswert?

> ich weiß wie man taster auswertet

Wo liegt dann das Problem?

Die Taster, äh Lichtschranken, sind im Grundzustand.

Jetzt kommt von Links eine Person. Sie durchbricht
zuerst die LS1. Wenn sie weitergeht, durchbricht sie
die LS2. Irgendwann wird LS1 wieder freigegeben, gefolgt
on einer Freigabe von LS2.

Die Sequenz ist also


    LS1     LS2

     0       0       Grundzustand
     1       0       kommt von links
     1       1
     0       1
     0       0       und wieder Grundzustand


Kommt die Person von der anderen Seite, dann lautet
die Abfolge

   LS1      LS2

     0       0
     0       1       kommt von rechts
     1       1
     1       0
     0       0       und wieder Grundzustand

Wenn du dir mal anschaust wie die Situation ist,
wenn LS1 von 0 auf 1 wechselt:
   * LS2 ist 0   -> dann ist die Person von links gekommen
   * LS2 ist 1   -> dann ist die Person von rechts gekommen

Alles was du also tun musst ist festzustellen, ob die
LS1 von 0 auf 1 gewechselt hast. Ist das der Fall, dann
schaust du auf LS2. Ist LS2 auf 1 dann erhöhst du den
Zähler, ist es auf 0 dann verringerst du den Zähler.

Das in ein PAP zu fassen dürfte ja jetzt nicht mehr
allzu schwer sein.

Den Teil: feststellen ob LS1 von 0 auf 1 gewechselt hat
überlass ich mal dir als Übung. Du wirst dir in deiner
Haupt-Endlosschleife einfach in einer Variablen den
Zustand von LS1 im vorhergehenden Schleifendurchgang
merken müssen, den vergleichst du dann mit dem jetzigen
Zustand ....

Ach ja. Ich hab noch die Annahme getroffen, dass die LS
nahe genug beisammen sind, dass eine Person immer
beide gleichzeitig abschatten kann. Was natürlich
ein kleines Problem darstellen wird. Aber das wirst du schon
noch sehen.

von Hansknecht (Gast)


Lesenswert?

vielen dank...genau das war das was ich gesucht habe....ich fange nun 
mal an mein pap zu machen und dann zu programmieren....vielen dank!
bei weiteren problem meld ich mich nochmal^^
mfg

von Besucher (Gast)


Lesenswert?

>Stell dich mal an eine Tür und beobachte die Leute wie sie
>reindrängen. Wenn 20 Leute sich durch eine Tür zwängen
>kann es dir passieren dass die Lichtschranke kein einziges
>mal auf die gegenüberligende Seite durchkommt, weil
>sich die Personen gegenseitig abschatten.

Hi,

genau mit dem selben Problem hab ich im Moment auch zu kämpfen.
Gibts da vielleicht eine andere Möglichkeit, als eine Lichtschranke um 
bewegliche Objekte zu zählen?

von Der (Gast)


Lesenswert?

Radar!

von Gast014 (Gast)


Lesenswert?

Das Lichtschranken-Problem (kommt jemand von links bzw rechts) ist 
übrigens das selbe wie bei einem Drehimpulsgeber oder auch 
Inkrementalgeber genannt. Such mal danach, da gibt es fertige 
Codebeispiele hier im Forum.

von Madenschreiber (Gast)


Lesenswert?

maden

von Thomas (Gast)


Lesenswert?

sind wir hier bei hausaufgaben-kostenlos.de?
Schalt doch mal deinen Kopf an und denk nach anstatt andere Leute für 
dich denken zu lassen. Bei konkreten Problemen wird dir hier sicher auch 
geholfen anstatt, dass du hier jetzt 20 mal blödsinn gepostet bekommst.

von Karl H. (kbuchegg)


Lesenswert?

Ob Hansknecht das hingekriegt hat?
Wenn ich mir seine Fragestellungen so ansehe bezweifle ich das

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.