SchemaTheek
 
Home Nieuws Forum Schema's Artikelen Magazine Downloads Datasheets Links Shops Zoeken
 
Controle Paneel
Gebruikersnaam
Wachtwoord
  Onthoud mij
» Wachtwoord?
» Registreren
Site info
» Het Team
» Contact
» FAQ
» Leden
» Upload Archief
Stats
Totaal online: 9
9 gasten
0 leden:
Forum > Show Your Projects > Schakelklok
« 1 2 3 [4] 5 »
calichio
Lid
Berichten: 350
Gepost op maandag 19 December 2011 21:58:53 QuoteWijzig

Hier staan ze toch tussen dacht ik!





De originele code geeft ook die melding.
Ik mag eender welke code nemen, maar van het ogenblik als er I2CIN of I2COUT in komt heb ik die melding.
 
[Bericht gewijzigd door calichio op Maandag 19 December 2011 22:13:41]

reddevil
Lid
Berichten: 1144
Gepost op maandag 19 December 2011 22:38:10 QuoteWijzig

Dim die variabelen, lezen_uit en schrv_in eens een word in plaats van een byte.


Veel te weinig tijd voor mijn projecten of heb ik er soms te veel?
calichio
Lid
Berichten: 350
Gepost op maandag 19 December 2011 22:45:11 QuoteWijzig

Net hetzelfde resultaat!
Heb de indruk dat mijn versie van proton het commando niet kent.
Ik vind het ook in de help functie niet terug.

Proton ID 1.0.0.1
Compiler version 2.2.0.20

Edit: Ik heb ipv i2cin/out nu BUSIN en BUSOUT gebruikt en dan compileerd hij foutloos.

 
[Bericht gewijzigd door calichio op Maandag 19 December 2011 22:51:42]

reddevil
Lid
Berichten: 1144
Gepost op maandag 19 December 2011 22:48:46 QuoteWijzig

In mijn help functie staat het wel, daar stond in de vlugte iets te lezen van die word.

heb versie 1.0.4.6
 
[Bericht gewijzigd door reddevil op Maandag 19 December 2011 22:50:54]


Veel te weinig tijd voor mijn projecten of heb ik er soms te veel?
Stynus
Admin
Berichten: 2681
Gepost op maandag 19 December 2011 23:16:56 QuoteWijzig

Sommige versies hebben idd problemen met I2CIN en out. BUSIN en out zijn dan de oplossing.


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
calichio
Lid
Berichten: 350
Gepost op maandag 19 December 2011 23:22:30 QuoteWijzig

Dacht ik al.
Moet die ds1307 niet geactiveerd worden door die CH-bit op nul te zetten, want hij leest of schrijft nog niet.



 
[Bericht gewijzigd door calichio op Maandag 19 December 2011 23:26:06]

calichio
Lid
Berichten: 350
Gepost op dinsdag 20 December 2011 23:01:43 QuoteWijzig

ipv deze code:
I2CIN DS_SDA, DS_SLC, Lezen, Reg_Seconden, [Seconden]
I2COUT DS_SDA, DS_SLC, Schrijven ,Reg_Seconden, [Seconden]

moet ik deze code gebruiken:
Seconden = BUSIN Lezen, Reg_Seconden
BUSOUT = Schrijven, Reg_Seconden (Seconden)

En nu werkt alles zoals het hoort.
Alvast bedankt voor de hulp, en vooral aan Stynus voor het vrijgeven van de code van zijn schakelklok.
Dankzij "Schematheek" kan ik mij alle dagen geweldig amuseren met mijn hobby.


 
[Bericht gewijzigd door calichio op Zaterdag 24 December 2011 18:26:12]

P A U L
Lid
Berichten: 2
Gepost op dinsdag 17 April 2012 20:46:59 QuoteWijzig

Geinspireerd oor stijn en Calichio heb ik wat aanpassingen aan het programma gedaan. Ik had namelijk behoefte om ook de led vijververlichting dimmend in- en uit te schakelen. Dit doe ik via pulsbreedte modulatie. De stroom mag max 1A bedragen, indien hoger gewenst dan moet de 7812 en BD137 worden vervangen door zwaarde typen. Overigens is het gebruik van de 7812 niet echt nodig, maar aangezien mijn trafo spanning iets te hoog was was ik bang de leds op te blazen.

Ik zal het schema, layout en programmalisting proberen te uploaden onder schema's

Hierbij de programma listing


Code

