Categorie: DC Dummyload

DC Dummyload

Dit project ben ik een hele tijd geleden begonnen maar door tijdgebrek niet gepost. De bedoeling van dit project was een simpele regelbare belasting te maken voor voedingen te testen. Als extra’s is er een stroom, spanning en temperatuurmeter bij in gezet.

Het vermogen wordt in 8 2N3055 transistoren opgestookt. Elke tor wordt apart aangestuurd en de stroom apart ingelezen in de pic. Op deze manier kan de pic controleren of alle torren het nog doen en eventueel de belasting uitschakelen.

aansturing

transistoren

transistoren

Langs het koelprofiel zitten 2 ventilatoren die lucht door de gleuven trekken, verder wordt de temperatuur ook ingelezen door de pic. Als het koelprofiel te warm wordt dan word de belasting uitgeschakeld.

 

Schema’s pic print:

schema picprint

schema picprint

pic print

De voeding die ik hier gebruikt heb komt uit een hub (waarvan ik deze behuizing ook heb gehaald).

 

De displays die ik gebruikt heb zijn dezelfde als ik in men scheidingstransformatoren V2 en V3 heb gebruikt. Aangezien dit project er eerder was heb ik deze gewoon overgenomen voor de andere 2 projecten.

Dtisplay

Frontpaneel klaar:

Frontpaneel

In werking:

in werking

De spannings- en temperatuurmeting werkt inmiddels al probleemloos. Voor de stroom meting moet ik nog uitzoeken hoe die MAX186 moet uitlezen. Hier heb ik helaas nog geen tijd voor gehad.

De code zal ik posten als die project compleet klaar is.

DC Dummyload Update

Na lange tijd ben ik toch nog maar eens aan dit project begonnen. Al snel bleken er toch nog een aantal problemen in dit project te zitten.

Het eerste probleem dat ik tegenkwam is dat de transistoren stonden te oscilleren en als de voedingsspanning te laag was veel basisstroom gingen trekken. De oscillaties bleken door de shutdown schakeling op de main print te komen. Na deze verwijderd te hebben waren de oscillaties weg, maar was het probleem van grote transistorstromen nog groter geworden. Om dit op te lossen heb ik bij elke uitgangstrap 2 weerstanden toegevoegd.

schema

In dit schema is R4 toegevoegd. Verder moet er ook een 150 Ohm 2W weerstand tussen dit printje en de basis van de 2N3055 geplaatst worden.

Hierna bleek dat de voeding ook nog onstabiel was geworden bij hogere basis stromen. Daarom heb ik deze vervangen door een oude 16V laptop lader met een 5V spanningsregelaar printje erachter.

 

Voor de fans heb ik nog een 2de printje bijgezet met een 7812 (dit is bij op de grote koelblok gemonteerd).

 

Hierna bleek er nog een probleem met de stroom meting te zijn. Hierbij bleek dat de basisstroom door de transistoren ook mee gemeten werd. Om dit op te lossen heb ik een nieuw printje gemaakt (op basis van de ZXCT1086E5TA) dat de stroom in de + geleider meet. Deze meting heeft wel als nadeel dat deze niet werkt als de spanning van de ingang kleiner dan 3V wordt de stroom meting niet meer klopt. Dit heb ik in de software “opgelost” door dan — op het stroomdisplay te zetten.

https://elektronicastynus.be/image/77/Stroommeetprint.png

https://elektronicastynus.be/image/77/1367670001.jpg

https://elektronicastynus.be/image/77/1367670006.jpg

Om deze print aan te sluiten heb ik de main print wat veranderd:

https://elektronicastynus.be/image/77/1367670283.jpg

 

Nieuw schema:

https://elektronicastynus.be/image/77/Main_schema.png

 

Om de metingen wat stabieler te maken neem ik het gemiddelde van een aantal samples. Hiervoor bleek de pic die ik eerst ingetekend had wat te traag te zijn. Daarom heb ik deze nu vervangen door de PIC18F25K22 (pin compatibel). Deze pic draait op 64Mhz.

 

De code:

'****************************************************************
'*  Name    : Dummyload                                         *
'*  Author  : Stijn Coenen ElektronicaStynus.be                 *
'*  Notice  : Copyright (c) 2013 Stijn Coenen (Stynus)          *
'*          : All Rights Reserved                               *
'*  Date    : 01/05/2013                                        *
'*  Version : 1.2                                               *
'****************************************************************
Device = 18F25K22
Include "Config_Fuses_1_2.bas"    
Xtal = 16
'****************************************************************    
'EN: Declarations
'NL: Declaraties
    'Displays
        Symbol  Disp_klok       = LATB.7
        Symbol  Temp_Data       = LATB.2   
        Symbol  Temp_Latch      = LATB.1   
        Symbol  Spanning_Data   = LATB.4
        Symbol  Spanning_Latch  = LATB.3
        Symbol  Stroom_Data     = LATB.6
        Symbol  Stroom_Latch    = LATB.5
        
    'EN: Measurement values
    'NL: Meetwaardes
        Dim     Temperatuur     As Word
        Dim     Spanning        As Word
        Dim     Stroom          As Dword  
        Dim     StroomFloat     As Float  
        Dim     StroomPrecies   As Bit            
        
        Symbol  N_Samp_T        = 10    'Number of measuring samples; Aantal meetwaardes       
        Dim     GemT[N_Samp_T]  As Word 'Array that contains the samples; Array die de meetwaardes bevat                  
        Symbol  N_Samp_U        = 15          
        Dim     GemU[N_Samp_U]  As Word          
        Symbol  N_Samp_I        = 15         
        Dim     GemI[N_Samp_I]  As Word
        
    'EN: Display values
    'NL: Display waardes  
        Dim     DispTemp        As Byte
        Dim     DispSpanning    As Byte
        Dim     DispStroom      As Byte
    
        Dim     DispArT[3]      As Byte 
        Dim     DispArU[3]      As Byte 
        Dim     DispArI[3]      As Byte              
        
        Dim     IntCase         As Byte
        Dim     IntX            As Byte
        Dim     IntDisp         As Byte       
        
        Dim     X               As Byte
        Dim     Temp            As Byte
        
    'EN: Settings AD converter
    'NL: Instellingen AD converter 
        Declare Adin_Res        10 
        Declare Adin_Tad        FRC  
        Declare Adin_Stime      250         
        
    'EN: Connections 7 segment displays on the 74HC595 pcb's
    'NL: Aansluitingen 7 segment displays aan de 74HC595 op de printjes    
                            'dPecgbfa
        Symbol  Nul       = %01001000      '       a        '0         
        Symbol  Een       = %11101011      '     #####      '1
        Symbol  Twee      = %01010010      '     #   #      '2
        Symbol  Drie      = %01100010      '   f # g # b    '3
        Symbol  Vier      = %11100001      '     #####      '4
        Symbol  Vijf      = %01100100      '     #   #      '5
        Symbol  Zes       = %01000100      '   e # d # c    '6
        Symbol  Zeven     = %11101010      '     #####      '7
        Symbol  Acht      = %01000000                       '8
        Symbol  Negen     = %01100000                       '9
        Symbol  Uit       = %11111111                       'Out
        Symbol  Streep    = %11110111                       'Bar
    'EN: Connections of the transistors On the 74HC595 pcb's
    'NL: Aansluitingen Transistoren aan de 74HC595 op de printjes
        Symbol  disp1     = %00001100  
        Symbol  disp2     = %00001010  
        Symbol  disp3     = %00000110             
       
    'EN: Misc
    'NL: Diverse
        Symbol  TMR0IF    = INTCON.2
        
        'Tris registers
        TRISA             =  %00111011
        TRISB             =  %00000000
        TRISC             =  %11111111  
         
        All_Digital       = true        
    
        On_Hardware_Interrupt GoTo Interrupts
'****************************************************************    
Opstarten:     
    'EN: Set clock to 64 Mhz
    'NL: klok instellen op 64 Mhz
    OSCCON  = %01110111
    OSCCON2 = %11000111  

    Clear 'ram

    'EN: Timer0 setup to drive the displays
    'NL: Timer0 instellen om de displays aan te sturen
    T0CON   = %11000111
    INTCON  = %10100000
    INTCON2 = %00000100
    INTCON3 = %00000000
    IPR1    = %00000000
    IPR2    = %00000000
    IPR3    = %00000000
    IPR4    = %00000000
    IPR5    = %00000000
    
    'EN: Settings AD converter
    'NL: Instellingen AD converter     
    ADCON1  = %00000000
    ADCON2  = %10010111
    
