Forum: Mikrocontroller und Digitale Elektronik Atmega <-> RFM12B


von amecke (Gast)


Lesenswert?

Hallo Miteinander,

vielleicht kann mir jemand helfen?

Ich möchte das RFM12b an einen Atmega328 betreiben. Der RFM12B arbeitet 
allerdings mit 3v3, der Atmega mit 5V.

Ein Spannungsteiler mit Widerstände kommt nicht in Frage.

Als alternative denke ich an einen Pegelwandler. Im Netz wie auch hier - 
ein schon oft beschriebenes Thema.

Leider finde ich für mich keine vollständig erklärende Lösung.

Evtl. kann mir jemand eine gute Lösung verraten. Wenn er mir hierzu noch 
eine entsprechende Beschaltung aufzeigen könnte,  wäre ich sehr dankbar.

Grüße
amecke

von katastrophenheinz (Gast)


Lesenswert?

Tach,
a) Pegelwandler:
1) Spricht was dagegen, den Atmega328 auch mit 3V3 zu betreiben?
2) Pegelwandler: Geht natürlich auch, aber selbst gekaufte sind auf der 
HV->LV Seite häufig auch nur als Spannungsteiler realisiert.
3) Für Wagemutige: Der RFM12B rennt auch mit 5V sagt das Internetz. Aus 
eigener Erfahrung kann ich das bestätigen, hatte mal einen für einige 
Tage im 5V-Dauerbetrieb. Folgeschäden? Bisher keine, rennt seit Monaten 
fehlerfrei mit Batteriespannung.
b) RFM12-Beispiele: Schon mal hier geguckt?
Beitrag "Beispielprogramm für RFM12 433MHz Funk-Module"

von amecke (Gast)


Lesenswert?

Vielen Dank für deine Antwort.

Im Augenblick spricht eigentlich nichts dagegen den Atmega328 mit 3,3V 
zu betreiben. (...das zu schaltende Relais (SSR) arbeitet glaube mit 
3...5V.)

Als Spannungsregler hätte ich jetzt einen L7805CV benutzt. Dieser regelt 
allerdings die Spannung auf 5V.

Könntest du mir einen Regler nennen welcher auf 3,3V reguliert. Wie 
würden dann hierzu die externe Beschaltung aussehen?

von katastrophenheinz (Gast)


Lesenswert?

> Könntest du mir einen Regler nennen welcher auf 3,3V reguliert.
Nein, nicht ohne die Randbedingungen ( Vin, Aout ) zu kennen. Je grösser 
die beiden, desto mehr Abwärme -> Package -> Kühlung.
-> Gugl + "Festspannungsregler 3.3V"
öffnet dir das ganze Universum. Oder aber im Online-Katalog eines 
Versenders (Reichelt, Conrad, ... ), denn dort gibt es gleich die 
Antwort auf deine zweite Frage:

> Wie würden dann hierzu die externe Beschaltung aussehen?
-> Datenblatt des von dir ausgewählten Spannungsreglers
meistens nur je ein Kondensator/Elko zwischen Vin/Vout und GND.

von amecke (Gast)


Lesenswert?

...es kann so einfach sein. ;-)

Habe jetzt den LM1117 bei reiche*t gefunden.

Würde folgendes Szenario funktionieren?

9V <--> L7805CV <-- (5V) --> Atmega328 (Betriebsspannung)
^
|
|----> LM1117  <-- (3,3V) --> RFM12B  (Betriebsspannung)


An der Versorgungspannung von 9V zapfen sich einmal der L7805CV und der 
LM1117 die Spannung ab.

...

Die 3,3V Datenleitungen (SPI) für die Ansteuerung des RFM12B realisiere 
ich dann mittels Spannungsteiler.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

amecke schrieb:
> Die 3,3V Datenleitungen (SPI) für die Ansteuerung des RFM12B realisiere
> ich dann mittels Spannungsteiler.

Auf einmal doch mit Spannungsteiler?

von amecke (Gast)


Lesenswert?

Nein, bzw. nicht vollständig mit Spannungsteilern.

Nur die Datenleitungen für den RFM12b:

-- MOSI (D in)
-- SCK (Clock)
-- SS (Select)

Den Rest schließe ich - bis auf die +3,3V Betriebsspannung des RFm12b - 
direkt an den Atmega328.

Die +3,3V des RFM12b über den oben beschriebenen LM1117 
Festspannungsregler.

von katastrophenheinz (Gast)


Lesenswert?

amecke schrieb:
> Den Rest schließe ich - bis auf die +3,3V Betriebsspannung des RFm12b -
> direkt an den Atmega328.