'****************************************************************
'*  Name    : Schakelklok met led dimmer                        *
'*  Author  : Paul Smits                                        *
'*  Notice  : Copyright (c) 2009 ElektronicaStynus.be           *
'*          : All Rights Reserved                               *
'*  Date    : 01/04/2012                                        *
'*  Version : 1.1                                               *
'*  Notes   : Gebaseerd op het ontwerp van Stijn Coenen         *
'*          : www.schematheek.net                               *
'****************************************************************
Device 16F648A
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
All_Digital TRUE 
'****************************************************************
    'Algemeen
    Symbol knop_up          = PORTA.4: TRISA.4 = 1
    Symbol knop_enter       = PORTA.5: TRISA.5 = 1
    Symbol knop_down        = PORTA.3: TRISA.3 = 1
    Symbol ldr              = PORTA.7: TRISA.7 = 1
    Symbol relay            = PORTB.1: TRISB.1 = 0
    '************************************************************
    'Lcd
    Declare LCD_DTPin       PORTB.4
    Declare LCD_ENPin       PORTB.0
    Declare LCD_RSPin       PORTB.2
    Declare LCD_Interface   4 
    Declare LCD_Lines       2
    Print $FE,$40,$0E,$0A,$0E,$00,$00,$00,$00,$00 
    '************************************************************
    'RTC
    Declare SDA_Pin PORTA.0
    Declare SCL_Pin PORTA.1
    
    Dim     Seconden        As Byte
    Dim     Minuten         As Byte
    Dim     Uren            As Byte
          
    Symbol  Reg_Seconden    =  $00 
    Symbol  Reg_Minuten     =  $01
    Symbol  Reg_Uren        =  $02
    'Ram registers
    Symbol  Reg_ldr         = $14
    Symbol  Reg_TijdAanU1   = $15
    Symbol  Reg_TijdAanM1   = $16
    Symbol  Reg_TijdUitU1   = $17
    Symbol  Reg_TijdUitM1   = $18
    Symbol  Reg_Tijd2Gebr   = $19
    Symbol  Reg_TijdAanU2   = $20
    Symbol  Reg_TijdAanM2   = $21
    Symbol  Reg_TijdUitU2   = $22
    Symbol  Reg_TijdUitM2   = $23
    Symbol  Reg_ldr2        = $24
    Symbol  Lezen           =  %11010001
    Symbol  Schrijven       =  %11010000
    '************************************************************
    'Subroutine
    Dim     BCD_In          As Byte
    Dim     Byte_Uit        As Byte
    Dim     Hbits           As Byte
    Dim     Lbits           As Byte
    Dim     BCD_Uit         As Byte
    Dim     Byte_In         As Byte   
    Dim     Uur_sub         As Byte
    Dim     Min_sub         As Byte
    Dim     ldr_timer       As Byte
    Dim     ldr_delay       As Bit
    Dim     timer_uit       As Bit
    
   '************************************************************
   'Instellen 
    Dim     temp            As Byte 
    Dim     teller          As Byte
    Dim     Ldr_insch       As Byte
    Dim     AanTijdu1       As Byte
    Dim     AanTijdm1       As Byte
    Dim     UitTijdu1       As Byte
    Dim     aan2            As Byte
    Dim     UitTijdm1       As Byte
    Dim     AanTijdu2       As Byte
    Dim     AanTijdm2       As Byte
    Dim     UitTijdu2       As Byte
    Dim     UitTijdm2       As Byte
    Dim     Ldr_uitsc       As Byte     
    Dim     lezen_reg       As Byte
    Dim     lezen_uit       As Byte
    Dim     schrv_reg       As Byte
    Dim     schrv_in        As Byte
    Dim     relay_bit       As Bit
    
    '****************************************************************
    'led verlichting aansturing
    Dim X As Word
    Dim Y As Byte
    Dim Z As Byte
    Declare CCP1_Pin PORTB.3
'****************************************************************

Opstarten:
    Clear
    Cls
    DelayMS 100
    Print At 1,1, "Initialiseren"
    Print At 2,1, "LDR-schakelklok"
    DelayMS 1500
    Cls
    relay = 0
    X = 0
    Y = 0
    GoTo Hoofdprogramma
