Suche Microkontroller Programmierer

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 25 11 2024  21:23:55      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Suche Microkontroller Programmierer

    







BID = 32990

thorpower

Gelegenheitsposter



Beiträge: 63
Wohnort: Solingen
 

  


ich suche eine Lösung um aus einem Seriellen Datenstring
zB RS232 Schnittstelle
4 oder 8 Kanäle (Relais zu schalten)
diese wiederum sollen über ein Mäuseklavier von 1 bis 8
codierbar sein.

am Ende möchte ich eine Europakarte an rs232 bzw(PC) anschliessen code 0 die dann 8Relais entsprechend dem PC
schaltet.

die nächste Europakarte (code1) hat wieder 8Relais usw

Insgesammt soll es noch bezahlbar bleiben.

Ich denke das dann die erste Karte RS232 umformen muß.
Die weiteren dann über einen Binärcode und Trigger gespeisst werden können.
Ich hab keine Programm um schaltungen mal eben zu malen sonst hätte ich ne Zeichnung gemacht

Wichtig ist noch.Das alle Relais nach dem Datenstring
gleichzeitig umschalten.

Wer kann mir den geeigneten Kontroller sagen und auch programmieren?Natürlich soll das nicht umsonst sein.
Im Grunde ist das ja ne einfache Schaltung.
Die Strings am PC auf RS232 bekomme ich hin.
Aber kontroller steig ich zZ nicht durch.weiß auch nicht was gerade OK ist .
Ich besitze auch einen EEpromer von ST für n St622X dafür
habe ich auch ICs usw

Vielen vielen Dank,Thorsten

BID = 32992

Jornbyte

Moderator



Beiträge: 7178

 

  

Ich würde den Spass mit DMX machen. Das Protokoll ist da geeigneter als RS232 wobei diese Schittstelle oder der LPT-Port als Sender zum Einsatz kommt. Ein 90S1200 von Atmel reicht als Empfänger aus wenn die Kartenanzahl nicht über 32 ist.

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 32998

thorpower

Gelegenheitsposter



Beiträge: 63
Wohnort: Solingen

Ja äh gut Atmel... 32 reicht natürlich.
Aber womit programmieren bzw wer???

Trotzdem danke ich suche mal die Applikationen

BID = 33021

thorpower

Gelegenheitsposter



Beiträge: 63
Wohnort: Solingen

Also ich habe überall gesucht und leider nichts über dmx gefunden.
aber die sache mit dem Max232 sieht doch schon ganz gut aus.

Aber ich glaube doch das ich immer noch ganz am Anfang bin.

das Programm von Atmel hab ich mal geladen.
Ja doch schön.
Wer kann mir da denn helfen??
Hardwaremäßig alles kein Thema für mich.Analogschaltungen kein Problem.Aber mit den Daten von PC und dann soll da ein Relais anziehen.keine Ahnung.
Ich denke, eigentlich ist das für einen Kontrollerspezie
garnichts.Oder besser gesagt,ne leichte Übung.
Gruß Thorsten

BID = 33046

Jornbyte

Moderator



Beiträge: 7178

Im Upload ist der DMX-Sender für 96 Kanäle.
An den Empfänger sitze ich schon dran (änderungen an der Soft).
Schau dir auch das mal an:
https://forum.electronicwerkstatt.d.....60&19
Das Brennen und Testen der Atmels kann ich dir machen.

Hochgeladene Datei : minidmx.zip

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 33139

thorpower

Gelegenheitsposter



Beiträge: 63
Wohnort: Solingen

Ist das WAHR????
Super
klasse das würde mich super freuen.
Vielen vielen Dank, jornbyte
ich werde mich melden


BID = 33201

Jornbyte

Moderator



Beiträge: 7178

Hier ist schon mal die Empfängerschaltung. Die Soft kommt auch noch. Die Zeit ist im Moment ein bissel knapp.

Hochgeladenes Bild : DMX 8 Relais.gif

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 33367

ET-Profi

Neu hier



Beiträge: 30
Wohnort: Bückeburg
ICQ Status  

Jo genausowas habe ich auch gesucht *GG* möchte es dann aber mit triacs machen .... net mit relais das klappert mir zu viel *G*
dürfte aber keine prob sein ... oder ?
wie sieht es mit der software für den uC aus kann diese dann nur schalten oder auch dimmen ???
also ich meine dimmen wenn man triacs benutzt
nulldurchgangsdetektor an ne interrupt usw ....




BID = 33371

Jornbyte

Moderator



Beiträge: 7178

@ ET-Profi, da du ein sehr umfangreiches Projekt vor dir hast, schau dir mal diese Seite an:
http://www.soundlight.de
Ich denke das da alle Fragen zu DMX beantwortet sind oder werden.


_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 33372

ET-Profi

Neu hier



Beiträge: 30
Wohnort: Bückeburg
ICQ Status  

ich hab mal den schaltplan mit triacs gezeichnet ...
ich hoffe das geht so...


Jornbyte würdest du dafür die ausgänge in der software invertieren ?? bitteeeeeeeeeeee...*GGG*



Hochgeladenes Bild : dimmerpack.jpg

BID = 33432

ET-Profi

Neu hier



Beiträge: 30
Wohnort: Bückeburg
ICQ Status  


Zitat :
Jornbyte hat am 28 Sep 2003 14:27 geschrieben :

@ ET-Profi, da du ein sehr umfangreiches Projekt vor dir hast, schau dir mal diese Seite an:
http://www.soundlight.de
Ich denke das da alle Fragen zu DMX beantwortet sind oder werden.




Das DMX Protokoll kenn ich... bin nur nicht so gut im programieren das ich das auf anhieb hinbekomme ....
werde aber die mini dmx aufbauen

werde jetzt erstmal assembler und c lernen...


cu
sven

BID = 37484

Jornbyte

Moderator



Beiträge: 7178

Das Thema ist noch nicht vergessen, nur die Zeit is noch ein bissel .....

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 41180

Jornbyte

Moderator



Beiträge: 7178

Nun ist es soweit, habe mir mal die Zeit gestohlen.
Da ein 90S1200 nicht da ist, habe ich einen 90S2313 genommen. Also ändert sich die Schaltung geringfügig. Der Quarz ist nun 8Mhz und der µC ist Pinkompatibel zum 90S1200.
Zum Proggi: Es sind max. 5 Karten an den DMX-Bus anzuschließen. Da dies ein Mango ist habe ich es in der Software berücksichtigt. Da steht im Listing:

start_adress:
in dmx_adrL,PinD
andi dmx_adrL, 0b1111110
clc
ror dmx_adrL
ldi temp,0x00 ;Kartenanfangsdresse =0
add dmx_adrL, temp
ret

Die Zeile ldi temp,0x00 ist die entscheidende.
Da wird eine Grundadresse für die Karte vergeben. Hier ist sie Null. Sollen mehr als 5 Karten angeschlossen werden, ist eine neue Grundadresse zu vergeben. Somit ist eine Kaskadierung möglich. Wird da z.B. 0x20 (hex) eingetragen, beginnt diese Karte ab Adresse 32 zu arbeiten.
Also 1. Adresse = 0x00 + Adressschalter = 32 Relais = 4 Karten.
Ab der 5. Karte muss da 0x20 stehen und neu über den Assembler laufen lassen. Dieses *.hex-File wird nun in den 90S2313 gebrannt. Noch einen kleinen Zettel mit der neuen Anfangsadresse draufkleben und die Karte kann in ein bestehendes System eingebunden werden.

;Das Programm DMX - Ausgabe an 8 Relais

;mit Atmel 90S2313 und 8MHz Quarz

.include "2313def.inc"

.EQU channels_all=8 ;8 ist die Anzahl der Kanäle!

.def temp =R16
.def temp1 =R17
.def temp2 =R18
.def byte =R19
.def dmx_status =R20 ;bit counter*
.def dmx_Byte =R21 ;Received data*
.def dmx_countL =R22 ;adress register*
.def dmx_count_in=R23 ;byte counter low*
.def dmx_adrL =R24 ;Dmx-Adresse
.def Raml1 =R28 ;Ramadresse = 0x060
.def Ramh1 =R29 ;Ram Lesen
.def Raml =R30 ;Ramadresse = 0x060
.def Ramh =R31 ;Ram Schreiben

;*****************************************************

.org $000
rjmp init ;Reset handler
reti ;INT0 External Interrupt0 Vector Address
reti ;INT1 External Interrupt1 Vector Address
reti ;ICP1 Input Capture1 Interrupt Vector Address
reti ;OC1 Output Compare1 Interrupt Vector Address
reti ;OVF1 Overflow1 Interrupt Vector Address
reti ;OVF0 Overflow0 Interrupt Vector Address
rjmp get_byte ;URXC UART Receive Complete Interrupt Vector Address
reti ;UDRE UART Data Register Empty Interrupt Vector Address
reti ;UTXC UART Transmit Complete Interrupt Vector Address
reti ;ACI Analog Comparator Interrupt Vector Address


