Sinyalin anlamlandırılması mantığı

  • Konuyu başlatan Konuyu başlatan M_B
  • Başlama tarihi Başlama tarihi
Manchester kodlama değil o bit dizisi. Manchester'da her bir peryotta en az bir tane 0/1 veya 1/0 geçişi olması lazım. Ama senin durumda pals uzunluğunun dört katı bir boşluk var. Şimdi MATLAB'de geçerli bir manchester sinyal dizisi ürettirdim ve osiloskop ile dekode ettirdim. Bunun pals uzunluğu da senin sinyal gibi 250 us.

ScreenImg.png
 
Hocam şimdi benim sinyali nasıl yorumlayıp veri alış verişi sağlayabiliriz. Sinyal yazma ve okuma mantıgını kavrasak diğer fonksiyonların da sinyalini okuyup ona göre yorumlama yaparım.

Şu an size iki sinyal verdim birisi cihaz kapalı durumda iken gidip gelen veri ( OFF ) Diğeri ise Butondan Ac dediğimde Cihazın acıldığı andaki giden gelen komutlar.
 
ON ve OFF'u sinyal jeneratöründen ürettim. UART olarak çözümlemeye çalışınca mantıklı birşeyler çıkmıyor. Manchester olarak da hatasız çözümlenmiyor. Başka uçuk bir protokol olma ihtimali var mıdır bilmiyorum. Ama amacın bu aleti ON/OFF yapmak ise, aynı sinyali göndermek işini görmesi lazım. Protokolü anlamana gerek var mı?

İki sinyali 100 kHz ile örnekleyip MATLAB'de grafiğini alınca şöyle birşey çıkıyor. Üstteki ON, alttaki OFF.

1738837440899.png


Bence burada bir protokol değil de, doğrudan PWM kontrol var. Bir feedback loop ile ısıtıcıya giden enerji ayarlanıyor sanki. Bunu doğrulamak için birden fazla frame kaydedip karşılaştırabilirsin. Alet belli bir modda çalışırken datalar tıpatıp aynı ise, bilmediğimiz bir protokol koşuyor. Ama aralarında ufak farklar oluyorsa o zaman bu doğrudan bir PWM kontrol sinyali.
 
Gecmis yillarda server odasindaki klimayi uzaktan kumanda cihazindan bagimsiz olarak oda disindan acip kapamam istenmisti. Uzaktan kumanda cihazina mudahele etmek istemiyordum ve kumanda kodlarindaki mantigi da anlayamamistim.

Ben de verici kumandadan cikan koda ait darbeleri bit bit ornekleyip elde ettigim data katarini aynen roma gomdum. Elimdeki data katarini kendi MCU kartimdan IR lede verdigimde klimaya kumanda edebilmistim.

Benzer mantigi sen de uygulayabilirsin.
 
ON ve OFF'u sinyal jeneratöründen ürettim. UART olarak çözümlemeye çalışınca mantıklı birşeyler çıkmıyor. Manchester olarak da hatasız çözümlenmiyor. Başka uçuk bir protokol olma ihtimali var mıdır bilmiyorum. Ama amacın bu aleti ON/OFF yapmak ise, aynı sinyali göndermek işini görmesi lazım. Protokolü anlamana gerek var mı?

İki sinyali 100 kHz ile örnekleyip MATLAB'de grafiğini alınca şöyle birşey çıkıyor. Üstteki ON, alttaki OFF.

40146 eklentisine bak

Bence burada bir protokol değil de, doğrudan PWM kontrol var. Bir feedback loop ile ısıtıcıya giden enerji ayarlanıyor sanki. Bunu doğrulamak için birden fazla frame kaydedip karşılaştırabilirsin. Alet belli bir modda çalışırken datalar tıpatıp aynı ise, bilmediğimiz bir protokol koşuyor. Ama aralarında ufak farklar oluyorsa o zaman bu doğrudan bir PWM kontrol sinyali.
Hocam Pwm olduğunu sanmıyorum cunku Display kartı tek basına besledigimde bir sinyal gidiyor eger geri donus gelmezse ekranı acmıyor.
Sizin mesaj üzerine Driver karta ekranı takmadan fişe takıp signal ucuna lojik analyzer bağladım herhangi bir veri akışı olmadı.
Tum fonksiyonların dalga şeklini kaydedip Mikro Step hocanın dediği gibi tum dalga şekillerini kayıt edip gonderebilirim.

Fakat takıldıgım nokta ise gonderdiğim veriden sonra gelen cevabı da almam ( okuyabilmem ) lazım. Gordugum kadarıyla display kartı ile driver kartı el sıkışması yapıyor.

