Forum: Mikrocontroller und Digitale Elektronik Infrarot Sendeleistung fürchterlich


von Ghost R. (ghostrider1911)


Lesenswert?

Hallo,

Vorgeschichte:
Ich hab mir einen LED Controller aufgebaut, dieser arbeitet mit Picaxe 
Controllern. Gesteuert wird das ganze mittels einer selbstgebauten 
Fernbedienung, die 28 Taster besitzt.

Als Infrarot Empfänger dient ein TSOP 31238 von Reichelt.

(Die Picaxe Serie benutzt 38 Khz im Infrarot bereich)

Der TSOP hat natürlich einen Kondensator und einen Widerstand in der + 
Leitung spendiert bekommen

Als Sendediode hab ich eine einfache Infrarot Diode aus einer alten 
Fernbedienung ausgeschlachtet.

Die Infrarot Diode hängt über einen Transistor (BC548) am Picaxe 
Controller, der in der Fernbedienung ebenfalls verbaut ist.
Es wird kein Vorwiderstand verwendet.

Ich habe auch schon eine gekaufte Infrarot Diode von Reichelt probiert, 
diese war auch nicht besser..

Die Reichweite beträgt ca. 3-4 m, das reicht leider nicht bis zum Bett, 
von wo aus ich den Controller steuern will aus.

Ausserdem muss ich mit der Fernbedienung immer direkt auf den Empfänger 
zielen, damit dieser was empfängt.

Wo könnte hier das Problem liegen?
Kann man die Empfindlichkeit des TSOP´s erhöhen?
Kann das sein, dass der BC548 zu schwach ist?

(Ich hab noch ein bisschen Platz, wenns was bringt, bau ich meinetwegen 
n Mos-FET ein oder was weiß ich.. )

Wenn ich mit einer Handy Kamera auf die Infrarot Diode halte, während 
ich eine Taste drücke, dann glimmt das ganze nur sehr leicht, so dass es 
noch zu erkennen ist. Halte ich hingegen die gleiche Kamera auf eine 
Fernbedienung, dann sieht man die IR-Diode richtig blitzen. Das kann 
doch wohl nicht sein?

Achja: Die Versorgungsspannung der Fernbedienung übernehmen vier 2000mA 
Nimh Akkus mit je 1,2V

mfg

von tt2t (Gast)


Lesenswert?

Wie hoch ist denn der Strom durch die IR-LED?

Im gepulsten Betrieb dürfen dies locker 300-400 mA sein, auch wenn die 
IR-LED für den Dauer-Betrieb nur für 30-40 mA ausgelegt ist.

von Ghost R. (ghostrider1911)


Lesenswert?

Hmm, naja ich hab die LED ja quasi direkt an die Versorgungsspannung 
geklemmt, also fließen 4,8V durch die LED (Pulsbetrieb)

Ich kann leider nicht messen, wieviel mA da durchfließen, dazu ist mein 
Messgerät zu träge.
mfg

von Oliver J. (skriptkiddy)


Lesenswert?

Ghost Rider schrieb:
> Hmm, naja ich hab die LED ja quasi direkt an die Versorgungsspannung
> geklemmt
Ohne Vorwiderstand?

> also fließen 4,8V durch die LED (Pulsbetrieb)
Seit wann fließen Spannungen?

von ... (Gast)


Lesenswert?

Ghost Rider schrieb:
> Es wird kein Vorwiderstand verwendet.

Schreib 100 mal:
Eine LED wird immer über einen Vorwiderstand betrieben.

von Oliver J. (skriptkiddy)


Lesenswert?

... schrieb:
> Schreib 100 mal:
> Eine LED wird immer über einen Vorwiderstand betrieben.

Man kann LEDs auch mit Stromquellen betreiben.

von Carsten S. (dg3ycs)


Lesenswert?

Ghost Rider schrieb:
> Hmm, naja ich hab die LED ja quasi direkt an die Versorgungsspannung
> geklemmt, also fließen 4,8V durch die LED (Pulsbetrieb)
>
> Ich kann leider nicht messen, wieviel mA da durchfließen, dazu ist mein
> Messgerät zu träge.
> mfg

Wie? KEIN VORWIDERSTAND? Der Strom wird bei dir wirklich nur durch den 
Transistor und die LED begrenzt?

Das wird auch im Pulsbetrieb nicht wirklich gutgehen da es nur reines 
Glück ist wenn die Bausteine keinen Schaden nehmen. Ein Vorwiderstand 
ist ein absolutes MUSS, wenn er auch deutlich kleiner sein darf als bei 
Dauerbetrieb.

Ich nehme an das deine LED also viel zu viel Strom ertragen muss und 
dadurch nicht richtig funktioniert. Mach mal den Versuch und nehme eine 
(billige) LED die im sichtbaren Bereich Funktioniert erst mit 5V und 
dafür passenden Vorwiderstand, dann das Labornetzteil immer weiter 
aufdrehen...

