Etepic

Diğer diller ve Derleyiciler => CCS => Konuyu başlatan: Akaan - 11 Aralık 2022, 13:37:56

Başlık: Faz sırası doğruluğu
Gönderen: Akaan - 11 Aralık 2022, 13:37:56
Arkadaşlar merhaba. Yardımınıza ihtiyacım var. Örnek kod ile. Ccs c kullanmak gibi bir hata yapmaktayım. 3 faz bir devrede faz sırası doğruluğu yaparak LCD ye yazdırmam gerekiyor. İşlemcim 16f877a Referans fazım harici kesmesi bulunan rb0 da denetleyeceğim 2 ve 3üncü fazlar e0 ve E1 portunda. E0 ve E1 giriş olarak ayarlandı zaten digital giriş çıkış portları. Fazlar arası 120° açı olduğundan 6.66 MS gecikme ile gelen ilk pals doğru olan ikinci faza ait olacak. Sıralamanın rb0 re0 re1 olarak işleme alınması lazım. Oldu ki 5v sinyallerimiz referanstan sonra re0 yerine re1 e geldi ekranda faz sırası yanlış yazacak. Diğer olasılık bir porta hiç sinyal gelmemesi ozaman da faz kopuk yazacak. Yani if rb0 =1 delay_ms 6.66 re0=1 delay_ms re1= 1 faz sırası doğru kabul edilecek. İşin içinden çıkamadım
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 11 Aralık 2022, 20:23:25
Devre şeması ve yazılım göndermemiş olmanızdan daha ilk adımı dahi atamadığınızı anlıyorum.

Eğer bunu doğru anladıysam bence ilk atılması gereken adım 220 VAC.yi 0-5V arasında olan bir AC sinyale çevirmek olmalıdır.

Bunun için bir çözüm, her fazın voltajını ayrı ayrı üç trafo ile düşürmek olabilir. Analog girişte voltajı bölen iki yüksek değerde direnç koyarak bir kapasitör ile buraya giriş yaparsınız.

Diğer bir çözüm, her fazı ayrı ayrı bir direnç ve kapasitörden geçirerek ve linear optoküplörleri sürerek picin analog girişlerinden sinyali takip edebilirsiniz. Direnç ve özellikle kapasitör değeri 50 hz.e göre dikkatlice hesaplanması gerekir.

Kesmeden sonra bir timer ile diğer iki fazı kontrol edersiniz.

Başlangıç olarak bunları söyleyebilirim.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 11 Aralık 2022, 21:10:40

