CCS ile Dimmer Yapmak Bu Kadar Sorunlumu yada Dimmerin Genetiğimi Böyle

Başlatan oyhan, 06 Mart 2012, 06:44:02

oyhan

Merhaba
Aşağıdaki eklediğim kod ile bir dimmer devresi yaptım ve çalıştırmaya çalışıyorum. Moc3022 ile triyak bta08 sürüyorum. Lakin Maximumdan minumuma lineer bir iniş alamadım. Belli yerlerde ışık birden sönebiliyor. Çok lineer hassas titremeden akkor filamanlı bir lambayı dim etmeye çalışıyorum. Hatam nerde olabilir acaba. Zero crossing var. Trafosuz besleme kullanıyorum.

#include <12F617.h>

#fuses INTRC_IO, PUT, NOWDT, NOMCLR,  NOBROWNOUT, noWRT  ,noPROTECT
#use delay(clock=4000000)

#byte    PORTA  = 0x05

#bit     Lamba    = PORTA.0  // ok
#bit     Zc       = PORTA.2  // ok

//periyod 20ms=50Hz
//yarımdalga 10ms =100Hz

#int_EXT
void  EXT_isr(void) 
{ 
  Set_Timer0(Load_Value);
  enable_interrupts(INT_TIMER0);
}

#int_TIMER0
void  TIMER0_isr(void) 
{
  Lamba=1;
  Delay_cycles(100);//triyak tetiklemesi 100 uSn
  Lamba=0;
  disable_interrupts(INT_TIMER0); 
}


void main()
{ Setup_adc_ports(NO_ANALOGS|VSS_VDD);
  Setup_adc(ADC_OFF);
  Setup_comparator(NC_NC);
  Setup_vref(FALSE);
  Set_tris_a(0b111110);
  disable_interrupts(GLOBAL); 
  
  Setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64|RTCC_8_bit);      //16.3 ms overflow
  
  EXT_INT_EDGE(H_to_L);
  enable_interrupts(INT_EXT);
  enable_interrupts(GLOBAL);
  Load_Value=140; Delay_Ms(500);
  
while(true)
 { Delay_Ms(1000);
    Load_Value = Load_Value - 1 ;
    If (Load_Value >=180) {Load_Value = 180;}
  //If (Load_Value <=110) {Load_Value = 180;}
     
      }
}
BİRLİKTEN KUVVET DOĞAR: