arkadaşlar resimdeki gibi isis de programımı çizdim. fakat triyağı bir türlü süremedim.sıfır geçiş noktasını alıyorum. Sonra bunu picde ayarlayıp açısını belirliyorum. picin 18. bacağından istediğim çıkışı alıyorum. fakat moc3021 ve triyak kısmında istediğimi alamıyorum. şebeke gerilimi istediğim noktadan kırpmıyor. direk olarak sinüs veriyor. nedeni ne olabilir yardımcı olursanız sevinirim.
isis dosyası linktedir
https://www.dropbox.com/s/epf763gghfd2vwt/s%C4%B1cakl%C4%B1k%20son%20%C3%A7izim.DSN?n=242394058 (https://www.dropbox.com/s/epf763gghfd2vwt/s%C4%B1cakl%C4%B1k%20son%20%C3%A7izim.DSN?n=242394058)
kodlar da bu linktedir.
https://www.dropbox.com/s/vdd1xiwbvxg1gzr/s%C4%B1cakl%C4%B1k.cof (https://www.dropbox.com/s/vdd1xiwbvxg1gzr/s%C4%B1cakl%C4%B1k.cof)
(http://img.donanimhaber.com/upfiles/1155083/6c9e8359-2eab-41fb-885b-3c2675e6d2da.PNG)
merhaba, ac deki 0 ı nasıl anlıyorsun ?
Alıntı yapılan: muhittin_kaplan - 02 Aralık 2013, 10:45:00
merhaba, ac deki 0 ı nasıl anlıyorsun ?
Q1üzerinden.
D2-D4 Çıkışından GNY'ye bir direnç bağla. Aksi takdirde buradaki voltaj C18 den dolayı DC ofsete sahip olur.
D2-D4 çıkışını gözleyerek U78 1 pinine gelen pasların konumuna scopla baktın mı? Sıfır dedektörün sorunsuz çalışıyormu?
peki q1 deki ac ile triyak üzerindeki ac nin fazları aynı mı ?
Bir miktar faz kayıklığı oluşur. Fakat bunu yazılımsal olarak kompanze etmek çok kolay.
evet sıfır noktasını sorunsuz alıyorum. fazlar da aynı o noktada da sıkıntı yok ama moc3021 ile triyacık tetiklemesi çalışmıyor. pempe olan triyağın tetikleme ucu. mavi olan da moc3021 1 nolu ucu (pulse girişi)
http://imageshack.us/photo/my-images/443/p2od.png/ (http://imageshack.us/photo/my-images/443/p2od.png/)
(http://imageshack.us/photo/my-images/443/p2od.png/)
R543 R243 değerleri yüksek kalmış olabilir. Kullandığın triac'ın tetikleme akımı yüksek olabilir.
Alıntı yapılan: ismailhtc - 02 Aralık 2013, 10:17:12
arkadaşlar resimdeki gibi isis de programımı çizdim. fakat triyağı bir türlü süremedim.sıfır geçiş noktasını alıyorum. Sonra bunu picde ayarlayıp açısını belirliyorum. picin 18. bacağından istediğim çıkışı alıyorum. fakat moc3021 ve triyak kısmında istediğimi alamıyorum. şebeke gerilimi istediğim noktadan kırpmıyor. direk olarak sinüs veriyor. nedeni ne olabilir yardımcı olursanız sevinirim.
Direk sinüs veriyorsa triyak hiç kesime gitmiyor demektir. Bülent hocanın dediği gibi R543 direnç değeri yüksek olabilir. Triyak çıkış kısmını sadeleştirerek ve mcu kısmını ayırıp öyle deneyebilirsiniz.
3021 üzerinde zero cross dedektör var onun için
yerine 3051 gibi zero cross dedektör olmayanlarından kullanırsan çözülür
Alıntı yapılan: run - 03 Aralık 2013, 10:41:52
3021 üzerinde zero cross dedektör var onun için
yerine 3051 gibi zero cross dedektör olmayanlarından kullanırsan çözülür
hepinize teşekkür ediyorum ilgilendiğiniz için. birde 3051 'i deniyim. İnşallah bu halledebilirm
Alıntı yapılan: run - 03 Aralık 2013, 10:41:52
3021 üzerinde zero cross dedektör var onun için
yerine 3051 gibi zero cross dedektör olmayanlarından kullanırsan çözülür
3021 i 23 ile karıştırdım yanlışlık oldu
boşuna 3051 aramayın
mesaj birleştirme:: 04 Aralık 2013, 17:42:23
Alıntı yapılan: z - 02 Aralık 2013, 11:32:05
Q1üzerinden.
D2-D4 Çıkışından GNY'ye bir direnç bağla. Aksi takdirde buradaki voltaj C18 den dolayı DC ofsete sahip olur.
D2-D4 çıkışını gözleyerek U78 1 pinine gelen pasların konumuna scopla baktın mı? Sıfır dedektörün sorunsuz çalışıyormu?
Bunu yaptıktan sonra +
sıfır geçişi sorunsuz almışsın
sıfır geçişten sonra tetiği orta noktalara getirip denermisin (5ms gibi).
diğer sıfır geçişe çok yakın tetiklediğin için de gerçek uygulamada sürekli iletim gibi bir sorun oluyor olabilir. Başıma gelmişti
opto şase ayağı ile ac neden birbirine bağlı onu anlayamadım?
Alıntı yapılan: run - 04 Aralık 2013, 17:33:36
sıfır geçişi sorunsuz almışsın
sıfır geçişten sonra tetiği orta noktalara getirip denermisin (5ms gibi).
diğer sıfır geçişe çok yakın tetiklediğin için de gerçek uygulamada sürekli iletim gibi bir sorun oluyor olabilir. Başıma gelmişti
denedim ama timestep to small hatası veriyor sürekli.
Alıntı yapılan: F.T - 04 Aralık 2013, 18:32:14
opto şase ayağı ile ac neden birbirine bağlı onu anlayamadım?
optonun 2. bacağımı oluyor acaba şase ayağı. tam anlayamadım ya aslında
arkadaşlar kodu bu hale getirdim fakat şöyle bi sorun oluyor. pin_c3 bacağından karışık bi sinyal alıyorum. istediğim şekilde vermiyor. yani 10 ms de bir pulse vermesi gerekirken çok fazla pulse veriyor kararlı çalışmıyor. anlıyamadım. kodlardaki hatayı çözemedim
/******************************************************
*******************************************************/
#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
#use fast_io(a) //Port yönlendirme komutları A portu için geçerli
#use fast_io(c)
#define menu pin_a0
#define arttir pin_a1
#define azalt pin_a2
#define ayarlar pin_a3
#define use_portb_lcd TRUE
#include <lcd.c>
float sayi=0; // Tamsayı tipinde değişken tanımlanıyor
unsigned int adeger ;
unsigned int anlik,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
float litrem=0 ;
float i ;
float a,Puldarbe ;
long int set1,set2,darbe,litre ;
//****************** Timer0 Kesmesi *****************************
#int_timer1
void timer1_kesme ()
{
set_timer1(63036) ;
i=i+1;
if (i==10)
{
a1=adeger ;
adeger=0;
}
if (i==20)
{
a2=adeger ;
adeger=0;
}
if (i==30)
{
a3=adeger ;
adeger=0;
}
if (i==40)
{
a4=adeger ;
adeger=0;
}
if (i==50)
{
a5=adeger ;
adeger=0;
i=0 ;
}
}
#int_timer0 // Timer0 kesmesi
void timer0_kesme () // Kesme fonksiyonu ismi
{
set_timer0(255); // TMR0 değeri belirleniyor
sayi=sayi+1;
adeger=adeger+1 ;
}
/********* ANA PROGRAM FONKSİYONU********/
void main ( )
{
anlik=0 ;
set1=read_eeprom (0) ;
set2=read_eeprom (1) ;
litre=read_eeprom (2) ;
darbe=read_eeprom (3) ;
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
set_tris_a(0b00011111);
set_tris_c(0x00);
output_c (0x00) ;
while(1) // Sonsuz döngü
{
///--------------------kontak çıkışı----------------///
if(set1<=litrem)
{
output_low (pin_c2) ;
}
if(set1>litrem)
{
output_high (pin_c2) ;
}
if(set2<=anlik)
{
output_low (pin_c3) ;
}
if(set2>anlik)
{
output_high (pin_c3) ;
}
///--------------------------------------------------///
///--------------------reset atma-------------------///
if (input (arttir))
{
delay_ms(200);
a=6;
}
while (a==6)
{
if (input (azalt))
{
delay_ms(300);
sayi=0;
anlik=0 ;
}
a=0 ;
}
///--------------------------------------------------///
///--------------------ayarlar/menü-------------------///
if (input (ayarlar))
{
delay_ms(200);
a=3 ;
}
if (input (menu))
{
delay_ms(400);
a=1 ;
}
while (a==1)
{
if (input (arttir))
{
delay_ms(150);
set1=set1+1 ;
}
if (input (azalt))
{
delay_ms(150);
set1=set1-1 ;
}
write_eeprom(0,set1) ;
if (input (menu))
{
delay_ms(200);
a=2 ;
}
if (input (ayarlar))
{
delay_ms(200);
a=3 ;
}
printf(lcd_putc,"\f----MENU-----");
printf(lcd_putc,"\nSET1=%Lu",set1);
delay_ms(50);
}
while (a==2)
{
if (input (arttir))
{
delay_ms(150);
set2=set2+1 ;
}
if (input (azalt))
{
delay_ms(150);
set2=set2-1 ;
}
write_eeprom(1,set2) ;
if (input (menu))
{
delay_ms(200);
a=0 ;
}
if (input (ayarlar))
{
delay_ms(200);
a=3 ;
}
printf(lcd_putc,"\f----MENU-----");
printf(lcd_putc,"\nSET2=%Lu",set2);
delay_ms(50);
}
while (a==3)
{
if (input (arttir))
{
delay_ms(150);
litre=litre+1 ;
}
if (input (azalt))
{
delay_ms(150);
litre=litre-1 ;
}
write_eeprom(2,litre) ;
if (input (menu))
{
delay_ms(200);
a=4 ;
}
printf(lcd_putc,"\f-AYAR-pulse/litre");
printf(lcd_putc,"\nlitre=%Lu",litre);
delay_ms(50);
}
while (a==4)
{
if (input (arttir))
{
delay_ms(75);
darbe=darbe+1 ;
}
if (input (azalt))
{
delay_ms(75);
darbe=darbe-1 ;
}
write_eeprom(3,darbe) ;
if (input (menu))
{
delay_ms(200);
a=5 ;
}
printf(lcd_putc,"\f-AYAR-pulse/litre");
printf(lcd_putc,"\npulse=%Lu",darbe);
delay_ms(50);
}
///--------------------------------------------------///
///--------------------ekrana yazdırma-------------------///
anlik=a1;
anlik=anlik+a2;
anlik=anlik+a3;
anlik=anlik+a4;
anlik=anlik+a5;
Puldarbe=darbe/litre ;
litrem= sayi/Puldarbe ; // kaç litre geçtiğini hesaplar
lcd_init();
printf(lcd_putc,"\flitre=%.3f",litrem);
printf(lcd_putc,"\nanlik=%u",anlik);
delay_ms(150);
///--------------------------------------------------///
///--------------------kesme ayarları-------------------///
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
set_timer1(63036) ;
enable_interrupts(INT_timer1);
enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver
setup_timer_0(RTCC_EXT_H_TO_L | RTCC_DIV_1); // Timer0 ayarları yapılıyor
set_timer0(255); // TMR0 değeri belirleniyor
enable_interrupts(INT_timer0); // int_timer0 kesmesini aktif yapar
enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver
///--------------------------------------------------///
}
}