Die LED wird sowohl die Farbe leicht verändern als auch immer weniger 
Licht abgeben bis sie dann das Zeitliche Segnet. Es kann also gut sein 
das deine LED auch nur "glimmt", vielleicht sogar etwas neben ihrer 
Sollfarbe, nur das du das ja nicht siehst...

Gruß
Carsten

P.S.: Wenn die Schaltung so dimensioniert werden soll das du das 
mögliche Maximum rausholen kannst, dann könnte der BC547 etwas zu 
schwach sein, zumindest grenzwertig. Im Moment ist er aber 
wahrscheinlich dafür verantwortlich das deine LED überhaupt nocht was 
von sich gibt.

von asd (Gast)


Lesenswert?

> Kann das sein, dass der BC548 zu schwach ist?

Wie viel Basisstrom beklommt der denn? Damit der wirklich 100mA fließen 
lässt braucht es schon etwas mehr als 1mA, eher 10. Alternativ stärkeren 
Transistor nehmen, Logiclevel-MOSFET vermutlich. Dann aber wirklich 
einen passenden Vorwiderstnad für 200-300mA Strom im Einschaltmoment in 
Reihe zur LED schalten.

von Ghost R. (ghostrider1911)


Lesenswert?

Ok?

Alles klar.. ich hab eben auf einer anderen Seite gesehen, dass man im 
reinen Pulsbetrieb den Vorwiderstand weglassen kann....

Das man eine LED im Normalbetrieb nur am Vorwiderstand betreiben darf 
ist mir klar.

Währe ein BC337 als Transistor besser geeignet?

Welchen Vorwiderstand soll ich nehmen? (Wieviel Ohm)

Vielleicht ersetz ich die LED auch kurzzeitig durch eine normale LED, 
dann kann man die Helligkeit besser beurteilen..

mfg

von Oliver J. (skriptkiddy)


Lesenswert?

Ghost Rider schrieb:
> Alles klar.. ich hab eben auf einer anderen Seite gesehen, dass man im
> reinen Pulsbetrieb den Vorwiderstand weglassen kann....
Quelle bitte.

von Ghost R. (ghostrider1911)


Lesenswert?

Der Widerstand der den Basisstrom des Transistors begrenzt hat 1,2 kOhm

Nach der Quelle muss ich mal suchen.

mfg

von Bernhard S. (b_spitzer)


Lesenswert?

Wenn Du schon MOSFETs meiden willst, dann nimm einen Darlington. Der 
kann wenigstens auch Strom liefern. Deine bisherigen Transistoren haben 
eine Stromverstärkung von 100-500, je nach Klasse (A, B, oder C-Typ). Im 
Schaltbetrieb brauchst Du für einen ordenltichen Diodenstrom einige mA 
schnell in die Basis.
Wenn Du z.B. einen BC517 nimmst, der hat eine Verstärkung von ca. 5000, 
da erhältst Du ziemlich sicher einen weit höheren Diodenstrom. Nachteil 
ist, dass beim Darlington eine Uce von bis zu einem Volt abfällt. Von 
deinen 4 NiMh bleiben für die Diode also ca. 3,8V übrig. Aus dem 
Datenblatt der nicht genannten Diode suchst Du dir jetzt die 
Vorwärtsspannung (IR-Dioden haben eine Knickspannung von ca. 1,3V, bei 
einigen 100mA würde ich mal auf max. 2,5V gehen) für den gewünschten 
Strom. Die Differenz muss durch einen Widerstand vernichtet werden. Im 
Datenblatt zur LD271 ist z.B. eine Vorwärtsspannung von 1,9-2,5V bei 1A 
angegeben. Das macht die aber nur für Pulse mit 100µs...

Die Option ohne Vorwiderstand klappt halt nur, weil a) der Transistor in 
der Schaltung nur wenig Basisstrom bekommt und b) er daher im linearen 
Bereich arbeitet. Der Transistor ist hier dein (unsichtbarer) 
Vorwiderstand. Das selbe Spiel mit einem Logoc-Level Leistungs-MOSFET 
und die IR-LED leuchtet vor Freude hell auf.... (im sichtbaren Bereich, 
danach stinkt es grässlich)

Ansonsten helfen Reflektoren an der IR-LED auch, um die Reichweite 
merkbar zu erhöhen.

tschuessle
Bernhard

von Ghost R. (ghostrider1911)


Lesenswert?

Sorry, wenn ich mich etwas ungeschickt ausgedrückt habe, aber ich währe 
bereit einen Mos-FET zu benutzen, ich hab allerdings nur Leistungs-FET´s 
da, die Leistungen von 10-20 A abkönnen, aber das wird wohl kein Problem 
sein oder?

IRF 520 z.B.

Soll ich den FET dann ohne Vorwiderstand betreiben?

Und es bleibt immernoch die Frage, wie muss ich den Vorwiderstand für 
die Infrarot -LED dimensionieren?
mfg

von Bernhard S. (b_spitzer)


Lesenswert?

Ghost Rider schrieb:
> Der Widerstand der den Basisstrom des Transistors begrenzt hat 1,2 kOhm

Sodele, hier haben wir ja den Strombegrenzer... mit 1,2k bekommst Du bei 
4,8V höchstens (optimistische Schätzung, die Treiberleistung des PicAXE 
vermasselt die genaue Rechnung) einen Basisstrom von (4,8V - Ube) / 1,2k 
= 3,4mA. Damit ist der Transistor (für den erhofften Kollektorstrom) 
noch lange nicht im Schaltbetrieb und arbeitet linear.

tschuessle
B.

von ... (Gast)


Lesenswert?

Oliver J. schrieb:
> Man kann LEDs auch mit Stromquellen betreiben.

-> Ersatzschaltbild Stromquelle:
Spannungsqzelle + (unendlich) hohem Innenwiderstand

von ... (Gast)


Lesenswert?

Ghost Rider schrieb:
> Und es bleibt immernoch die Frage, wie muss ich den Vorwiderstand für
> die Infrarot -LED dimensionieren?

Bernhard Spitzer schrieb:
> Von deinen 4 NiMh bleiben für die Diode also ca. 3,8V übrig. Aus dem
> Datenblatt der nicht genannten Diode suchst Du dir jetzt die
> Vorwärtsspannung ...

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Ghost Rider schrieb:
> Die Infrarot Diode hängt über einen Transistor (BC548) am Picaxe
> Controller, der in der Fernbedienung ebenfalls verbaut ist.
> Es wird kein Vorwiderstand verwendet.

Du hast noch nicht erwähnt, wie genau du die Zutaten miteinander 
verschaltet hast.

von Ghost R. (ghostrider1911)


Lesenswert?

Ok, den Vorwiderstand werd ich mir mal ausrechnen.

Also Verschaltung sieht so aus:

AusgangPicaxe - Vorwiderstand 1,2kOhm - Basis TransistorNPN BC548

Collektor an Minus

Emitter zu Minus von IR-LED

Plus IR-LED zu Batterie Plus

mfg

von Wilhelm F. (Gast)


Lesenswert?

Es gilt besonders auch, den Empfänger im Lichtspektrum zu filtern, und 
empfindlich einzustellen.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Ghost Rider schrieb:
> Also Verschaltung sieht so aus:
> Collektor an Minus

Der BC548 ist ein NPN Transistor. Der Kollektor gehört an die Kathode 
("Minus") der LED!

> Emitter zu Minus von IR-LED

Siehe oben.

> Plus IR-LED zu Batterie Plus

Ist ok. Das "Plus" der LED nennt sich übrigens Anode.

Nun verbindest du noch den Emitter des BC548 mit GND ("Masse" / "Minus") 
deiner Schaltung. Das Einfügen eines passenden Vorwiderstandes für die 
LED kann natürlich nicht schaden.

von Stephan (Gast)


Lesenswert?

BC337-40 sollte einigermaßen klappen wenn der Controllerausgang bei ca. 
10mA nicht zu sehr in die Knie geht.
300 Ohm Vorwiderstand für den Transistor.

Für die LED nen Vorwiderstand im Bereich 5-10 Ohm. Zu Anfang eher 
konservativ starten.

Oskar wäre für die Diagnose sicher hilfreich.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Magnus Müller schrieb:
> Ghost Rider schrieb:
>> Emitter zu Minus von IR-LED

Nachtrag:

Das "Minus" der LED nennt sich Kathode.

von Stephan (Gast)


Lesenswert?

Ghost Rider schrieb:
> Emitter zu Minus von IR-LED

Oha, verkehrt rum.Die LED ist LOW-Active, der Transistor schaltet gar 
nix.
Ein Wunder, dass überhaupt was geht.

Du betreibst die LED mit einer Seriendiode (B-E-Strecke) und 1,2K 
Vorwiderstand.
Strom durch die LED ist vmtl. < 4mA gegenüber möglichen c1. 400mA.
Reichweite damit um Faktor 10 reduziert.

von Ghost R. (ghostrider1911)


Lesenswert?

Sorry, Emitter ist natürlich an Minus und Kollektor an Anode.

Oszilloskop hab ich da, was genau soll ich messen, bzw. auf was soll ich 
achten?


mfg

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Ghost Rider schrieb:
> Sorry, Emitter ist natürlich an Minus und Kollektor an Anode.

