AVR RF Interface Board

Features: 

Basiert auf Controller AVR 4te

  • Controller auf Basis des ATMega328P
  • kompatibel zu KNX-RF
  • verwendet fertiges Funkmodul RFM23B
  • Gatewayfunktion Draht<->Funk und zusätzlich entweder App app-8-in oder app-8-out
  • Bestückungsvariante für RF-only
  • Kollisionserkennung von KNX Telegrammen funktioniert nun zuverlässig

Einschränkungen gegenüber AVR 4te Controller

  • SDA/SCL nicht mehr gesondert verfügbar
  • RES1/RES2 (reserve I/O) gibts nicht mehr

 

Beschreibung: 

Das Projekt liegt im Redmine-System.

Das freebus-rf interface board basiert auf dem AVR 4TE controllerboard. Letzteres wurde um ein fertig erhältliches Funkmodul erweitert. Das Funkmodul ist das RFM23B (in der 868MHz Version) von hoperf.com. Das ist eine Variante des RFM22B, mit auf 13 dBm begrenzter Sendeleistung, das entspricht 20 mW (milliwatt) . 25 mW ist der gesetzlich zulässige Maximalwert. Das RFM22B kann mit 20 dBm (100 mW) senden, was nicht erlaubt ist. Also liegt man mit dem RFM23B auf der sicheren Seite. Im Folgenden bezeichne ich das RFM22B kurz mit RFM (Radio Frequency Module).

Systemtakt

Das RFM ist mit dem AVR über die SPI Schnittstelle verbunden. Ferner liefert es den Takt für den AVR. Der AVR hat also, wenn das RFM bestückt ist, keinen eigenen Quarz. Das RFM hat einen 30MHz Quarzoszillator. Über einen einstellbaren internen Teiler liefert das RFM einen 10MHz Takt für den AVR, der dort über den XTAL1 pin eingespeist wird. Die AVR fuses werden auf "externer Takt" eingestellt. In dieser Betriebsart steht der XTAL2 pin als Port pin zur Verfügung. Er ist mit dem Eingang SDN (shutdown) des RFM verbunden. Der AVR kann damit den RFM quasi abschalten. Dies feature wird nicht benutzt, weil damit auch der Takt für den AVR abgeschaltet würde.

ohne Funk geht auch

Man kann auf derselben Platine auch einen ganz normalen freebus controller aufbauen. Dann lässt man das RFM und R1 weg und bestückt den Quarz (Q2, C10, C11). In diesem Fall wird der AVR mit 8MHz getaktet. Die verschiedenen Taktfrequenzen (mit RFM / ohne RFM) sind in der firmware berücksichtigt.

nur Funk

Schliesslich kann man auch eine rf-only Version bestücken. Dazu lässt man die Teile für die EIB Schnittstelle weg. Und man muss sich überlegen, wie man die Stromversorgung macht. Man kann z.B. den Spannungswandler drin lassen, D2 bestücken, L2 durch einen 12 Ohm Widerstand ersetzen, und EIB+/EIB- an eine Gleichspannung von 12...32 Volt anschliessen. Man kann auch direkt mit 3,3Volt an VCC gehen. Batteriebetrieb ist mit diesem board allerdings nicht richtig möglich, weil noch nicht klar ist, wie man den AVR nach einem shutdown des RFM wieder startet. Ausserdem geht Batteriebetrieb sowieso nur für Busteilnehmer, die nur senden können.

der Controller

Der AVR ist ein ATMEGA 328p. Für normale Applikationen würde auch der ATMEGA 168p reichen. Ein Betrieb mit bootloader ist jedoch nur mit dem ATMEGA 328p möglich. Die *.hex files im downloadbereich sind generell für den ATMEGA 328p compiliert.

Stückliste

Die 3 rechten Spalten geben die Bestückungsvarianten an.
TP-RF Interface, Draht- und Funk
TP freebus ohne Funk
RF nur Funk
X Bauteil(e) bestücken
*?* bei Bedarf ("nur Funk" mit Spannungswandler, in diesem Fall kann L2 durch einen 12 Ohm Widerstand ersetzt werden)