;*****************************************************
init:
ldi temp,0x00 ;set R1 to NULL
mov R1,temp
ldi temp,Low(RamEnd)
out spl,temp
ldi temp, 0b00000000
out DDRD, temp ;Port D = Eingang
ldi temp, 0b11111111
out DDRB, temp ;Port B = Ausgang
ldi dmx_count_in,0x00
ldi dmx_status,0x01
ldi ramh,0x00
ldi raml,0x60
rcall start_adress ;lese Start Adresse

;**** initial uart
ldi temp,0x01 ;setze Uart to 250 kbaud @ 8Mhz
out UBRR,temp ;
ldi temp,0b00000000 ;setze Uart to 8 bit
out UCR,temp ;
ldi dmx_status,0x01 ;setze DMX-Status Byte to 'wait for Reset'
in dmx_Byte,UDR ;clear Uart Receive Interrupt Flag
cbi UCR,FE ;clear Frame Error Flag
sbi UCR,RXCIE ;enable Uart Receive Interrupt
sbi UCR,RXEN ;enable Uart Receive
sei

;*****************************************************
loop:
rcall start_adress ;Kanal von PortD Laden
cpi dmx_adrL,0x00 ;ist Dmxadresse =0 dann ungültig
brne loop1 ;springe wenn es größer als 0 ist
rjmp loop
loop1:

rcall delay ;mal warten
rcall ausgabe ;PortB=Relais schalten
rjmp loop ;auf neuen Wert warten
;*****************************************************
ausgabe:
cli
ldi temp, channels_all ;0x07
ldi RamL1, 0x60 ;das DMX-Byte steht ab der Ramadresse 0x60
ldi RamH1, 0x00
ausgabe1:
ld byte, Y ;Byte aus dem Ram laden
cpi byte,0x7f ;test auf 7F oder größer
brlo ausgabe2 ;springe wenn Wert kleiner
sec ;setze Carryflag
ror temp1 ;Carry in temp1 schieben
rjmp ausgabe3 ;
ausgabe2:
clc ;Lösche Carryflag
ror temp1 ;Carry in temp1 schieben weil kleiner 7F
ausgabe3:
inc RamL1 ;Zähler Ramadresse
dec temp ;Schleifenzähler
brne ausgabe1
out PortB, temp1 ;alle Werte sind gelesen, nun ausgeben
sei
ret
;*****************************************************
get_byte:
cpi dmx_adrL,0x00
breq ret1
in dmx_Byte,UDR
sbic USR,OR ;ist es ein Überlauf -> Reset
rjmp overrun
sbic USR,FE ;check auf Fehler -> Reset
rjmp frame_error
cpi dmx_status,0x01 ;warten auf Reset
breq ret1 ;Return
cp dmx_countL,R1 ;Startbyte?
breq startbyte ;
cp dmx_countL,dmx_adrL ;vergleiche Adresse und Bytenummer
brlo return
breq first

next_t:
cpi dmx_count_in,channels_all ;sind alle Kanäle gelesen?
brsh return
first:
inc dmx_count_in ;Adresszähler +1
st z,dmx_Byte ;DMX-Wert in Ram speichern
inc RamL ;Ramadresse +1
return: inc dmx_countL ;neuer Kanal
ret1: reti
frame_error:
ldi raml,0x60
ldi ramh,0x00
ldi dmx_countL,0x00 ;Reset Counter
ldi dmx_count_in,0x00
ldi dmx_status,0x00 ;Statusbyte auf 'ok' setzen
cbi USR,FE ;lösche frame-error flag
rcall start_adress ;Kanaladresse laden
reti
overrun:
ldi dmx_status,0x01 ;setze Status-Byte 'warte auf Reset'
reti ;return
startbyte:
cp dmx_Byte,R1 ;Startbyte=0
brne overrun ;warte auf nächsten Reset-Cycle
rjmp return

;*****************************************************
start_adress:
in dmx_adrL,PinD
andi dmx_adrL, 0b1111110
clc
ror dmx_adrL
ldi temp,0x00 ;Kartenanfangsdresse =0
add dmx_adrL, temp
ret
;*****************************************************
delay:
push temp2 ;mal warten
push temp1
ldi temp1,0xE1
WGLOOP0:ldi temp2,0xEC
WGLOOP1:dec temp2
brne WGLOOP1
dec temp1
brne WGLOOP0
pop temp1
pop temp2
ret ;wieder zurück
;*****************************************************

Zum Schluss noch das Hex-File zum Brennen im Anhang.
Viel Spass.


Hochgeladene Datei : dmxrelais.hex

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 12 Beiträge verfasst
© x sparkkelsputz        Besucher : 182399581   Heute : 6779    Gestern : 7548    Online : 887        25.11.2024    21:23
6 Besucher in den letzten 60 Sekunden        alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0312099456787