GoTo Main         
'****************************************************************   
Interrupts:
    Context Save
    If TMR0IF = 1 Then
        TMR0IF = 0      'Reset flag
        TMR0L  = 230'   'Preloard timer

        'EN: Loading data for the display that is driven this interrupt
        'NL: Data inladen voor het display dat deze interrupt wordt aangestuurd
        DispTemp        = DispArT[IntCase]  
        DispSpanning    = DispArU[IntCase]
        DispStroom      = DispArI[IntCase]
        
        'EN: Get the transistor settings and set the decimal point
        'NL: Transistoren info uitlezen en de comma aanzetten
        Select IntCase 
            Case 0
                IntDisp = disp1       
            Case 1          
                IntDisp = disp2       
                DispTemp.6      = 0          
                DispSpanning.6  = 0
                DispStroom.6    = StroomPrecies
            Case 2          
                IntDisp = disp3   
                DispStroom.6    = StroomPrecies + 1 
            Case Else
                IntDisp = 255
                IntCase = 0                
        EndSelect
                           
        'EN: Outputting transistors data 
        'NL: Transistor data inklokken
        For IntX  = 0 To 7
            Temp_Data       = IntDisp.7 
            Spanning_Data   = IntDisp.7
            Stroom_Data     = IntDisp.7
            Disp_klok       = 1           
            IntDisp         = IntDisp * 2             
            Disp_klok       = 0
        Next    
        'EN: Outputting display data 
        'NL: Display data inklokken
        For IntX  = 0 To 7
            Temp_Data       = DispTemp.7 
            Spanning_Data   = DispSpanning.7
            Stroom_Data     = DispStroom.7
            Disp_klok       = 1
            DispTemp        = DispTemp << 1
            DispSpanning    = DispSpanning << 1
            DispStroom      = DispStroom << 1     
            Disp_klok       = 0
        Next               
             
        'EN: Latch data to the outputs of the 74hc595 ic's
        'NL: Data naar de uitgangen van de 74hc595 ic's latchen
        Temp_Latch      = 1
        Spanning_Latch  = 1
        Stroom_Latch    = 1     
        
        'EN: Set counter for next interrupt
        'NL: Teller bijtellen voor volgende interrupt
        Inc IntCase
        If IntCase > 2 Then
            IntCase = 0
        EndIf
        
        Temp_Latch      = 0
        Spanning_Latch  = 0
        Stroom_Latch    = 0 
    EndIf
               
    Context Restore
Return
'****************************************************************     
Main:
    While 1 = 1    

        'EN: Temperature measurement
        'NL: Temperatuur meting
        For X = (N_Samp_T - 1) To 1 Step -1    
            GemT[X]     = GemT[X-1]      
        Next
        Temperatuur     = ADIn 1
        Temperatuur     = Temperatuur * 5 
        GemT[0]         = Temperatuur / 9 
        Temperatuur     = 0
        For X = 0 To (N_Samp_T - 1)    
            Temperatuur = Temperatuur + GemT[X]
        Next 
        Temperatuur     = Temperatuur / N_Samp_T
        
        
        'EN: Voltage measurement
        'NL: Spannings meting
        For X = (N_Samp_U - 1) To 1 Step -1    
            GemU[X]     = GemU[X-1]      
        Next
        Spanning        = ADIn 0
        GemU[0]         = Spanning /  1.86
        Spanning        = 0
        For X = 0 To (N_Samp_U - 1)    
            Spanning    = Spanning + GemU[X]
        Next 
        Spanning        = Spanning / N_Samp_U
        
        
        'EN: Current measurement
        'NL: Stroom meting    
        For X = (N_Samp_I - 1) To 1 Step -1    
            GemI[X]     = GemI[X-1]      
        Next
        Stroom          = ADIn 16   
        'EN: Setting the decimal point place
        'NL: Plaats comma bepalen                    
        If Stroom > 500 Then 'X.XX
            StroomPrecies = 0  
            StroomFloat = Stroom * (5/1024) * 10   
        Else                 'XX.X  
            StroomPrecies = 1   
            StroomFloat = Stroom * (5/1024) * 100                 
        EndIf  
        StroomFloat     = StroomFloat / 50
        StroomFloat     = StroomFloat / 0.005
        GemI[0]         = StroomFloat * 1.07
        Stroom          = 0
        For X = 0 To (N_Samp_I - 1)    
            Stroom      = Stroom + GemI[X]
        Next 
        Stroom          = Stroom / N_Samp_I
    
        'EN: Calculate value's for on the display
        'NL: Meetwaardes naar display berekenen
        For X = 0 To 2
            Temp = Dig Temperatuur, X
            DispArT[X] = LRead Cijfers + Temp   
            Temp = Dig Spanning, X
            DispArU[X] = LRead Cijfers + Temp  
            'EN: The ZXCT1086E5TA does Not work below 3V, so display bars when this happens
            'NL: De ZXCT1086E5TA werkt niet onder de 3V, dus als dit gebeurt streepjes weergeven
            If Spanning > 30 Then             
                Temp = Dig Stroom, X
                DispArI[X] = LRead Cijfers + Temp
            Else
                DispArI[X] = Streep
            EndIf
        Next 
        
        'EN: Delay for slower display update
        'NL: Wachten om het display niet te snel te updaten
        DelayMS 75
    Wend
'****************************************************************   
Cijfers:-  
LData Nul, Een, Twee, Drie, Vier, Vijf, Zes, Zeven, Acht, Negen, Uit, Streep     
End

 

De dummyload in werking:

https://elektronicastynus.be/image/77/1367670980.jpg

https://elektronicastynus.be/image/77/1367670974.jpg

Bestanden:

Code file: Download

Hex file: Download