'****************************************************************
'Subroutines
    Inlezen:
        lezen_reg = Reg_Seconden: GoSub DS_lezen: Seconden      = lezen_uit
        lezen_reg = Reg_Minuten : GoSub DS_lezen: Minuten       = lezen_uit   
        lezen_reg = Reg_Uren    : GoSub DS_lezen: Uren          = lezen_uit
        Return
    Omzetten:
        'Seconden   
        BCD_In = Seconden : GoSub BCD_To_Byte: Seconden = Byte_Uit   
        'Minuten
        BCD_In = Minuten  : GoSub BCD_To_Byte: Minuten  = Byte_Uit   
        'Uren  
        Uren.7 = 0 
        Uren.6 = 0
        BCD_In = Uren     : GoSub BCD_To_Byte: Uren     = Byte_Uit   
        Return
    BCD_To_Byte:
        'Hoogste 4 bits omzetten (Tientallen)
        Byte_Uit    = 0
        Byte_Uit.0  = BCD_In.4
        Byte_Uit.1  = BCD_In.5
        Byte_Uit.2  = BCD_In.6
        Byte_Uit.3  = BCD_In.7
        Byte_Uit    = Byte_Uit * 10 
        'Laagste 4 bits omzetten (Eenheden)
        BCD_In.4    = 0
        BCD_In.5    = 0
        BCD_In.6    = 0
        BCD_In.7    = 0
        Byte_Uit    = BCD_In + Byte_Uit
    Return
    Byte_To_BCD:    
        'Hoge bits
        Hbits = Byte_In / 10                
        'Lagebits
        Lbits = Byte_In - (Hbits * 10)  
        'Hoge bits doorschuiven               
        Hbits = Hbits << 4
        'Samenvoegen
        BCD_Uit = Lbits + Hbits               
    Return
    AU_inst:  
       Print At 2,12,   "Uur"        
        While 1 = 1
            If knop_up = 0 Then                
               Inc Uur_sub
                    If Uur_sub > 23 Then  Uur_sub =  0
                Print At 2,1, Dec2 Uur_sub 
                While knop_up = 0 : Wend
            EndIf
            If knop_down = 0 Then        
                Dec Uur_sub
                    If Uur_sub < 0 Then  Uur_sub = 23
                Print At 2,1, Dec2 Uur_sub 
                While knop_down = 0 : Wend
            EndIf
            If knop_enter = 0 Then
                While knop_enter = 0 : Wend
                DelayMS 200 
                Break
                EndIf  
        Wend         
        Print At 2,12,   "Min"            
        While 1 = 1
            If knop_up = 0 Then                
                Inc Min_sub
                    If Min_sub > 59 Then  Min_sub = 0
                Print At 2,4, Dec2 Min_sub 
                While knop_up = 0 : Wend
            EndIf
            If knop_down = 0 Then        
                Dec Min_sub
                    If Min_sub < 0 Then Min_sub = 59
                Print At 2,4, Dec2 Min_sub 
                While knop_down = 0 : Wend
            EndIf
            If knop_enter = 0 Then
                While knop_enter = 0 : Wend
                DelayMS 200
                Break
            EndIf  
        Wend  
    Return
    
    DS_lezen:
        
        BusIn Lezen, lezen_reg, [lezen_uit]
    Return
    
    DS_schrijven:
        
        BusOut Schrijven, schrv_reg, [schrv_in]
    Return
    
    'Return
      
'****************************************************************
Hoofdprogramma:
    lezen_reg = Reg_ldr      : GoSub DS_lezen: Ldr_insch = lezen_uit
    lezen_reg = Reg_TijdAanU1: GoSub DS_lezen: AanTijdu1 = lezen_uit
    lezen_reg = Reg_TijdAanM1: GoSub DS_lezen: AanTijdm1 = lezen_uit
    lezen_reg = Reg_TijdUitU1: GoSub DS_lezen: UitTijdu1 = lezen_uit
    lezen_reg = Reg_TijdUitM1: GoSub DS_lezen: UitTijdm1 = lezen_uit    
    lezen_reg = Reg_Tijd2Gebr: GoSub DS_lezen: aan2      = lezen_uit
    lezen_reg = Reg_TijdAanU2: GoSub DS_lezen: AanTijdu2 = lezen_uit
    lezen_reg = Reg_TijdAanM2: GoSub DS_lezen: AanTijdm2 = lezen_uit
    lezen_reg = Reg_TijdUitU2: GoSub DS_lezen: UitTijdu2 = lezen_uit  
    lezen_reg = Reg_TijdUitM2: GoSub DS_lezen: UitTijdm2 = lezen_uit  
    lezen_reg = Reg_ldr2     : GoSub DS_lezen: Ldr_uitsc = lezen_uit                                            
    
