Forum: Mikrocontroller und Digitale Elektronik CTC 36khz, sehr mysteriös


von a guest (Gast)


Lesenswert?

Servus!

Hab schonma nen Thread gemacht, aber keine antwort bekommen.
Also versuche ich es jetzt noch einmal in kurzform ;-)

Ich hätte gerne ein 36khz trägersignal für einen SFH5110-36 IR 
Empfänger.
Ich glaube die Formel heißt:

Frequenz = µC-Clock/(Prescaler*OCR0)

oder

Frequenz = µC-Clock/(Prescaler*OCR0)/2

Welche muss es sein?

Naja, ich habe es schon mit beiden und einigen anderen Versucht und nix 
geht nach meiner Rechnung.
Das einzige was läuft ist

µC-Clock = 2MHZ
Prescaler = 8
OCR = 9

2000000/(8*9) = 27.7khz

Wie kann das sein?
Ich versteh das nicht?
Bitte helft mir, ich bin am verzweifeln.

Cu,
Ein Gast

von Klaus (Gast)


Lesenswert?

diese hir

>Frequenz = µC-Clock/(Prescaler*OCR0)/2

wenn Dein µC bei jedem Int. von L auf H (oder umgekehrt) umschaltet.

von a guest (Gast)


Lesenswert?

Erstmal danke, dass du mir antwortest!
Freut mich, dass ich zumindest bei der formel nicht total auf dem 
schlauch stand.

Dann verstehe ich aber nicht warum alles was ich nach der Formel rechne 
nicht funktioniert.

Bei den werten die funktionieren käme man dann auf:

2000000/(8*9)/2 = 13.8khz

Wie kann das sein?
Welche faktoren könnten da noch rein spielen damit aus den werten keine 
13.8khz sondern 36khz werden? o.O

Also ein falscher SFH5110 kann es auch nicht sein, denn es gäbe auch 
keinen mit 13.8khz.

Aktueller Code:

TCCR0 = 0x00;
TCCR0 |= ( (1<<WGM01) | (1<<COM00) | (1<<CS01) );
OCR0  = 9;

Und an den OC0 pin ist über einen Mosfet eine IR-LED angeschlossen.
Was mache ich dann falsch?

von Uwe N. (ulegan)


Lesenswert?

Genaugenommen lautet die Formel:
F=clk/2/n/(OCR+1)
Bei Prescaler n=8, OCR=9 und 2MHz Takt erhältst du 12,5kHz.
Ein ungenauer RC-Oszillator könte die 13,8kHz erklären...
Für 36kHz könntest du n auf 1 setzen und OCR auf 27.
Das ergibt theoretisch 35714Hz, praktisch wohl etwas mehr.
Um welchen Prozessor geht es eigentlich? Zum ATmega128 würde
die Registerbeschreibung passen...

von hans (Gast)


Lesenswert?

Für 36kHz braucht man mit CTC und Toggled Pin eine Frequenz von
72kHz.

OCR = (µC/(Pres*F)) -1

bei 72kHz und 2 MHz mit Pres=1

OCR = (2000000/(1*72000)) -1 = 27

(Freq ist: 71,43kHz)

OCR zählt von 0 ab daher die -1 !

gruß hans

von Klaus (Gast)


Lesenswert?

Hi hans und Uwe,

genauer gehts mit 2MHZ nicht!

Ich schlage eine höhere Tacktfreq. vor die ein vielfaches
von 36KHz sind.

von hans (Gast)


Lesenswert?

@Klaus

die 2MHz waren vorgegeben und nicht von mir.
Die rechnerische Abweichung von unter 1% ist für IR-Fernbedienung
mehr als ausreichend.
Der interne Oszillator kann da mehr Ärger machen.
(Aber nicht mir sondern a guest ;))

gruß hans

von a guest (Gast)


Lesenswert?

vielen dank für eure hilfe!
mit der formel von hans funktioniert es!

gerade getestet:

OC0 = (8000000/(1*72000))-1 = 110

es handelt sich übrigens um einen atmega32.
jetzt hab ich noch das problem, dass die reichweite zur zeit vll 20cm 
beträgt.

ich benutze eine über einen mosfet angesteuerte CQY-99 IR-LED an 5V mit 
vorwiderstand 30ohm -> 120mA.

http://www.datasheet4u.com/html/C/Q/Y/CQY99_ETC.pdf.html

Brauch ich eine andere LED oder mit wieviel strom kann diese CQY-99 bei 
36khz pulsen? muss es im schnitt unter den maximalen 150mA dauerstrom 
bleiben? oder was genau bedeutet durchlaßstrom, spitzendurchlaßstrom und 
stoßdurchlaßstrom?

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.