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 

 Verbesserung+Hilfe ( Spannung bricht zusammen) Kategorie: C-Control I V1.1 (von Andreas - 20.06.2006 19:32)
Andreas nutzt:  CC1-Station V1.1
Hallo zusammen,

ich werde mal mein zusammengeschustertes Programm hier reinstellen. Ich habe folgendes Problem:

Immer wenn meine Pumpe ausgeht, sprich wenn K1 abfällt, bricht die Spannung zusammen, sodass ich wieder Start drücken muss.
Kann das ein Programmierfehler sein? Oder eher weil die Eheimpumpe ca. 25cm von der Station weg steht? Wobei versetzen kann ich da nix, weil das Zeug ist in einem Unterschrank.

Ich bin im übrigen über alle Tips, Ratschläge und Verbesserungen bezüglich des Programmes sehr dankbar.

define cmd byte[3]
define i byte[2]
define LCDLight Bit[192]

define LCD_RS_0 &B10 : define LCD_RS_1 &B11 :define LCD_nowrite &B0
define prnLCD &h197
define PCFread &h10e
define PCFwrite &h101
define PCF 64

define wert byte[1]' Byte zum Zwischenspeichern der
define P0 Bit[1]   ' Portzustände. Es kann jedes
define P1 Bit[2]   ' beliebige Byte vom RAM gewählt
define P2 Bit[3]   ' werden.
define P3 Bit[4]
define P4 Bit[5]
define P5 Bit[6]
define P6 Bit[7]
define P7 Bit[8]

'ASCII
Define A_ &H41 : Define B_ &H42 : Define C_ &H43 : Define D_ &H44 : Define E_ &H45
Define F_ &H46 : Define G_ &H47 : Define H_ &H48 : Define I_ &H49 : Define J_ &H4A
Define K_ &H4B : Define L_ &H4C : Define M_ &H4D : Define N_ &H4E : Define O_ &H4F
Define P_ &H50 : Define Q_ &H51 : Define R_ &H52 : Define S_ &H53 : Define T_ &H54
Define U_ &H55 : Define V_ &H56 : Define W_ &H57 : Define X_ &H58 : Define Y_ &H59 : Define Z_ &H5A
Define ak &H61 : Define bk &H62 : Define ck &H63 : Define dk &H64 : Define ek &H65
Define fk &H66 : Define gk &H67 : Define hk &H68 : Define ik &H69 : Define jk &H6A
Define kk &H6B : Define lk &H6C : Define mk &H6D : Define nk &H6E : Define ok &H6F
Define pk &H70 : Define qk &H71 : Define rk &H72 : Define sk &H73 : Define tk &H74
Define uk &H75 : Define vk &H76 : Define wk &H77 : Define xk &H78 : Define yk &H79 : Define zk &H7A
Define SPACE &H20 : Define MINUS &H2D : Define GLEICH &H3D : Define DPP &H3A
Define Dot &H2E
Define Line1 &H80 : Define Line2 &HC0  'Für 2x20 LCD
'Define Line1 &H80 : Define Line2 &HC0 : Define Line3 &H90 : Define Line4 &HD0 'Für 4x16 LCD
'-----------------------------------------

define Temp2 ad[6] 'Tempsensor 2
define sck port[3]  'LF
define dataout port[4] 'LF

define Rel1 port[1] 'Relais
define Rel2 port[2]
define Rel3 port[5]
define Rel4 port[6]
define K1 port[7] 'Pumpe
define K2 port[8]

define wert12 word [7]
define f1 word [8]               'eingefügt
define ts word [9]
define shtvalue word [10]
define xy word [11]
define cme byte [4]
define k byte [5]
define j byte [6]
define test1 byte [7]
define test2 byte [8]
define test3 byte [9] 'T1
define test4 byte [10]
define test5 byte [11]
define test6 byte [12]


deact Rel1 'Rain
deact Rel2 'T5
deact Rel3 'UV
deact Rel4 'Heizung
K1=OFF 'Pumpe
K2=OFF ' frei (Lüftung)




'----------------------------------------
gosub LCD_Init
LCDLight=ON : gosub setPCFLight


#FunkUhrFehlt

If   year > 90 then goto FunkUhrFehlt

#loop   'Hauptprogramm
'print wert12 ;
wert12 = hour *100 + minute ' aktuelle Uhrzeit zwischenspeichern für die Auswertung

'-----------------------------------------
gosub sht11

gosub Rain

gosub T5

gosub UV

gosub Heizung

gosub Pumpe


'-----------------------------------------

cmd=Line1 : gosub LCD_CMD
cmd=hour : gosub LCD_Zahl2null
cmd=DPP : gosub LCD_Char
cmd=minute : gosub LCD_Zahl2null
cmd=Line1+7 : gosub LCD_CMD
cmd=&H54 : gosub LCD_Char
cmd=&H3D : gosub LCD_Char
cmd=test3 : gosub LCD_zahl2
cmd=&h2c : gosub LCD_Char 'Komma
cmd=test4 : gosub LCD_zahl2null
sys prnLCD,LCDLight,0,PCF : print "/";
cmd=test5 : gosub LCD_zahl2
cmd=&h2c : gosub LCD_Char 'Komma
cmd=test6 : gosub LCD_zahl2null


