Go Down

Topic: Conrad 8-Fach Relaiskarte mit Arduino UNO steuern (Read 6144 times) previous topic - next topic

andi357

Nov 10, 2011, 05:37 pm Last Edit: Nov 15, 2011, 08:49 pm by andi357 Reason: 1
Quote
EDIT: Thema geklärt, an TX liegen -9,3V also ~-10V an. Das heißt die Kommunikation über die TX/RX Klemmen erfolgt via RS232, ein Wandler ist nötig, z.B.: http://www.pollin.de/shop/dt/MzY5OTgxOTk-/Bausaetze_Module/Bausaetze/RS232_TTL_Wandler_Bausatz.html


Hallo!

Ich bin ganz neu in der Arduino-Welt und mache damit grad meine ersten Gehversuche. Ich habe einen Arduino UNO und die 8-Fach Relaiskarte von Conrad (197730 - 62).
Die Relais-Karte hat neben dem RS232 und USB-Eingang ebenfalls die Möglichkeit die Steuerleitungen Tx und Rx sowie GND über eine Klemme anzuschließen. Normalerweise läuft darüber die Kommunikation mit kaskadierten anderen Karten.

Ich versuche jetzt die Relaiskarte über diese Klemme und mit einem Software-Serial anzusprechen. Leider klappt das nicht so wirklich.

Hat da jemand einen Rat?

uwefed

Hast Du Dich ans Handbuch gehalten?
http://www.produktinfo.conrad.com/datenblaetter/175000-199999/197730-an-01-ml-8_K_RELAISKARTE_PC230V_AC16A_de_en_fr_nl.pdf

Ich hab einen Rat.
a) Kristallkugel
b) genaue Beschreibung der Verdrahtung und des verwendeten Sketches.

Grüße Uwe

andi357

#2
Nov 11, 2011, 12:45 am Last Edit: Nov 11, 2011, 12:49 am by andi357 Reason: 1
Ja, ich habe alles so gemacht wie es im Handbuch steht. Die Relaiskarte hat Strom (12V, 300mA) und ist wie auf dem angehängten Foto zu sehen mit dem Arduino verbunden.

Das dazugehörige Sketch sieht so aus:

Code: [Select]

#include <SoftwareSerial.h>

#define rxPin 9
#define txPin 8

SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

void setup(){
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
 
  mySerial.begin(9600);
 
  sendCommand(1,0,0); //Initialisierung der Karte (Command 1, Karte 0, Daten egal)
}

void loop(){
  sendCommand(8,0,3);//Toggle Relais 1 und 2 (Command 8, Karte 0, Daten 3 [00000011])
}

void sendCommand(byte command, byte cardAddr, byte data){
  byte xorCheck = command ^ cardAddr ^ data;
  mySerial.print(command + cardAddr + data + xorCheck,BYTE); //Sendet Command an die Serielle Schntitstelle (Comnmand, Kartenadresse, Daten [welche Relais], XOR-Checksumme aller Parameter) wie im Handbuch beschrieben
}



uwefed

Code: [Select]
mySerial.print(command + cardAddr + data + xorCheck);
Bist Du sicher, daß Du so ein String mit 4 Elementen rausschickst und nicht die arithmetische Summe der 4 Variablen?
Hast Du es mit
Code: [Select]
mySerial.print(command); mySerial.print(cardAddr); mySerial.print(data); mySerial.print(xorCheck);
versucht?

Grüße Uwe

andi357

#4
Nov 11, 2011, 12:34 pm Last Edit: Nov 11, 2011, 12:52 pm by andi357 Reason: 1
Hab ich nun probiert, klappt leider auch nicht.
Ich habe im Handbuch der Relaiskarte eben gesehen, dass sie mit 19200 Baud arbeitet. Da dieses SoftwareSerial das nicht kann habe ich es nun mal mit der physischen Schnittstelle auf dem Arduino probiert, klappt aber leider auch nicht.

Code: [Select]
void setup(){
 Serial.begin(19200);
 
 sendCommand(1,0,0); //Initialisierung der Karte (Command 1, Karte 0, Daten egal)
}

void loop(){
 sendCommand(1,0,0);
 sendCommand(8,0,3);//Toggle Relais 1 und 2 (Command 8, Karte 0, Daten 3 [00000011])
   delay(10000);
}