Schon mal im Datenblatt des Atmega geguckt, wie hoch die Spannung sein 
muss, die zuverlässig als H erkannt wird? Kann zwar funktionieren, ist 
aber von "robust design" soweit entfernt wie Politik von Wahrheit.

von amecke (Gast)


Lesenswert?

Der Rest ist IRQ und MISO (DOut).

Was müsste denn deiner Meinung nach - noch gemacht werden? 
(Beschaltungsmäßig)

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

katastrophenheinz schrieb:
> Schon mal im Datenblatt des Atmega geguckt, wie hoch die Spannung sein
> muss, die zuverlässig als H erkannt wird?

0,6*Vcc ;)

von katastrophenheinz (Gast)


Lesenswert?

Vih ( die Spannung, die zuverlässig als H erkannt wird ) ist bei deiner 
Beschaltung nur um 0.3 V überschritten. Im Normalfall funktioniert das. 
Aber bei Störungen auf den Leitungen können diese 0.3V zuwenig sein und 
stellen sich als schwer zu findende Fehlerquellen heraus.
Daher: Zum Ausprobieren gehts, aber für ein robustes Design würde ich 
dir empfehlen, die Pegel der Ausgangsssignale vom RFM12 auf 5V 
anzupassen

http://www.mikrocontroller.net/articles/Pegelwandler#3.3V_-.3E_5V

von amecke (Gast)


Lesenswert?

Ok, - verstehe!

Hmm..., die Pegelwandler auf der Erklärungsseite sind wohl eher schlecht 
zu bekommen?!

Könntest du mir denn einen Pegelwandler empfehlen? Diese müsste ja dann 
5 Eingänge und 5 Ausgänge haben.

von Tom M. (tomm) Benutzerseite


Lesenswert?

amecke schrieb:
> Als alternative denke ich an einen Pegelwandler.

Siehe Pegelwandler.

katastrophenheinz schrieb:
> 1) Spricht was dagegen, den Atmega328 auch mit 3V3 zu betreiben?

Scheint mir die einfachste Lösung zu sein. Für den 328P kann ich 12,280 
Mhz empfehlen, das ist Baudratenfreundlich. Wenn ich mich richtig 
erinnere, ist der 328P bei 3.3V bis knapp 14 Mhz spezifiziert (safe 
ratings). Das Datenblatt klärt mit einem Diagramm darüber auf.

amecke schrieb:
> Könntest du mir denn einen Pegelwandler empfehlen? Diese müsste ja dann
> 5 Eingänge und 5 Ausgänge haben.

Schau dir obigen Artikel an. Die 74AVC Familie scheint genau das zu 
bieten.

von katastrophenheinz (Gast)


Lesenswert?

> Könntest du mir denn einen Pegelwandler empfehlen? Diese müsste ja dann
> 5 Eingänge und 5 Ausgänge haben.

Nein, du brauchst nur je zwei, denn die Richtung 5V->3.3V funktionieren 
ja problemlos über Spannungsteiler.

Die Richtung 3.3->5V kannst du mit  MOSFETs bauen, hier gibt's die 
Schaltung:
http://www.sparkfun.com/datasheets/BreakoutBoards/Level-Converter-v10.pdf

oder mit einem 74HCT-Baustein: 74HCT125 ist zwar ein wenig oversized 
(Bietet 4fach, du brauchst 2x), aber frisst ja kein Brot.

von katastrophenheinz (Gast)


Lesenswert?

... nimm 74hct125. Kostet 0,21 bei Reichelt. Jede andere Lösung wird 
teurer, wenn du die Teile nicht in der Bastelkiste liegen hast.

von amecke (Gast)


Angehängte Dateien:

Lesenswert?

Nochmal vielen Dank für die Hilfen bisher.

Hier nochmal eine Skizze, wie ich ungefähr jetzt die Schaltung aufbauen 
würde.

Evtl. kann der eine oder andere einige Tipps bzw. Ratschläge dazu 
geben?!

von katastrophenheinz (Gast)


Lesenswert?

...da ist jetzt was faul:

1) Du möchtest mit dem ...125 doch erreichen, daß der mega328 
5V-Logigpegel an den Eingangsleitungen hat, die vom RFM12 kommen. 
Erreichst du das mit deiner Schaltung?

2) Gleichzeitig willst du mit einem Spannungsteiler aus zwei 
Widerständen erreichen, daß von den 5V-Ausgängen des mega328 nur noch 
3,3V am RFM12 ankommen. Wieviele Volts kommen denn mit deiner Schaltung 
bei logisch 1 am RFM12 an?

3) Der 74HCT125 hat Eingänge, die mit nichtG1...nichtG4 gekennzeichnet 
sind. Hast du die auf dem Schirm?

