Eine Apotheke ist mit einer automatischen Türe abgesichert. Die Tür kann
von außen mit einem Taster geöffnet werden, innen ist ein
Passiv-Infrarot-Bewegungsmelder installiert. Erkennt der BM eine Person,
soll die Tür automatisch geöffnet werden. Um die Sicherheit zu erhöhen,
werden die Ausgangssignale des BM analysiert: Wenn der Digitalausgang
ein Objekt signalisiert, soll die Geschwindigkeit des Objektes ermittelt
werden. Die Türe wird erst ab einer bestimmten Geschwindigkeit geöffnet.
• Entwerfen Sie ein µC-Programm(für PIC18Fxx) zur Auswertung der
Schaltfrequenz des BM. Bei Überschreitung einer bestimmten
Schaltfrequenz soll die Türe automatisch geöffnet werden.
Kann mir jemand helfen ?
der Analoge Ausgang beträgt zwischen 0-5V, durch A/D Wandler wird auf
0...255 Werte umgewandelt
Was is mit der Schaltfrequenz ?
Johann schrieb:
> Eine Apotheke ist mit einer automatischen Türe abgesichert. Die Tür kann> von außen mit einem Taster geöffnet werden, innen ist ein> Passiv-Infrarot-Bewegungsmelder installiert. Erkennt der BM eine Person,> soll die Tür automatisch geöffnet werden. Um die Sicherheit zu erhöhen,> werden die Ausgangssignale des BM analysiert: Wenn der Digitalausgang> ein Objekt signalisiert, soll die Geschwindigkeit des Objektes ermittelt> werden. Die Türe wird erst ab einer bestimmten Geschwindigkeit geöffnet.>> • Entwerfen Sie ein µC-Programm(für PIC18Fxx) zur Auswertung der> Schaltfrequenz des BM. Bei Überschreitung einer bestimmten> Schaltfrequenz soll die Türe automatisch geöffnet werden.>>> Kann mir jemand helfen ?> der Analoge Ausgang beträgt zwischen 0-5V, durch A/D Wandler wird auf> 0...255 Werte umgewandelt> Was is mit der Schaltfrequenz ?
Die hat mit dem Analogausgang nichts zu tun.
Offenbar hat der BM noch einen Digitalausgang. Auf diesem Digitalausgang
signalisiert der BM, dass sich in seinem Sichtbereich etwas bewegt. Dies
tut er indem er ein periodiches Signal rausgibt. Je schneller das Objekt
desto höher die Signalfrequenz oder umgekehrt.
ja es hat auch einen Digital ausgang mit TTL, wie kann ich den PIC so
programmieren, dass ab einer gewissen Schaltfrequenz die Tür(Diode in
meinem fall) auf high setzt ?
johann schrieb:
> Wie bestimme ich die Periodendauer in C ?
du hast zwei Möglichkeiten
1.) auf positive Flanke warten => Timer starten => auf nächste
positive Flanke warten => Timer stoppen :-)
2.) auf negative Flanke warten => Timer starten => auf nächste
negative Flanke warten => Timer stoppen :-)
Eigentlich ganz einfach... :-)
Ich halte es für zweifelhaft, dass mit einem PIR-Sensor überhaupt die
Geschwindigkeit ermittelt werden kann, wenn man sich mal dessen
Funktionsweise vergegnwärtigt.
(Bei Bedarf kann ich die ausführlich erläutern)
Wenn, dann geht das überhaupt nur mit einem Doppler-Radar-Sensor!
Frank
Frank schrieb:
> Ich halte es für zweifelhaft, dass mit einem PIR-Sensor überhaupt die> Geschwindigkeit ermittelt werden kann, wenn man sich mal dessen> Funktionsweise vergegnwärtigt.
Ich denke nicht, dass das ein reales Problem ist.
Sieht nach einer Übungsaufgabe aus.
I muss die Geschwindigkeit berechnen...der Analog-Ausgang des PIR gibt
ein Signal von 2-10 HZ, in einer Zeit von 1er Sekunde mache ich 100
Abtastungen,
ich habe ein array für 100 Werte gemacht und daraus den Mittelwert
berechnet, danach habe ich den Spitzenwert
berechnet(array[wert]>mittelwert, array[wert-1] und array[wert+1]<
array[wert], dann spitenwert=array[wert])
dies in einer for-Schleife...
wie kann ich die frequenz ermitteln? (Bei Überschreitung einer
bestimmten
Schaltfrequenz soll die Türe automatisch geöffnet werden.)
von einem Spitzenwert zum nächsten ist die Periodendauer...oder ?
und dann frequenz=1/T
wie kann ich mit den array so programmieren das er zwei Spitzenwert
zusammenzählt?
oder kann ich auch die Nullstellen(3 Nullstellen) zusammenzählen und
dann habe ich die Periodendauer.
Wie zähle ich die Nullstellen zusammmen ?
danke, dass Sie mir helfen, brauch unbedingt für heute(29.05.09)
eine andere Aufgabe ist:
•Entwerfen Sie ein PC Programm, mit dem der Schwellwert für das öffnen
der Türe vorgegeben werden kann.
Was ist der Schwellwert, wie könnte ich diese Aufgabe lösen ?
Es scheint ein grundlegendes Problem zu sein, dass den "jungen Leuten"
nur oberflächlich oder garnicht vermittelt wird, wie man (Programmier-)
Probleme löst. Ich habe das in letzter Zeit bereits mehrfach im engeren
Freundes- und Bekanntenkreis erlebt, wenn die Töchter oder Söhne z.B.
ein Studium beginnen.
Das Zerlegen komplexer Probleme in einzelne überschaubare Teil-Aufgaben,
Bestimmung von Schnittstellen, und Systemzuständen, das Erstellen von
einzelnen Modulen, deren Test und dann das Zusammenfügen - alles
Fremdworte.
Da werden lediglich ein par Elemente irgend einer Programmiersprache
hingeworfen, aber sowas wie Problemanalyse oder gar "guter Stil" kommt
anscheinend in den Lehrplänen nicht mehr vor. Teilweise profilieren sich
die Lehrenden damit, mit komplexen Algorithmen (z.B. FFT) ihre
Überlegenheit zu demonstrieren, das Vermitteln von "Handwerk" dagegen
gelingt ihnen nicht oder ist "unter ihrer Würde".
Frank