void sendCommand(byte command, byte cardAddr, byte data){
 byte xorCheck = command ^ cardAddr ^ data;
 Serial.print(command,BYTE); Serial.print(cardAddr,BYTE); Serial.print(data,BYTE); Serial.print(xorCheck,BYTE);
}

Ich komme einfach nicht weiter an der Stelle. Ich glaube, die vier Bytes müssen auf einmal übertragen werden und nicht so nacheinander in getrennten Writes. Aber wie übertrage ich 4 Byte auf einmal?


Jago

#5
Nov 11, 2011, 12:54 pm Last Edit: Nov 11, 2011, 01:01 pm by Jago Reason: 1
Mh ist nur so vermutung, aber versorgst du den Arduino über USB mit Spannung?
Wo bekommt der Überhaupt seine Spannung her? Auf den Bildern ist nicht´s zu sehen.
Wenn die Spannungsversorgung über USB läuft, dann ist es kein wunder das nix geht, RX unD TX sind dann doppelt belegt.
Nothing is impossible ^^

andi357

Ich betreibe die Karte ja auch nicht über die USB-Buchse bzw. im USB-Modus und auf Seite 9 steht unter "Anschluss über RS232-Buchse" "Die Steuerleitungen können auch direkt an RXa, Txa und GND angeschlossen werden"

Jago

Sorry, das ist mir auch grad klar geworden. Deshalb hat ich meinen Beitrag auch schnell gelöscht bevor jemand den Mist ließt, leider zu spät...
Nothing is impossible ^^

andi357


Mh ist nur so vermutung, aber versorgst du den Arduino über USB mit Spannung?
Wo bekommt der Überhaupt seine Spannung her? Auf den Bildern ist nicht´s zu sehen.
Wenn die Spannungsversorgung über USB läuft, dann ist es kein wunder das nix geht, RX unD TX sind dann doppelt belegt.


Ich habe beides versucht. Wenn ich das Arduino Board am Netzteil anschließe passiert aber auch nichts. Dann blinken nicht mal die TX und RX LEDs auf dem Board.

Jago

Die TX und RX  Led´s können glaub ich auch garnicht blinken:

http://arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf

Schade eigentlich, dann weis ich auch nicht weiter. Vom überfliegen her ist alles richtig.
Nothing is impossible ^^

madworm

Nachdem in der anleitung staendig von RS232 geredet wird und ich glaube auf dem photo einen MAX232 zu erkennen, sind die anschluesse fuer +-15V ausgelegt. Und nicht fuer 0-5V TTL pegel. Wenn du da mit einem arduino ran willst, dann musst du den level-shifter ueberspringen. Die pins duerften ueber den usb-adapter steckplatz zu finden sein. Ich glaube, dass bei nur einer platine die schraubklemmen fuer dich wertlos sind.
• Upload doesn't work? Do a loop-back test.
• There's absolutely NO excuse for not having an ISP!
• Your AVR needs a brain surgery? Use the online FUSE calculator.
My projects: RGB LED matrix, RGB LED ring, various ATtiny gadgets...
• Microsoft is not the answer. It is the question, and the answer is NO!

uwefed

Die Karte hat eine RS232 Schnittstelle und 2 andere TTL serielle schnittsellen für die Verbindung mehrerer Karten untereinander. andi357 verwendet die 2.genannte.
Grüße Uwe

madworm

• Upload doesn't work? Do a loop-back test.
• There's absolutely NO excuse for not having an ISP!
• Your AVR needs a brain surgery? Use the online FUSE calculator.
My projects: RGB LED matrix, RGB LED ring, various ATtiny gadgets...
• Microsoft is not the answer. It is the question, and the answer is NO!

uwefed

hier: http://www.produktinfo.conrad.com/datenblaetter/175000-199999/197730-an-01-ml-8_K_RELAISKARTE_PC230V_AC16A_de_en_fr_nl.pdf

madworm

Na! Das ist doch der gleiche link wie oben! Hallo?

Ich kann in dem ganzen schrieb weder 5V noch TTL finden, nur RS232.

Mehr beweise bitte ;-)
• Upload doesn't work? Do a loop-back test.
• There's absolutely NO excuse for not having an ISP!
• Your AVR needs a brain surgery? Use the online FUSE calculator.
My projects: RGB LED matrix, RGB LED ring, various ATtiny gadgets...
• Microsoft is not the answer. It is the question, and the answer is NO!

Go Up