4) Was hast du mit den Pins 20-22 vor, die jetzt unbeschaltet gemalt 
sind?
Guck dir mal andere Designs an, wie die mit den Analog-Spannungen 
umgegangen sind z.B. Arduino ( nicht gut )
oder den hier (besser):
http://download.chip45.com/Crumb168_328_V2.3_schematics.pdf
Für den Anfang tut die Arduino-Lösung ( AVcc = Vcc ), wenn du ernsthaft 
mit den Analogfunktionen arbeiten willst, dann empfiehlt sich die 
bessere Lösung, die ist genauso gebaut wie das Atmel-Manual das vorgibt.

von stockchain (Gast)


Lesenswert?

Einfach zwei Dioden in Reihe vor dem RFM Modul. Bleiben 3,6-3,8V als 
Versorgung übrig. Ist zumindest näher am Spec als 5V.
Einfach und günstig.

von amecke (Gast)


Lesenswert?

> 1) Du möchtest mit dem ...125 doch erreichen, daß der mega328
> 5V-Logigpegel an den Eingangsleitungen hat, die vom RFM12 kommen.
> Erreichst du das mit deiner Schaltung?

Ja, das möchte ich erreichen. Ich dachte - ich würde das mit skizzierter 
Schaltung erreichen?! Mein aktuelles Verständnis sieht so aus, das der 
74HCT125 ein Pegelwandler ist. Dieser eine Pegelanpassung von 5V auf 
3,3V und 3,3V auf 5V durchführt und ohne externe Beschaltung auskommt. 
Schalte ich 5V an den Eingang A1 bekomme ich am Ausgang Y1 die 
gewünschten 3,3V. Umgekehrt, also wenn ich 3,3V an Y1 lege an A1 5V 
bekomme.

> 2) Gleichzeitig willst du mit einem Spannungsteiler aus zwei
> Widerständen erreichen, daß von den 5V-Ausgängen des mega328 nur noch
> 3,3V am RFM12 ankommen. Wieviele Volts kommen denn mit deiner Schaltung
> bei logisch 1 am RFM12 an?

Die Spannungsteiler habe ich verworfen. Wie du ja schon erwähntest, 
würde die Richtung atmega328 zu RFM12B rein Pegeltechnisch 
funktionieren. Also per Spannungsteilerregel 5V auf 3,3V herunterteilen. 
Eine logische 1 vom RFM12B von etwa 3,3V zum Atmega328 dagegen, könnte 
bei Störungen nicht immer korrekt funktionieren. Daher der Einsatz des 
Pegelwandlers.

> 3) Der 74HCT125 hat Eingänge, die mit nichtG1...nichtG4 gekennzeichnet
> sind. Hast du die auf dem Schirm?

Ja, zumindest habe ich diese auf dem Datenblatt erkannt. Sagen mir aber 
nicht wirklich etwas. Ich hätte jetzt vermutet das diese das Signal 
invertieren?! Müssen diese Pins denn geschaltet werden? Oder per 
Pullup-down Widerständen auf einen definierten Zustand gebracht werden?!

> 4) Was hast du mit den Pins 20-22 vor, die jetzt unbeschaltet gemalt
> sind?

20 und 21 auf Vcc und 22 auf Gnd

von katastrophenheinz (Gast)


Lesenswert?

amecke schrieb:
> Dieser eine Pegelanpassung von 5V auf
> 3,3V und 3,3V auf 5V durchführt und ohne externe Beschaltung auskommt.
> Schalte ich 5V an den Eingang A1 bekomme ich am Ausgang Y1 die
> gewünschten 3,3V. Umgekehrt, also wenn ich 3,3V an Y1 lege an A1 5V
> bekomme.

nicht ganz, der taugt nur für die Richtung 3.3 -> 5. Die Richtung 5->3.3 
realisierst du am einfachsten über Spannungsteiler (je zwei Widerstände 
mit passenden Werten in Reihe). Wenn du also die 3.3->5 nicht 
realisieren möchtest, verzichte komplett auf den 125 und nimm 
stattdessen 2x3 Widerstände für die Umsetzung 5->3.3

Warum geht 125 nicht für die Richtung 5->3.3? Logisch 1 am Ausgang ist 
immer ein Spannungswert nahe Vcc, 0 immer nahe 0V. Wenn du den 125 also 
mit 5V betreibst, kommen hinten auch 5V raus. Jetzt könnte man ja auf 
die Idee kommen: "super, dann betreibe ich den mit 3.3V". Geht aber auch 
nicht, weil 74hct125 nicht mit dieser Spannung spezifiziert und außerdem 
darf ein Eingangssignalpegel nie deutlich höher als Vcc sein. Falls 
doch, dann werden irgendwelche PN-Übergänge zum Substrat leitend, die 
nie leitend werden dürfen und du baust aus der gesamten Chipfläche im 
Grunde genommen nur noch eine Diode in Durchlassrichtung. Heute gibt es 
Schutzschaltungen, die das verhindern, aber zu Anfangszeiten von CMOS 
war das ein zuverlässiges Mittel, seinen Chip zu grillen.

