Dieser ArtikelBenutzerSuche |
Powerline mit AVRHier soll ein Projekt zur Entwicklung eines einfachen, modularen Powerline-Moduls mit einem AVR entstehen. Bisherige Diskussion siehe: [1]
[bearbeiten] Hardware[bearbeiten] Anforderungen
[bearbeiten] Hinweise
[bearbeiten] Mindestvorraussetzungen an den AVR
In Frage kommen (nicht vollständig):
neue AVR Typen low Power mit hi-speed PWM: ATtiny461 [bearbeiten] Funktionsweise (vgl TDA5051)
Der AVR moduliert auf die Netzspannung ein 140 kHz Signal. Die 140 kHz werden über den PWM-Ausgang erzeugt und anschließend verstärkt. Der PWM-Ausgang wird mittels INT0 getaktet. Durch eine Verbindung mit TXD werden somit schon alle Daten der UART auf das Netz moduliert.
Über ein RC-Filter (neue Version: LC-Filter) wird die Netzspannung nach hochfrequenten Anteilen durchsucht. Die Spannung wird von einem Transistor verstärkt und dann mit 2 Schottkydioden gleichgerichtet. Eine Siliziumdiode begrenzt das Signal noch auf ca. 0,5V. Das Signal wird anschließend dem AVR-Komparator zugeführt (neue Version ADC-Konverter). Über einen (software-) PWM-Ausgang kann die Schaltschwelle eingestellt werden. Das dekodierte Signal liegt dann an PD4 an und geht in die UART.
Über 2 x 1 MOhm Widerstände wird mittels INT1 die Netzfrequenz abgetastet. Bei jedem Nulldurchgang wird ein Zähler auf 255 gesetzt. Dieser zählt mittels Timer (alle 64 µs) auf ca. 100 herunter. Stimmt der Zähler mit dem Ausgangswert des jeweiligen Kanals überein, so wird ein Zündimpuls zum Triac ausgegeben. [bearbeiten] Module[bearbeiten] Basismodul UP-DoseHier mal ein erster Vorschlag (noch nicht vollstandig) für ein UP Basismodul mit SMD-Technik: Kann mal jemand mit OP-Amp-Kenntnissen kontrollieren, ob die Sendeendstufe so funktioniert?
Anmerkung: Der OP vom Typ 741 kann nicht bis an die Versorungsspannung ausgesteuert werden. In diesem Fall wird der Ausgang den 0V Pegel nicht erreichen. Die minimale Spannung wird bei ca. 1,5 V liegen.
--> Vorschlag OP Typ Rail-to Rail Input and Output TS922 (dual, 12V 80mA out) Warum wurde die Transistorschaltung durch einen OP ersetzt. Welche Vorteile bringt dies?
Im Eingangskreis halte ich eine OP-Schaltung für geeignet. Dort könnte mit dem OP-Schaltung die aufmodulierte Frequenz durch einen Bandpass gefiltert werden. Gruß Reinhold
Schutz vor Überspannung einplanen, z.B. Dioden --> Evtl kann man einen 2-Fach OP verwenden und den zweiten als Eingangsverstärker bzw. Gleichrichter verwenden.
Update: Was haltet ihr von dem Board als Standard für UP-Dosen? Habe versucht es so zu designen, dass auch eine erweiterte Version mit ATmega8 möglich ist. --> einfachere Stromversorgung ohne galvanische Trennung: Supertex SR086 /SR087 Das Board halte ich für zu groß, da ich glaube, dass du keinen Platz mehr zum Anklemmen der Leitungen hast.
Ich würde auf einen ATmega umsteigen, da dieser einen AD-Wandler hat, der dann evtl. die Abtastung des Trägers übernimmt. Außerdem hat er mehr Speicher neue Typen: ATtiny 261, 461 im SO20 (oder ATtiny 15 im SO8)
Ist es überhaupt nötig, die Abtastung separat zu machen? Der UART tastet doch auch schon 16 mal pro Bit ab. Man müsste dann nur den Offset einstellen können.
Part Value Device Package Library Reichelt B1 B-DIL B-DIL rectifier B80C800DIP C1 220µF CPOL-EUE5-10.5 E5-10,5 rcl RAD 220/25 C2 33nF 630V C-EU102-043X133 C102-043X133 rcl MKS-4-1000 33N C3 33nF C-EUC1206 C1206 rcl X7R-G1206 33N C5 100pF C-EUC1206 C1206 rcl NPO-G1206 100P C6 10nF C-EUC1206 C1206 rcl X7R-G1206 10N C7 1nF C-EUC1206 C1206 rcl NPO-G1206 1,0N C8,C11 22µF CPOL-EUE2-5 E2-5 rcl C9,C10 100nF C-EUC1206 C1206 rcl X7R-G1206 100N D1,D4 Schottky DIODE-D-2.5 D-2.5 diode D3 1n4148 DIODE-D-2.5 D-2.5 diode 1N 4148 F1 SHK20L SHK20L fuse PL 120000 IC1 uA741D uA741D SO08 linear µA 741 SMD IC2 78L05 78XXS 78XXS v-reg µA 78L05 IC3 ATTINY2313-20S ATTINY2313-20S SO20L avr ATTINY 2313 SO JP1 AVR-ISP-6 AVR-ISP-6 AVR-ISP-6 atmel L1 47µH L-EU0204/7 0204/7 rcl SMCC 47µ L2 47µH L-EUL4532P L4532P rcl LQH3C 47µ LED1 LED3MM LED3MM led Q1 4MHz CRYTALHC49S HC49/S crystal 4-HC49U-S R1,R17 10k R-EU_0207/2V 0207/2V rcl R2 2k2 R-EU_0207/12 0207/12 rcl R3 R-EU_R1206 R1206 rcl R4,R7 10k R-EU_R1206 R1206 rcl SMD 1/4W 10K R6 470k R-EU_M1206 M1206 rcl SMD 1/4W 470K R8 1k R-EU_0207/5V 0207/5V rcl R9 20k R-EU_R1206 R1206 rcl SMD 1/4W 20K R10 51k R-EU_R1206 R1206 rcl SMD 1/4W 51K R18 100k R-EU_0207/2V 0207/2V rcl SMD 1/4W 100K SV1,SV2 FE10-1 FE10 con-lsta BL 1X10G8 2,54 T4 BC847A-NPN-SOT23-BEC SOT23-BEC transistor BC 847A SMD TR1 9V EE20-1 EE20-1 trafo EE 20/6,1 109 X1 AK500/3 AK500/3 con-ptr500 AKL 101-03 [bearbeiten] Phasenanschnitt UP-Dose[bearbeiten] USB-Modul UP-Dose[bearbeiten] Basismodul Hutschiene[bearbeiten] Software[bearbeiten] ProtokollDas Protokoll ist multimasterfähig, jedes Paket muss quittiert werden. Kommt keine oder eine fehlerhafte Quittierung an, so wird ein paar mal versucht das Paket nochmal zu senden. Eine Sequenznummer garantiert die einmalige Verarbeitung, selbst wenn das Paket öfter empfangen wurde. [bearbeiten] Protokollaufbau
Zuerst wird nach dem Header gescannt (bei Manchestercodierung müssen wahrscheinlich vor dem Header noch ein paar Dummy-Daten gesendet werden, damit sich die AGC einstellt) Dann kommt die Länge und der wievielte Versuch dies ist, dieses Paket zu übertragen. Die Moduladresse hat momentan 7 Bit (also 128 Module), ein Bit ist zur Signalisierung, dass dies ein Ack-Paket ist. Das Gerät für welches das Ack-Paket bestimmt ist, löscht sein aktuell zu sendendes Paket aus dem Sendepuffer, da es weiß, dass seine Daten erfolgreich angekommen sind. Bleibt das Ack-Paket aus, so wird nach einer (pseudo-) zufälligen Zeit bis zu 8x versucht, das Paket erneut loszuwerden. Es kann jetzt passieren, dass der Empfänger das Paket 8x korrekt empfängt und nur das Ack-Paket nicht korrekt zurück kommt. Die Sequenznummer (welche für das aktuell zu sendende Paket immer gleich ist) garantiert aber, dass das Paket nur 1x verarbeitet wird. Um ein Paket als gültig anzusehen muss entweder C = 0 sein (erster Versuch das Paket zu senden) oder die Sequenznummer sich von der des letzten Paketes unterscheiden (hier kann es im Moment noch zu Problemen kommen, wenn mehrere Module untereinander kommunizieren). Weiterhin muss natürlich die Destination ID Übereinstimmen. Der Teil Daten wird dann von der nächsten Protokollebene behandelt. Das erste Byte ist der Befehl aus dem sich auch die Länge weiter Daten ableitet Momentan gibt es erst 2 Befehle: "s" <Speicherstelle> <wert> //speichert Wert in entsprechenden Konfig-Ram Modul antwortet mit "!" "q" <Speicherstelle> //Liest Wert aus Konfig-Ram Modul antwortet mit "=" <Wert> Im Konfig-Ram werden sowohl die Phasenanschnittwerte als auch die Tastzustände gehalten. Ein Überschreiben führt also sofort dazu, dass der entsprechende Ausgang den Wert ausgibt. [bearbeiten] Vorschläge
"s s0 01001100" setzt die Schalter 2,5 und 6 auf dem Modul und wird mit UMSETZUNG http://www.k13zoo.de/vdr/homeautomation/ |