Frank (Diskussion | Beiträge) K (→Schaltplan) |
Frank (Diskussion | Beiträge) K |
||
Zeile 61: | Zeile 61: | ||
1 RN1 Widerstandsnetzwerk 8x 10k SIL 9-8 10K | 1 RN1 Widerstandsnetzwerk 8x 10k SIL 9-8 10K | ||
1 Platine Fertig gedruckte Platine zum aufbauen der Schaltung (siehe unter Weblinks) | 1 Platine Fertig gedruckte Platine zum aufbauen der Schaltung (siehe unter Weblinks) | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | ==Beispielprogramm zur Ansteuerung== | ||
+ | |||
+ | <pre> | ||
+ | '################################################### | ||
+ | 'relaiskarte.bas | ||
+ | 'für | ||
+ | 'RoboterNetz Standard-Roboter Board RBNFRA ab 1.1 | ||
+ | ' | ||
+ | 'Aufgabe: | ||
+ | 'Relaiskarte wird getestet | ||
+ | 'Alle 8 Relais bzw. Fet Schaltstufen werden nacheinander | ||
+ | 'für 2 Sekunden eingeschaltet | ||
+ | ' | ||
+ | 'Autor: Frank | ||
+ | 'Weitere Beispiele und Beschreibung der Hardware | ||
+ | 'unter http://www.Roboternetz.de + robotikhardware.de | ||
+ | '################################################### | ||
+ | |||
+ | |||
+ | Declare Sub Rnb_relaisschalten(byval Relaisnr As Byte , Byval Status As Byte) | ||
+ | |||
+ | Const Relaisport_adr = &H76 'I2C Adr PCF 2 | ||
+ | |||
+ | |||
+ | Dim Relaisstatus As Byte | ||
+ | Dim I As Byte | ||
+ | |||
+ | |||
+ | $crystal = 8000000 'Quarzfrequenz | ||
+ | $baud = 9600 | ||
+ | Config Scl = Portc.0 'Ports fuer I2C-Bus | ||
+ | Config Sda = Portc.1 | ||
+ | |||
+ | I2cinit | ||
+ | |||
+ | |||
+ | Wiederhole: | ||
+ | |||
+ | For I = 0 To 7 | ||
+ | |||
+ | Call Rnb_relaisschalten(i , 1) 'Relais i so anziehen | ||
+ | Wait 2 'Warte 2 Sekundne | ||
+ | |||
+ | Call Rnb_relaisschalten(i , 0) 'Relais i soll abfallen | ||
+ | Wait 2 'Warte 2 Sekundne | ||
+ | Next I | ||
+ | |||
+ | Goto Wiederhole | ||
+ | |||
+ | |||
+ | 'Die Hilfsfunktion erleichtert das ein und Ausschalten bestimmter Relais | ||
+ | 'Variable: Relaisnr ( 0 bis 7) steht für ein bestimmtes Relais | ||
+ | 'Variable: status (1 oder 0) schaltet Relais ein oder aus | ||
+ | 'Bei Status 1 wird die entsprechende Relais anziehen, bei 0 abfallen | ||
+ | Sub Rnb_relaisschalten(byval Relaisnr As Byte , Byval Status As Byte) | ||
+ | Relaisstatus.relaisnr = Status | ||
+ | I2cstart | ||
+ | I2cwbyte Relaisport_adr 'Schreibbefehl an PCF schicken | ||
+ | I2cwbyte Relaisstatus 'Datenbyte an PCF | ||
+ | I2cstop | ||
+ | End Sub | ||
+ | |||
+ | End | ||
</pre> | </pre> |
Version vom 3. März 2006, 12:55 Uhr
An diesem Artikel arbeitet gerade Mitglied Frank.
Am besten momentan noch keine gravierenden Ergänzungen / Änderungen vornehmen. Dieser Hinweis verschwindet wenn der Autor soweit ist. Sollte dieser Hinweis länger als drei Tage auf einer Seite sein, bitte beim Autor Frank per PM / Mail oder Forum nachfragen ob er vergessen wurde. |
Inhaltsverzeichnis
Relaisplatine für I2C-Bus
Immer wieder kommt es vor das verbraucher (Motoren, Leuchte, Staubsauger usw.) von einem Controller aktiviert werden müssen. Da der Strom der Controllerboard-Ausgänge dafür selten ausreicht bieten sich Relais an. Diese Platine stellt 5 Relais und 3 FET-Schaltstufen zur Verfügung. Im Gegensatz zu vielen anderen Relaisboards sind auch Umschaltrelais (2xUm) vorhanden. Dadurch können auch komplexere Aufgaben wie Motosteuerung in mehrere Richtungen usw. realisiert werden
Und das beste: Das Port wird per I2C-Bus angesteuert, also 2 Leitungen reichen aus!
Als hier die Leistungsmerkmale auf einen Blick:
- 2 Stück Umschaltrelais (jeweils 2xUM) mit ca. 6A belastbar
- 1 Stück Umschaltrelais (jeweils 2xUM) mit ca. 2A belastbar
- 2 Stück Relais mit einem Schließerkontakt ca. 1A belastbar
- 3 Kontaktlose FET Schaltstufen für Verbraucher mit max 40V / 3A
- Nahezu an jedem Controller mit I2C Bus verwendbar
- Stecker und Platinenbohrungen nach Roboternetz-Definition
- Kann Huckepack mir anderen RN-Roboternetzboards verschraubt werden
- Eigene 6V Spannungsstabilisierung für Relais (alternativ kann Spannung über I2C-Port entnommen werden)
- Mehrere Boards kombinierbar da I2C Slave Adresse frei wählbar
- Alle Relais-Kontakte über Schraubklemmen herausgeführt
- Nur halbe -Europakartengröße (RN-Definitionen)
Diagramm
Schaltplan
Bestückungsplan
Stückliste
1 C1 100n (R=5mm L=6mm,B=3mm) KERKO100N 2 C2,C3 220 uF/35V (R=5mm, D=10mm) RAD 220/35 7 Fet-Power,FETA,FETB,FETC,Power,REL4,REL5 Schraubklemmen 2 polig (R=5,12) AKL 101-02 1 I2C-Bus Wannenbuchse 2x5 gerade WSL 10G 1 IC1 7806 (6-7V Spannungsregler) 7806 1 IC2 UDN2981A UDN 2981 A 4 JP1, ADR Jumper Stiftleiste 1x3 LU 2,5 MS3 (dort werden 3 benutzt) 1 JP2 Jumper Stiftleiste 1x2 LU 2,5 MS2 2 K1,K3 6V Relais 2xUM (max. 8A) FIN 40.52.9 6V 1 K2 6V Relais 2xUM (max. 2A) FIN 30.22.9 6V 2 K4,K5 5V Relais 1xUM (max. 1A) SIL 7271-D 5V 1 PCF PCF8574 AP PCF8574AP 3 IRF540 FET Transistor IRF540 IRF540 6 Relais1A,Relais1B,Relais2A,Relais2B,Relais3A,Relais3B Schraubklemmen 3polig (R=5,12) AKL 101-03 1 RN1 Widerstandsnetzwerk 8x 10k SIL 9-8 10K 1 Platine Fertig gedruckte Platine zum aufbauen der Schaltung (siehe unter Weblinks)
Beispielprogramm zur Ansteuerung
'################################################### 'relaiskarte.bas 'für 'RoboterNetz Standard-Roboter Board RBNFRA ab 1.1 ' 'Aufgabe: 'Relaiskarte wird getestet 'Alle 8 Relais bzw. Fet Schaltstufen werden nacheinander 'für 2 Sekunden eingeschaltet ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de + robotikhardware.de '################################################### Declare Sub Rnb_relaisschalten(byval Relaisnr As Byte , Byval Status As Byte) Const Relaisport_adr = &H76 'I2C Adr PCF 2 Dim Relaisstatus As Byte Dim I As Byte $crystal = 8000000 'Quarzfrequenz $baud = 9600 Config Scl = Portc.0 'Ports fuer I2C-Bus Config Sda = Portc.1 I2cinit Wiederhole: For I = 0 To 7 Call Rnb_relaisschalten(i , 1) 'Relais i so anziehen Wait 2 'Warte 2 Sekundne Call Rnb_relaisschalten(i , 0) 'Relais i soll abfallen Wait 2 'Warte 2 Sekundne Next I Goto Wiederhole 'Die Hilfsfunktion erleichtert das ein und Ausschalten bestimmter Relais 'Variable: Relaisnr ( 0 bis 7) steht für ein bestimmtes Relais 'Variable: status (1 oder 0) schaltet Relais ein oder aus 'Bei Status 1 wird die entsprechende Relais anziehen, bei 0 abfallen Sub Rnb_relaisschalten(byval Relaisnr As Byte , Byval Status As Byte) Relaisstatus.relaisnr = Status I2cstart I2cwbyte Relaisport_adr 'Schreibbefehl an PCF schicken I2cwbyte Relaisstatus 'Datenbyte an PCF I2cstop End Sub End