cmd=Line2 : gosub LCD_CMD
cmd=day : gosub LCD_Zahl2null
cmd=Dot : gosub LCD_Char
cmd=month : gosub LCD_Zahl2null
sys prnLCD,LCDLight,0,PCF : print ".20";
cmd=year : gosub LCD_Zahl2null
cmd=Line2+12 : gosub LCD_CMD
cmd=&H4C : gosub LCD_Char
cmd=&H46 : gosub LCD_Char
cmd=&H3D : gosub LCD_Char
cmd=test1 : gosub LCD_zahl2
cmd=&h2c : gosub LCD_Char 'Komma
cmd=test2 : gosub LCD_zahl2null

pause 45

cmd=Line1 : gosub LCD_CMD
cmd=hour : gosub LCD_Zahl2null
cmd=DPP : gosub LCD_Char
cmd=minute : gosub LCD_Zahl2null

cmd=Line1+7 : gosub LCD_CMD
cmd=&H54 : gosub LCD_Char
cmd=&H3D : gosub LCD_Char
cmd=test3 : gosub LCD_zahl2
cmd=&h2c : gosub LCD_Char 'Komma
cmd=test4 : gosub LCD_zahl2null
sys prnLCD,LCDLight,0,PCF : print "/";
cmd=test5 : gosub LCD_zahl2
cmd=&h2c : gosub LCD_Char 'Komma
cmd=test6 : gosub LCD_zahl2null

cmd=Line2 : gosub LCD_CMD
cmd=day : gosub LCD_Zahl2null
cmd=Dot : gosub LCD_Char
cmd=month : gosub LCD_Zahl2null
sys prnLCD,LCDLight,0,PCF : print ".20";
cmd=year : gosub LCD_Zahl2null
cmd=Line2+12 : gosub LCD_CMD
cmd=&H4C : gosub LCD_Char
cmd=&H46 : gosub LCD_Char
cmd=&H3D : gosub LCD_Char
cmd=test1 : gosub LCD_zahl2
cmd=&h2c : gosub LCD_Char 'Komma
cmd=test2 : gosub LCD_zahl2null

pause 45
goto loop


'-----------------------es folgt eingefügtes

#Rain
if  wert12 >= 1840 then goto  RainAus
if  wert12 >= 1839 and second >= 50  then goto  RainAus '  Uhrzeit lässt sich sekundengenau vorgeben
if  wert12 >= 1839 and second >= 05  then goto  RainEin '  Einschaltung von 15 bis 37 Sekunden Uhrzeit
if  wert12 >= 1839 then goto  RainAus

if  wert12 >= 1137 then goto  RainAus
if  wert12 >= 1136 and second >= 50  then goto  RainAus '  Uhrzeit lässt sich sekundengenau vorgeben
if  wert12 >= 1136 and second >= 05  then goto  RainEin '  Einschaltung von 15 bis 37 Sekunden Uhrzeit
if  wert12 >= 1136 then goto  RainAus

if  wert12 >= 606 then goto  RainAus
if  wert12 >= 605 and second >= 50  then goto  RainAus '  Uhrzeit lässt sich sekundengenau vorgeben
if  wert12 >= 605 and second >= 05  then goto  RainEin '  Einschaltung von 15 bis 37 Sekunden Uhrzeit
if  wert12 >= 605 then goto  RainAus

#RainAus

deact Rel1
goto EndeRain
#RainEin

Rel1 = off

#EndeRain
'----------------------------------------------

#T5

if  wert12 >= 2150  then goto  T5Aus
if  wert12 >=  610  then goto  T5Ein

#T5Aus

deact Rel2
goto EndeT5
#T5Ein

Rel2 = off

#EndeT5
'--------------------------------------------

#UV

if  wert12 >= 2200  then goto  UVAus
if  wert12 >=  600  then goto  UVEin

#UVAus

deact Rel3
goto EndeUV
#UVEin

Rel3 = off

#EndeUV

'---------------------------------------------

#Heizung

if  test3 >= 26  then goto  HeizungAus
if  test3 >= 10  then goto  HeizungEin

#HeizungAus

deact Rel4
goto EndeHeizung
#HeizungEin

Rel4 = off

#EndeHeizung

#Pumpe

if  wert12 >= 1850  then goto  PumpeAus
if  wert12 >= 1845  then goto  PumpeEin

#PumpeAus

K1=Off
goto EndePumpe

#PumpeEin

K1=On

#EndePumpe


#sht11
Cme = &B00000011        'temp
gosub Getit
shtvalue=shtvalue-4000
  test3 = shtvalue/100
  test4 = shtvalue mod 100
  test5 = (temp2*5-250)/10
  test6 = (temp2*5-250) mod 10

