Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: elektronisches Potentiometer Kategorie: Hardware (von holger - 13.03.2004 14:38)
 Als Antwort auf elektronisches Potentiometer von Jens - 5.03.2004 0:08
> Hallo,
>
> ich habe mich in letzter Zeit mit elektronischen Vorschaltgeräten und deren Dimmbarkeit beschäftigt
> und möchte nun mit der C-Control und EVG's für Leuchtstofflampen eine Steuerung für die Aquarium-
> beleuchtung realisieren. Um die EVG's (von Osram) dimmen zu können, benötigen die ein
> Potentiometer von 100 KOhm an den Steueranschlüssen. Kann man nun mit der C-Control bzw. mit
> einem Zusatzmodul eine elektronisches Potentiometer programmieren und den Widerstand verändern,
> um somit die EVG's zu steuern ? Ich habe bis jetzt noch keine Erfahrung mit der C-Control gesammelt,
> da ich noch auf der Suche bin nach einer geeigneten Steuerung.
> Danke schonmal.
>
> Gruß Jens
>
Hallo,
Habe das mit dem Poti schon probiert. Klappt auch prima soweit.
Habe selbst das DS 1803-050 genommen. Den I2C-Bus bilden bei mir Port[1] und
Port[2]. Man könnte auch den I2C-Bus der C-Control nehmen. Dabei muss man
aber aufpassen was man macht. EEProm abmelden, anmelden und so Sachen.
Habe auch eine Assemblerlösung dafür (nicht von mir geschrieben, nur kopiert).

'**************************************************************************************************
'
' C-Control/BASIC       I2C-Poti.BAS
'
' Autor:
' Holger Tyrahn
' Datum:
' 05.06.2002
' Aufgabe:
' steuert ein über den I2C-Bus angeschlossenes Potentiometer DS 1803-050
'**************************************************************************************************
'**************************************************************************************************

define SCL            port[1]
define SDA            port[2]
define Adress_byte    byte
define Command_byte   byte
define Data_byte      byte
define i              byte
define wert           byte
define zahl           byte

#zufall
for Data_byte = 0 to 255 step 1
gosub Poti_1a
gosub Poti_schreiben
return
next

'**************************************************************************************************

#Poti_1a
Adress_byte = 88                         'Adresse des jeweiligen Poti
Command_byte = 169                       'schreiben Poti XX a
'Command_byte = 170                      'schreiben Poti XX b
'Command_byte = 175                      'schreiben Poti XX a und b mit demselben Wert
'Data_byte = 128                          'Werte von 0 bis 255
return

#Poti_1b
Adress_byte = 86                         'Adresse des jeweiligen Poti
'Command_byte = 169                      'schreiben Poti XX a
Command_byte = 170                       'schreiben Poti XX b
'Command_byte = 175                      'schreiben Poti XX a und b mit demselben Wert
Data_byte = 128                          'Werte von 0 bis 255
return

#Poti_2a
Adress_byte = 88                         'Adresse des jeweiligen Poti
Command_byte = 169                       'schreiben Poti XX a
'Command_byte = 170                      'schreiben Poti XX b
'Command_byte = 175                      'schreiben Poti XX a und b mit demselben Wert
Data_byte = 128                          'Werte von 0 bis 255
return

#Poti_2b
Adress_byte = 88                         'Adresse des jeweiligen Poti
'Command_byte = 169                      'schreiben Poti XX a
Command_byte = 170                       'schreiben Poti XX b
'Command_byte = 175                      'schreiben Poti XX a und b mit demselben Wert
Data_byte = 128                          'Werte von 0 bis 255
return

'******************** Poti-Subroutinen ************************************************************

#Poti_lesen
gosub start
wert = Adress_byte + 1
gosub putbyte
gosub getack
gosub getbyte
gosub giveack
gosub stop
'print "gelesen : ";zahl       'stand vorher hinter getbyte
return

#Poti_schreiben
gosub start
wert = Adress_byte
gosub putbyte
gosub getack
wert = Command_byte
gosub putbyte
gosub getack
wert = Data_byte
gosub putbyte
gosub getack
gosub stop
print "schreibe Wert: ";wert
return

'******************* Anfangsbedingung für den I2C - Bus *******************************************

#I2C_Bus_start
SDA = 1 : SCL = 0 : SDA = 0
for i = 0 to 3
gosub stop
next

'******************** I2C-Subroutinen *************************************************************

#start
SCL = 1
SDA = 1
SDA = 0
SCL = 0
SDA = 1
return

#stop
SDA = 0
SCL = 1
SDA = 1
return

#getbyte
zahl = 0
for i=7 to 0 step -1
SCL = 1
if SDA <> 0 then zahl = zahl + 1 shl i
'print " empfangenes Bit: " ; SDA ; " Byte: ";zahl
SCL = 0
next
SDA = 1
return

#putbyte
for i=7 to 0 step -1
if (wert and 1 shl i) = 0 then SDA = 0 else SDA = 1
SCL = 1 : SCL = 0
'print" geschicktes Bit: ";SDA
next i
SDA = 1
return

#getack
SDA = 1
deact SDA
SCL = 1
'wait not SDA                 'unter Basic auskommentieren, da Simulation hier stockt
SCL = 0
return

#giveack
SDA = 0 : SCL = 1 : SCL = 0 : SDA = 1
return

'**************************************************************************************************

 Antwort schreiben

Bisherige Antworten:

Re: elektronisches Potentiometer (von max - 18.03.2004 22:44)
    Re: elektronisches Potentiometer (von holger - 19.03.2004 13:36)
        Re: elektronisches Potentiometer (von max - 19.03.2004 20:23)
            Re: elektronisches Potentiometer (von holger - 20.03.2004 11:36)