While 1 = 1
    
    GoSub Inlezen
    GoSub Omzetten
    
    Print At 1,1, Dec2 Uren, ":", Dec2 Minuten, ":", Dec2 Seconden, " E: Menu" 
    'relay = relay_bit
    
    If Y < 50 Then
        Z = 5
        Else
        Z = 0
    EndIf
    
    If relay_bit = 1 Then
        
                      '1234567890123456
        Print At 2,1, "Lamp aan        "
        High relay                                                                    
        If X = Z Then
            If Y < 254 Then
                Inc Y
                Else
                Y = 254
            EndIf
        X = 0
        Else
        Inc X
        EndIf
        HPWM 1, Y, 1000
        
        Else     
        
                      '1234567890123456
        Print At 2,1, "Lamp uit        "
        Low relay
        If X = Z Then
            If Y > 0 Then
            Dec Y
            Else
            Y = 0
            PORTB.3 = 0
            EndIf
        X = 0
        Else
        Inc X
        EndIf
        HPWM 1, Y, 1000
     EndIf
          
    'S avonds aandoen
    If relay_bit = 0 And Uren > 15 Then
        If Ldr_insch = 1 Then
            If ldr = 0 And timer_uit = 0 Then
                relay_bit = 1
                EndIf    
        Else
            If Uren = AanTijdu1 And Minuten = AanTijdm1 Then
                relay_bit = 1 
            EndIf
        EndIf
    EndIf
           
    'reset ldr indien korte verduistering
    If ldr = 1 Then
        Inc ldr_timer
            If ldr_timer > 100 Then
                ldr_delay = 1
                ldr_timer = 0
            Else 
                ldr_delay = 0
            EndIf
    EndIf
    If ldr_timer > 1 And ldr = 0 Then
       ldr_timer = 0
    EndIf
        
    'S avonds uitdoen
    If relay_bit = 1 Then
        If Uren = UitTijdu1 And Minuten = UitTijdm1 Then
            relay_bit = 0
            timer_uit = 1
        EndIf
    EndIf
    
    'Smorgens aandoen
    If relay_bit = 0 And aan2 = 1 Then
        If Uren = AanTijdu2 And Minuten = AanTijdm2 Then
            If timer_uit = 1 Then
                relay_bit = 1
            EndIf
        EndIf
    EndIf 
    
    'Smorgens uitdoen
    If Uren = UitTijdu2 And Minuten = UitTijdm2 Then
        relay_bit = 0
        timer_uit = 0 
    EndIf
        
    'licht uit als het licht is en reset timer
    If ldr_delay = 1 Then
        relay_bit = 0
        timer_uit = 0
    EndIf
        
    If knop_enter = 0 Then
        GoTo Hoofd_Menu
    EndIf

    DelayMS 300