Ein Reichelt Warenkorb für TP-RF: Reichelt-Warenkorb.

KennungBezeichnungWertReichelt Best. Nr.TP-RFTPRF
C1, C2, C3SMD Kondensator 1206100nX7R-G1206 100nXXX
C4, C6Keramikkondenstaor RM5100nX7R-5 100nXX 
C5Keramikkondenstaor RM5100nX7R-5 100nXXX
C7Elko radial100µ/16VRAD 100/16XXX
C8Elko radial100µ/63VRAD 100/63XX?
C9Keramikkondensator RM2,5470pNPO-2,5 470PXX?
C10, C11Keramikkondensator RM2,533pKERKO 33P X 
C12Keramikkondensator47pKERKO 47PXX 
D1Si-Diode1N41481N 4148XX 
D2Si-Diode1N41481N 4148XX?
D3Zenerdiode 0,5WBZX79C8V2ZF 8,2XX 
D4Schottky DiodeBAT46BAT 46XX 
D6Schottky DiodeBAT46BAT 46XX?
D7Überspannungsschutz-DiodeSMAJ40A XX?
IC1MicrocontrollerATMEGA328P-20PATMEGA 328P-PUXXX
IC2FunkmodulRFM23B-868-S1 X X
IC3SpannungswandlerMC34063APMC 34063 AXX?
JP1Stiftleiste RM2,5 gerade1X10SL 1X40G 2,54XXX
JP3Stiftleiste RM2,5 gerade2X3SL 2X40G 2,54XXX
L1Festinduktivität220µHSMCC 220µXX?
L2Festinduktivität150mHL-11P 150MXX?
LED1LED 3mm rot LED 3MM 2MA RTXXX
Q1Transistor PNPBC557BBC 557BXX 
Q2Quarz HV49U8 MHz8,000-HC49U-S X 
Q3Transistor PNPBC640BC 640XX 
Q4FETBS170BS 170XX 
R1Widerstand 1/4W10k1/4W 10KX X
R2, R3Widerstand 1/4W10k1/4W 10KXXX
R4, R7Widerstand 1/4W10k1/4W 10KXX 
R5Widerstand 1/4W120k1/4W 120KXX 
R6, R16Widerstand 1/4W100k1/4W 100KXX 
R8Widerstand 1/4W2R21/4W 2,2XX?
R9Widerstand 1/4W 1%3K6METALL 3,60KXX?
R10Widerstand 1/4W12K1/4W 12KXX 
R11Widerstand 1/4W5K61/4W 5,6KXX 
R12Widerstand 1/4W100R1/4W 100XX 
R13Widerstand 1/4W12R1/4W 12XX 
R14Widerstand 1/4W 1%2K2METALL 2,20KXX?
R15Widerstand 1/4W1K1/4W 1KXXX
R17Widerstand 1/4W220K1/4W 220KXX 
S1Kurzhubtaster6x6x4,3TASTER 3301XXX
SV1WannensteckerML20WSL 20GXXX
X2SMB Print Einbaubuchse SMB EB2-L174X X

D7, IC2 gibt es nicht bei Reichelt.

IC2 z.B. bei www.octamex.de

Wahlweise können 1N4148 durch BAT46 ersetzt werden (dann hat man nur 1 Sorte Dioden).

Applikationen

Auf jeder der 3 Varianten kann eine Applikation laufen. Normalerweise funktioniert derselbe Quelltext mit allen 3 Varianten, es muss jeweils nur die richtige lib eingebunden werden. Ja, sogar auf dem interface, also der Schnittstelle zwischen Draht und Funk (man kann auch "gateway" oder "access point" dazu sagen), kann zusätzlich z.B. noch ein out8 oder in8 laufen.

Antennenanschluss