1MHz 10sn ornekleme ile ON OFF ve Fonksiyonlardan 1600W olan dalga şeklini kayıt ettim onları inceleyeçeğim.
Bakalım ne yapabileçeğim ve ne kadar ilerleme kaydedeceğim.



 
Son gelişmem ise
Sinyallerin aynısı STM32F103 ile oluşturup Driver karta bağladım herhangi bir gelişme olmadı.
Daha sonra ise Driver kartı devreden cıkarıp direkt olarak Display karta bağladım ve ekranda On Off bilgileri cıkmaya başladı.

Sanki şimdi işler biraz değişti gibi tekrar bir inceleme ve araştırmaya gececeğim.
 
Cihaz normal bağlı iken ilk acılısta ekranın tum isikları yanıyor.
Sonra ekranda eksi eksi cıkıyor. Bu bahsettiğim olay cihazın normal çalışması aşamasında olan olaylar.
Bu durumda yeniden Lojik analyzeri bağlayıp sinyalleri kayıt edeceğim. Örnekleme frekansını ve süresıni değiştirerek.
Bu durumdan ben display kartındaki entegrenin TM16xx gibi display surucu olabileçeği aklıma geliyor. ( Dokunmatik özellikli ) Sanırım beni yanıltan nokta display kartı driver karttan ayırıp sinyal ucunu lojik analyzera baglayıp baktıgımda herhangi bir hareketlenme ve sinyal yakalayamamış olmam. Bu süreçleri tekrar yeniden ele alacağım.

Display karttaki entegrenin ismini okuyabilseydim işim biraz daha hızlı olacaktı.
Dokunmatik buton algılama ve display süren iletişim olarak tek hattan haberleşen entegre ismi modeli hakkında bilgisi olanlardan yardım ve destek istiyorum.

Son care olarak bu iletişim sorununu cözemezsem display kart üzerindeki dokunmatik butonları kullanmak istiyorum. Burda da dokunmatık butonların nasıl kontrol edileçeği sorunu cıkıyor.. Mekanık bas-bırak buton olsa kontrolu kolaydı ?

Yukardaki sorumlarım için yönlendirme ve bilgilendirmenize ihtiyacım var.

Teşekkürler.
 
Tekrardan herkese merhaba,
Uygulamam la ilgili olarak display katı ayrıyeten besleyip sinyallerin takıbını yaptım.
displaya bağlı olan butonlara bastıkca ilgili butonlara ait dalga şekillerini kaydettim.
Şimdiki aşamam ise gelen sinyali STM32F103 ile ( Input capture ) yakalayıp değerlendirmek istiyorum.

Yakaladığım sinyallerden bir tanesi aşağıdaki gibi.
Sinyal_Power.png

Bu sinyali STM ile yakalayıp daha sonra aynı şekilde geri STM32 de Input Capture ile ilgili bir çalışma yapmadım bilgi sahibide değilim.
Biraz yonlendirilmeye ve teknik bilgiye ihtiyacım var.
 
Konunun geldiği noktayı sabote etmek gibi olmasın ama son paylaştığınız işaret manchester gibi duruyor. :)
 
Bana da sanki bu bir IR uzaktan kumanda sinyali gibi geliyor. Bu tip sinyallerde, faydalı bilgiden önce bir "training" sinyali gönderilir ve o sinyale istinaden alıcı senkronizasyon sağlar. Sonra da faydalı bilgi gelir. Yukarıdaki sinyalde bunu görebiliyoruz.

Herhalde indüksiyon ocağı fason ürettirildi. Orijinal tasarımda IR uzaktan kumanda vardı. Adamlar tasarımı alıp değiştireceklerine IR alıcının pininden, gelmesi gereken sinyali pompalıyorlar :D
 
@taydin hocam,
Sizin mesajınıza istinaden arduino pro mini 16Mhz lik kartla IRremote okuması yaptım.
Cıkan sonuclar.

Kod:
Bosta iken donen değer-> Protocol=PulseDistance Repeat gap=79950us Raw-Data=0x7FBBFF 30 bits LSB first
Power Tusuna basınca-> Protocol=PulseDistance Repeat gap=79700us Raw-Data=0x47BBBFF 30 bits LSB first
Artı Tusuna basınca-> Protocol=PulseDistance Repeat gap=81100us Raw-Data=0x1867BBFF 30 bits LSB first
Eksi Tusuna basınca-> Protocol=PulseDistance Repeat gap=81050us Raw-Data=0x106FBBFF 30 bits LSB first
Fonksiyon Tusuna basınca-> Protocol=PulseDistance Repeat gap=79950us Raw-Data=0x205FBBFF 30 bits LSB first
Timer Tusuna basınca-> Protocol=PulseDistance Repeat gap=81450us Raw-Data=0x3FBBFF 30 bits LSB first