Wend
'****************************************************************
Hoofd_Menu:                        
    While knop_enter = 0: Wend
    '************************************************************
    Tijd_instellen:
        Cls
        DelayMS 50    '1234567890123456
        Print At 1,1, "* Tijd instellen"
        Print At 2,1, "  Lichttijd inst"
        teller = 0
        While 1 = 1
            If knop_down = 0 Then
                While knop_down = 0 : Wend
                GoTo Lichttijd_inst
            EndIf
            If knop_enter = 0 Then
                While knop_enter = 0 : Wend
                DelayMS 200
                GoTo Tijd_instellen_enter
            EndIf   
            DelayMS 50
            Inc teller
            If teller = 255 Then
                GoTo Hoofdprogramma
            EndIf  
        Wend   
    '************************************************************  
    Lichttijd_inst:
        Cls
        DelayMS 50
        Print At 1,1, "  Tijd instellen"
        Print At 2,1, "* Lichttijd inst"
        teller = 0
        While 1 = 1
            If knop_up = 0 Then
                While knop_up = 0 : Wend
                GoTo Tijd_instellen
            EndIf    
            If knop_down = 0 Then
                While knop_down = 0 : Wend
                GoTo LDR_inst
            EndIf    
            If knop_enter = 0 Then
                While knop_enter = 0 : Wend
                DelayMS 200 
                GoTo Lichttijd_instellen
            EndIf   
            DelayMS 50
            Inc teller
            If teller = 255 Then
                GoTo Hoofdprogramma
            EndIf   
        Wend
    '************************************************************  
    LDR_inst:
        Cls
        DelayMS 50
        Print At 1,1, "* LDR afstellen "
        Print At 2,1, "  Exit          "
        teller = 0
        While 1 = 1
            If knop_up = 0 Then
                While knop_up = 0 : Wend
                GoTo Lichttijd_inst
            EndIf    
            If knop_down = 0 Then
                While knop_down = 0 : Wend
                GoTo Exit
            EndIf    
            If knop_enter = 0 Then
                While knop_enter = 0 : Wend
                DelayMS 200 
                GoTo LDR_afst
            EndIf   
            DelayMS 50
            Inc teller
            If teller = 255 Then
                GoTo Hoofdprogramma
            EndIf   
        Wend
    '************************************************************  
    Exit:
        Cls
        DelayMS 50
        Print At 1,1, "  LDR afstellen "
        Print At 2,1, "* Exit          "
        teller = 0
        While 1 = 1
            If knop_up = 0 Then
                While knop_up = 0 : Wend
                GoTo LDR_inst
            EndIf    
            If knop_enter = 0 Then
                While knop_enter = 0 : Wend
                DelayMS 200 
                GoTo Hoofdprogramma
            EndIf   
            DelayMS 50
            Inc teller
            If teller = 255 Then
                GoTo Hoofdprogramma
            EndIf   
        Wend 
    '************************************************************  
    Tijd_instellen_enter:  'Tijd instellen
        Cls
        GoSub Inlezen
        GoSub Omzetten
        Seconden = 0
        Print At 2,1, Dec2 Uren, ":", Dec2 Minuten, ":", Dec2 Seconden 
        'uren instellen
                        '1234567890123456
        Print At 1,1,   "Tijd:       Uren"
        While 1 = 1
            If knop_up = 0 Then                
                Inc Uren
                    If Uren > 23 Then Uren = 0   
                Print At 2,1, Dec2 Uren 
                While knop_up = 0 : Wend
            EndIf
            If knop_down = 0 Then        
                Dec Uren
                    If Uren < 0 Then Uren = 23
                Print At 2,1, Dec2 Uren 
                While knop_down = 0 : Wend
            EndIf
            If knop_enter = 0 Then
                While knop_enter = 0 : Wend
                DelayMS 200 
                Break
                'GoTo Minuten_instellen
            EndIf  
        Wend                                 
        'Minuten instellen
                        '1234567890123456
        Print At 1,1,   "Tijd:    Minuten"  
        While 1 = 1
            If knop_up = 0 Then                
                Inc Minuten
                    If Minuten > 59 Then Minuten = 0
                Print At 2,4, Dec2 Minuten 
                While knop_up = 0 : Wend
            EndIf
            If knop_down = 0 Then        
                Dec Minuten
                    If Minuten < 0 Then  Minuten = 59
                Print At 2,4, Dec2 Minuten 
                While knop_down = 0 : Wend
            EndIf
            If knop_enter = 0 Then
                While knop_enter = 0 : Wend
                DelayMS 200
                Break
            EndIf                                   
        Wend  
          
        'Omzetten en wegschrijven
            'Seconden
                Byte_In = Seconden : GoSub Byte_To_BCD : Seconden  = BCD_Uit
                schrv_reg = Reg_Seconden: schrv_in = Seconden: GoSub DS_schrijven 
            'Minuten
                Byte_In = Minuten : GoSub Byte_To_BCD : Minuten  = BCD_Uit
                schrv_reg = Reg_Minuten: schrv_in = Minuten: GoSub DS_schrijven 
            'Uren
                Byte_In = Uren : GoSub Byte_To_BCD : Uren  = BCD_Uit
                schrv_reg = Reg_Uren chrv_in = Uren: GoSub DS_schrijven               
    GoTo Hoofdprogramma
    '************************************************************  
    Lichttijd_instellen:
        Cls
                        '1234567890123456
        Print At 1,1,   " LDR gebruiken? "    
        Print At 2,1,   "      Ja        " 
        temp = 1
        While 1 = 1
            If knop_up = 0 Then                
                Print At 2,1,   "      Ja        "
                temp = 1
                While knop_up = 0 : Wend
            EndIf
            If knop_down = 0 Then        
                Print At 2,1,   "      Nee       "
                temp = 0
                While knop_down = 0 : Wend
            EndIf
            If knop_enter = 0 Then
                While knop_enter = 0 : Wend
                DelayMS 200 
                Break
            EndIf  
        Wend
        BusOut Schrijven ,Reg_ldr, [temp]  
        If temp = 0 Then
            Cls
                            '1234567890123456
            Print At 1,1,   "Aanschakeltijd1:"  
            lezen_reg = Reg_TijdAanU1: GoSub DS_lezen: Uur_sub = lezen_uit         
            Print At 2,1, Dec2 Uur_sub, ":"    
            lezen_reg = Reg_TijdAanM1: GoSub DS_lezen: Min_sub = lezen_uit            
            Print At 2,4, Dec2 Min_sub
            GoSub AU_inst           
            schrv_reg = Reg_TijdAanU1 chrv_in = Uur_sub: GoSub DS_schrijven 
            schrv_reg = Reg_TijdAanM1 chrv_in = Min_sub: GoSub DS_schrijven              
        EndIf 
        'Uitschakeltijd
        Cls
                        '1234567890123456
        Print At 1,1,   "Uitschakeltijd1:"    
            lezen_reg = Reg_TijdUitU1: GoSub DS_lezen: Uur_sub = lezen_uit     
            Print At 2,1, Dec2 Uur_sub, ":"      
            lezen_reg = Reg_TijdUitM1: GoSub DS_lezen: Min_sub = lezen_uit            
            Print At 2,4, Dec2 Min_sub
            GoSub AU_inst 
            schrv_reg = Reg_TijdUitU1 chrv_in = Uur_sub: GoSub DS_schrijven 
            schrv_reg = Reg_TijdUitM1 chrv_in = Min_sub: GoSub DS_schrijven                         
        'Smorgens licht? 
        Cls
                        '1234567890123456
        Print At 1,1,   "s'morgens licht?"    
        Print At 2,1,   "      Ja        " 
        temp = 1
        While 1 = 1
            If knop_up = 0 Then                
                Print At 2,1,   "      Ja        "
                temp = 1
                While knop_up = 0 : Wend
            EndIf
            If knop_down = 0 Then        
                Print At 2,1,   "      Nee       "
                temp = 0
                While knop_down = 0 : Wend
            EndIf
            If knop_enter = 0 Then
                While knop_enter = 0 : Wend
                DelayMS 200
                Break
            EndIf  
        Wend 
        schrv_reg = Reg_Tijd2Gebr chrv_in = temp: GoSub DS_schrijven 
        If temp = 1 Then
            'Inschakeltijd
            Cls
                            '1234567890123456
            Print At 1,1,   "Inschakeltijd2:"     
            lezen_reg = Reg_TijdAanU2: GoSub DS_lezen: Uur_sub = lezen_uit     
            Print At 2,1, Dec2 Uur_sub, ":"   
            lezen_reg = Reg_TijdAanM2: GoSub DS_lezen: Min_sub = lezen_uit               
            Print At 2,4, Dec2 Min_sub
            GoSub AU_inst  
            schrv_reg = Reg_TijdAanU2 chrv_in = Uur_sub: GoSub DS_schrijven 
            schrv_reg = Reg_TijdAanM2 chrv_in = Min_sub: GoSub DS_schrijven             
            Cls       
            Print At 1,1,   "Uit met LDR?"    
            Print At 2,1,   "      Ja        " 
            While 1 = 1
                If knop_up = 0 Then                
                    Print At 2,1,   "      Ja        "
                    temp = 1
                    While knop_up = 0 : Wend
                EndIf
                If knop_down = 0 Then        
                    Print At 2,1,   "      Nee       "
                    temp = 0
                    While knop_down = 0 : Wend
                EndIf
                If knop_enter = 0 Then
                    While knop_enter = 0 : Wend
                    DelayMS 200
                    Break
                EndIf  
            Wend 
            schrv_reg = Reg_ldr2 chrv_in = temp: GoSub DS_schrijven 
            If temp = 0 Then
                Cls
                                '1234567890123456
                Print At 1,1,   "Uitschakeltijd2:" 
                lezen_reg = Reg_TijdUitU2: GoSub DS_lezen: Uur_sub = lezen_uit         
                Print At 2,1, Dec2 Uur_sub, ":"   
                lezen_reg = Reg_TijdUitM2: GoSub DS_lezen: Min_sub = lezen_uit              
                Print At 2,4, Dec2 Min_sub
                GoSub AU_inst      
                schrv_reg = Reg_TijdUitU2 chrv_in = Uur_sub: GoSub DS_schrijven 
                schrv_reg = Reg_TijdUitM2 chrv_in = Min_sub: GoSub DS_schrijven        
            EndIf
        EndIf         
    GoTo Hoofdprogramma
    
    LDR_afst:
        Cls
                        '1234567890123456
        Print At 1,1,   " LDR afstellen  "  
        While 1 = 1
                If ldr = 1 Then   
                                    '1234567890123456             
                    Print At 2,1,   "      licht     "
                Else
                                    '1234567890123456       
                    Print At 2,1,   "     donker     "
                EndIf
                If knop_enter = 0 Then
                    While knop_enter = 0 : Wend
                    DelayMS 200
                    Break
                EndIf  
            Wend          
    GoTo Hoofdprogramma
    
    