Glaube ich dir jetzt nicht ohne Weiteres.

> Oszilloskop hab ich da, was genau soll ich messen, bzw. auf was soll ich
> achten?

Hast du auch eine Kamera da? --> Foto von Bestückungs- und Lötseite 
machen und hier als Anhang posten.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Nachtrag:

Ghost Rider schrieb:
> Sorry, Emitter ist natürlich an Minus

Gut so...

> und Kollektor an Anode.

Quatsch! Der Kollektor muss an die Kathode ("Minus") !

von Stephan (Gast)


Lesenswert?

Magnus Müller schrieb:
> Glaube ich dir jetzt nicht ohne Weiteres.
Jup. Bei dem Durcheinander ist nichts sicher...

Ghost Rider schrieb:
> Oszilloskop hab ich da, was genau soll ich messen, bzw. auf was soll ich
> achten?

Vor allem den Strom über die LED (Shunt).

Aber ehrlich gesagt; Wenn du nen Oskar hast und damit messen kannst 
sollte sollte das ganze absolut kein Problem sein.

von Ghost R. (ghostrider1911)


Lesenswert?

Die LED ist natürlich korrekt angeschlossen, sonst würds ja überhaupt 
nicht funktionieren..

Das kommt eben davon, wenn man nicht ganz bei der Sache ist.

Morgn werd ich mal mitn Oszilloskop messen, was bei der IR-LED ankommt, 
und dann Bilder davon machen.

mfg

von Jens G. (jensig)


Lesenswert?

Dein TSOP sieht am besten bei 950nm - sendet Deine IRED auch auf dieser 
Wellenlänge? Es gibt ja vorrangig welche für um die 880nm, und welche 
für 940/950nm.
Ansonsten: Oszi nehmen, und über einen kleine Strommeßshunt die 
Strompulse messen. Bzw. Spannungspulse über der Diode (ist aber weniger 
wichtig).
Und man kann auch eine zweite IRED als Fotodetektor nehmen, dies an den 
Oszi anschließen, und deiner IRED gegenüberhalten. Damit kann man auch 
schön die Strahlungsleistung mit einer Fernbedienung vergleichen.
Und eine weitere Ursache für geringere Leistung: vielleicht strahlt 
deine IRED ziemlich breit ab, und nicht gebündelt. Da käme nicht mehr 
viel beim Empfänger an, trotz gleicher Strahlungsleistung (läßt sich 
auch mit der Detektor-IRED feststellen).

von Ghost R. (ghostrider1911)


Lesenswert?

Hab ich das richtig verstanden, dass wenn ich eine beliebige IR-LED an 
mein Oszi häng, ich IR Strahlung messen kann?

Hört sich irgndwie "zu" einfach an.

Übrigens: ich hab ca. 5 IR-LED´s aus alten Fernbedienungen ausprobiert.

Morgenmach ich einfach mal n paar Messungen..

mfg

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Wenn deine Schaltung wirklich korrekt sein sollte (was ich nach wie 
vor bezweifle) und die Wellenlänge der Sendediode zu der des Empfängers 
passt, kommt nur noch ein Fehler in der Software in Betracht.

von Ghost R. (ghostrider1911)


Lesenswert?

Hmm, an einen Fehler in der Software glaub ich nicht, da die IR Routinen 
alle vorgefertigt sind.

mfg

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Ghost Rider schrieb:
> Hmm, an einen Fehler in der Software glaub ich nicht, da die IR Routinen
> alle vorgefertigt sind.

Sag niemals "Nie". "Vorgefertigt" heißt nicht automatisch "fehlerfrei".

--> Code Posten.

von Max D. (max_d)


Lesenswert?

Ich hatte mal ein gedachtes Reichweitenproblem mit IRMP (dem hier ausm 
Wiki), da wurde der decoder-code so mit abfragen in ned loop zugemüllt, 
dass er fast keine Zeit mehr für die Erkennung von Ir-signalen hatte. 
Das Ergebnis war eine stark verminderte Empfindlichkeit, da der tsop bei 
weniger signalstärke etwas "schmiert".... Ein einfaches Warten in der 
main war die Lösung.

von Martin T. (luckyluck)


Lesenswert?