bir başka kodla İnfo suna bakınca ise cıkan veriler. ( Sadece boşta iken okunan deger )
Kod:
Result as internal 8bit ticks (50 us) array - compensated with MARK_EXCESS_MICROS=20
11:43:29.080 -> uint8_t rawTicks[63] = {5,20, 5,20, 5,20, 5,20, 5,20, 5,20, 4,20, 5,20, 5,20, 5,20, 5,20, 20,5, 5,20, 5,20, 5,20, 19,5, 5,20, 5,20, 5,20, 5,20, 5,20, 5,20, 5,20, 5,20, 19,5, 20,5, 20,5, 20,5, 20,5, 20,5, 20,5, 20};  // Protocol=PulseDistance Repeat gap=79600us Raw-Data=0x7FBBFF 30 bits LSB first
11:43:29.080 ->
11:43:29.080 -> Result as microseconds array - compensated with MARK_EXCESS_MICROS=20
11:43:29.080 -> uint16_t rawData[63] = {230,1020, 230,1020, 230,1020, 230,1020, 230,1020, 230,1020, 180,1020, 230,1020, 230,1020, 230,1020, 230,1020, 980,270, 230,1020, 230,1020, 230,1020, 930,270, 230,1020, 230,1020, 230,1020, 230,1020, 230,1020, 230,1020, 230,1020, 230,1020, 930,270, 980,270, 980,270, 980,270, 980,270, 980,270, 980,270, 980};  // Protocol=PulseDistance Repeat gap=79600us Raw-Data=0x7FBBFF 30 bits LSB first
11:43:29.080 ->
11:43:29.080 -> uint16_t address = 0x0;
11:43:29.080 -> uint16_t command = 0x0;
11:43:29.080 -> uint32_t rawData = 0x7FBBFF;
11:43:29.080 ->
11:43:29.080 ->
11:43:29.080 -> Pronto Hex as string
11:43:29.080 -> char prontoData[] = "0000 006D 0020 0000 000A 0026 000A 0026 000A 0026 000A 0026 000A 0026 000A 0026 0008 0026 000A 0026 000A 0026 000A 0026 000A 0026 0027 0009 000A 0026 000A 0026 000A 0026 0025 0009 000A 0026 000A 0026 000A 0026 000A 0026 000A 0026 000A 0026 000A 0026 000A 0026 0025 0009 0027 0009 0027 0009 0027 0009 0027 0009 0027 0009 0027 0009 0027 06C3 ";
11:43:29.323 ->
11:43:29.323 ->
11:43:29.323 -> Protocol=PulseDistance Repeat gap=78850us Raw-Data=0x7FBBFF 30 bits LSB first
11:43:29.323 ->
11:43:29.323 ->
11:43:29.323 -> Raw result in internal ticks (50 us) - with leading gap
11:43:29.323 -> rawData[64]:
11:43:29.323 ->  -1577
11:43:29.323 ->  + 5,-20
11:43:29.323 ->  + 5,-20 + 5,-20 + 5,-20 + 5,-20
11:43:29.323 ->  + 5,-20 + 5,-20 + 5,-20 + 5,-20
11:43:29.323 ->  + 5,-20 + 4,-20 +20,- 5 + 5,-20
11:43:29.323 ->  + 5,-20 + 5,-20 +20,- 5 + 5,-20
11:43:29.323 ->  + 5,-20 + 5,-19 + 5,-20 + 5,-20
11:43:29.323 ->  + 5,-20 + 5,-20 + 5,-20 +20,- 5
11:43:29.323 ->  +20,- 5 +20,- 5 +20,- 5 +19,- 6
11:43:29.323 ->  +19,- 6 +19,- 5 +20
11:43:29.323 -> Sum: 792
11:43:29.323 -> Raw result in microseconds - with leading gap
11:43:29.323 -> rawData[64]:
11:43:29.323 ->  -78850
11:43:29.323 ->  + 250,-1000
11:43:29.323 ->  + 250,-1000 + 250,-1000 + 250,-1000 + 250,-1000
11:43:29.323 ->  + 250,-1000 + 250,-1000 + 250,-1000 + 250,-1000
11:43:29.323 ->  + 250,-1000 + 200,-1000 +1000,- 250 + 250,-1000
11:43:29.323 ->  + 250,-1000 + 250,-1000 +1000,- 250 + 250,-1000
11:43:29.323 ->  + 250,-1000 + 250,- 950 + 250,-1000 + 250,-1000
11:43:29.323 ->  + 250,-1000 + 250,-1000 + 250,-1000 +1000,- 250
11:43:29.323 ->  +1000,- 250 +1000,- 250 +1000,- 250 + 950,- 300
11:43:29.323 ->  + 950,- 300 + 950,- 250 +1000
11:43:29.323 -> Sum: 39600

Bu test sonucundan ne cıkarabiliriz.
 
haberleşme hattı her iki tarafta da direk işlemciye mi giriyor? pull up vs var mı?
 