Cme = &B00000101        'hyg
gosub Getit
ts = shtvalue / 16
k = shtvalue Mod 16
looktab shtab,ts,xy
ts=ts-1
looktab shtab,ts,f1
xy = (xy - f1) * k /16
shtvalue=f1 + xy
if shtvalue>=1000 then shtvalue=999
test1 = shtvalue/10
test2 = shtvalue mod 10
return

#getit
'first reset comm.
sck=0
Dataout=1
For k = 1 To 12
   Sck=1
   gosub wait
   Sck=0
   gosub wait
Next
'start sequence
sck=1
gosub wait
Dataout=0
gosub wait
Sck=0
gosub wait
Sck=1
gosub wait
Dataout=1
gosub wait
Sck=0
gosub wait
'Shiftout command
for k=0 to 7
  if (cme and 128)=0 then dataout=0 else dataout=1
  sck=1
  gosub wait
  sck=0
  gosub wait
  cme=cme shl 1
next

deact dataout
sck=1
gosub wait
Sck=0
gosub wait

#bitwait
if dataout<>0 then goto bitwait

'Shiftin data MSB
gosub shiftin
shtvalue = xy

Dataout=0
'ack
Sck=1
gosub wait
Sck=0
gosub wait

deact dataout

'Shiftin Data LSB
gosub shiftin
shtvalue=shtvalue shl 8
shtvalue = shtvalue Or xy
return

#shiftin
xy=0
for k=0 to 7
    sck=1
    gosub wait
    j=abs(dataout)
    sck=0
    gosub wait
    xy=xy shl 1
    xy=xy or j
next
return


#wait
return


table shtab "sht.tab"

'----PCF8574-Aufrufe-------------------------
define pop DA[1] 'Trick zum auslesen des Stacks(siehe ccintern.dharlos.de)
'Byte zum PCF8574 senden:
sys PCFwrite,wert,PCF

'Byte vom PCF8574 lesen:
sys PCFread,PCF+1 'Leseadresse=65
wert=pop

'Einzelport am PCF8574 setzen:
sys PCFread,PCF+1
wert=pop
P2 = off 'z.B P2 am PCF8574 auf Low setzen
sys PCFwrite,wert,PCF

'Einzelport am PCF8574 umschalten(toggle):
sys PCFread,PCF+1
wert=pop
P0 = not P0 'z.B P0 am PCF8574 togglen
sys PCFwrite,wert,PCF



'----LCD-Funktionen--------------------------
'Zahlausgaben
#LCD_Zahl3 ' 3 stellige Zahl ausgeben
if cmd > 99 then sys &h124,LCDLight,(cmd/100)+&h30,PCF else sys &h124,LCDLight,&h20,PCF
#LCD_Zahl2 ' 2 stellige Zahl ausgeben
if cmd > 9 then sys &h124,LCDLight,((cmd/10) mod 10)+&h30,PCF else sys &h124,LCDLight,&h20,PCF
#LCD_Zahl1 '1 stellige Zahl ausgeben
sys &h124,LCDLight,(cmd mod 10)+&h30,PCF


return
#LCD_Zahl3null ' 3 stellige Zahl ausgeben mit führender Nullen z.B.: 025 od. 005
sys &h124,LCDLight,(cmd/100)+&h30,PCF
#LCD_Zahl2null ' 2 stellige Zahl ausgeben mit führender Null z.B.: 05
sys &h124,LCDLight,((cmd/10) mod 10)+&h30,PCF
goto LCD_Zahl1


#LCD_CLS
sys &h12e,LCDLight,&b00000001,PCF
return
#LCD_CMD
sys &h12e,LCDLight,cmd,PCF
return
#LCD_Char
sys &h124,LCDLight,cmd,PCF
return
#LCD_Init
sys &h142,0,PCF
sys &h12e,0,&b00111000,PCF
sys &h138,0,&b00100000,PCF
sys &h12e,0,&b00101000,PCF
sys &h12e,0,&b00001110,PCF
sys &h12e,0,&b00000001,PCF
sys &h12e,0,&b00000110,PCF
return
#setPCFLight
sys &h142,LCDLight,0,PCF
return

'syscode "pcflcd_pcf.s19"


Vielen Dank für eure Unterstützung...Andreas

 Antwort schreiben

Bisherige Antworten:

Re: Verbesserung+Hilfe ( Spannung bricht zusammen) (von Hecktor - 21.06.2006 9:30)
Re: Verbesserung+Hilfe ( Spannung bricht zusammen) (von Achim - 20.06.2006 19:52)
    Re: Verbesserung+Hilfe ( Spannung bricht zusammen) (von Andreas - 20.06.2006 21:12)
        Re: Verbesserung+Hilfe ( Spannung bricht zusammen) (von Achim - 20.06.2006 22:13)
        Re: Verbesserung+Hilfe ( Spannung bricht zusammen) (von ManfredW - 20.06.2006 22:00)
            Re: Verbesserung+Hilfe ( Spannung bricht zusammen) (von Andreas - 21.06.2006 20:22)