End






 
[Bericht gewijzigd door P A U L op Dinsdag 17 April 2012 20:51:23]

Henk (NL)
Lid
Berichten: 256
Gepost op maandag 21 Oktober 2013 20:13:08 QuoteWijzig

Voor m'n Easygreen (Kiem/Kweekkast) ben ik 'n Timer nodig,
die erbij zit is mechanisch en daarom beperkt.

Deze Schakelklok van Stynus dient dan als 'basis' wat ik wil bereiken.

Dat wordt dan:
4x Schakel-uitgangen
7x Timers voor 'aan' en 7 timers voor 'uit'
1x Temperatuur regeling.
1x Waterniveau-alarm.

De code op papier is grotendeels klaar,
maar eerst moet ik een schema tekenen en een proefopstelling maken,
dan kan ik pas testen.

Henk (NL)
Lid
Berichten: 256
Gepost op dinsdag 5 November 2013 20:22:52 QuoteWijzig

Vandaag is de schakeling op 'Breadbord' voor test/debug opgebouwd.
De basic file was voor 90% gereed (met kleine type foutjes).
Maar de temperatuur-meting leek me moeilijk te doen met de DS3232 in de groeicompartiment in te bouwen, vanwege oxidatie, en waterdicht coaten leek me ook niet verstandig want dit komt de temperatuurmeting niet ten goede, met een NTC is het onbetrouwbaar op lange termijn.
Dus bleef voor mij de DS18B20 sensor (in sonde) over, daar moest de code weer omgezet worden.