1-Ocak tarafı, ekran takılı değil iken sabit bir veri katarı gönderiyor.
2-Ekran tarafı, ocağa bağlı değilken hiç bir şey göndermiyor.

Konunun ilk mesajındaki ilk resimde 3 adet veri katarı gözüküyor.(Cihaz kapalı iken okunan sinyal.) Bu 3üde aynı mı? Arada başka birşeyler gönderiyor mu?
Sonraki resimdeki de bu veri katarının yakın çekim hali, değil mi?

Siz bu veri katarını stm32f103 ile ekrana gönderdiğinizde ekran canlanıyor değil mi? Peki canlandığı zaman, ocağa bağlıymış gibi sorunsuz çalışıyor mu? Yoksa haberleşmede bir dümen döndüğünü anlayıp farklı mı çalışıyor?
 
1-Ocak tarafı, ekran takılı değil iken sabit bir veri katarı gönderiyor.
2-Ekran tarafı, ocağa bağlı değilken hiç bir şey göndermiyor.

Konunun ilk mesajındaki ilk resimde 3 adet veri katarı gözüküyor.(Cihaz kapalı iken okunan sinyal.) Bu 3üde aynı mı? Arada başka birşeyler gönderiyor mu?
Sonraki resimdeki de bu veri katarının yakın çekim hali, değil mi?

Siz bu veri katarını stm32f103 ile ekrana gönderdiğinizde ekran canlanıyor değil mi? Peki canlandığı zaman, ocağa bağlıymış gibi sorunsuz çalışıyor mu? Yoksa haberleşmede bir dümen döndüğünü anlayıp farklı mı çalışıyor?
Baştan beri yaptıgım test ve ölcumler sonucu elde ettiğim bilgiler.

Herşey normalken cihazı fişe taktığımda Display de 4 tane eksi işareti oluşuyor.
Bu aşamada okuduğum veriler.
OFF_SINYAL_ACIKLAMA.jpg


İlk kırmızıya aldığım sinyal Display kartın devamlı işlemciye gönderdiği veri. ( Ne zaman değişiyor derseniz
tuşa basıldığı zaman 2-3 kere ilgili tuşun sinyalini gönderiyor. ) İkinci kırmızıya aldığım sinyal ise İşlemciden ekranda yazılması istenen bilgi. Orneğin cihaz kapalı iken ekranda 4 tane eksi nin gozukmesi gibi.
İkinci sinyalin bire bir aynısını Kendi işlemcimle yapıp display karta gonderdiğimde ekran aktif oluyor.

Benim yukardaki ilk sinyal verisini işlemcimle okuyabilirsem Display karttaki hangi tuşa basıldığını algılamış olacağım.
Yukardaki sinyalin frekansı 800Khz.
İşlemcinin input capture ozelliği ile yukardaki sinyali okuyabilirmiyim.
 
Merhabalar,

Sinyal şeklim WS2812B Led sinyal protokolune çok benziyor. Arasındaki fark Benim cihazın sinyal peryodu: 1.25ms WS2812B nin ise 1.25us.

WS2812.png

İşlemci ile veriyi göndermek kolay. Takıldığım nokta ise bu sinyali yakalayıp ne duty cyle gore 0 ve 1 leri siraya dizebilmek. Bir mantık kuramadım.
 
Öncelikle uygun örnekleme frekansı seçmen lazım. Mesela diyelim 10 kHz seçtin, 1.25 ms sinyal için yeter de artar. Sonra da osiloskobu 10 kHz örnekleme hızına getireceksin ve sinyali kaydedeceksin. Sonra da MCU'dan 10 kHz örnekleme hızı ile sinyali üreteceksin.

Eğer osiloskobun örnekleme hızı istediğin değere gelmiyorsa, o zaman sinyali osiloskobun olağan örnekleme hızı ile kaydet ve istediğin örnekleme hızında "resample" et. Bunun için MATLAB veya eşdeğeri bir program kullanabilirsin. Mantığı basit aslında, pitonda da bir program yazdırabilirsin ChatGPT yaratığına.
 
İşte tam da böyle durumlarda bir AWG türünden olan sinyal jeneratörü büyük zaman kazandırır. Osiloskop ile sinyali kaydet, AWG ile üret. Devre istediğin tepkiyi verdi mi? Artık MCU kodunu geliştirebilirsin. Vermedi mi? Başka bir durum var demekki, boşuna MCU kodu ile vakit kaybetmeyip araştırmaya devam.
 
Hocam elimde SIGLENT SDG830 sinyal jenaratoru var ama
AWG ozelliği nedir ne degildir bilgim yok. Benim cihaz da varmı bilmiyorum.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
7,443
Mesajlar
125,443
Üyeler
3,025
Son üye
can.ince

Son kaynaklar

Son profil mesajları

Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Back
Top