Elektroda.pl
Elektroda.pl
X
PCBwayPCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterowanie przekaźnikiem schemat

21 Wrz 2006 07:41 4714 8
  • Poziom 11  
    Witam mam problemik potrzebowałbym prosty schemat sterowania przekaźnikiem ,który miał by zwierać styki co czas jaki mógłbym sobie ustawić czyli miał by włączyć się na sekundę i puszczać powiedzmy na dwie i takich powtórzeń do 100 najlepiej jak to też by było regulowane ,a po tych 100 uderzeniach ma złapać i trzymać aż się go nie wyłączy Moim zdaniem najprościej było by zastosować jakiś prosty sterownik przemysłowy typu logo z jednym wyjściem i jednym wejściem. Na wejściu start cyklu ,a na wyjściu jakiś przekaźnik wtedy program byłby prosty do napisania ,ale jest za drogo .
  • PCBwayPCBway
  • R.I.P. Zasłużony dla elektroda
    Post był raportowany.
    Przeniosłem z: Elektronika Przemysłowa i Energoelektronika
  • Poziom 27  
    I to baaaardzo drogo jak na tak proste urzadzenie.
    Radzilbym zastosowac jakis maly mikrokontroler i napisac prosciutki programik. koszt zamknie sie w napewno w 20zl chyba ze nie masz programatora koszt 15zl.
    Napisz do czego to ma sluzyc, na jakie napiecie, jaki prad ma przelaczac.
    Pozdrawiam
  • PCBwayPCBway
  • Poziom 11  
    Napięcie 220V Prąd 4A zmienny Gdzie można kupić taki mikrokontroler
  • Poziom 43  
    Witam,
    breku napisał:
    Napięcie 220V Prąd 4A zmienny Gdzie można kupić taki mikrokontroler

    mikrokontroler można zasilić bezpośrednio z sieci, tylko należy odpowiednio zabezpieczyć jego sterowanie by nie doszło do porażenia prądem elektrycznym.
    Taki µPC może natychmiast sterować (również fazowo i z miękkim startem) triak, np. w takim układzie:

    Sterowanie przekaźnikiem schemat

    Można również, po prostym przełączeniu, zasilać µPC równolegle, a nie jak tu pokazano, szeregowo.
    Tylko µPC z serii ST62xx są typu OTP (jednorazowego programowania) i te są tanie, natomiast z EPROM (do wielokrotnego programowania i używane do testowania pisanego programu) są już znacznie droższe... :D
    Oczywiście potrzebny jest do zaprogramowania specjalny programator, zobacz cykl artykułów w w EP, ale niektóre uniwersalne kombajny też potrafią taki µPC zaprogramować.
    Również µPC od MicroChipa mogą być, lub nieśmiertelny ATMEL AT89C2051... :D

    Pozdrawiam
  • Poziom 11  
    w jakim języku programuje się taki kontroler
  • Poziom 43  
    Witam,
    breku napisał:
    w jakim języku programuje się taki kontroler

    w oryginalnym asamblerze do tego uPCU dostarczonym przez producenta, czyli STMicroelectronics.
    Tu masz oryginalny, opublikowany przez STMicroelectronics, zapis asamblera do tego ściemniacza:

    Code:
    ;*******************************************************
    
    ;*                                                     *
    ;*           SENSITIVE TOUCH CONTROL DIMMER            *
    ;*                 by PHILIPPE RABIER                  *
    ;*                 and LAURENT PERIER                  *
    ;*            SGS THOMSON MICROELECTRONICS             *
    ;*                       TOURS                         *
    ;*                   OCTOBER  2000                     *
    ;*                                                     *
    ;*******************************************************
       .VERS "ST62E10C"
       .ROMSIZE 2   ;8MHZ
    ;_________PORTS
    PA   .DEF   0C0H,00FH,00FH,M
    PADIR   .DEF   0C4H,00FH,00FH
    PAOR   .DEF   0CCH,00FH,00FH
    PB   .DEF   0C1H,0FFH,0FFH,M
    PBDIR   .DEF   0C5H,0FFH,0FFH
    PBOR   .DEF   0CDH,0FFH,0FFH
    ;________INTERUPT OPT REG
    IOR   .DEF   0C8H,070H,070H
    ;________DATA ROM WINDOW REG
    DWR   .DEF   0C9H,0FFH,0FFH
    ;________ADC
    ADR   .DEF   0D0H,0FFH,000H,M
    ADCR   .DEF   0D1H,0D0H,0B0H
    ;________TIMER
    PCS   .DEF   0D2H,07FH,07FH
    TCR   .DEF   0D3H,0FFH,0FFH,M
    TSCR   .DEF   0D4H,0FFH,0FFH,M
    ;________WATCHDOG
    WDT   .DEF   0D8H,0FFH,0FFH
    ;________GENERAL REG
    X   .DEF   080H,0FFH,0FFH,M
    Y   .DEF   081H,0FFH,0FFH,M
    V   .DEF   082H,0FFH,0FFH,M
    W   .DEF   083H,0FFH,0FFH,M
    A   .DEF   0FFH,0FFH,0FFH,M
    ;________RAM
    OFF   .DEF   084H,0FFH,0FFH,M
    ON   .DEF   085H,0FFH,0FFH,M
    DIM   .DEF   086H,0FFH,0FFH,M
    MODE   .DEF   087H,0FFH,0FFH,M
    SOFT   .DEF   088H,0FFH,0FFH,M
    SAper   .DEF   089H,0FFH,0FFH,M
    SAmes   .DEF   08AH,0FFH,0FFH,M
    SAcpt   .DEF   08BH,0FFH,0FFH,M
    SEpresta   .DEF   08CH,0FFH,0FFH,M
    SLOPE   .DEF   08DH,0FFH,0FFH,M
    VERSION   .DEF   08EH,0FFH,0FFH,M
    ANGLE   .DEF   08FH,0FFH,0FFH,M
    PRANGLE   .DEF   090H,0FFH,0FFH,M
    CPTVAR   .DEF   091H,0FFH,0FFH,M
    CPTPER   .DEF   092H,0FFH,0FFH,M
    loop   .DEF    093H,0FFH,0FFH,M
    ADCval   .DEF   094H,0FFH,0FFH,M
    ADCval1   .DEF    095H,0FFH,0FFH,M
    ADCval2   .DEF    096H,0FFH,0FFH,M
    GPloop   .DEF   097H,0FFH,0FFH,M
    WTSYN   .DEF   098H,0FFH,0FFH,M
    SN   .DEF   099H,0FFH,0FFH,M
    SN8   .DEF   09AH,0FFH,0FFH,M

    ;........TABLE ANGLE FOR TIMER
       .ORG   0F40H
       .BYTE   0A0H,0A0H,9BH,99H,94H,90H,8EH,8BH
       .BYTE   89H,86H,84H,82H,80H,7EH,7CH,7AH
       .BYTE   79H,77H,75H,73H,72H,70H,6EH,6DH
       .BYTE   6BH,6AH,68H,66H,65H,63H,62H,60H
       .BYTE   5FH,5DH,5BH,5AH,58H,57H,55H,54H
       .BYTE   52H,50H,4FH,4DH,4BH,4AH,48H,46H
       .BYTE   44H,42H,40H,3EH,3CH,3AH,38H,36H
       .BYTE   33H,31H,2EH,2AH,25H,20H,1CH,1CH
    ;........END TABLE ANGLE FOR TIMER
    ;................INITIALIZATION
       .ORG   0880H
    ;   .ASCIZ   "PHILIPPE RABIER SGS-THOMSON 1990"
    INIT   LDI   IOR,10H
       LDI   PA,0FH   ;=0 to drive triac
       LDI   PADIR,0FH
       LDI   PAOR,00H
       LDI   PB,33H
       LDI   PBDIR,00H
       LDI   PBOR,02H
       LDI   WDT,0FFH
       LDI   DWR,3DH   ;table origin
       LDI   OFF,01H   ;=1 when dimmer off
       LDI   ON,00H   ;=1 when dimmer on
       LDI   DIM,00H   ;=1 during dimming
       LDI   SAper,00H   ;=1 if sensor touched
       LDI   SEpresta,00H   ;=0<60ms =2>400ms or=3
       LDI   CPTVAR,03H   ;dimming speed reference
       LDI   SLOPE,00H   ;dimming slope
       LDI   ANGLE,00H   ;conduction angle
       LDI   PRANGLE,00H   ;previous conduction angle
       LDI   CPTPER,00H   ;dimming speed
       LDI   ADCval,00H   ;0 <value from adc< 3F
       LDI   ADCR,00H   ;disable adc converter
       LDI   SOFT,01H   ;=1 during soft start
       LDI   MODE,03H   ;timer state
       LDI   TSCR,00H
       LDI   WTSYN,00H   ;=1 when waiting synchro
       LDI   SN8,00H   ;SN/8
       LDI   SN,00H   ;synchro line filter
       RETI
    ;................END INITIALIZATION
    ;................MAIN
    MAIN   LD   A,PB   ;read version
       ANDI   A,0CH
       LD   VERSION,A
       CPI   A,00H
       JRNZ   MAIN1
       LDI   ADCR,30H   ;adc initialization
       LDI   ANGLE,00H
    MAIN1   LDI   loop,04H   ;synchro line
    MAIN2   JRR   4,PB,MAIN1
       DEC   loop
       JRNZ   MAIN2
    MAIN3   LDI   loop,04H
    MAIN4   JRS   4,PB,MAIN3
       DEC   loop
       JRNZ   MAIN4
       LDI   A,40H   ;angle conduction in timer
       ADD   A,ANGLE
       LD   X,A
       LD   A,(X)
       LD   TCR,A
       LDI   TSCR,01111101B   ;timer step
       LDI   MODE,00H
       LDI   WDT,0FEH
       JP   MAIN11
    MAIN6   LD   A,MODE
       CPI   A,03H
       JRNZ   MAIN6
       LDI   WTSYN,01H
       LDI   WDT,0FEH   ;synchro line
       JRR   4,PB,MAIN6   ;if no line reset due to GP
    MAIN9   LDI   WDT,0FEH   ;or to parasitic spikes
       JRS   4,PB,MAIN9
       LDI   WTSYN,00H
       LDI   A,01H   ;if dimming=1
       CP   A,DIM
       JRZ   MAIN13
       CP   A,SOFT   ;or if softstart=1
       JRZ   MAIN13
       JP   MAIN10
    MAIN13   LDI   A,40H   ;then conduction angle in timer
       ADD   A,ANGLE
       LD   X,A
       LD   A,(X)
       LD   TCR,A
       LDI   TSCR,01111101B
       LDI   MODE,00H
       LDI   SN8,00H
       LDI   SN,00H
       JP   MAIN11
    MAIN10   LD   A,TCR   ;line filter
       LD   SN,A
       RLC   A
       RLC   A
       RLC   A
       RLC   A
       RLC   A
       RLC   A
       RLC   A
       ANDI   A,1FH
       LD   SN8,A
    MAIN11   LDI   A,00H   ;read version
       CP   A,VERSION
       JRNZ   MAIN12
       LDI   ADCR,30H

       CALL   ADC   ;if potentiometer version
       JP   MAIN6
    MAIN12   CALL   SA   ;Sensor Aquisition subroutine
       CALL   SE   ;SEnsor subroutine
       CALL   AL   ;Angle Limit subroutine
       CALL   ACA   ;Angle CAlculation subroutine
       JP   MAIN6
    ;................END MAIN
    ;................SS PRG INTERUPT TIMER
    ITIM   LD   V,A   ;save accumulator
       LDI   TSCR,00H   ;stop timer
       INC   MODE
       LD   A,MODE   ;mode value?
       CPI   A,01H
       JRNZ   ITIM1
       JP   ITIM6
    ITIM1   CPI   A,02H
       JRNZ   ITIM2
       JP   ITIM5
    ITIM2   CPI   A,03H
       JRNZ   ITIM3
       JP   ITIM4
    ITIM3    LDI   MODE,00H   ;reset mode
       LDI   A,40H   ;angle conduction in timer
       ADD   A,ANGLE
       LD   X,A
       LD   A,(X)
       SUB   A,SN8
    ITIM10   LD   TCR,A
       LDI   TSCR,01111101B   ;timer step
       JP   ITIM8
    ITIM4   LDI   A,01H   ;dimming=1?
       CP   A,DIM
       JRZ   ITIM9
       CP   A,SOFT   ;softstart=1?
       JRZ   ITIM9
       LDI   TCR,60H   ;1.3ms in timer
       LDI   TSCR,01111011B   ;timer step
    ITIM9   JP   ITIM8
    ITIM5   LDI   A,40H
       ADD   A,ANGLE
       LD    X,A
       LDI   A,0B8H   ;9ms-ANGLE in timer
       SUB   A,(X)
       LD   TCR,A
       LDI   TSCR,01111101B   ;timer step
       JP   ITIM7
    ITIM6   LDI   TCR,0CEH   ;10ms in timer
       LDI   TSCR,01111101B   ;timer step
    ITIM7   LDI   A,01H   ;dimmer off?
       CP   A,OFF
       JRZ   ITIM8
       CALL   GP   ;Gate Pulse subroutine
    ITIM8   LD   A,V   ;save accumulator
       RETI
    ;................END SS PRG INTERUPT TIMER
    ;................SS PRG GATE PULSE
    GP   LD   A,WTSYN
       JRZ   GP10
       RET
    GP10   LD   A,PB   ;test triac voltage
       ANDI   A,30H
       CPI   A,10H
       JRZ   GP1
       JP   GP2
    GP1   LDI   OFF,01H   ;if triac voltage=0
       LDI   SOFT,01H   ;then dimmer off
       LDI   ON,00H
       LDI   DIM,00H
       LDI   CPTPER,00H
       LDI   ANGLE,00H
       RET
    GP2   LDI   PA,00H   ;else gate pulse
       LDI   Y,02H
    GP3   DEC   Y
       JRNZ   GP3
       LDI   PA,0FH
       LDI   GPloop,03H   ;gate pulse number
    GP4   LDI   Y,0FH   ;tempo
    GP5   DEC   Y
       JRNZ   GP5
       LD   A,PB   ;if triac voltage=0
       ANDI   A,30H
       CPI   A,10H
       JRNZ   GP6
       RET      ;then return
    GP6   LDI   PA,00H   ;else gate pulse
       LDI   Y,01H
    GP7   DEC   Y
       JRNZ   GP7
       LDI   PA,0FH
       DEC   GPloop
       JRZ   GP8
       JP    GP4
    GP8   LD   A,PB   ;if triac voltage=0
       ANDI   A,30H
       CPI    A,10H
       JRZ   GP9   ;then return
       JP   GP1   ;else dimmer off
    GP9   RET
    ;................END SS PRG GATE PULSE
    ;................SS PRG SENSOR ACQUISITION
    SA   LDI   SAcpt,08H   ;number of measurement by 20 ms
       LDI   SAmes,08H
    SA1   LD   A,PB   ;read sensor on port B
       ANDI   A,01
       JRNZ   SA2
       DEC   SAmes
    SA2   DEC   SAcpt
       JRNZ   SA1
       LD   A,SAmes   ;if sensor touched then SAmes=0
       JRNZ   SA3
       LD   A,SAper
       CPI   A,0F0H
       JRZ   SA4
       INC   SAper   ;sensor touched during period
       JP   SA4
    SA3   LDI   SAper,00H   ;sensor is not touched
    SA4   RET
    ;................END SS PRG SENSOR ACQUISITION
    ;................SS PRG SENSOR
    SE   LD   A,SEpresta   ;if previous state=0
       JRZ   SE1   ;then SE1
       CPI   A,01H   ;if previous state=1
       JRNZ   SE7
       JP   SE3   ;then SE3
    SE7   LD   A,SAper   ;if sensor >400 ms
       JRNZ   SE8
       JP   SE6
    SE8   CALL   VD   ;then Dimmer Validation
       RET
    SE1   LD   A,SAper   ;no action (<60 ms)
       CPI   A,03H
       JRZ   SE2
       RET
    SE2   LDI   SEpresta,01H
       RET
    SE3   LD   A,SAper
       CPI   A,14H   ;if sensor touched > 400ms
       JRNZ   SE4
       LDI   SEpresta,02H   ;previous state=2
       RET
    SE4   LD   A,SAper   ;if sensor touched
       JRZ   SE5
       RET      ;then return
    SE5   CALL   MA   ;else go to MA subroutine
       LDI   SEpresta,00H
       RET
    SE6   LDI   SEpresta,00H   ;end dimming
       LDI   DIM,00H
       RET
    ;................END SS PRG SENSOR
    ;................SS PRG REVERSE SLOPE
    RS   LD   A,SLOPE
       CPI   A,01H   ;if SLOPE=1
       JRNZ   RS1   ;then SLOPE=-1
       DEC   SLOPE
       DEC   SLOPE
       RET
    RS1   INC   SLOPE   ;else SLOPE=1
       INC   SLOPE
       RET
    ;................END SS PRG REVERSE SLOPE
    ;................SS PRG VALIDATION DIMMER
    VD   LD    A,DIM
       CPI   A,01H   ;if DIM=1
       JRNZ   VD1
       JP   VD3   ;then dimming
    VD1   LD   A,VERSION   ;if memory version
       CPI   A,08H
       JRNZ   VD4
       CALL   RS   ;then Reverse Slope
       JP   VD2
    VD4   LDI   SOFT,00H   ;else no softstart
    VD2   LD   A,OFF
       CPI   A,01H   ;if C version and OFF=0
       JRZ   VD3
       LD   A,VERSION
       CPI   A,04H
       JRNZ   VD3
       CALL   RS   ;then Reverse Slope subroutine
    VD3   LDI   DIM,01H   ;dimming
       LDI   ON,01H
       LDI   OFF,00H
       LDI   CPTVAR,03H
       RET
    ;................END SS PRG VALIDATION DIMMER
    ;................SS PRG MARCHE ARRET
    MA   LDI   DIM,00H   ;dimmer off
       LDI   A,01H
       CP   A,OFF   ;if OFF=1
       JRNZ   MA1
       JP   MA4   ;then MA4
    MA1   LDI   A,08H
       CP   A,VERSION   ;if it is not B version
       JRNZ   MA3   ;then MA3
       LD   A,ANGLE   ;else previous angle=angle
       LD   PRANGLE,A
    MA3   LDI   ANGLE,00H
       LDI   OFF,01H
       LDI   ON,00H
       LDI   CPTPER,00H
       LDI   SOFT,01H
       RET
    MA4   LD   A,VERSION   ;if A or B version
       CPI   A,0CH
       JRZ   MA5
       CPI   A,04H
       JRNZ   MA6
    MA5   LDI    PRANGLE,3FH   ;then
       LDI   ANGLE,00H
    MA6   LDI   ON,01H   ;else
       LDI   OFF,00H
       RET
    ;................END SS PRG MARCHE ARRET
    ;................SS PRG AL
    AL   LD   A,ANGLE   ;if angle=63
       CPI   A,3FH
       JRNZ   AL1
       LDI   SLOPE,0FFH   ;then slope=-1
    AL1   CPI   A,00H   ;if angle=0
       JRNZ   AL2
       LDI   SLOPE,01H   ;then slope=1
    AL2   RET
    ;................END SS PRG AL
    ;................SS PRG ACA
    ACA   LDI   A,01H   ;if ON and SOFT =1
       CP   A,ON
       JRZ   ACA1
       JP   ACA5
    ACA1   CP   A,SOFT
       JRZ   ACA2
       JP   ACA5
    ACA2   LDI   CPTVAR,01H   ;then softstart
       LD   A,ANGLE
       CP   A,PRANGLE
       JRNZ   ACA9
       JP   ACA4
    ACA9   INC   CPTPER
       LD   A,CPTPER
       CP   A,CPTVAR
       JRZ   ACA3
       RET
    ACA3   LDI   CPTPER,00H
       CALL   SSAC
       RET
    ACA4   LDI   ON,00H   ;else end softstart
       LDI   SOFT,00H
    ACA5   LDI   CPTVAR,03H
       LDI   A,01H   ;if DIM=1
       CP   A,DIM
       JRZ   ACA6   ;then angle=angle+slope
       RET      ;else return
    ACA6   INC   CPTPER
       LD   A,CPTPER
       CP   A,CPTVAR
       JRZ   ACA7
       RET
    ACA7   LDI   CPTPER,00H
       LD   A,ANGLE
       ADD   A,SLOPE
       LD   ANGLE,A
       RET
    ;..................END SS PRG ACA
    ;..................SS PRG SSAC
    SSAC   LDI   loop,04H   ;nb of increase for angle
    SSAC1   INC   ANGLE   ;in softstart
       LD   A,ANGLE   ;if loop#0 or if angle#
       CP   A,PRANGLE   ;prangle then increase
       JRNZ   SSAC2   ;angle
       RET
    SSAC2   DEC   loop
       JRNZ   SSAC1
       RET      ;else return
    ;..................END SS PRG SSAC
    ;..................SS PRG ADC
    ADC   LDI   ADCval1,00H   ;adc converter initialization
       LDI   ADCval2,00H
       LDI   loop,04H   ;number of measurements
    ADC1   LDI   ADCR,30H
    ADC2   JRR   6,ADCR,ADC2
       LD   A,ADR   ;read adc value
       ADD   A,ADCval2
       LD   ADCval2,A
       JRNC   ADC3
       INC   ADCval1
    ADC3   DEC   loop
       JRZ   ADC8   ;if nb of measurement=loop
       JP   ADC1
    ADC8   LD   A,ADCval1   ;then divide adcval1
       SLA   A
       SLA   A
       SLA   A
       SLA   A
       LD   ADCval1,A
       LD   A,ADCval2   ;and divide adcval2
       RLC   A
       RLC   A
       RLC   A
       RLC   A
       RLC   A
       ANDI   A,0FH
       ADD   A,ADCval1
       LD   ADCval,A   ;0 < adcval <3F
       JRNZ   ADC4
       LDI   OFF,01H
       JP   ADC5
    ADC4   LDI   OFF,00H
    ADC5   CP   A,ANGLE
       JRZ   ADC6   ;if equal then no change
       JRNC   ADC7   ;if adcval>angle then adc7
       LD   ANGLE,A   ;if adcval<angle then return
    ADC6   RET
    ADC7   INC   ANGLE
       RET   
    ;................END SS PRG ADC
    ;................SS PRG INTERUPT
    IPA   RETI      ;not used
    IPB   RETI      ;not used
    IADC   RETI      ;not used
    INMI   RETI      ;not used
    ;................END SS PRG INTERUPT PB
    ;................INTERUPT VECTORS
       .ORG   0FF0H
       JP   IADC
       JP   ITIM
       JP   IPB
       JP   IPA
       .ORG   0FFCH
       JP   INMI
    ;................END INTERUPT VECTORS
    ;................RESET VECTOR
       JP   INIT
    ;................END RESET VECTOR
       .END


    Oczywiście STMicroelectronics dostarcza też komplet narzędzi do obróbki tego kodu źródłowego łącznie z programem do specjalizowanego programatora (do kupienia też KIT uruchomieniowy z programatorem -> ST622XC-KIT).
    Zobacz tam: http://mcu.st.com/mcu/inchtml.php?fdir=pages&fnam=st6 a tam szczegóły:
    http://mcu.st.com/mcu/modules.php?name=mcu&file=familiesdocs&FAM=14

    Ja ten powyższy kod przerobiłem (i na inny uPCU -> ST62T01) na potrzeby "miękkiego startu" i sterowania poziomem poprzez port (pin -15), ponieważ ten oryginalny działa w trybie "dotykowo - czasowym" (TOUCH SENSOR) według wybranego (jednego z trzech -> VERSION) programu.
    Zobacz tam:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=3327080#3327080

    Pozdrawiam
  • Poziom 38  
    Tak jak napisali koledzy. uC będzie najlepsze do tego celu. Jeśli nie chce Ci się samemu robić napisz na pw, mogę Ci napisać na avr'a, zaprogramować i wysłać:)
    Albo mogę Ci pomóc i sam program podesłać:)