(https://i.ibb.co/dM3yYrR/IMG-20221209-095609.jpg) (https://ibb.co/dM3yYrR)
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 11 Aralık 2022, 21:12:06

(https://i.ibb.co/5kM1GSg/IMG-20221209-111929.jpg) (https://ibb.co/5kM1GSg)

Resimler PC başında olmadığımdan yüklenmemişti. Yazılım konusunda evet bir arpa boyu yol alamadım
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 11 Aralık 2022, 22:16:15
Maalesef ccs c yazılım konusunda ben de yardımcı olamam ama algoritma oluşturma konusunda yardımcı olabilirim.

Donanımla ilgili olarak da şunları söylemek isterim: Seri kapasitör olmadan 680K üzerinde hemen hemen 220V.un tamamı düşecek. Koyacağınız direncin watajı kuvvetli olsa bile bunu karşılamayacaktır. Kutupsuz bir 100nF, 400V bir kapasitör ile voltajın büyük bir bölümünü kondansatör üzerinde tutmalısınız. Simülasyonda çalışması sizi aldatmasın.

Analog optoküplör kullanmamışsınız. Sinyal kare dalga olarak görünüyor. Bütün fazlarda aynı donanım kullanıldığından faz farkını ölçmek için yeterli ve ucuz maliyetli bir çözüm olabilir. Gönderdiğiniz resimde faz farkları bariz görünüyor.

Yazılımda da yapılacak işlem bir timer ile kare dalgaları sürekli ölçüp, yükselen anların veya düşen anların zaman farkını tespit etmek.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 11 Aralık 2022, 22:25:34
400v kutupsuz polyester kondansatör kullanma konusunda haklısınız. Devamlı ölçümde stabil kalması önemli. O detayı atlamışım. Evet sorun ccs c olması. Birçok fonsiyon yazdım ac bir devrenin verebileceği fonksiyonların hepsi şuan sıkıntısız çalışmakta. İki motorun ayrı ayrı ve birlikte çalışması stop swichler yön değiştirmeler Bluetooth kontrolü gibi. Panoya yüksek voltaj vermeden hallettim kart üzerinde. Şimdi iki fonksiyon kaldı. Birincisi faz tespiti ikincisi 0-25A arası ayarlı akım kontrolü. O yüzden değiştirmem söz konusu değil. Maalesef hiç uğraşmadığım bilgim olmayan konuda tıkandım.

Alıntı yapılan: Serk@n - 11 Aralık 2022, 22:16:15Maalesef ccs c yazılım konusunda ben de yardımcı olamam ama algoritma oluşturma konusunda yardımcı olabilirim.

Donanımla ilgili olarak da şunları söylemek isterim: Seri kapasitör olmadan 680K üzerinde hemen hemen 220V.un tamamı düşecek. Koyacağınız direncin watajı kuvvetli olsa bile bunu karşılamayacaktır. Kutupsuz bir 100nF, 400V bir kapasitör ile voltajın büyük bir bölümünü kondansatör üzerinde tutmalısınız. Simülasyonda çalışması sizi aldatmasın.

Analog optoküplör kullanmamışsınız. Sinyal kare dalga olarak görünüyor. Bütün fazlarda aynı donanım kullanıldığından faz farkını ölçmek için yeterli ve ucuz maliyetli bir çözüm olabilir. Gönderdiğiniz resimde faz farkları bariz görünüyor.

Yazılımda da yapılacak işlem bir timer ile kare dalgaları sürekli ölçüp, yükselen anların veya düşen anların zaman farkını tespit etmek.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: mehmet - 11 Aralık 2022, 22:28:36
Diğer yerde cevapladım. Süre kısmından
devam edecekseniz benim yazdıklarım
size yaramaz.
Ayrıca CCS C bilmiyorum. XC8 ile
yardımcı olabilirim.
Müsait bir zamanda prensip kodları
yollarım.
Ancak bunu siz de yapabilirsiniz.
RB0/INT ile harici kesme kodu oluşturun.
unsigned int türünde bir genel bir
değişken olsun.
durum = (PORTEbits.RE1 << 2) | (PORTEbits.RE0 << 1) | (PORTBbits.RB0);
if(durum == 0b101)
{
    yon = 1; //Mesela sol
}
else if(durum == 0b011)
{
    yon = 2; //Mesela sağ
}
else
{
    yon = 0; //Hata durumu
}
Kendinize göre düzenleyebilirsiniz.
Daha fazla ayrıntıyı kendiniz tecrübe etmelisiniz.

Kolaylıklar.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 11 Aralık 2022, 22:37:58
Hocam bu sanki işimi görecek gibi. Teşekkür ederim gelişmeleri yazarım

Alıntı yapılan: mehmet - 11 Aralık 2022, 22:28:36Diğer yerde cevapladım. Süre kısmından
devam edecekseniz benim yazdıklarım
size yaramaz.
Ayrıca CCS C bilmiyorum. XC8 ile
yardımcı olabilirim.
Müsait bir zamanda prensip kodları
yollarım.
Ancak bunu siz de yapabilirsiniz.
RB0/INT ile harici kesme kodu oluşturun.
unsigned int türünde bir genel bir
değişken olsun.
durum = (PORTEbits.RE1 << 2) | (PORTEbits.RE0 << 1) | (PORTBbits.RB0);
if(durum == 0b101)
{
    yon = 1; //Mesela sol
}
else if(durum == 0b011)
{
    yon = 2; //Mesela sağ
}
else
{
    yon = 0; //Hata durumu
}
Kendinize göre düzenleyebilirsiniz.
Daha fazla ayrıntıyı kendiniz tecrübe etmelisiniz.

Kolaylıklar.

Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 12 Aralık 2022, 08:35:22
#define R_faz pin_rb0
#define S_faz pin_re0
#define T_faz pin_re1

Dedik.
Set_tris_e(0b111) // e portu giriş

İf(input(R_faz)==1) //koşul referans 1
{
Delay_ms(6.66);
Else if (input(S_faz)==1 && (input(T_faz)==0);
Printf("faz sırası doğru");
}
Else //döngü öyle değilse
{
Printf("faz sırası yanlış");
}

Diyebilir miyiz
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 12 Aralık 2022, 08:41:16
Ardunio ile CNC yaparken motor sürücülerden  sanırım geri besleme oldu laptop anakart yandı. Yeni bir laptop edinene Kadar burdan kara düzen gitmek zorundayım dağınık yazıyorum kusura bakmayın
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 12 Aralık 2022, 08:48:38
Aslında sizin yol daha kestirme, denemek lazım. Ama bu durumda r portlarını komple bu işe ayırmam gerekiyor. Şuan öyle bir lüksüm yok maalesef girişler sınırlı. İşlemcide 4 bacak boşta. Yada harici bir devre yapıp bu iş için LCD+faz sırası+ akım ayarını başka karta alıcam dip soketlerle üst üste yerleştiricem

Alıntı yapılan: mehmet - 11 Aralık 2022, 22:28:36Diğer yerde cevapladım. Süre kısmından
devam edecekseniz benim yazdıklarım
size yaramaz.
Ayrıca CCS C bilmiyorum. XC8 ile
yardımcı olabilirim.
Müsait bir zamanda prensip kodları
yollarım.
Ancak bunu siz de yapabilirsiniz.
RB0/INT ile harici kesme kodu oluşturun.
unsigned int türünde bir genel bir
değişken olsun.
durum = (PORTEbits.RE1 << 2) | (PORTEbits.RE0 << 1) | (PORTBbits.RB0);
if(durum == 0b101)
{
    yon = 1; //Mesela sol
}
else if(durum == 0b011)
{
    yon = 2; //Mesela sağ
}
else
{
    yon = 0; //Hata durumu
}
Kendinize göre düzenleyebilirsiniz.
Daha fazla ayrıntıyı kendiniz tecrübe etmelisiniz.

Kolaylıklar.

Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 12 Aralık 2022, 15:10:32
Burada sinyalin kare dalga olduğuna dikkat etmemiz gerekiyor. Algoritmanın buna göre oluşturulması gerekiyor.

Mesela 6,66 ms. süreyi 3 kat hızlandıralım. Sinyal değerleri aşağıdaki gibi olacak.

Faz1 111000111
Faz2 011100011
Faz3 001110001

Yukarıdaki listede fazlardaki her değişim 2,22 ms.

Faz1'in ilk yükseldiği esnada Faz2 ve  Faz3 halen 0'da. Ortadayken Faz3 hâlâ 0'da.

Yani demek istediğim Faz1'deki sinyalin son anındaki 2,22 ms.lik dilimi yakalamak gerekiyor.

Bunun için bir timer gerekir. Ve en az değeri 2,22 ms. olmalı. Daha yüksek değerlerde daha sağlıklı sonuçlar çıkar. Mesela timer 2,22 ms. ise Faz1'de üç kere ardarda 1 görüldüğünde 6,66 ms. eklenip diğer fazlara bakılmalı.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 12 Aralık 2022, 20:17:39
Doğruyu söylemek gerekirse anlamadım. Mehmet hocamın yaptığı gibi örnekle anlatırmısın

Alıntı yapılan: Serk@n - 12 Aralık 2022, 15:10:32Burada sinyalin kare dalga olduğuna dikkat etmemiz gerekiyor. Algoritmanın buna göre oluşturulması gerekiyor.

Mesela 6,66 ms. süreyi 3 kat hızlandıralım. Sinyal değerleri aşağıdaki gibi olacak.

Faz1 111000111
Faz2 011100011
Faz3 001110001

Yukarıdaki listede fazlardaki her değişim 2,22 ms.

Faz1'in ilk yükseldiği esnada Faz2 ve  Faz3 halen 0'da. Ortadayken Faz3 hâlâ 0'da.

Yani demek istediğim Faz1'deki sinyalin son anındaki 2,22 ms.lik dilimi yakalamak gerekiyor.

Bunun için bir timer gerekir. Ve en az değeri 2,22 ms. olmalı. Daha yüksek değerlerde daha sağlıklı sonuçlar çıkar. Mesela timer 2,22 ms. ise Faz1'de üç kere ardarda 1 görüldüğünde 6,66 ms. eklenip diğer fazlara bakılmalı.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 12 Aralık 2022, 20:18:09
Ben şöyle düşündüm yukarıda da yazdım

#define R_faz pin_rb0
#define S_faz pin_re0
#define T_faz pin_re1


while(1)
{
disable_interrupts(int_rda);

   
   if (input(R_faz)==1)  && (input(S_faz)==0) && (input(T_faz)==0)  //koşul referens fazı
         {
         delay_ms(6.66); //120derece gecikme
      input(S_faz)==1; //faz 2 değer okuma
         input(T_faz)==0; //faz3 değer okuma
      printf("faz_sırası_dogru") //sıra doğru
      }
      else // koşul oluşmadıysa
{
printf("faz_sırası_yanlıs"); //sıra yanlış
      }
}
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 12 Aralık 2022, 20:26:38
Yazılanı inceleyip anlamaya çalışmak için geçen süre + cevap yazmaya harcadığım süre == metrobüste 8 10 durak fazla gitmişim. 😁 artık bana borçlusunuz bu işi beraber halledicez 😁😁
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 12 Aralık 2022, 23:09:58
Komutları anladığım kadarıyla yazmaya çalıştım. Interrupts'a girdikten sonra şu üç koşul da oluşursa fazların üçünün de bağlı ve doğru olduğunu anlarız:


if (input(R_faz)==1) && (input(S_faz)==0) && (input(T_faz)==0) //1. koşul oluştu
{
delay_ms(2.22); //40 derece
if (input(R_faz)==1) &&
(input(S_faz)==1) &&
(input(T_faz)==0) //2. koşul oluştu
{
  delay_ms(2.22); //40 derece
  if (input(R_faz)==1) &&
  (input(S_faz)==1) &&
  (input(T_faz)==1) //3. koşul oluştu
  {
   printf("faz_sırası_dogru")
  }
 }
}
   
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 13 Aralık 2022, 05:49:22
Öncelikle teşekkür ederim. Merak ettiğim 120derece açı tamamlandığında fazın biri tepe noktasında yada sıfır noktasındayken diğer fazlar farklı derece açıda olduğundan 3 fazında 1 vermesi gibi bir olasılık olur mu? Burda sanki a fazı 1 olmuş beklemiş b fazı 1 olmuş beklemiş c fazı 1 olmuş. Farklı hareket edip sonda eşitlenmişler gibi olmamış mı? Benmi yanlış yorumladım?

Alıntı yapılan: Serk@n - 12 Aralık 2022, 23:09:58Komutları anladığım kadarıyla yazmaya çalıştım. Interrupts'a girdikten sonra şu üç koşul da oluşursa fazların üçünün de bağlı ve doğru olduğunu anlarız:


if (input(R_faz)==1) && (input(S_faz)==0) && (input(T_faz)==0) //1. koşul oluştu
{
delay_ms(2.22); //40 derece
if (input(R_faz)==1) &&
(input(S_faz)==1) &&
(input(T_faz)==0) //2. koşul oluştu
{
  delay_ms(2.22); //40 derece
  if (input(R_faz)==1) &&
  (input(S_faz)==1) &&
  (input(T_faz)==1) //3. koşul oluştu
  {
   printf("faz_sırası_dogru")
  }
 }
}
   
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 13 Aralık 2022, 06:17:10
Yada 2.işlemci kullanıp şöyle yapacağım. Bu işlemcide yeterli port yok.1.koşul oluştuğunda okuyup değişkeni farklı porta atıcam 2 ve 3 içinde aynısı. Sonra atama yaptığım portlar üzerinden yorumlayıp yazdırıcam. Yazarken bile saçma geldi ama ASM örneklerini buldum anladığım kadarıyla böyle yapmışlar. Bunun basit bir çözümü mutlaka olmalı. Bulucaz bulucaz.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 13 Aralık 2022, 07:32:17
Alıntı yapılan: Akaan - 13 Aralık 2022, 05:49:22Öncelikle teşekkür ederim. Merak ettiğim 120derece açı tamamlandığında fazın biri tepe noktasında yada sıfır noktasındayken diğer fazlar farklı derece açıda olduğundan 3 fazında 1 vermesi gibi bir olasılık olur mu? Burda sanki a fazı 1 olmuş beklemiş b fazı 1 olmuş beklemiş c fazı 1 olmuş. Farklı hareket edip sonda eşitlenmişler gibi olmamış mı? Benmi yanlış yorumladım?


Tabi çözüm için çok farklı yollar olabilir. Benimkisi sadece bir fikir. Fazlara 2,22 ms. süreyle yani 40'ar derecelik açılarla bakınca durum böyle oluyor.

Fazların sırayla lojik 1'e geçmesinin sebebi sinyalin kare dalga olması. İş yerinde fırsat bulursam size resimli olarak izah edeyim. 

Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 13 Aralık 2022, 09:44:41
Evet bende ondan bahsettim. Kare dalga olmasından dolayı tepe ve sıfır süreleri farklı. Üçününde aynı anda lojik 1 olduğu zamanlama yok. Örnek verdiğiniz kodda diyor ki r fazı 1 iken toplamda 6.66 MS sonra s fazı 1 olur. Doğru. Ama en altta diyor ki r s t fazları lojik 1 ise döngü doğru. 3ünü hiçbir zaman aynı anda kesmeye sokmuyoruz ve o yüzden aynı anda lojik 1 alamıyoruz. Başka bir yolu olmalı bakalım çözücez. 

Alıntı yapılan: Serk@n - 13 Aralık 2022, 07:32:17Tabi çözüm için çok farklı yollar olabilir. Benimkisi sadece bir fikir. Fazlara 2,22 ms. süreyle yani 40'ar derecelik açılarla bakınca durum böyle oluyor.

Fazların sırayla lojik 1'e geçmesinin sebebi sinyalin kare dalga olması. İş yerinde fırsat bulursam size resimli olarak izah edeyim. 


Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 13 Aralık 2022, 09:57:57
Değer okuyup başka porta atama mantıklı gelmeye başladı. Gecikmeler ile girişler okunur,

Bilgi = input(pin_rb0); //pinin lojik değeri okunur.
Veri = input(pin_rb4); //belirtilen değişkene atar.

Ozaman delay fonksiyonu  bir kere çalışacak.
Referans pini ataması rb4 e olsun yukarıdaki örnekte. O sabit.
İkinci girişimize bakacağız. 3üncü fazı hiç dikkate almayacağız zaten 2 yerine oturursa 3 doğrudur. Delay 666 dedik değişkeni pine atadık. Atadığımız pin verdiğimiz süre içinde lojik 1 olursa sıra doğru olmazsa sıra yanlış.

O zaman sizin örnekteki input(r_faz)==1 && input (s_faz)==1 ise döngü doğru işi olacak. 3üncü faz bizden değil canı cehenneme 😁😁
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 13 Aralık 2022, 10:03:59
Kendi yanlışımıda arada buldum 😁 ben her pini 6.66 aralıklar ile okuyorum.
LED ile kurduğum devrede doğru yanlış sırayla yanıyordu. E döngü tekrarlıyor. 6.66 da 2.faz doğru ama girişler sıfırlanınca 3.faz okuyor bu sefer yanlış ledi yanıyordu. Hataya bak. Çok basit ve 2 günümü yedi
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 13 Aralık 2022, 10:06:48
Alıntı yapılan: Akaan - 13 Aralık 2022, 09:44:41Evet bende ondan bahsettim. Kare dalga olmasından dolayı tepe ve sıfır süreleri farklı. Üçününde aynı anda lojik 1 olduğu zamanlama yok. Örnek verdiğiniz kodda diyor ki r fazı 1 iken toplamda 6.66 MS sonra s fazı 1 olur. Doğru. Ama en altta diyor ki r s t fazları lojik 1 ise döngü doğru. 3ünü hiçbir zaman aynı anda kesmeye sokmuyoruz ve o yüzden aynı anda lojik 1 alamıyoruz. Başka bir yolu olmalı bakalım çözücez. 


Haklısınız. Maalesef bir mantık hatası yapmışım. Biraz iş yoğunluğum var. Kusuruma bakmayın.

Şimdi bir resim ekliyorum. Resim tam anlaşılır değil. Paintte çizdim.

(https://i.ibb.co/Q9TZJTw/IMG-20221213-094934.jpg) (https://ibb.co/Q9TZJTw)
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 13 Aralık 2022, 10:12:11
Bu resme göre Faz1 kırmızı, Faz2 mavi, Faz3 yeşil. Bu durumda kodlar şu şekilde oluyor.

if (input(R_faz)==1) && (input(S_faz)==0) && (input(T_faz)==0) //1. koşul oluştu
{
delay_ms(2.22); //40 derece
if (input(R_faz)==1) &&
(input(S_faz)==1) &&
(input(T_faz)==0) //2. koşul oluştu
{
  delay_ms(2.22); //40 derece
  if (input(R_faz)==0) &&
  (input(S_faz)==0) &&
  (input(T_faz)==1) //3. koşul oluştu
  {
   printf("faz_sırası_dogru")
  }
 }
}
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 13 Aralık 2022, 10:25:14
Ne kusuru olur mu öyle şey. O mantık hatası dediğiniz şey benim 2 günümü yedi ve sizin kod önüme çıkınca anladım. Kendi yazdığıma konduramamışım demekki. Bu şekliye deneyeceğim. Ama 2.22 gecikme bana her bağlantı şekliyle yanlış ledi yakacağını düşündürdü. -120 #0 #+120 derecelik açı olduğunu düşündüğümüzde 40derece fonksiyonu her bağlantıda referans fazından çıkamıyor. 3 kere koşul oluşturuyoruz her koşul 2.22 yani 40 derece. 3 koşulun toplamı 1 faz süresi ediyor. Yanlış mı düşünüyorum


Alıntı yapılan: Serk@n - 13 Aralık 2022, 10:12:11Bu resme göre Faz1 kırmızı, Faz2 mavi, Faz3 yeşil. Bu durumda kodlar şu şekilde oluyor.

if (input(R_faz)==1) && (input(S_faz)==0) && (input(T_faz)==0) //1. koşul oluştu
{
delay_ms(2.22); //40 derece
if (input(R_faz)==1) &&
(input(S_faz)==1) &&
(input(T_faz)==0) //2. koşul oluştu
{
  delay_ms(2.22); //40 derece
  if (input(R_faz)==0) &&
  (input(S_faz)==0) &&
  (input(T_faz)==1) //3. koşul oluştu
  {
   printf("faz_sırası_dogru")
  }
 }
}
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 13 Aralık 2022, 10:32:25
http://tahmidmc.blogspot.com/2012/10/zero-crossing-detection-with-pic16f877a.html?m=1

Burada bir örneği var
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 13 Aralık 2022, 11:47:17
Son yazdığım kod, olur gibi görünüyor. Karışma riski yok.

Ama gönderdiğiniz linkteki çözüm çok daha güzel. Köprü diyotlarla sinüs dalgasının sıfıra geldiği an tespit edilebiliyor. Hem dahice hem de yazılım için büyük avantaj.

Kare dalganın bir dezavantajı vardı. Çünkü sinüs dalganın pozitif alandaki her durumu lojik 1 olarak görünüyordu. Bu da lojik birin yükselme anını veya düşüş anını tespit etme zorunluluğu getiriyordu. O yüzden 2,22 ms. de ısrarcı olmuştum.

Gönderdiğiniz linkteki devreyi kurarsanız bu durumda kesmeden sonra 6,66 ms. sürelerle diğer iki faza da bakıp işi bitirebilirsiniz.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 13 Aralık 2022, 12:30:46
Köprü diyotla yapmamamın sebebi faz kopukluğu olduğunda uyarı vermeyecek olması. Çünkü motordan bir miktar  geri besleme olacak ve işlemci faz var olarak algılayacak. Eksik fazla çalışan sistem en iyi ihtimalle motorun yanmasına sebep olacak  Sağlıklı bir sistem değil. Görünüşte daha basit daha kullanışlı ama uzun vadede veya şansın yaver gitmediği bir anda sistemin çökmesi an meselesi. Bu şekilde optolar voltaj değişimine daha duyarlı  Trafo kullanılarak sağlıklı yapılabilir. Ama işte yeterli yerim yok.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 13 Aralık 2022, 13:15:38
Burada kullanılan devre elemanları 220V.u düşürerek optonun ledini yakacak şekilde ayarlanacak. Dolayısıyla motordan gelen geri besleme hem bu voltajlara çıkamayacak hem de düzgün faz sırasında gelmeyecek.

İllaki bir parazit oluşma riski varsa, mcu faz kontrolünü birden fazla yapar, emin olunca ekrana yazar.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 13 Aralık 2022, 13:18:11
Yani her opto için köprü diyot kullanmanızın motora bir zararı veya motorun devrenize bir parazit vermesi gibi bir zararı olmaması gerekir.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 13 Aralık 2022, 16:22:37
Bkalım akşama iki şekilde de deneyeceğim. Sonuçları yazarım buraya. Teşekkür ederim herşey için
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 14 Aralık 2022, 08:02:12
Maalesef akşam çalışamadım. Laptop anakart başka bir proje USB girişlerine bağlıyken geri besleme sonucu yanmıştı. Dün HDD çıkarıp başka pcye taktım ve HDD çalışmadı. Proje de o HDD de. İnşallah kurtarırım birsürü emek var içinde.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 15 Aralık 2022, 12:31:57
Son algoritmada yine bir hata daha buldum.  :-\  En sağlıklı olanı tekrar yazıyorum. Müsait olduğunuzda deneyebilirsiniz.

 if (input(R_faz)==1) && (input(S_faz)==0) && (input(T_faz)==0) //1. koşul oluştu
{
delay_ms(4.44); //80 derece
if (input(R_faz)==0) &&
(input(S_faz)==1) &&
(input(T_faz)==0) //2. koşul oluştu
{
  delay_ms(4.44); //80 derece
  if (input(R_faz)==0) &&
  (input(S_faz)==0) &&
  (input(T_faz)==1) //3. koşul oluştu
  {
   printf("faz_sırası_dogru")
  }
 }
}
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: mehmet - 15 Aralık 2022, 14:04:18
Neden t0 zamanına bakmıyorsunuz,
anlamıyorum.
Ne oluyorsa zaten t0 zamanında.

Üç faz sinyali ve opto çıkışndaki kare
dalga sinyallerini karşılaştırınız.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: ete - 15 Aralık 2022, 16:16:52
Bir zamanlar bu işle uğraşmıştım.
Bildiğiniz gibi Faz isimleri R-S-T şeklinde veriliyor. Aslında elinizde şebekeden gelen 3 adet faz bulunuyor ve bunların hangileri olduğu belli değildir. Verdiğiniz isimlerde sanaldır. Programın sanal isimlerle şebeke fazlarını karşılaştırıp doğru sıradamı yoksa yanlış mış dizilmiş bulması gerekir.
3 faza kendiniz R-S-T isimlerini verip her birinin sıfır geçiş notasını tespit edecek bir devre düzenek hazırladıktan sonra sistemi çalıştırmanız gerekir. Fazlar arasındaki faz farkı nedeni ile program ilk çalıştığında fazın birisi sıfır noktasından geçer. İşte bu ilk faz sizin R fazınız olmalıdır. Fazlar doğru sırada ise R fazı kesmesi önce , hemen ardından (6 küsur ms sonra) ikinci faz olan S fazı kesmesi ve daha sonrada T fazına ait kesme oluşması gerekir.
Kesme oluşturan Fazlara birer sıra numarası verecek olursanız. Önce 0 numaralı faz daha sonra 1 numaralı faz ve sonunda da 2 nolu faz kesme oluşturmalıdır.  Faz sırası 2 de iken elinizde bütün fazlara ait sıralama bilgisi oluşmuş olacaktır. Şayet dizilim R_S_T şeklinde ise herhangi bir itirazınız olmayacak fazlar doğru sırada olacaktır. Ama gelen fazların sırası T-S-R şeklinde gelmiş ise faz sıranız yanlış demektir.
Ekrana bu sırayı yazarsanız yada bir şekilde bu sıralamayı görsel hale getirmeniz ve bu sıralamaya uygun şekilde fazlarınızı yeniden yerleştirmeniz gerekir.
Şimdiye kadar fazların sıralamasına baktık. Faz eksikliği için her faz kesmesinden sonra yaklaşık 3,2 ms lik bir Timer çalıştırmak ve Timer kesmesi oluşup oluşmadığına da ayrıca bakmak gerekir. Şayet kesme oluşursa fazın birisi eksik demektir ve hangisinin eksik olduğunuda gelmesi gereken faz hangisi ise oradan anlayabilirsiniz.
Bu anlattıklarımı program olarak çalıştırmış (simulasyonda) ve olumlu sonuç almıştım.
Konu CCS ile alakalı olunca fazla ilgilenmedim. Ancak yanlış yoldasınız gibi bir hisse kapıldığım için bu açıklamayı yapma gereği duydum.
Hemen belirteyim programım Basic de yazılmış durumda.
Program ve gerekli dosyalar ilişikte. Versiyon uyuşmazlığı olur diye şemayı PDF olarak da ekledim.

Ete
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: mehmet - 15 Aralık 2022, 16:26:23
Üç harici kesme pinini sadece faz
tespitine ayırmak fazla savurganlık
olmaz mı?

Faz yönü tespiti için sadece bir
kesme pini ve sıradan iki pin yeterli.
Hangi fazın kesik olması çok önemli
değil. Madem üç faz çalışacağız, üçü de
tam olmalı.

Başlık: Ynt: Faz sırası doğruluğu
Gönderen: ete - 15 Aralık 2022, 22:21:38
Mehmet,
Bu konuda 2 ticari proje yaptım ve ikiside eksik fazın belirlenmesi konusunda idi.
Senin önemsiz dediğin şeyi atölyeler önemli görüyor olsalar gerek ki bu konuda benden proje istediler. Zira eksik faz kısa süre içinde bir sorun yaratıyormuş.
Bence de faz sırası çok önemli değil çünki yanlızca bir kere doğru sıralamayı deneme yanılma ile buluyorsun sonrasında her şey sorunsuzca çalışıyor. Birisi sıralamayı bozuncaya kadar.
Her neyse herkesin görüşü kendisine aittir. Burada sorunlar kaşısında akıl yürütüyoruz.
Farklı akıllara her zaman açığım ve merakla nasıl olabileceğinide öğrenmek isterim.

Ete

Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 15 Aralık 2022, 22:40:32
Bişey söylicem agalar. Bu yazılım işi bilip bilmemek artık fıslamış 😁 seneryoyu doğru kurunca yapay zeka basit kodları yazıyor. Dilim tutuldu. Hatasız yazıyor
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 15 Aralık 2022, 22:42:01
Alıntı yapılan: mehmet - 15 Aralık 2022, 14:04:18Neden t0 zamanına bakmıyorsunuz,
anlamıyorum.
Ne oluyorsa zaten t0 zamanında.

Üç faz sinyali ve opto çıkışndaki kare
dalga sinyallerini karşılaştırınız.
Hocam niye bakmıyorum referans dışında ikinci fazı bilmek yeterli diye düşündüm. Yanlış mı düşündüm
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 15 Aralık 2022, 22:45:17
Alıntı yapılan: ete - 15 Aralık 2022, 16:16:52Bir zamanlar bu işle uğraşmıştım.
Bildiğiniz gibi Faz isimleri R-S-T şeklinde veriliyor. Aslında elinizde şebekeden gelen 3 adet faz bulunuyor ve bunların hangileri olduğu belli değildir. Verdiğiniz isimlerde sanaldır. Programın sanal isimlerle şebeke fazlarını karşılaştırıp doğru sıradamı yoksa yanlış mış dizilmiş bulması gerekir.
3 faza kendiniz R-S-T isimlerini verip her birinin sıfır geçiş notasını tespit edecek bir devre düzenek hazırladıktan sonra sistemi çalıştırmanız gerekir. Fazlar arasındaki faz farkı nedeni ile program ilk çalıştığında fazın birisi sıfır noktasından geçer. İşte bu ilk faz sizin R fazınız olmalıdır. Fazlar doğru sırada ise R fazı kesmesi önce , hemen ardından (6 küsur ms sonra) ikinci faz olan S fazı kesmesi ve daha sonrada T fazına ait kesme oluşması gerekir.
Kesme oluşturan Fazlara birer sıra numarası verecek olursanız. Önce 0 numaralı faz daha sonra 1 numaralı faz ve sonunda da 2 nolu faz kesme oluşturmalıdır.  Faz sırası 2 de iken elinizde bütün fazlara ait sıralama bilgisi oluşmuş olacaktır. Şayet dizilim R_S_T şeklinde ise herhangi bir itirazınız olmayacak fazlar doğru sırada olacaktır. Ama gelen fazların sırası T-S-R şeklinde gelmiş ise faz sıranız yanlış demektir.
Ekrana bu sırayı yazarsanız yada bir şekilde bu sıralamayı görsel hale getirmeniz ve bu sıralamaya uygun şekilde fazlarınızı yeniden yerleştirmeniz gerekir.
Şimdiye kadar fazların sıralamasına baktık. Faz eksikliği için her faz kesmesinden sonra yaklaşık 3,2 ms lik bir Timer çalıştırmak ve Timer kesmesi oluşup oluşmadığına da ayrıca bakmak gerekir. Şayet kesme oluşursa fazın birisi eksik demektir ve hangisinin eksik olduğunuda gelmesi gereken faz hangisi ise oradan anlayabilirsiniz.
Bu anlattıklarımı program olarak çalıştırmış (simulasyonda) ve olumlu sonuç almıştım.
Konu CCS ile alakalı olunca fazla ilgilenmedim. Ancak yanlış yoldasınız gibi bir hisse kapıldığım için bu açıklamayı yapma gereği duydum.
Hemen belirteyim programım Basic de yazılmış durumda.
Program ve gerekli dosyalar ilişikte. Versiyon uyuşmazlığı olur diye şemayı PDF olarak da ekledim.

Ete
Hocam alakan için teşekkürler. Şimdi zaten işlemcimde bacaklar sınırlı. Bu işi senin kod ve şemanla 2.ci bir işlemcide basic ile yapsam. Fonksiyonlarım ccs c ile diğer işlemcimde sorunsuz. Ama birde akım kontrolü işim var onu basic ile nasıl yaparım bilmiyorum. Sizce bu yol seçenekler arasında olmalı mı. Uyuma gerek yok. Bu işlemcide fonksiyon olmayacak
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 15 Aralık 2022, 22:46:26
Alıntı yapılan: mehmet - 15 Aralık 2022, 16:26:23Üç harici kesme pinini sadece faz
tespitine ayırmak fazla savurganlık
olmaz mı?

Faz yönü tespiti için sadece bir
kesme pini ve sıradan iki pin yeterli.
Hangi fazın kesik olması çok önemli
değil. Madem üç faz çalışacağız, üçü de
tam olmalı.



Hocam harici kesme b0 pininde referans olarak. Diğer ikisi e0 ve E1 de dijtal güri çıkış pinleri
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 15 Aralık 2022, 22:51:47
Alıntı yapılan: ete - 15 Aralık 2022, 22:21:38Mehmet,
Bu konuda 2 ticari proje yaptım ve ikiside eksik fazın belirlenmesi konusunda idi.
Senin önemsiz dediğin şeyi atölyeler önemli görüyor olsalar gerek ki bu konuda benden proje istediler. Zira eksik faz kısa süre içinde bir sorun yaratıyormuş.
Bence de faz sırası çok önemli değil çünki yanlızca bir kere doğru sıralamayı deneme yanılma ile buluyorsun sonrasında her şey sorunsuzca çalışıyor. Birisi sıralamayı bozuncaya kadar.
Her neyse herkesin görüşü kendisine aittir. Burada sorunlar kaşısında akıl yürütüyoruz.
Farklı akıllara her zaman açığım ve merakla nasıl olabileceğinide öğrenmek isterim.

Ete



Hocam önemi şu. Bende atölyem için yapıyorum. Faz sırası benim için aslında çıkış kapatmak için. Kesme kararlı çalıştı ama belirtilen sürede faz sıralaması olmadığında diğer fonksiyonları kapatıyorum. 10 triyak le iki motoru sürüyorum . faz kopukluğu ciddi zararlara sebep oluyor. Motorlar kısa sürede yanıyor. 3 faz motor 2 faza düşünce birde makina yükteyse sorun büyük.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 15 Aralık 2022, 22:57:25
Alıntı yapılan: Akaan - 15 Aralık 2022, 22:45:17Hocam alakan için teşekkürler. Şimdi zaten işlemcimde bacaklar sınırlı. Bu işi senin kod ve şemanla 2.ci bir işlemcide basic ile yapsam. Fonksiyonlarım ccs c ile diğer işlemcimde sorunsuz. Ama birde akım kontrolü işim var onu basic ile nasıl yaparım bilmiyorum. Sizce bu yol seçenekler arasında olmalı mı. Uyuma gerek yok. Bu işlemcide fonksiyon olmayacak
Ama ozaman fonksiyonları kapatamam.  Nasıl yazdığınızı bilmemekle beraber eğer gelen değişkenleri başka portara atadıysanız ki öyledir sanıyorum ozaman ben atadığınız portlarda lojik 1 sıralamasını takip edip öncelik belirleyerek diğer işlemcide fonksiyon kapatabilirim herhalde. Yazarken bile karıştırdım ama bunu yapabilirim sanıyorum 
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 15 Aralık 2022, 23:00:04
Alıntı yapılan: Serk@n - 15 Aralık 2022, 12:31:57Son algoritmada yine bir hata daha buldum.  :-\  En sağlıklı olanı tekrar yazıyorum. Müsait olduğunuzda deneyebilirsiniz.

 if (input(R_faz)==1) && (input(S_faz)==0) && (input(T_faz)==0) //1. koşul oluştu
{
delay_ms(4.44); //80 derece
if (input(R_faz)==0) &&
(input(S_faz)==1) &&
(input(T_faz)==0) //2. koşul oluştu
{
  delay_ms(4.44); //80 derece
  if (input(R_faz)==0) &&
  (input(S_faz)==0) &&
  (input(T_faz)==1) //3. koşul oluştu
  {
   printf("faz_sırası_dogru")
  }
 }
}
Çalışmadı hocam. Faz doğru ve yanlış ledleri ( takip için LED bağladım) sırayla yanıyor.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 15 Aralık 2022, 23:11:39
Ben projedeki seneryomu anlatayım.  Benimm 2 motorum var
Faz kopukluğu faz sırası ve akım ayarı koyacağım. Buzzer eklemeyi düşünüyorum
ileri butonu basılıyken geri butonu pasif, swichler ayrı ayrı sebebi ise yanan motorları sardırdığımızda illaki güç kaybı oluyor. Aynı değerdeki motorlar farklı devirlerde dönüyor
. İleri geri sürüyorum. Tek tek ve ikisi birden. Portlarım sınırlı çünkü fonksiyonlarm
İleri
Geri
Motor1
Motor2
Sağswich
Solswich
Acil stop
Bluetooth kontrol. Bunu şımarıklıktan koydum 😁 uzaktan makinayı devre dışı bırakıyorum

Triyaklar 10 portu kullanıyor zaten.
Butonlar ledler LCD vdd osc derken şuan  5port boşta. R0 E1 E2 c3 C4
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 15 Aralık 2022, 23:55:46
Alıntı yapılan: Akaan - 15 Aralık 2022, 23:00:04Çalışmadı hocam. Faz doğru ve yanlış ledleri ( takip için LED bağladım) sırayla yanıyor.

Else'leri ekledim. Zaman hatamı düzelttim.

if (input(R_faz)==1) && (input(S_faz)==0) && (input(T_faz)==0)
{
//1. koşul oluştuysa
delay_ms(6.66); //120 derece
if (input(R_faz)==0) &&
(input(S_faz)==1) &&
(input(T_faz)==0)
 {
  //2. koşul oluştuysa
  delay_ms(6.66); //120 derece
  if (input(R_faz)==0) &&
  (input(S_faz)==0) &&
  (input(T_faz)==1)
  {
   //3. koşul oluştuysa
   printf("faz_sırası_dogru")
  }
  Else //3.koşul oluşmadıysa
  {
   printf("faz_sırası_yanlis")
  }
 Else //2. koşul oluşmadıysa
 {
  printf("faz_sırası_yanlis")
 }
}
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 16 Aralık 2022, 00:17:27
Algoritmayı çözmeden önce temel matematik bilgisi lazımmış demek ki. 360 dereceyi 6'ya bölüp 40 derece bulmuşum. :-X

Başlık: Ynt: Faz sırası doğruluğu
Gönderen: mehmet - 16 Aralık 2022, 02:43:02
Alıntı yapılan: Akaan - 15 Aralık 2022, 23:11:39Ben projedeki seneryomu anlatayım.  Benimm 2 motorum var
Faz kopukluğu faz sırası ve akım ayarı koyacağım. Buzzer eklemeyi düşünüyorum
ileri butonu basılıyken geri butonu pasif, swichler ayrı ayrı sebebi ise yanan motorları sardırdığımızda illaki güç kaybı oluyor. Aynı değerdeki motorlar farklı devirlerde dönüyor
. İleri geri sürüyorum. Tek tek ve ikisi birden. Portlarım sınırlı çünkü fonksiyonlarm
İleri
Geri
Motor1
Motor2
Sağswich
Solswich
Acil stop
Bluetooth kontrol. Bunu şımarıklıktan koydum 😁 uzaktan makinayı devre dışı bırakıyorum

Triyaklar 10 portu kullanıyor zaten.
Butonlar ledler LCD vdd osc derken şuan  5port boşta. R0 E1 E2 c3 C4

Sepet vinci mi?

Ayrıca üç faz için blok sigortalar ve termikler var.
Sistem iki faza düşünce enerji kesilir/kesilmelidir.

Ek:
Optonun iletime girdiği zamanı hesaplayın. Ayrıca
bekleme zamanına gerek kalmayacak.
Mesela PC817 ledinden 5mA geçtiğinde
ilgili faz kaç derece ilerlemiş olabilir?
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 16 Aralık 2022, 05:50:00
Alıntı yapılan: mehmet - 16 Aralık 2022, 02:43:02Sepet vinci mi?

Ayrıca üç faz için blok sigortalar ve termikler var.
Sistem iki faza düşünce enerji kesilir/kesilmelidir.

Ek:
Optonun iletime girdiği zamanı hesaplayın. Ayrıca
bekleme zamanına gerek kalmayacak.
Mesela PC817 ledinden 5mA geçtiğinde
ilgili faz kaç derece ilerlemiş olabilir?

Değil hocam bant bizimki.  Vinç le aynı gibi yerde sürünüyor bizimki 🙂. PC 817 ledinden geçen akımla derece bulamam ki hocam. En azından ben yolunu bilmiyorum
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 16 Aralık 2022, 06:02:14
Alıntı yapılan: Serk@n - 16 Aralık 2022, 00:17:27Algoritmayı çözmeden önce temel matematik bilgisi lazımmış demek ki. 360 dereceyi 6'ya bölüp 40 derece bulmuşum. :-X


🙂 Aslında elektirikle inatlaşmamak gerek. O diyor 6.66 ms içinde ben bayrağı sıradaki faza devrediyorum. Biz diyoruz yok sen 4.0ms de devret.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 16 Aralık 2022, 07:28:02
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <delay.h> // Include delay library for delay functions
#include <input.h> // Include input library for input functions

#define PHASE_1_DELAY 6.66 // Define the delay for phase 1 in milliseconds
#define RESET_SWITCH PIN_B0 // Define the reset switch input pin

// Functions for initializing and controlling the LCD display
void lcd_init();
void lcd_print(char *str);

// Functions for controlling the 3-phase motor
void set_phase_1();
void set_phase_2();
void set_phase_3();

int main()
{
    // Initialize the LCD display
    lcd_init();

    // Set the initial phase to phase 1
    set_phase_1();

    while (1)
    {
        // Check the reset switch input
        if (input(RESET_SWITCH))
        {
            // Reset the phase sequence
            set_phase_1();
        }

        // Delay for the defined time
        delay_ms(PHASE_1_DELAY);

        // Set the next phase
        set_phase_2();

        // Delay for the defined time
        delay_ms(PHASE_1_DELAY);

        // Set the next phase
        set_phase_3();

        // Delay for the defined time
        delay_ms(PHASE_1_DELAY);

        // Set the next phase (back to phase 1)
        set_phase_1();

        // Check the input on ports R0, E0, and E1
        if (input(PIN_R0) && !input(PIN_E0) && !input(PIN_E1))
        {
            // Phase sequence is correct
            lcd_print("Phase sequence: correct");
        }
        else
        {
            // Phase sequence is incorrect
            lcd_print("Phase sequence: incorrect");
        }
    }

    return 0;
}

void lcd_init()
{
    // Initialize the LCD display
    // ...
}

void lcd_print(char *str)
{
    // Print the given string to the LCD display
    // ...
}

void set_phase_1()
{
    // Set the 3-phase motor to phase 1
    // ...
}

void set_phase_2()
{
    // Set the 3-phase motor to phase 2
    // ...
}

void set_phase_3()
{
    // Set the 3-phase motor to phase 3
    // ...
}


Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 16 Aralık 2022, 08:08:56
Faz sırası faz kopukluğu için işimi görmez mi bu

// define constants for R0, E0, and E1
const int R0 = 2;
const int E0 = 3;
const int E1 = 4;

// define constants for LCD pins
const int LCD_RS = 5;
const int LCD_EN = 6;
const int LCD_D4 = 7;
const int LCD_D5 = 8;
const int LCD_D6 = 9;
const int LCD_D7 = 10;

void setup() {
  // initialize LCD
  lcd.begin(16, 2);

  // set pin modes for R0, E0, and E1
  pinMode(R0, INPUT);
  pinMode(E0, INPUT);
  pinMode(E1, INPUT);
}

void loop() {
  // wait for R0 to go high
  while (digitalRead(R0) == LOW) {
    delay(10);
  }

  // introduce a 6.66 millisecond delay
  delay(6.66);

  // check if E0 is high
  if (digitalRead(E0) == HIGH) {
    // introduce another 6.66 millisecond delay
    delay(6.66);

    // check if E1 is high
    if (digitalRead(E1) == HIGH) {
      // correct phase sequence
      lcd.print("Correct phase sequence");
    } else {
      // incorrect phase sequence
      lcd.print("Incorrect phase sequence");
    }
  } else {
    // incorrect phase sequence
    lcd.print("Incorrect phase sequence");
  }

  // check if E0 and E1 are both low
  if (digitalRead(E0) == LOW && digitalRead(E1) == LOW) {
    // phase is missing or disconnected
    lcd.print("Phase missing or disconnected");
  }
}

Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 16 Aralık 2022, 08:53:39
Alıntı yapılan: Akaan - 16 Aralık 2022, 08:08:56Faz sırası faz kopukluğu için işimi görmez mi bu

// define constants for R0, E0, and E1
const int R0 = 2;
const int E0 = 3;
const int E1 = 4;

// define constants for LCD pins
const int LCD_RS = 5;
const int LCD_EN = 6;
const int LCD_D4 = 7;
const int LCD_D5 = 8;
const int LCD_D6 = 9;
const int LCD_D7 = 10;

void setup() {
  // initialize LCD
  lcd.begin(16, 2);

  // set pin modes for R0, E0, and E1
  pinMode(R0, INPUT);
  pinMode(E0, INPUT);
  pinMode(E1, INPUT);
}

void loop() {
  // wait for R0 to go high
  while (digitalRead(R0) == LOW) {
    delay(10);
  }

  // introduce a 6.66 millisecond delay
  delay(6.66);

  // check if E0 is high
  if (digitalRead(E0) == HIGH) {
    // introduce another 6.66 millisecond delay
    delay(6.66);

    // check if E1 is high
    if (digitalRead(E1) == HIGH) {
      // correct phase sequence
      lcd.print("Correct phase sequence");
    } else {
      // incorrect phase sequence
      lcd.print("Incorrect phase sequence");
    }
  } else {
    // incorrect phase sequence
    lcd.print("Incorrect phase sequence");
  }

  // check if E0 and E1 are both low
  if (digitalRead(E0) == LOW && digitalRead(E1) == LOW) {
    // phase is missing or disconnected
    lcd.print("Phase missing or disconnected");
  }
}


Bu tamam gibi görünüyor. Sanal hafıza mı yazdı bunu?
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 16 Aralık 2022, 09:22:18
Alıntı yapılan: Serk@n - 16 Aralık 2022, 08:53:39Bu tamam gibi görünüyor. Sanal hafıza mı yazdı bunu?
Evet bunu yapay zeka yazdı. Kurguyu doğru anlatınca inanması güç ama yazıyor valla 😁
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 16 Aralık 2022, 09:50:30
#include <16F887.h>
#device *=16
#fuses NOWDT, HS, NOPROTECT
#use delay(clock=20000000)
#include <lcd.c>

// define constants for R0, E0, and E1
#define R0 2
#define E0 3
#define E1 4

// define constants for LCD pins
#define LCD_RS 5
#define LCD_EN 6
#define LCD_D4 7
#define LCD_D5 8
#define LCD_D6 9
#define LCD_D7 10

void main()
{
   // initialize LCD
   lcd_init();

   // set pin modes for R0, E0, and E1
   set_tris_b(get_tris_b() | (1<<R0) | (1<<E0) | (1<<E1));

   while(1)
   {
      // wait for R0 to go high
      while (input(R0) == 0)
      {
         delay_ms(10);
      }

      // introduce a 6.66 millisecond delay
      delay_ms(6.66);

      // check if E0 is high
      if (input(E0) == 1)
      {
         // introduce another 6.66 millisecond delay
         delay_ms(6.66);

         // check if E1 is high
         if (input(E1) == 1)
         {
            // correct phase sequence
            printf(lcd_putc, "Correct phase sequence");
         }
         else
         {
            // incorrect phase sequence
            printf(lcd_putc, "Incorrect phase sequence");
         }
      }
      else
      {
         // incorrect phase sequence
         printf(lcd_putc, "Incorrect phase sequence");
      }

      // check if E0 and E1 are both low
      if (input(E0) == 0 && input(E1) == 0)
      {
         // phase is missing or disconnected
         printf(lcd_putc, "Phase missing or disconnected");
      }
   }
}


Son hali bu. Bir öncekini ccs c ile derlemiyor. Bana yarayan düzeltmelerini yaptığım muhtemelen çalışacak olan bu.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 16 Aralık 2022, 09:54:26
Ben yapay zekanın yazdığına öncelikleri belirttim. #define #include satırlarını değiştirdim. LCD yazdırma işini derleyiciye uygun hale getirdim. yapay zeka temeli yazdı fonksiyonu sıraladı. Ama yinede çıktığı gibi kullanamıyorsunuz. Fakat ciddi yardımı oluyor
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 16 Aralık 2022, 09:56:16
Hakikaten ilginç.

İnsan olmanın zorluklarından haberi yok tabi. İş yoğunluğu yok, kafa yorgunluğu yok,gönül yorgunluğu yok, metrobüs durağını kaçırmak yok... ;D Takır takır yazmış, helal olsun

İngilizce mi soruyorsunuz? İngilizceye daha mantıklı cevaplar veriyordur sanırım.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 16 Aralık 2022, 10:21:26
Alıntı yapılan: Serk@n - 16 Aralık 2022, 09:56:16Hakikaten ilginç.

İnsan olmanın zorluklarından haberi yok tabi. İş yoğunluğu yok, kafa yorgunluğu yok,gönül yorgunluğu yok, metrobüs durağını kaçırmak yok... ;D Takır takır yazmış, helal olsun

İngilizce mi soruyorsunuz? İngilizceye daha mantıklı cevaplar veriyordur sanırım.

Metrobüs durağı çok önemli detay 😁 Türkçe sordum. Bir kerede derlemiyor. Geniş fonksiyonları anlamıyor. O kadar zeki değil 😁 önce pinleri belirle dedim. Sonra işlemciyi belirtip uygun hale çevir dedim. Sonra kesme sürelerini yazdırdım. Sonra sıralaması ve ne işlev göreceğini anlattım. Bayağı tane tane adım adım gidiyorsunuz. Whatsap yazışması gibi. Sen söylüyorsun o önüne koyuyor bu mu? Diye.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 16 Aralık 2022, 10:28:22
Bu arada çok zorlarsanız hata veriyor. Yine de programlama mantığı bilmeden yalap şalap anlatıp kullanılabilir birşey çıkmasını beklemek hata olur. İşlem önceliği bilmek kurguyu doğru ve sade anlatmak. Adım adım gidebilmek gerek. Aslında sizin unuttuğunuz yada mantığını yazılımsal olarak bildiğiniz ama daha önce kullanmadığımız tecrübeniz olmayan konularda büyük avantaj. Yoksa aman ben söyleyeyim o yazsın işi olmuyor. O bile öyle bir dünya yok diyor
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 16 Aralık 2022, 11:48:48
Birkaç kere sohbet ettim ben de. Çelişkili cevaplar almıştım. Üzerine koyarak gitmek gerekiyor demek ki.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 16 Aralık 2022, 11:58:42
Evet bazen deli ediyor 10 snde yazacağım kodu anlamıyor 5dk uğraştırıyor. Sıfırdan yazamıyor yani. Takıldığımız yer konusunda yardımı dokunuyor sadece.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: fatih88 - 17 Aralık 2022, 18:45:37
Tam kod paylaşmak adetim değil ama bu işini görür gerekli düzenlemeleri yap çalışır devre denendi
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 17 Aralık 2022, 20:01:31
Teşekkür ederim gerçekten çok makbule geçti.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 18 Aralık 2022, 12:40:58
Alıntı yapılan: fatih88 - 17 Aralık 2022, 18:45:37Tam kod paylaşmak adetim değil ama bu işini görür gerekli düzenlemeleri yap çalışır devre denendi
Hocam mesajlarda var okuduysanız benim portlar sınırlı. Birde akım kontrolü eklemek istiyorum devreye. Diğer fonksiyonlarımı LCD ye yazdırmıyorum. Acaba diyorum bu faz sırası akım kontrolü işini başka işlemciye yazsam dip soketlerle iki kartı üst üste yerleştirsem işlemcilerin birbiriyle haberleşmesi gerekir mi
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: fatih88 - 18 Aralık 2022, 20:02:00
Ne yapacağın hakkında bir bilgım yok 6pin lcd 3pin faz sırası 1 pin akım ölçme toplam 10pin 877nin pin sayısı bu işler içim yeter
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 18 Aralık 2022, 22:02:57
Alıntı yapılan: fatih88 - 18 Aralık 2022, 20:02:00Ne yapacağın hakkında bir bilgım yok 6pin lcd 3pin faz sırası 1 pin akım ölçme toplam 10pin 877nin pin sayısı bu işler içim yeter
Akım ölçmeye 1 pin ayarlamak için 3 pin lazım. Arttır azalt tamam gibi..
Benim 4 boş pinin daha yok maalesef
Ama bcz kullanarak durum ledlerinin kullandığı portları azalta bilirim sanırım. Biri kapanırken diğeri yanar. Akım kontrolü için bir öneriniz olur mu. Trafo + köprü diyot + 4700uf 50 v kondansatör ile yapabilir miyim aslında olur sanıyorum ama ayar işini bakayım nasıl yapacağız
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 18 Aralık 2022, 22:26:30
Yada şöyle birşey sorayım. 3 faz için ayrı ayrı giriş çıkış vermem gerekir mi 0- 25 amper ayarı için. Motorların çekeceği yükü akım ile halletmeye çalışıyorum. Zaten aşırı yükte kalkış yapmayacaklar. Ozaman da LCD ye aşırı yük yazıcam. Asansör misali. Mevcut devrede 2 motoru 5 er triyak ile sürüyorum. Triyaklı akım kontrolü yapsam bu triyaklardan yararlanabilir miyim. Her türlü denemek istiyorum yani. Her türlü görüşe ve yardıma açığım
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 19 Aralık 2022, 20:28:38
Motora giden fazlardaki alternatif akımı mı artırıp azaltacaksınız?
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 20 Aralık 2022, 01:27:33
Alıntı yapılan: Serk@n - 19 Aralık 2022, 20:28:38Motora giden fazlardaki alternatif akımı mı artırıp azaltacaksınız?
Evet
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 20 Aralık 2022, 01:36:25
Şu kartı bitirince uzun süre proteus a elimi süreceğimi sanmıyorum. Arkadaş adım adım gidiyorum. Triyak dizip çalıştırıyorum tamam. Durum ledleri tamam. Faz sırası için opto tamam. Bluetooth tamam. Ne bilim butonlar yönler stoplar tamam. Herşey bitiyor hadi diyorum hepsini çalıştır. Model bulunamadı diyip 40 tane hata veriyor. Ulan arkadaşım az önce buldun ya şimdi nereye kayboldu. Ömrümü yedi
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: mehmet - 20 Aralık 2022, 02:38:24
Bir de hız kontrolü olacaktır muhtemelen.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 20 Aralık 2022, 09:40:43
Alıntı yapılan: mehmet - 20 Aralık 2022, 02:38:24Bir de hız kontrolü olacaktır muhtemelen.
Hocam hız kontrolü gerekmiyor redüktörlü motorlar. Amper ayarı belirlediğim miktardan fazla yük çekmemesi için. Farzedelim üstüne 10 çuval koydum 500kg geliyor. Ne çekiyor toplamda 10a Tuttular üstüne 12 çuval attılar. LCD ye yük limiti aşıldı yazdırıp fonksiyonları kapatacağım.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 20 Aralık 2022, 10:50:33
Alıntı yapılan: Akaan - 20 Aralık 2022, 01:27:33Evet

Bu işlem biraz kritik. Nasıl bir devre ile yapacaksınız? Moc serisi bir opto triyak var. Devre şeması lazımsa araştırabilirim. Yani size mcu kontrollü bir dimer devresi lazım. Hem de bu her faz için yapılacak.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 20 Aralık 2022, 10:52:31
Alıntı yapılan: Akaan - 20 Aralık 2022, 09:40:43Hocam hız kontrolü gerekmiyor redüktörlü motorlar. Amper ayarı belirlediğim miktardan fazla yük çekmemesi için. Farzedelim üstüne 10 çuval koydum 500kg geliyor. Ne çekiyor toplamda 10a Tuttular üstüne 12 çuval attılar. LCD ye yük limiti aşıldı yazdırıp fonksiyonları kapatacağım.

Akımı azaltıp çoğaltmak bir açıdan da motor hız kontrolü yapmak gibi birşey aslında.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 20 Aralık 2022, 12:58:11
Alıntı yapılan: Serk@n - 20 Aralık 2022, 10:50:33Bu işlem biraz kritik. Nasıl bir devre ile yapacaksınız? Moc serisi bir opto triyak var. Devre şeması lazımsa araştırabilirim. Yani size mcu kontrollü bir dimer devresi lazım. Hem de bu her faz için yapılacak.
10ar adet Moc 3031 ve bta serisi triyak mevcut devrede var. 2 motoru iki yönlü sürüyorum. Mevcut devreye entegre edebileceğim birşeyler lazım.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 20 Aralık 2022, 13:01:19
Alıntı yapılan: Serk@n - 20 Aralık 2022, 10:52:31Akımı azaltıp çoğaltmak bir açıdan da motor hız kontrolü yapmak gibi birşey aslında.
Aslında redüktörlü olduğu için tam olarak hız kontrolü diyemeyiz. Aşırı yükte durması ve fonksiyonları askıya almasını sağlamak istiyorum. Şartlar oluşturulup resetleyip devam edecek
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 20 Aralık 2022, 13:02:32
Alıntı yapılan: Serk@n - 20 Aralık 2022, 10:50:33Bu işlem biraz kritik. Nasıl bir devre ile yapacaksınız? Moc serisi bir opto triyak var. Devre şeması lazımsa araştırabilirim. Yani size mcu kontrollü bir dimer devresi lazım. Hem de bu her faz için yapılacak.
Ben araştırdım ancak elle tutulur birşeye rastlamadım yada rastladım ama anlamadım. Sonuç olarak elim boş
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 20 Aralık 2022, 20:20:50
Alıntı yapılan: Akaan - 20 Aralık 2022, 13:01:19Aslında redüktörlü olduğu için tam olarak hız kontrolü diyemeyiz. Aşırı yükte durması ve fonksiyonları askıya almasını sağlamak istiyorum. Şartlar oluşturulup resetleyip devam edecek

Yani kuracağınız devre açısından motor hız kontrolü için ne gerekiyorsa o devre elemanlarını kullanma durumunuz olacak.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 20 Aralık 2022, 20:56:26
Ac ile uğraşmak gerçekten sıkıntılı. Zero crossing de farkettim mesela elektirik çarpmıyor, acı bir tecrübe olabilirdi. Bakalım kazasız belasız bulucaz bir yolunu
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Serk@n - 20 Aralık 2022, 21:01:57
Alıntı yapılan: Akaan - 20 Aralık 2022, 20:56:26Ac ile uğraşmak gerçekten sıkıntılı. Zero crossing de farkettim mesela elektirik çarpmıyor, acı bir tecrübe olabilirdi. Bakalım kazasız belasız bulucaz bir yolunu

Hem AC hem üç faz. Zor bir iş gerçekten.
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: fatih88 - 25 Aralık 2022, 22:36:09
3 fazı triac la sürmek sıkıntılı olabilir kontaktör kullan akım okumak için 2 adet akım trafosu kullanacaksın zaten indüktif yükleri dimlemek sorun getirir hız kontrol işi kallavi bir iş öyle basit değil en basit yapabilecegin akım trafolarından aldığın bilgiler set degerinden büyükse alarma geçirerek sistemi durdurmak
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 28 Aralık 2022, 19:13:11
Alıntı yapılan: fatih88 - 25 Aralık 2022, 22:36:093 fazı triac la sürmek sıkıntılı olabilir kontaktör kullan akım okumak için 2 adet akım trafosu kullanacaksın zaten indüktif yükleri dimlemek sorun getirir hız kontrol işi kallavi bir iş öyle basit değil en basit yapabilecegin akım trafolarından aldığın bilgiler set degerinden büyükse alarma geçirerek sistemi durdurmak
Hocam kontaktörden kurtulmak için bu yola girdim zaten. Uygun bir şema araştırıyorum bakalım ne gösterecek. Bu arada aynı mesaja yazıyorum ama sorum genel.  Faz giriş yada çıkışlara varistör kullanmamın yada kullanmamamın artısı eksisi ne olur
Başlık: Ynt: Faz sırası doğruluğu
Gönderen: Akaan - 28 Aralık 2022, 19:16:53
Alıntı yapılan: fatih88 - 25 Aralık 2022, 22:36:093 fazı triac la sürmek sıkıntılı olabilir kontaktör kullan akım okumak için 2 adet akım trafosu kullanacaksın zaten indüktif yükleri dimlemek sorun getirir hız kontrol işi kallavi bir iş öyle basit değil en basit yapabilecegin akım trafolarından aldığın bilgiler set degerinden büyükse alarma geçirerek sistemi durdurmak
Ve fikir için teşekkür ederim. En basiti trafodan aldığım bilgiyi işlemek olacak. Fakat şöyle bir sorun var. Benim set değerini değiştirebiliyor olmam gerekiyor.