Archiv verlassen und diese Seite im Standarddesign anzeigen : Rs 232 Relaisplatine ansteuern, nur wie?
Hallo,
habe mir vor ein paar Jahren diese Relaisplatine
http://www.produktinfo.conrad.com/datenblaetter/950000-974999/967720-an-01-de-Relaisplatine_8fach_seriell.pdf
gekauft. Wollte Sie ursprünglich auch nur am PC betreiben, was ja auch wunderbar funktionierte.
So, da ich mitlerweile auch mit Mikrocontrollern "bastle" würde ich die gern den Mikrocontroller RS232 Schnittstelle ansteuern. Nur wie ist die Frage! Für einen Ansatz in Bascom - Basic wäre ich sehr Dankbar!
Robotniks
28.12.2007, 15:17
Hi,
schau mal hier:
http://www.c-control.de/c-control-pro/applikationen/8fach_relaisplatine_seriell.html
ist zwar für die C-Control Pro aber könnte man ja auch für Bascom umschreiben.
Danke für die schnelle Antwort, komme allerdings nicht wirklich weiter. Kann ich einfach die bytes per Print senden? und wie krieg ich die Prüfsumme hin?
in Qbasic wird das mit zwei XOR's gemacht:
outbuf(3) = outbuf(0) XOR outbuf(1) XOR outbuf(2)
das will aber Bascom so nicht akzeptieren.
Gruß
stefan_Z
28.12.2007, 18:59
Also nen AVR an RS232 ist kein Problem.
du brauchst allerdings einen Pegelwandler wie z.B. den MAX232 um die AVR UART auf RS232 zu bringen. Das ist aber einfach und schnell gemacht, kostet quasi nix.
Daten Senden machst du mit PRINT, empfangen mit INPUT.
Bascom kann nur eine Operation pro Zeile ausführen:
x = y + z geht super
x = y + z + a geht nicht.
Muss man auflösen in:
x = y + z
x = x + a
Danke! Das hilft mir schonmal. RS232 ist kein Problem, stimmt wohl mache das mit RN-Control!
Hallo,
bräuchte nochmal eure Hilfe:
Ich bekomme bei folgendem Code immer Fehlermeldungen, was muss ich also ändern, damit Bascom die ankommenden Bytes in die Variable mit Index schreibt!
Sub Getframe
Do
Bz = Bz + 1
Input = Inbuf(bz)
Waitms 100
Loop Until Bz < 4
Checkframe
End Sub
der Orginalcode:
Sub GetFrame()
LCD_ClearLCD()
Zeile1 = "READ "
LCD_Locate(1,1) : LCD_WriteText(Zeile1)
Do
BZ = BZ + 1
InBuf(BZ) = Serial_ReadExt(0)
LCD_Locate(2,1) : LCD_WriteWord(BZ,1)
LCD_Locate(2,4) : LCD_WriteWord(InBuf(BZ),3)
AbsDelay(1000)
Loop While BZ < 4
CheckFrame()
End Sub
Vielen Dank schonmal!
Ich habs jetzt:
Vielleicht nicht die eleganteste Lösung aber es Funktioniert! (zumindest halbwegs!)
'Test programm für die Conrad RS232 Relaisplatine Best. Nr.: 967720
$regfile = "m32def.dat" 'Die Anweisung bestimmt Controllertyp, hier AVR Mega 32
$framesize = 32 'Stackanweisungen, die eigentlich nur bei größeren Programmen
$swstack = 32 'wirklich nötig werden
$hwstack = 32
$crystal = 16000000 'Die Frequenz des verwendeten Quarzes
$baud = 19200 'Die Baudrate für RS232 Ausgabe.
Dim A As Byte ' die Ausgabe Bytes definieren
Dim B As Byte 'A ist der Erste Befehl:
Dim C As Byte '1 = Platine Initialisieren, 2 = Schaltzustände abfragen,
Dim D As Byte '3 = Relais schalten, 4 = Option abfragen,
Dim I As Integer '5 = Option setzten (Brodcast(an alle Platinen)
'die Relaisplatine initialisieren 'B = Platinenadresse (1...256)
A = 1 'C = Relaisadressse:
B = 1 '1= Rel1; 2= Rel2; 4= Rel3; 8=Rel4 usw.
C = 0 'D = Prüfsumme = A Xor B Xor C
D = A Xor B
D = C Xor D
Print Chr(a) ; Chr(b) ; Chr(c) ; Chr(d)
Wait 1
'sämtliche Kombinationen durchschalten
Start1:
A = 3
I = 0
I = I + 1
C = I
D = A Xor B
D = C Xor D
Print Chr(a) ; Chr(b) ; Chr(c) ; Chr(d)
Wait 1
Do
I = I + 1
C = I
D = A Xor B
D = C Xor D
Print Chr(a) ; Chr(b) ; Chr(c) ; Chr(d)
Wait 1
Loop Until I = 256
Goto Start1
Gruß Florian
merlin63
24.03.2008, 21:00
hallo florian
benutze doch die suche....da findest du doch bestimmt genug beispiele für die benutzung der rs232 und der pegelwandler gehört ja schon fast zur standart applikation.
also viel glück
gruß thomas
stefan_Z
25.03.2008, 15:34
und wieso habt ihr beiden das selbe Avatar?? :-P
Den MAX232 gibts auch als fertiges Pegelwandlermodul bei Pollin - in der Anleitung is auch der Plan drin - kann man gut klauen ;-)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.