Arduino Personenzähler?

3 Antworten

Grundsätzlich zwei Eingänge.. Einer zählt hoch, einer zählt runter. Die müssen aber entprellt sein und Flankenerkennung haben. Zudem ist das Problem von xdanix77 mit dem durchschreiten auch ein Problem. Wenn einer in der Lichtschranke steht und wieder zurück geht, dann wieder rein, ist er doppelt gezählt... Oder mit dem Arm in der Lichtschranke rum furtelt...

Da müsste also eine Doppelschranke her, die in Durchlassrichtung erkennen muss, dass beide passend angesprochen haben, oder eine andere Zählart. Durchlasskreuz mit Erkennung der Durchschreitung ect...

Oder eine zeitgesteuerte Einlasskontrolle mit Zwangspause, so wäre eine schnelle Mehrfachzählung durch Armbewegung ausgeschlossen... Und es darf keiner Rückwärts wieder raus...

Einen fertigen Code aus dem Ärmel schütteln.. mhh.. Würde wahrscheinlich auch nciht direkt auf deine Schaltung und Herangehensweise passen... Jeder denkt anders und programmiert entsprechend... Man braucht erst die Idee, den Plan des Aufbau, der Verdrahtung und dann eine softwaretechnische Umsetzung passend zur Hardware und Aufbau...

sonderdings  11.11.2020, 22:17

Was ist "entprellt"? Und "Flankenerkennung"?

0
RareDevil  12.11.2020, 05:38
@sonderdings

Beides Begriffe aus der Elektrotechnik...

Mechanische Kontakte prellen oft. Bedeutet, dass beim schließen der Kontakt sich durch die Berwegung noch mal öffnet und wieder schließt. Es kommt also bei einem Einschaltvorgang zum mehrmahligen schließen und öffnen, bis der Kontakt dann letztich fest zusammen ist. Durch die hohe Zyklusrate des Arduino kann es also vorkommen, dass der Arduino kurz "HIGH, LOW,HIGH, LOW, HIGH" in Folge sieht, obwohl der Kontakt nur einmal geschlossen wurde. Bei Lichtschranken hat man zwar meist elektronische Ausgänge über Transistor, da passiert das nicht, aber bei Lichtschranken mit Relaisausgang passiert das durch aus. Und ich weiß nicht, welche Lichtschranke er nutzen wird. Deshalb erwähne ich es vorsichtshalber.

Flankenerkennung bedeutet, dass nur ausgewertet wird, wann sich ein Signal ändert... z.B. der Moment von LOW auf HIGH... Beim zählen ist das wichtig, da der Zähler nur einmal in dem Moment zählen darf. In einer Programmschleife kann man nicht einfach abfragen "wenn Eingang HIGH, Zähle Wert +1". Dann würde der Eingang in jedem Zyklus +1 gezählt, solange der Eingang HIGH ist. Und pro Sekunde durchläuft so ein Arduino sehr viele Zyklen... Geht dann eine PErson durch die Lichtschranke, würde er auf Grund der Betätigungsdauer, bis die Lichtschranke wieder frei ist, vlt 500 Zählschritte oder mehr machen statt nur einen... Deshalb programmiert man eine Flankenerkennung. Somit wird erfasst, dass der Eingang gerade gewechselt hat. Damit wird gezählt. Im nächsten Zyklus hat er nicht mehr gewechselt, sondern ist schon auf HIGH und er zählt nicht mehr, bis der Eingang erst auf LOW wechselt und wieder erneut auf HIGH wechselt....

0

Wenn du deinen "Aufbau" besser aufzeigst, könnte ich dir vielleicht helfen, mir fehlen aber bei deiner Beschreibung zu viele Details z.B. wie dein Pinout ist oder wie viel Erfahrung du beim Programmieren bzw. mit Arduino hast. Wen ich etwas Programmiere mache ich mir meist eine schnelle Skizze, um beim Programmieren an alles zu denken. Das Programm, dass du willst ist aber an sich nichts kompliziertes.

Woher ich das weiß:Berufserfahrung
Silvio206 
Fragesteller
 11.11.2020, 22:08

Hast du Discord?

0

Zählen würde ich jeweils mit zwei Schranken hintereinander, so kannst du einerseits die Durchschrittsrichtung prüfen und außerdem ob vollständig durchgeschritten wurde. Der Code sollte machbar sein wenn du dich schrittweise in die jeweiligen Sensoren einarbeitest und dir konkret ausarbeitest was wie funktionieren soll.