Vorige week waren de belangrijkste componenten binnen, zodoende kon ik vandaag de eerste test doen.
Oke, op het LCD waren de tijd- en temperaturen alles op '0' en de afzonderlijke print waar de DS3232 opzit,
waarvan ik dacht, dat standard de I2C lijnen afgesloten waren, wat bleek de 'jumpers' waren open,
daarom geen tijd en temperatuur.

Toen ik dit zag, was het probleem verholpen.

De indeling op het LCD is 1e regel tijd in 11:11 22.0 22?C (als voorbeeld, 22.0 is van de DS18B20).
Dus kan ik afzonderlijk ruimte-temperatuurmeting / groeicompartiment-meting doen.

Vanaf nu nog testen en debuggen, en optimaliseren, daarna op print.
Kortom voorlopig nog wel even bezig.

Henk (NL)
Lid
Berichten: 256
Gepost op donderdag 7 November 2013 18:07:18 QuoteWijzig

Op Circuits Online las ik dat IRLZ34N (Logic FET) goed samenwerkt met 16F877A, deze gebruik nu voor aansturing van Leds en de Verwarming (12V 15W), en idd. het werkt uit-de-kunst.

Test is nu afgerond en de schakeling wordt op Montaprint opgebouwd.
Later komt nog een schema en pcb.

Henk (NL)
Lid
Berichten: 256
Gepost op maandag 25 November 2013 19:54:27 QuoteWijzig

Na 2 weken van testen werkt alles zoals verwacht.
Laatste punten in software toegevoegd, zoals schemering van ca.18min met HPWM.
Poorten moesten daardoor worden omgewisseld, had ik vooraf geen rekening mee gehouden.
Hierdoor moet het schema nog worden aangepast in (VSM)Proteus incl. print.

Blijkt maar weer dat eerst op Breadboard en dan op Montaprint de schakeling opbouwen
toch weer voordelen heeft, behalve het feit dat enkele onderdelen die op de Montaprint zitten moeten worden (her)gebruikt.

Binnenkort laat ik 'n paar printen maken en dat is op fietsafstand nog wel te doen.

Stynus
Admin
Berichten: 2681
Gepost op maandag 25 November 2013 22:08:58 QuoteWijzig

Bedoel je met die schemering langzaam aangaan over die 18min? Leuk bedachte optie !


Met vriendelijke groet, Stynus ||| www.elektronicastynus.be
Henk (NL)
Lid
Berichten: 256
Gepost op maandag 25 November 2013 23:04:35 QuoteWijzig

Ja dat klopt, ochtend- en avondschemering.
In de morgen langzaam aan 0-99% en 's avonds langzaam uit 99-0%, omdat ik maar 2 decimalen in LCD overhad, was 100% niet mogelijk, ach 254 of 255 aan duty-cycle maakt ook niet.
Dit zonder 1 delay alleen de vergelijking 'Seconde = seconde-oud + 4' als die opging Increment met 1 of Decrement,
afhankelijk van de schemering (avond,morgen) 4 x 255 (0-254) is ca. 18min.
Verder moest erbij;
Ontkiemen zonder licht!!
en doorspoelen/reinigen.
 
[Bericht gewijzigd door Henk (NL) op Maandag 25 November 2013 23:07:33]

Henk (NL)
Lid
Berichten: 256
Gepost op zaterdag 7 December 2013 17:49:19 QuoteWijzig

Vandaag de 'first run' dwz. de eerste zaden laten kiemen.

Maar ik bedacht ook, dat de kiemplantjes (na ca.3dagen kiemen) niet het volle (LED)licht konden verdragen.
Dus meteen maar een routine bedenken in de weinige minuten die ik over had,
want de zaden lagen vanmorgen al in water en moesten al in de kiemaarde.

Ik denk dat de waarden 10%, 20% en 37% (LED)licht wel goed zou zijn (vanaf de 3e-6e dag).
Dit heb ik dan 'quick&dirty' in tabel gezet.
Vanzelfsprekend is nu met deze waarden de schemertijd evenredig korter geworden,
bij 99% is dit dan weer ca.18min.

