Archiv verlassen und diese Seite im Standarddesign anzeigen : Langsame Infrarot Frequenz auswerten an Atmega
Hallo,
Mich stört dass an meinem neuen Haus-Stromzähler kein Momentanverbrauch sichtbar ist, es ist ein ganz moderner, ohne Drehrad, nur digitalanzeige in kWh.
Dafür gibt er noch (unsichtbare) IR-IImpulse aus, deren Abstände proportional zur abgenommenen Leistung sind (1Imp- = 1Wh).
Nun möchte ich die Abstände der IR Impulse messen, mit welcher Hardware mache ich das am besten?
Gibt es einen IR Empfänger, der ziemlich direkt einen Atmega Eingang schalten kann (0-5V)?
Viele Grüße
xxrider
radbruch
03.10.2010, 22:48
Ist das ein moduliertes IR-Signal? Hast du dazu eine Beschreibung/ Datenblatt/Link/Zählertyp/weitere Infos?
Ist das ein moduliertes IR-Signal? Hast du dazu eine Beschreibung/ Datenblatt/Link/Zählertyp/weitere Infos?
nein, es ist nichts moduliertes, es ist ganz einfach.
1 IR Impuls dauert 0,20 Sekunden und entspricht 1 Wattstunde.
Die Frequenz der Impulse entsprechen der Leistung. Also z. B. Abstand der Impulse 1 Sekunde entspricht 3600 Imp./h, sind also 3600Watt.
Besserwessi
03.10.2010, 23:47
Wenn da nichts weiter Moduliert ist, kann man einen einfachen Fototransistor, bevorzugt mit IR Filter nehmen. Dazu dann nur noch ein Widerstand. Ohne Modulation muß man aber Fremdlicht Abschirmen.
kannst du mir nen link geben?
und wie beschalten, dass er auf 5 V geht?
Fremdlicht dürfte keine Problem sein, weil es im Keller ist.
Besserwessi
04.10.2010, 18:53
Fototransistoren mit IR Filter gibt es viele. Die unterscheiden sich auch kaum, und dann hauptsächlich im Öffnungswinkel und der Bauform. Da sollte fast jeder gehen. Mögliche Typen wären z.B. SFH 309 FA, sfh3100f .
Da reicht auch die Versorgungsspannung des Controllers. Einfach den Fototransistor von GND zum Eingang, und dann ein Pullup-Widerstand (ca. 10 K ... 200 K, abhängig von der Signalstärke) dazu.
danke,
hab heute 2 gekauft (SFH 300 FA 3/4) und hoffe die gehen auch.
werde mich dann bald mal ranmachen und verschalten, ist ja gar nicht sooo schwer :)
Besserwessi
04.10.2010, 22:42
Die SFH300FA sollten gehen.
habs jetzt probiert, leider ohne Erfolg.
Ich hab mich auch mit der Impulslänge vertan und nochmal ins Datenblett gesehen - es ist nur eine Impulslänge von 2ms, vielleicht schaltet der Transistor nicht schnell genug den pin auf 0.
Gibt es schnellere Fototransistoren?
Vielleicht liegt es ja auch an der Frequenz des IR Impulses, die ich leider nicht kenne, vielleicht ist der Fototransistor nicht empfindlich genug?
Besserwessi
05.10.2010, 21:16
Ein 2 ms Puls sollte auch noch gehen. So ganz viel Unterschied ist zwischen den Fototransistoren bei der Geschwindigkeit auch nicht. Die Geschwindigkeit hängt aber von der Schaltung drumrum ab, und die ist mit dem hochohmigen Pullup eher langsam. Wenn es sein muß, könnte man es da schneller machen mit einem externen Transimpedanzverstärker (z.B. mit Operationsverstärker aufgebaut).
Es könnte sein, das die Intensität nicht ausreicht. Auch hier könnte man mit einem externen Verstärker nachhelfen, oder ggf. auch schon einfach indem man den Komperatoreingang nutzt.
Bei den IR Wellenlägen gibt es nicht viel auswahl. Das wird irgendwas zwischen 840 nm und 950 nm sein - das paßt alles, die Fotoransistoren gehen von etwa 750 nm - 1000 nm.
Funktioniert den das Programm und die Schaltung wenigstens im Prinzip, also mit einer anderen IR LED oder ggf. auch einer Glühbrine aus kurzer Entfernung ?
post mal den code
und anderer test
led und fototransitor in reihe die led sollte schwach aufblitzen
Besserwessi
05.10.2010, 21:30
Für die LED wird der Strom vom Fototransistor vermutlich recht knapp werden, das müßte dann schon eine extra helle Type sein. Ich würde eher mal eine Glühlampe davor probieren. Eigentlich müßte es da noch reichen um die 100 Hz zu finden.
hallo,
hier ist der code:
Stop Timer1
A = 0
Cls
Do
Locate 1 , 1
Lcd "Leistung in Watt"
Locate 2 , 1
Lcd "......Scan......"
Loop Until Pina.0 = 0
Start Timer1
Waitms 500
Do
If Pina.0 = 0 Then
Waitms 300
B = A
A = 0
B = 36000 / B
Cls
End If
Locate 1 , 1
Lcd "Momentanleistung"
Locate 2 , 1
Lcd " " ; B ; " Watt"
Loop
Isr_von_timer1:
Timer1 = 53036
A = A + 1
Return
das funktioniert im Prinzip schon.
mit einer Taschenlampe kann ich einen Impuls auslösen, nur nicht mit der Diode des Zählers.
Wie kann ich es am einfachsten schaffen?
wie funktioniert der Komparatoreingang (-das klingt mir am einfachsten) und wie müsste ich ihn beschalten?
Besserwessi
06.10.2010, 18:17
Das Programm könnte ein problem sein. In der Schleife wird die meiste Zeit, vermutlich deutlich mehr als 2 ms, mit der LCD-ausgange verbraicht. Wenn eine kurzer Puls in der Zeit kommt, wird er nicht erkannt. Es ist daher eher unwahrscheinlich das ein kurzer Puls erkannt wird.
Nur die Erkennung des ersten Pulses (vor der späteren Schleife) sollte gehen.
Der Komperatoreinagn geht so ähnlich wie der normale Einagng. Der 2. Eingang dient als Vergleichsschwelle und kann benutzt werden um die Empfindlichkeit einzustellen.
ah, danke.
und wie bekomme ich die anzeige in den griff?
ich könnte vielleicht die Anzeige in die if-endif bedingung mit reinpacken.
dann wird nur beschrieben, wenn auch wirklich ein impuls gekommen ist, und erst wieder bei einem neuen Impuls überschrieben.
werde ich mal probieren.
Besserwessi
06.10.2010, 20:38
Die LCD Ausgabe mit in den IF Teil wäre möglich. Da hat man dann höchstens die Einschränkung das die Pulse nicht schneller als alle etwa 20-50 ms kommen dürfen - jenachdem wie lange die LCD-ausgabe dauert.
Die andere, aber kompliziertere Lösung wäre es die Zeitmessung ganz in einen interrupt zu verlegen. Dann würde auch ein Puls wärend der LCD-ausgabe erkannt.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.