Benutzer:Kenoldb: Unterschied zwischen den Versionen
(17 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | [[ | + | [[Bild:07032010044 -1600x1200-.jpg]] |
− | |||
+ | |||
+ | == Hier ein Bild mit dem akutellen Web Frontend des ganzen Erfassungssystems == | ||
+ | <br /> | ||
+ | |||
+ | [[Bild:TMS-online.jpg]] | ||
+ | |||
+ | Wer Interesse hat, kann sich an [[Benutzer:Afloria]] wenden.<br /> | ||
+ | <br /> | ||
== Basis == | == Basis == | ||
Zeile 29: | Zeile 36: | ||
pin(ONEWIRE, PB0)<br /> | pin(ONEWIRE, PB0)<br /> | ||
− | + | [[Bild:Addon 1wire.jpg]] | |
'''Spannungsversorgung'''<br /> | '''Spannungsversorgung'''<br /> | ||
paralell zum ( R2 1,5K ) 4,7K gelötet und habe jetzt 3,25V<br /> | paralell zum ( R2 1,5K ) 4,7K gelötet und habe jetzt 3,25V<br /> | ||
+ | |||
+ | Die aktuelle Lösung für mein Boardverbund, ist ein LITEON Netzteil von Pollin, welches | ||
+ | 5V und 3,3V zur Verfügung stellt. | ||
+ | Das heist alle Bauteile für die Erzeugung von 5V und 3,3V sind entfernt worden. | ||
+ | Seitdem läuft auch die SD-Karte sauber durch. | ||
'''2. ISP Port damit auch dort das flashen funktioniert'''<br /> | '''2. ISP Port damit auch dort das flashen funktioniert'''<br /> | ||
Zeile 49: | Zeile 61: | ||
Der Gedanke ist per control6 Messdaten auf die SD-Karte zu schreiben.<br /> | Der Gedanke ist per control6 Messdaten auf die SD-Karte zu schreiben.<br /> | ||
− | + | Geschrieben wird inzwischen schon was..<br /> | |
+ | Zwar noch nicht sonderlich hübsch aber.. <br /> | ||
+ | |||
+ | VFS_LOG("dateiname", "imps: %d\n", variable); | ||
+ | |||
+ | Schreibt immer die Werte aus der Variablen in die genannte Datei.<br /> | ||
+ | |||
+ | Sieht dann in der Datei so aus:<br /> | ||
− | + | imps: 43 | |
− | ;-)<br /> | + | imps: 44 |
+ | imps: 45 | ||
+ | |||
+ | Richtig da fehlt noch der Timestamp, aber sind ja noch nicht fertig ;-) <br /> | ||
'''I2C Bus'''<br /> | '''I2C Bus'''<br /> | ||
Zeile 82: | Zeile 104: | ||
'''LCD über I2C (PCF8574x''')<br /> | '''LCD über I2C (PCF8574x''')<br /> | ||
− | + | Wurde inzwischen in ethersex mit aufgenommen. <br /> | |
− | + | Verdrahtung erfolgt nach Schema:<br /> | |
− | + | * HD44780-Display über PCF8574 ansteuern.<br /> | |
+ | * Belegung Pollin Add-On-Board:<br /> | ||
+ | *<br /> | ||
+ | * Pin PCF8574 Pin am LCD<br /> | ||
+ | * 4 (P0) -> 11 (DB4)<br /> | ||
+ | * 5 (P1) -> 12 (DB5)<br /> | ||
+ | * 6 (P2) -> 13 (DB6)<br /> | ||
+ | * 7 (P3) -> 14 (DB7)<br /> | ||
+ | * 9 (P4) -> 4 (RS)<br /> | ||
+ | * 10 (P5) -> 5 (R/W) nicht benutzt !<br /> | ||
+ | * 11 (P6) -> 6 (EN)<br /> | ||
+ | * 12 (P7) -> 15 (Beleuchtung)<br /> | ||
+ | *<br /> | ||
+ | * Die LCD-Beleuchtung an Pin 12 wird über einen <br /> | ||
+ | * PNP-Transistor geschaltet.<br /> | ||
+ | * Beleuchtung an: Bit 7=0 <br /> | ||
+ | * Beleuchtung aus: Bit 7=1<br /> | ||
+ | * Die Address-Eingänge A0 bis A2 des PCF8574 liegen alle auf GND.<br /> | ||
+ | * Die Basis-Addresse des Chips ist daher immer 0x20.<br /> | ||
+ | <br /> | ||
+ | Nur so als Hinweis für alle die es auch faziniert suchen wie man aus control6 das LCD anspricht.<br /> | ||
+ | '''LCD HD44780 wird mit dem Modul TTY aus control6 angesprochen.'''<br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | Im Moment wird dort die aktuelle KW mit nach Komma und die aktuellen imps ausgegeben.<br /> | ||
+ | Leider hat sich herausgestellt, das 1w und sht11 zusammen mit der jetzigen zählweise zu Fehlern führt.<br /> | ||
+ | Es gehen Impulse verloren.<br /> | ||
+ | Eventl. Umstellung auf Interrupts, oder Messung über control6 in einem extra thread.<br /> | ||
+ | <br /> | ||
+ | '''Ergänzung Hardware'''<br /> | ||
+ | Der Transistor Q1 ist falsch geliefert.<br /> | ||
+ | Geliefert wird ein BC548 (NPN), benötigt wird mind. ein BC558 (PNP).<br /> | ||
+ | Empfohlen wird wohl ein BC327 oder größer. Da der BC558 max. 100mA Leistung schalten kann.<br /> | ||
+ | Bei meinem Display reichts.<br /> | ||
+ | Der BC558 läßt sich genauso einlöten wie das Boardlayout es hergibt, also auch für Anfänger kein Hinderniss.<br /> | ||
+ | Einfach alt gegen neu austauschen.<br /> | ||
+ | <br /> | ||
'''Relais Karte Pollin K8IO über I2C ( PCF8574x).'''<br /> | '''Relais Karte Pollin K8IO über I2C ( PCF8574x).'''<br /> | ||
Konfiguriert über named PIN ( wenn ich herausgefunden haben wie das mit I2C/PCF8574x geht ).<br /> | Konfiguriert über named PIN ( wenn ich herausgefunden haben wie das mit I2C/PCF8574x geht ).<br /> | ||
Zeile 126: | Zeile 184: | ||
Inhalt der Datei ../control6/s0zahler.src<br /> | Inhalt der Datei ../control6/s0zahler.src<br /> | ||
+ | Ist nicht mehr ganz auf dem aktuellen Stand, aber Grundzüge sind noch zu erkennen ( glaube ich ). <br /> | ||
+ | |||
C6_HEADER(`/* This will be in control6.h */') | C6_HEADER(`/* This will be in control6.h */') | ||
Zeile 158: | Zeile 218: | ||
ON PIN_FALLING(S1) DO | ON PIN_FALLING(S1) DO | ||
z1++; | z1++; | ||
+ | TTY_CLEAR() | ||
+ | TTY_WRITE(`"%1d,%d"', KW1, z1 / 200) | ||
+ | TTY_WRITE(`"%5d"', z1 ) | ||
END | END | ||
ON z1 == imps1 DO | ON z1 == imps1 DO |
Aktuelle Version vom 13. Mai 2010, 16:10 Uhr
Hier ein Bild mit dem akutellen Web Frontend des ganzen Erfassungssystems
Wer Interesse hat, kann sich an Benutzer:Afloria wenden.
Basis
Pollin NET-IO
Modifikationen
20Mhz
Atmega 644
Spannungsregler 7805 durch Netzteil ersetzt.
NET-IO ADDON
Modifikationen
TSOP
nicht montiert
R9 durch 1k5(oder 4k7) Widerstand ersetzt
C6 100nF entfernt
Schraubblock aufgelötet und PIN1 und 2 gebrückt ( Datenpin und VCC ).
Somit ist dieser Port 1Wire fähig.
fürs pinning:
pin(ONEWIRE, PB0)
Spannungsversorgung
paralell zum ( R2 1,5K ) 4,7K gelötet und habe jetzt 3,25V
Die aktuelle Lösung für mein Boardverbund, ist ein LITEON Netzteil von Pollin, welches 5V und 3,3V zur Verfügung stellt. Das heist alle Bauteile für die Erzeugung von 5V und 3,3V sind entfernt worden. Seitdem läuft auch die SD-Karte sauber durch.
2. ISP Port damit auch dort das flashen funktioniert
Brücke von ISP auf ISP1 PIN 5 ( Reset )
SD-Karte
R11 nicht einbauen.
R19 raus
R20 raus
anstelle von R19 Drahtbrücke rein.
fürs pinning:
pin(SPI_CS_SD_READER, PB3, OUTPUT)
Der Gedanke ist per control6 Messdaten auf die SD-Karte zu schreiben.
Geschrieben wird inzwischen schon was..
Zwar noch nicht sonderlich hübsch aber..
VFS_LOG("dateiname", "imps: %d\n", variable);
Schreibt immer die Werte aus der Variablen in die genannte Datei.
Sieht dann in der Datei so aus:
imps: 43 imps: 44 imps: 45
Richtig da fehlt noch der Timestamp, aber sind ja noch nicht fertig ;-)
I2C Bus
Direkt vom NET-IO Hochgeführt (2 adriges Kabel) ist ja doch ein bißchen übertrieben wegen dem I2C den ganzen
PortC vom Atmel zu verlieren inkl. 4 AD Wandler.
Was auch bedeutet, das man die SUB-D 25 Buchse/Stecker weglassen kann auf dem ADDON.
RFM12
fürs pinning:
pin(SPI_CS_RFM12, PD5, OUTPUT)
RFM12_USE_INT(1)
RFM12_ASK_SENSE_USE_INT(1)
pin(RFM12_TX_PIN, PA3, OUTPUT)
Wobei TX_Pin ohne Funktion
Lochraster Bereich
SHT11
An LED2 und 3 habe ich einen SHT11 gelötet, die Vorwiderstände auf 10k (R5 und R6).
Frei von unten verdrahtet.
fürs pinning:
pin(SHT_SCK, PD4, OUTPUT)
pin(SHT_DATA, PD6, OUTPUT)
SHT_VOLTAGE_COMPENSATION(5V)
Lochraster Bereich
Taster S1
An ADC4 und GND vom NETIO.
LCD über I2C (PCF8574x)
Wurde inzwischen in ethersex mit aufgenommen.
Verdrahtung erfolgt nach Schema:
- HD44780-Display über PCF8574 ansteuern.
- Belegung Pollin Add-On-Board:
- Pin PCF8574 Pin am LCD
- 4 (P0) -> 11 (DB4)
- 5 (P1) -> 12 (DB5)
- 6 (P2) -> 13 (DB6)
- 7 (P3) -> 14 (DB7)
- 9 (P4) -> 4 (RS)
- 10 (P5) -> 5 (R/W) nicht benutzt !
- 11 (P6) -> 6 (EN)
- 12 (P7) -> 15 (Beleuchtung)
- Die LCD-Beleuchtung an Pin 12 wird über einen
- PNP-Transistor geschaltet.
- Beleuchtung an: Bit 7=0
- Beleuchtung aus: Bit 7=1
- Die Address-Eingänge A0 bis A2 des PCF8574 liegen alle auf GND.
- Die Basis-Addresse des Chips ist daher immer 0x20.
Nur so als Hinweis für alle die es auch faziniert suchen wie man aus control6 das LCD anspricht.
LCD HD44780 wird mit dem Modul TTY aus control6 angesprochen.
Im Moment wird dort die aktuelle KW mit nach Komma und die aktuellen imps ausgegeben.
Leider hat sich herausgestellt, das 1w und sht11 zusammen mit der jetzigen zählweise zu Fehlern führt.
Es gehen Impulse verloren.
Eventl. Umstellung auf Interrupts, oder Messung über control6 in einem extra thread.
Ergänzung Hardware
Der Transistor Q1 ist falsch geliefert.
Geliefert wird ein BC548 (NPN), benötigt wird mind. ein BC558 (PNP).
Empfohlen wird wohl ein BC327 oder größer. Da der BC558 max. 100mA Leistung schalten kann.
Bei meinem Display reichts.
Der BC558 läßt sich genauso einlöten wie das Boardlayout es hergibt, also auch für Anfänger kein Hinderniss.
Einfach alt gegen neu austauschen.
Relais Karte Pollin K8IO über I2C ( PCF8574x).
Konfiguriert über named PIN ( wenn ich herausgefunden haben wie das mit I2C/PCF8574x geht ).
Wofür? Noch keine Idee ;-).
Auftrag:
Pollin/Kangtai Powerswitch (IC 2270)
Funksteckdosen ansteuern.
Hiermit werden diverse Zeitschaltuhren abgelöst.
Das ganze wird von einem externen Host angesteuert.
(Linux Cronjob)
S0 Zähler für Strom Wattmeter ( SWISSNOX 2000 imps/KWh 90ms).
Zählt schon mal grob über control6.
(Hier bei Gelegenheit weitere Infos, wenn ich alles zusammengesucht habe, Dokumentation sei
dank ;-) ).
control6 Code ( wer kann möge bitte anpassen :-) )
Vorrausetzung das das untere Skript funktioniert ist die aktivierung von named pin.
Einträge:
#PA7 ist ADC4 am netio
PA7 INPUT HIGH S1
#PA6 ist ADC3 am NETIO
PA6 INPUT HIGH S2
#LED Grün auf NET-IO ADDON Board
PD2 OUTPUT HIGH LEDGR
Vorraussetzung das Control6 Code kompiliert wird.
In der Firmware muss control6 aktiviert werden und in
../config.mk
die Zeile:
C6_SOURCE = $(TOPDIR)/control6/s0zaehler.src
eingefügt sein.
Wenn die config.mk nicht existiert diese bitte erstellen.
Inhalt der Datei ../control6/s0zahler.src
Ist nicht mehr ganz auf dem aktuellen Stand, aber Grundzüge sind noch zu erkennen ( glaube ich ).
C6_HEADER(`/* This will be in control6.h */') CONTROL_START dnl Variabeln setzen dnl 1. Impulse Zähler Eingang ECMD_GLOBAL(z1, 0, uint16_t) ECMD_GLOBAL(KW1, 0, uint16_t) ECMD_GLOBAL(LEDGR1, 0, uint16_t) dnl imps/KW/h ECMD_GLOBAL(imps1, 5, uint16_t) ECMD_GLOBAL(z1h, 0, uint16_t) //hilfsvariable dnl Uhrzeit der letzten vollen KW/h ECMD_GLOBAL(time1, 0, uint16_t) dnl 2. Impulse Zähler Eingang ECMD_GLOBAL(z2, 0, uint16_t) ECMD_GLOBAL(KW2, 0, uint16_t) dnl imps/KW/h ECMD_GLOBAL(imps2, 5, uint16_t) THREAD(LEDBLINK) ON z1h == 1 DO PIN_SET(LEDGR); WAIT(3); PIN_CLEAR(LEDGR); dnl WAIT(3); z1h = 0; END THREAD_END(LEDBLINK) THREAD(IMPULSE) dnl schleifen dnl impulse zählen ON PIN_FALLING(S1) DO z1++; TTY_CLEAR() TTY_WRITE(`"%1d,%d"', KW1, z1 / 200) TTY_WRITE(`"%5d"', z1 ) END ON z1 == imps1 DO KW1++; time1 = CLOCK_DOW; z1 = 0; z1h = 1; END dnl impulse zählen ON PIN_FALLING(S1) DO z2++; END ON z2 == imps2 DO PIN_SET(LEDGR); KW2++; z2 = 0; PIN_CLEAR(LEDGR); END dnl ende der schleifen THREAD_END(IMPULSE) ON STARTUP DO THREAD_START(LEDBLINK); THREAD_START(IMPULSE); END CONTROL_END