Go Down

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

andi357

So, ich hab mir die ganze Schaltung jetzt mal genau angesehen. Es handelt sich um einen ATtiny2313 Microcontroller (http://www.atmel.com/dyn/products/product_card.asp?category_id=163&family_id=607&subfamily_id=791&part_id=3229). Dieser arbeitet mit 5V, also gehe ich davon aus, dass dieser TTL-RS232 Wandler zwar genau das tut was er soll, aber andersrum als ich zuerst dachte. Also werden die Klemmen ziemlich sicher mit +-15V arbeiten.
Zu morgen habe ich mir ein Multimeter "bestellt" und dann werde ich es nochmal messen.

Die Lösung die Drähte direkt an den Microcontroller zu löten ist zwar möglich, da das ganze aber produktiv eingesetzt werden soll (als Raumlicht-Steuerung auf der Arbeit) werde ich aber diesen TTL-RS232-Wandler Bausatz bestellen.

Danke an alle die mir geholfen haben (auch an madworm der ja die Idee zuerst hatte  :smiley-roll: )

uwefed

Lassen wir mal andi357 die Spannung an der TX Leitung nachmessen und diskutiern wir dann mal weiter.

Quote
Dann brauchst du keine zusätzliche Schaltung kaufen/bauen.
Einfach die 3 Adern an die Lötpunkte beppen fertig.

Ich würde nicht nur Beppen sondern gut löten. Die Kupferleitung die vom Max Ausgang zum Kontroller geht würd ich unterbrechen da ansonsten 2 Ausgänge paralellgeschaltet sind und gegenseitig blockieren.

Grüße Uwe

andi357

Ich habe nun gemessen und an TX liegen -9,3V also ~-10V an. Das erklärt alles und damit wäre das Thema ja geklärt :-)

uwefed

ja das ist dann eine RS232 Schnittstelle.
also brauchst Du einen MAX232 oder kompatieblen.
Viele Grüße Uwe 

andi357

Hab mir jetzt das hier bestellt: http://www.pollin.de/shop/dt/MzY5OTgxOTk-/Bausaetze_Module/Bausaetze/RS232_TTL_Wandler_Bausatz.html

barnybe

Hi,

bin neu und habe diesen Threat (und leider nicht mehr) gefunden. Deshalb hänge ich mich mal dran;-)
HW: arduino uno und Conrad serielle RelaisKarte 197730; "RS232" mit 19200baud, 1Stop-bit, keine parität
habe (new)softserial lib
würde pin 2&3 nehmen (wegen interrupt; die Geschwindigkeit ist ja recht hoch)
an anderer Stelle habe ich mal gelesen, dass hohe Geschwindigkeiten nur mit pin 6/7 oder wenn ich mich recht erinnere 12/13 funktioniert, leider weis ich nicht mehr wo...
Habe auch ein Oszilloskop, wo ich mir die "Daten" schön ansehen kann.

Jetzt zu meinem Problem: würde gerne ein Byte senden und die Bits darin bestimmen.
also "1": low bit is high
oder "16": bit5 is high
oder 255: alle bits sind high
Leider funktioniert das nicht. Kann mir jemand ein kurzes Program zeigen, das so etwas "kann"?
Wahrscheinlich habe ich nur das falsche Datenformat, aber ich komm nicht weiter...

#include <SoftwareSerial.h>

SoftwareSerial mySerial(7, 6);

void setup() 
{
  Serial.begin(57600);
  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
}

void loop() // run over and over
{
    mySerial.print(127);
    delay(5);
      mySerial.print(0);
      delay(5);
      mySerial.print(4);
      delay(3000);
}
wo liegt der fehler?

Vielen Dank,
Bernhard
arduino uno R3 1.024; dht22; Conrad relaiskarte; 20x4 hitachi auf rgb-shield mit 2 wires only

andi357

Du musst ein Byte initialisieren und dieses senden, also:

Code: [Select]

byte myByte = 255;
mySerial.write(myByte);


Für diese Relaiskarte brauchst du ja vier Byte, da habe ich mir folgende Funktionen geschrieben die soweit auch funktionieren:

Code: [Select]

void sendCommand(int command, int cardAddr, int data){
  byte bytes[4];
  bytes[0] = byte(command);
  bytes[1] = byte(cardAddr);
  bytes[2] = byte(data);
  bytes[3] = bytes[0] ^ bytes[1] ^ bytes[2];

  writeBytes(bytes,4);
  delay(250);
}

void writeBytes(byte arr[], int len){
  for(int i = 0; i < len; i++){
    mySerial.write(arr[i]);
  }
}


Kann man bestimmt auch eleganter machen, aber mir reicht das erstmal.

MaFu

HW: arduino uno und Conrad serielle RelaisKarte 197730; "RS232" mit 19200baud, 1Stop-bit, keine parität
habe (new)softserial lib
würde pin 2&3 nehmen (wegen interrupt; die Geschwindigkeit ist ja recht hoch)
an anderer Stelle habe ich mal gelesen, dass hohe Geschwindigkeiten nur mit pin 6/7 oder wenn ich mich recht erinnere 12/13 funktioniert, leider weis ich nicht mehr wo...

Bei 19200baud ist der ATmega nur am gähnen, da brauchst Du dir wegen der Geschwindigkeit keine sorgen zu machen.
Hast Du einen TTL-RS232-Wandler dazwischen?
_______
Manfred

barnybe

Hi zusammen,

es hat geklappt! Ich habe mich "blöd" bei den Kommandos angestellt. Nachdem ich die Karte erst initialisiert habe (1,0,0) habe ich dann auch wirklich "versucht" Relais zu setzen (3,0,x). Und kaum macht man´s richtig, gehts sogar;-)
Ich habe OHNE RS232-Kabel gearbeitet. Insgesamt 4 Leiterbahnen gekappt (eigentlich hätten 2 gereicht;-) und dann auf die Schraubklemmen gelötet.

Tschüß,
Bernhard
PS: für alle: wer wirklich mit 220V arbeitet sollte sich UNBEDINGT so(!) eine Karte holen (mit CE-Kennzeichnung). Den Unterschied kann man sehen...
arduino uno R3 1.024; dht22; Conrad relaiskarte; 20x4 hitachi auf rgb-shield mit 2 wires only

Go Up