Hallo Ghost Rider,
ich mache das bei meiner Fernbedienung, die für draussen und weite 
Entfernungen gedacht ist mit einem n-kanal Mosfet. PWM an Gate, über 
source und drain 7,2V vor IR-Diode 3,3Ohm (ja Ohm nicht kOhm). Mosfet 
(sollte ca. 1A vertragen) schaltet mit TTL Pegeln durch. Als IR-Diode 
verwende ich die TSAL6100 da das die hellste ist, die ich gefunden habe. 
Als Empfänger verwende ich einen TSOP4840 (40kHZ) den es aber auch in 
den Varianten für 36, 38 und 56 kHz gibt!
Du solltest für den TSOP auf jeden Fall das im Datenblatt vorgeschlagene 
RC-Glied einbauen, ohne habe ich keine guten Erfahrungen gemacht. 
Desweiteren kann es in kleinen Räumen sogar notwendig sein die 
Intensität deutlich zu reduzieren, da es sonst aufgrund von Reflektionen 
zu falschen Signalen kommt, die nicht interpretiert werden. Du könntest 
als erstes einmal schauen, was dir Dein Empfänger ausgibt (solltest du 
Zugang zu einem Oszi oder Logicanalyser haben). Ich nehme an, dass du 
das RC5 Protokoll oder zumindest die on/off zeiten ungefähr übernimmst. 
Die liegen ja im Bereich einer Millisekunde. Das kann auch deine 
Soundkarte noch gut auflösen.

Viel Erfolg =)

von Ghost R. (ghostrider1911)


Lesenswert?

Ok, ich poste mal Empfänger und Sender Codes, aber diese sind 
mittlerweile ziemlich "komplex"

Sender:

[c]setfreq m32
let dirsc=%11100110
let dirsb=%00000000

pulsout C.1, 2000
pause 300
pulsout C.1, 2000

b10 = 1
b11 = 0


main1:

do

'sertxd ("Taster: ",#b8,cr,lf)

  if b11 = 1 then
  goto Ubersprungen
  endif

'if b10 = 1 then
'enabletime
'endif

if pinC.3 = 1 then
pinC.1 = 1
endif

if pinC.3 = 0 then
pinC.1 = 0
endif

'if time = 3 then
'pinC.1 = 0
'endif

'if time = 4 then
'pinC.1 = 0
'let time = 0
'endif

  Ubersprungen:

readadc10 B.1 ,b1
readadc10 B.2 ,b2
readadc10 B.3 ,b3
readadc10 B.4 ,b4
readadc10 B.5 ,b5
readadc10 C.4 ,b6
readadc10 C.0 ,b7


if b1 < 10 and b2 < 10 and b3 < 10 and b4 < 10 and b5 < 10 and b6 < 10 
and b7 < 10 then
b8 = 0
endif




;Erste Reihe:

if b1 > 60 and b1 < 75 then
b8 = 1
endif

if b1 > 150 and b1 < 175 then
b8 = 2
endif

if b1 > 40 and b1 < 55 then
b8 = 3
endif

if b1 > 200 then
b8 = 4
endif


;Zweite Reihe:

if b2 > 60 and b2 < 75 then
b8 = 5
endif

if b2 > 150 and b2 < 175 then
b8 = 6
endif

if b2 > 40 and b2< 55 then
b8 = 7
endif

if b2 > 200 then
b8 = 8
endif


;Dritte Reihe:

if b3 > 60 and b3 < 75 then
b8 = 9
endif

if b3 > 150 and b3 < 175 then
b8 = 10
endif

if b3 > 40 and b3 < 55 then
b8 = 11
endif

if b3 > 200 then
b8 = 12
endif


;Vierte Reihe:

if b4 > 60 and b4 < 75 then
b8 = 13
endif

if b4 > 150 and b4 < 175 then
b8 = 14
endif

if b4 > 40 and b4 < 55 then
b8 = 15
endif

if b4 > 200 then
b8 = 16
endif


;Fünfte Reihe:

if b5 > 60 and b5 < 75 then
b8 = 17
endif

if b5 > 150 and b5 < 175 then
b8 = 18
endif

if b5 > 40 and b5 < 55 then
b8 = 19
endif

if b5 > 200 then
b8 = 20
endif



;Sechste Reihe:

if b6 > 60 and b6 < 75 then
b8 = 21
endif

if b6 > 150 and b6 < 175 then
b8 = 22
endif

if b6 > 40 and b6 < 55 then
b8 = 23
endif

if b6 > 200 then
b8 = 24
endif



;Siebte Reihe:

if b7 > 60 and b7 < 75 then
b8 = 25
endif

if b7 > 150 and b7 < 175 then
b8 = 26
endif

if b7 > 40 and b7 < 55 then
if b11 = 1 then
let b11 = 0
endif
endif

if b7 > 200 then
b11 = 1
pinC.1 = 1
endif


if b8 = 0 then goto main1

if b11 = 1 then
let b8 = b8 + 28
endif

if b11 = 0 then
pinC.1 = 0
endif



for b9 = 0 to 2
irout C.2,1,b8
next b9

pulsout C.1, 1000

loop[c]


Empfänger:
[c]
setfreq m32



''''''''''''''''''''
'PWM Initalisierung'
''''''''''''''''''''


pwmout B.4, 63, 10 'CH8Pwmpin

pwmout B.2, 63, 10 'CH10Pwmpin


''''''''''''''''''''''''''''''''''
'Ein und Ausgänge werden bestimmt'
''''''''''''''''''''''''''''''''''

let dirsc=%000111
let dirsb=%111111

''''''''''''''''''''
'Orientierungshilfe'
''''''''''''''''''''

symbol CH1rot1      =  b1
symbol CH2gruen1    =  b2
symbol CH3blau1     =  b3

symbol CH4weis1     =  b4
symbol CH5Hinter1   =  b5
symbol CH6Kast1     =  b6


symbol CH7OnOff     =  b7
symbol CH8Pwm       =  b8
symbol CH9OnOff     =  b9
symbol CH10Pwm      =  b10

symbol Infrakey     =  b11
symbol PCControl    =  b12


''''''
'Pins'
''''''

symbol CH7OnOffpin     = B.5
symbol CH8Pwmpin       = B.4
symbol CH9OnOffpin     = B.3
symbol CH10Pwmpin      = B.2

''''''''''''''''''''''''''''
'Startwerte werden bestimmt'
''''''''''''''''''''''''''''

b1=    5
b2=    5
b3=    5

b4=    150
b5=    10
b6=    30

b7=    1
b8=    10

b9=    1
b10=   10

'''''''''''''''
'Auf PC warten'
'''''''''''''''

Programmstart:


sertxd ("Controller gestartet",cr,lf)
sertxd ("Nicht verbunden",cr,lf)



'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
'''''''''
'Infrarot 
bestimmung'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
'''''''''

Infrarotbestimmung:


Anfang:



do



'''''''''''''''''''''''
'On Off Pins Ausführen'
'''''''''''''''''''''''

pinB.5 = b7 'CH7OnOffpin
pinB.3 = b9`'CH9OnOffpin

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'6 Werte für die zwei WS2801 Controller lesen und dann laden'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

  b0=b6
  gosub Shiften

  b0=b5
  gosub Shiften

  b0=b4
  gosub Shiften

  b0=b3
  gosub Shiften

  b0=b2
  gosub Shiften

  b0=b1
  gosub Shiften

pinB.1 = 0

irin C.4,b11

gosub Abfragen


pinB.1 = 1


loop

end


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
'''''''''
'Sertxd 
bestimmung'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
'''''''''

Sertxdbestimmung:



sertxd ("Verbunden",cr,lf)


do

pinB.1 = 0

''''''''''''''''''''
'Werte an PC senden'
''''''''''''''''''''

sertxd ("R",cr,lf)

serrxd b12,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10

if b12 = 0 then
sertxd ("Nicht verbunden",cr,lf)
pulsout B.1,1000
pause 500
pulsout B.1,1000
pause 500
pulsout B.1,1000
goto Programmstart
endif

sertxd (#b1," ",#b2," ",#b3," ",#b4," ",#b5," ",#b6," ",#b7," ",#b8," 
",#b9," ",#b10,cr,lf)

pinB.1 = 1

'''''''''''''''
'PWM Ausführen'
'''''''''''''''



pwmduty B.4,b8  'CH8Pwmpin
pwmduty B.2,b10 'CH10Pwmpin


'''''''''''''''''''''''
'On Off Pins Ausführen'
'''''''''''''''''''''''

pinB.5 = b7 'CH7OnOffpin
pinB.3 = b9`'CH9OnOffpin

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'6 Werte für die zwei WS2801 Controller lesen und dann laden'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

  b0=b6
  gosub Shiften

  b0=b5
  gosub Shiften

  b0=b4
  gosub Shiften

  b0=b3
  gosub Shiften

  b0=b2
  gosub Shiften

  b0=b1
  gosub Shiften






loop

end





''''''''''''''''''''''''''''''''
'Abfragen für die Fernbedienung'
''''''''''''''''''''''''''''''''


Abfragen:

'Erster Abschnitt

'Erste Reihe

If b11 = 1 then
  If b1 = 255 then
  goto Anfang
  endif
let b1 = b1 + 5
endif



if b11 = 2 then
  If b2 = 255 then
  goto Anfang
  endif
let b2 = b2 + 5
endif

if b11 = 3 then
  If b3 = 255 then
  goto Anfang
  endif
let b3 = b3 + 5
endif

if b11 = 4 then
  If b4 = 255 then
  goto Anfang
  endif
let b4 = b4 + 5
endif

'Zweite Reihe

if b11 = 5 then
  If b1 = 0 then
  goto Anfang
  endif
let b1 = b1 - 5
endif

if b11 = 6 then
  If b2 = 0 then
  goto Anfang
  endif
let b2 = b2 - 5
endif

if b11 = 7 then
  If b3 = 0 then
  goto Anfang
  endif
let b3 = b3 - 5
endif

if b11 = 8 then
  If b4 = 0 then
  goto Anfang
  endif
let b4 = b4 - 5
endif

'Zweiter Abschnitt

'Dritte Reihe

If b11 = 9 then
  If b5 = 255 then
  goto Anfang
  endif
let b5 = b5 + 5
endif



if b11 = 10 then
  If b6 = 255 then
  goto Anfang
  endif
let b6 = b6 + 5
endif

if b11 = 11 then
  If b8 = 255 then
  goto Anfang
  endif
let b8 = b8 + 5
endif

gosub PWMeinlesen

if b11 = 12 then
  If b10 = 255 then
  goto Anfang
  endif
let b10 = b10 + 5
endif

gosub PWMeinlesen

'Vierte Reihe

if b11 = 13 then
  If b5 = 0 then
  goto Anfang
  endif
let b5 = b5 - 5
endif

if b11 = 14 then
  If b6 = 0 then
  goto Anfang
  endif
let b6 = b6 - 5
endif

if b11 = 15 then
  If b8 = 0 then
  goto Anfang
  endif
let b8 = b8 - 5
endif

gosub PWMeinlesen

if b11 = 16 then
  If b10 = 0 then
  goto Anfang
  endif
let b10 = b10 - 5
endif

gosub PWMeinlesen

'Dritter Abschnitt

'Fuenfte Reihe

If b11 = 17 then
  If b7 = 1 then
  goto Anfang
  endif
let b7 = b7 + 1
endif



if b11 = 18 then
  If b9 = 1 then
  goto Anfang
  endif
let b9 = b9 + 1
endif

if b11 = 19 then ;rot
b1=    255
b2=    0
b3=    0

b4=    100
b5=    50
b6=    50

b7=    1
b8=    50
b9=    1
b10=   50
gosub PWMeinlesen
Return
endif

if b11 = 20 then ;grün
b1=    0
b2=    255
b3=    0

b4=    100
b5=    50
b6=    50

b7=    1
b8=    50
b9=    1
b10=   50
gosub PWMeinlesen
Return
endif


'Sechste Reihe

if b11 = 21 then
  If b7 = 0 then
  goto Anfang
  endif
let b7 = b7 - 1
endif

if b11 = 22 then
  If b9 = 0 then
  goto Anfang
  endif
let b9 = b9 - 1
endif

if b11 = 23 then ;blau
b1=    0
b2=    0
b3=    255

b4=    100
b5=    50
b6=    50

b7=    1
b8=    50
b9=    1
b10=   50
gosub PWMeinlesen
Return
endif

if b11 = 24 then 'weiß
b1=    0
b2=    0
b3=    0

b4=    255
b5=    50
b6=    50

b7=    1
b8=    50
b9=    1
b10=   50
gosub PWMeinlesen
Return
endif


'Siebte Reihe

if b11 = 25 then ;aus
b1=    0
b2=    0
b3=    0

b4=    0
b5=    0
b6=    0

b7=    0
b8=    0
b9=    0
b10=   0

gosub PWMeinlesen
Return
endif

if b11 = 26 then 'mittel
b1=    50
b2=    200
b3=    50

b4=    255
b5=    255
b6=    255

b7=    1
b8=    255
b9=    1
b10=   255

gosub PWMeinlesen
Return
endif

'Shfit Fünfte Reihe
if b11 = 45 then 'aus
b1=    0
b2=    0
b3=    0

b4=    0
b5=    0
b6=    0

b7=    0
b8=    0
b9=    0
b10=   0
gosub PWMeinlesen
Return
endif

if b11 = 46 then 'glimmen
b1=    5
b2=    5
b3=    5

b4=    5
b5=    5
b6=    5

b7=    1
b8=    5
b9=    1
b10=   5
gosub PWMeinlesen
Return
endif

if b11 = 47 then 'bissl heller
b1=    20
b2=    20
b3=    20

b4=    40
b5=    20
b6=    20

b7=    1
b8=    20
b9=    1
b10=   20
gosub PWMeinlesen
Return
endif

'Shift Siebte Reihe

if b11 = 53 then 'PC Modus
goto Sertxdbestimmung
endif

if b11 = 54 then 'Programmiermodus
Disconnect
pulsout B.1, 5000
pause 500
pulsout B.1, 10000
pause 500
pulsout B.1, 2500
endif


Return





''''''''''''''''''''''''''''''''''''''''
'Abteilung shiften für WS2801 Controller'
''''''''''''''''''''''''''''''''''''''''

Shiften:
      pinc.0=bit7
      pulsout c.1,1
      '--------------
      pinc.0=bit6
      pulsout c.1,1
      '--------------
      pinc.0=bit5
      pulsout c.1,1
      '--------------
      pinc.0=bit4
      pulsout c.1,1
      '--------------
      pinc.0=bit3
      pulsout c.1,1
      '--------------
      pinc.0=bit2
      pulsout c.1,1
      '--------------
      pinc.0=bit1
      pulsout c.1,1
      '--------------
      pinc.0=bit0
      pulsout c.1,1
      '--------------