Also würde ich an deiner Stelle einfach die Widerstände nehmen.

>Ja, zumindest habe ich diese auf dem Datenblatt erkannt. Sagen mir aber
>nicht wirklich etwas. Ich hätte jetzt vermutet das diese das Signal
>invertieren?! Müssen diese Pins denn geschaltet werden? Oder per
>Pullup-down Widerständen auf einen definierten Zustand gebracht werden?!

Im Datenblatt steht in der Logiktabelle bei nichtG=1 am Ausgang ein Z. 
"Z" steht für "Ausgang hochohmig". D.h. da kommt nur dann was raus, wenn 
du nichtG auf 0v legst. Aber da du ja komplett auf 125 verzichten 
kannst, brauchst du dich da nicht weiter drum kümmern.

>20 und 21 auf Vcc und 22 auf Gnd
Lass Aref erstmal unbeschaltet und mit 100nF gegen GND abblocken.
Ausserdem je 100nF zwischen Vcc und Gnd und Avcc und GND, möglichst 
dicht am Chip, wenn möglich gleich unter den IC-Sockel verbauen.

Schließlich fehlt bei dir noch die Beschaltung des Reset-Pins und der 
6pol. Pfostenstecker für die Programmierung über ISP. In dem verlinkten 
Schaltplan von oben kannst du sehen, was dafür zu tun ist.

von amecke (Gast)


Lesenswert?

> Wenn du also die 3.3->5 nicht realisieren möchtest, ...

Das verstehe ich jetzt nicht. Du hattest doch die Problematik mit dem zu 
kurzen Signalabstand angesprochen?

> ...Vih ( die Spannung, die zuverlässig als H erkannt wird ) ist bei deiner
> Beschaltung nur um 0.3 V überschritten....
> Daher: Zum Ausprobieren gehts, aber für ein robustes Design würde ich
> dir empfehlen, die Pegel der Ausgangsssignale vom RFM12 auf 5V
> anzupassen...

Deshalb die Erweiterung mit dem Pegelwandler (74HCT125).

Nach dem aktuellen Wissenstand würde jetzt die Schaltung wie folgt 
aufbauen. (siehe Skizze)

Was ist jetzt mit den High-Signalen (3,3V) vom RFM12b? Bei schlecht 
Wetter könnte der Atmega diese nicht als High erkennen. ;-)

von katastrophenheinz (Gast)


Lesenswert?

...dann guck noch mal auf deinen handcrafted schematic, den du gestern 
gepostet hast:

- Die Ausgangssignale des RFM12 ( MISO, IRQ ) gehen ohne irgendwas 
dazwischen an Eingänge des 328. d.h. da kommen 3,3V an und dort müsste 
der Pegelwandler dazwischen.

- Die Eingangssignale des RFM12 ( MOSI, SCK, SS ) kommen über den 125. 
Da der aber auch an 5V hängt, sind die Pegel an dessen Ausgang immer 
noch 0/5V. Also unverändert. Und am RFM12 kommt immer noch ein zu hoher 
Pegel an. Da muss ein Spannungsteiler hin.

von lol (Gast)


Lesenswert?


von Bernhard M. (boregard)


Lesenswert?

oder wie in http://jeelabs.org/2011/02/02/meet-the-rfm12b-board/ doch 
mit Widerständen...

von amecke (Gast)


Angehängte Dateien:

Lesenswert?

>Die Eingangssignale des RFM12 ( MOSI, SCK, SS ) kommen über den 125.
>Da der aber auch an 5V hängt, sind die Pegel an dessen Ausgang immer
>noch 0/5V.

Du hast Recht - das macht überhaupt keinen Sinn.

>Die Ausgangssignale des RFM12 ( MISO, IRQ ) gehen ohne irgendwas
>dazwischen an Eingänge des 328. d.h. da kommen 3,3V an und dort müsste
>der Pegelwandler dazwischen.

Stimmt! not(robust design)

...

Ok, - hier jetzt mein zweiter handcrafted schematic. :-)

von katastrophenheinz (Gast)


Lesenswert?

So wird ein Schuh draus! Sieht gut aus.
Ich würde jetzt noch einen 6pol. ISP-Stecker vorsehen und 10k von nReset 
nach Vcc.

von Holger W. (holgerw)


Lesenswert?

FSK sollte noch über 10k an 3,3V

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.