Henk (NL)
Lid
Berichten: 256
Gepost op zaterdag 21 December 2013 17:58:39 QuoteWijzig

De code is nu eindelijk af.
Sommige zaden moeten verschillende dag- en nacht-temperatuur hebben, dus ik moest de routine's aanpassen.
Verder is de temperatuur in te stellen zowel voor dag(18..24C) als nacht(12..17C).
LED-licht is nu ook traploos in helderheid instelbaar, ik doe dit aan de hand van de 'digit-positie' dus per eenheid, 100, 10, 1.
Voor 50% is dit 128 --> dit wordt dan 1x 100; 3x 10; dan 2x -1 digit.
Hiermee is de Prototype af, 16F877 is voor 81% vol.

pascalbianca
Lid
Berichten: 1363
Gepost op donderdag 26 December 2013 10:56:30 QuoteWijzig


Quote
Hiermee is de Prototype af, 16F877 is voor 81% vol.


Nou dan is je code behoorlijk uitgebreid


http://pascalbianca.blogspot.nl/
Henk (NL)
Lid
Berichten: 256
Gepost op donderdag 26 December 2013 21:18:04 QuoteWijzig

Tsja, daar hield ik toen al rekening mee.

Precies 1 jaar geleden begon ik me in PicBasic te verdiepen, ik wist eigenlijk niets (meer).
Toen ging ik de SMD-oven nabouwen van @Stynus, dan is het een kwestie van tijd en leren.

Nu, is deze 877A 81% gevuld, ik denk wel eens, huh......

Henk (NL)
Lid
Berichten: 256
Gepost op zaterdag 22 Februari 2014 12:36:46 QuoteWijzig

Omdat de DS3232 nogal prijzig is, heb ik gekeken naar wat goedkopere oplossingen.
Ik heb nl. nog 'n paar projecten liggen waar ik nog aan moet beginnen.

De DS3231 deze is wat goedkoper, maar heeft geen (ram)geheugen, welke de DS3232 wel heeft.
Of 'n DS1307 deze is het goedkoopst heeft een kleinere ram gebied, maar voldoende, maar geen temperatuur sensor.

Op eBay zag ik 'n DS1307 op 'n SMD print, tevens met een 24C128 en DS18B20.
Dit voor een aantrekkelijke prijs, en werkt goed.

Ik heb getracht de code universeel te houden voor de DS3232 uitvoering of,
voor de DS1307 uitvoering, nu is dit in de code gelukt,
maar, het punt is als ik later in het keuze-menu per ongeluk de verkeerde RTC selecteer,
dan hangt de PIC, op de I2C bus, en reageert nergens op, en de LCD is dan leeg.
Totdat ik de schakeling uitzet en de geselecteerde RTC plaats,
want een vergissing is zo gemaakt.

Dus de code wordt voorlopig uitgesplitst een voor DS3232 en een voor de DS1307.

Dat de DS1307 lastig is blijkt wanneer er geen batterij in de socket zit, dan staat de klok stil
en de I2C bus wordt genegeerd.
De klok gaat pas werken wanneer de seconden '59' of lager is, iig. lager dan '80' zie PDF.

De SMD print zelf had een laadvoorziening ingebouwd, voor een back-up accu,
waardoor m'n lithium-cel werd geladen, toen ging de spanning vari?ren waardoor de klok stil staat?
De laad voorziening verwijderd en klok werkt weer als voorheen.

Voor wat betreft de DS18B20 temperatuursensor deze sluit ik niet aan de bestaande 1-wire-bus aan,
omdat bij uitwisseling problemen geeft met de adressering, dus 1 extra poort gebruiken (die heb ik over).
Anders zou je een adressen tabel in de PIC moeten aanmaken, welke omslachtig is.

Henk (NL)
Lid
Berichten: 256
Gepost op zondag 2 Maart 2014 17:59:40 QuoteWijzig


Quote
..het punt is als ik later in het keuze-menu per ongeluk de verkeerde RTC selecteer, dan hangt de PIC...


Dit heb ik nu kunnen oplossen, door Enter-toets check, of deze al of niet is ingedrukt,
wanneer de voedingsspanning wordt aangesloten.
Want dan gaat de software meteen naar de instellingen-menu, daar kan ik dan de RTC selecteren.
Dit probleempje is dus ook opgelost.

« 1 2 3 [4] 5 »

Active Topics

» Subaru Outback 2016
» aansluiten ir reflecto...
» Stroomsensor
» Lengteaanslag verstekzaag
» lampjes in auto
» Netslaaf
» buggy "The end"
» Festool winkelhaak
» Mini domotica systeem
» RS232

» Meer actieve topics

Advertenties

ElektronicaStynus

© 2004-2017 SchemaTheek
Laadtijd: 0.14484 sec.