Return


PWMeinlesen:


'''''''''''''''
'PWM Ausführen'
'''''''''''''''

pwmduty B.4,b8  'CH8Pwmpin
pwmduty B.2,b10 'CH10Pwmpin

Return[c]


Ja ich weiß, der Code ist nicht das ordentlichste, aber er funktioniert 
tadellos.

Das der Code an der Reichweite schuld ist kann ich mir nicht vorstellen 
weil: Der Empfänger ja bei irin (ohne Timeout) immer auf ein neues 
Signal wartet und nicht immer von oben bis unten durchläuft.

Das heißt, es wird nur etwas getan, wenn ein Signal am TSOP anliegt.


Noch eine Problemlösungsmöglichkeit ist mir eingefallen:

Den Kondensator und den Widerstand für den TSOP, würde es was bringen, 
diese zwei Bauteile DIREKT am TSOP anzulöten? (Der TSOP hängt bei mir 
ausserhalb vom Gehäuse über ein 0,5m langes gut abgeschirmtes Kabel rum)

Wie dimensioniere ich die Bauteile? (Ich kann irgnwie im Datenblatt nur 
Anhaltswerte finden)

Wie beeinflussen die Werte die Empfindlichkeit etc.?

mfg

von Ghost R. (ghostrider1911)



Lesenswert?

So, ich hab jetzt diverse Messungen vorgenommen, im Anhang die Bilder,

Ich hab eine Diode ans Oszi angeschlossen, man sieht ja die Ergebnisse.



Anhand des einen Bildes wo man den Drehregler des Oszis sieht, kann man 
erkennen, wieviel Volt an der Diode anliegen.

Man sieht: Der Teiler am Oszi ist auf 0.1, also 0.1 V pro Kästchen. Der 
Messkopf hat einen Teiler von 10, das heißt, ca. 1,2 V liegen an der 
Diode an.

(Die Diode hab ich bei allen Messungen angeschlossen lassen)
Videos lade ich noch hoch, da sieht man die Ergebnisse besser als auf 
den Bildern.

Leider schneidet meine Handykamera beim Fotografieren des Oszis immer 
etwas weg...

mfg

von Ulrich (Gast)


Lesenswert?

So wie es aussieht ist die Diode mehr als 50% der Zeit an. Das ist schon 
wieder Kontraproduktiv. Besser ist eher ein Tastverhältnis von etwa 25%. 
Dazu kommt noch, das die Frequenz wohl nicht konstant ist, und damit 
ggf. auch noch etwas daneben. Da reduziert das nutzbare Signal schon 
erheblich.
Eine mögliche Ursache können Verzögerungen durch Interrupts sein.

Bei einem so unübersichtlichen und dann auch noch unvollständigen Code 
erübrigt sich die Fehlersuche hier.

Der Anstieg sieht bei der Spannung an der Diode auch recht 
Sägezahnförmig aus, nicht nach einem Rechteck - da ist wohl auch die 
Hardware zur Ansteuerung auch nicht gut. Die Beschreibung der Schaltung 
lässt auch nichts gutes erwarten.

Der Kondensator am Empfänger IC ist für die Versorgungsspannung. Der 
sollte wenn möglich wirklich am IC sitzen, nicht 50 cm davon entfernt. 
Etwa 100 nF sind da die richtige Größenordnung. Der Genaue Wert ist aber 
unkritisch und hat praktisch keinen Einfluss auf die Empfindlichkeit.

Wichtiger ist da der Entsprechende Kondensator an der Senderseite. In 
der Regel wird man auch da einen Kondensator/ELko brauchen um die 
Stromspitzen zu puffern.

von Ghost R. (ghostrider1911)


Lesenswert?

Leider kann ich dank meines bescheidenen Internets keine Videos 
uploaden, ich setz jetzt einfach mal n Mos-FET und n Vorwiderstand zur 
LED ein, mal schaun ob, bzw. was das ganze bringt.

mfg

von Ghost R. (ghostrider1911)


Lesenswert?

So, ich hatte keinen passenden Mos-FET da, deswegen kam einfach ein 
BDX33C Leistungs-Darlington Transistor zum Einsatz.

Als Vorwiderstand hängen nun parallel 3 x 12Ohm dran.


Und siehe da: ES FUNKTIONIERT!!

Es reicht nun bis zum Bett, die Verbindung ist stabil, und das auch noch 
bei Tageslicht!!

(Vorher gings nur mit geschlossenem Rollo)

DANKE LEUTE!!

Ihr seit die besten!!..

mfg

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.