über SMB Buchse. Die Buchse ist vollständig im 4TE Gehäuse, zugänlich über ein zu bohrendes Loch in der mittleren "Stufe" des Gehäuses.
Der SMB Stecker verdeckt evtl. 1 oder 2 Schraubklemmen-Löcher, beim Anschliessen der Schraubklemmen muss er gezogen werden.

U = SMB Buchse
! = SMB Stecker
o = Schraubklemmenloch wie üblich

__
  |
  o
  | !
  -- -
    U |
      |
      ---------
               |
               |
               |
               |

Antenne

Als Antenne kommt z.B. Aurel GP868 in Frage (Conrad 190123), ca. 30€, man kann sich sowas aus ein paar Drähten auch selbst bauen.
Oder man baut sich einen Koaxdipol aus einem Stück RG213 Kabel (s.u.). Für das Interface sollte man schon eine solche gute Antenne verwenden, für die übrigen RF Geräte reicht dann ein ca 8cm langer Draht. Als endgültige Lösung stelle ich mir eine gedruckte Antenne vor. Aber selbst Hager z.B. verwendet ein Stück Draht.

Meine Antenne

Sie ist einfach zu bauen. Man nehme ein 162mm langes Stück RG213 Kabel. Entferne an beiden Enden 25mm von der äußeren Isolierung. Die Abschirmung muss entflochten und auseinandergefaltet werden, damit man auch den Innenleiter abisolieren kann. Der Innenleiter muss 24mm abisoliert werden. Nun wird beidseitig der Schirm mit dem Innenleiter verlötet. Schirmgeflecht entsprechend kürzen.
In der Mitte entfernt man ca 10mm von der Isolierung, und trennt die Abschirmung auf, so dass eine Lücke von ca. 5mm entsteht. Auf einer Seite wird jetzt die Abschirmung der Zuleitung angelötet, auf der anderen Seite der Innenleiter. Als Zuleitung nimmt man am besten RG174-U, weil das zu den SMA / SMB Steckern passt.

Belegung der ATMEGA328P pins

PIN               FUNKTION
---               --------
PB0/ICP1/CLKO     ICP1   EIB_IN  (input capture)
PB1/OC1A          OC1A   CTRL    (PWM direkt mit timer1 machbar?)
PB2/OC1B/SS       SS     RFM22.NSEL
PB3/OC2A/MOSI     MOSI   RFM22.SDI
PB4/MISO          MISO   RFM22.SDO
PB5/SCK           SCK    RFM22.SCK
PB6/XTAL1         XTAL1  clock in von RFM22, Quarz wenn ohne RFM22
PB7/XTAL2         XTAL2  RFM22.SDN bzw. Quarz wenn ohne RFM22

PC0/ADC0                 IO1
PC1/ADC1                 IO2
PC2/ADC2                 IO3
PC3/ADC3                 IO4
PC4/ADC4/SDA             IO5/SDA   entweder 8 I/O lines oder 6 I/O + I2C
PC5/ADC5/SCL             IO6/SCL

PD0/RXD           RXD    RXD/RES3
PD1/TXD           TXD    TXD/RES4
PD2/INT0          INT0   frei
PD3/INT1          INT1   RFM22.NIRQ
PD4/XCK/T0        PD4    PROG
PD5/T1/OC0B       OC0B   EIB_OUT
PD6/AIN0/OC0A     PD6    IO7
PD7/AIN1          PD7    IO8

Benutzung der AVR Hardware-Resourcen

  • Timer0
    timing für freebus (Draht)
    Output Compare register und pins für EIB_OUT
  • Timer1
    Timer und PWM für die App.
    Evtl zusätzlich Input Capture von EIB_IN.
    (flanke an EIB_IN speichert wert des timer1. Daraus kann man den genauen Zeitpunkt der Flanke rekonstruieren, trotz interrupt latency)
  • Timer2
    timing für RF.
  • INT0
    frei
  • INT1
    Interrupts vom RFM22
  • SPI Schnittstelle (MOSI, MISO, SCK, SS)
    bedient den RFM22

Platinen Type: