Elektronik Projeler
28 Mayıs 2024 Salı
23 Nisan 2023 Pazar
Esp32 İle TV Tuner Radio Alıcısı
Yıllar evvel aklıma gelen bir proje rf sinyallere olan merakım giderek artıyor ve şimdiki pcb üretimimde rf antenler konusuna bir tık daha fazla önem gösteriyorum bu arada yeni olmayan bu projeyi biraz daha geliştirdim daha önce bloğumda burada paylaştığım yapılmış olan projeye modern bir arayüz ile daha güzel oldu.
Geniş bant radyo alıcı projesini esp32 ile modern bir hale getirdim şimdilik projenin sadece videosunu paylaşıyorum zaten devre çizimini yukarıdaki linkten paylaştım alt tarafta ise esp32 kodlarını görebilirsiniz.
Kod konusunda yardımcı olabilirim teknik destek için yorumlarda buluşabiliriz.
10 Ocak 2023 Salı
Uçuş kontrolleri ve haberleşme protokelleri
Merhaba, bu yazımda haberleşme paketleri üzerinde konuşacağım, iha, siha, drone gibi cihazların hatta uçakların bile kullandığı standart olan comunication packet language (CAN, RADİO, Seri haberleşme sistemleri de dahil) protokolleri üzerine değineceğiz, aralarında karşılaştıracak artı ve eksilerine bakacağız, haberleşme sırasında nasıl bir yöntem kullanıldığını anlatacağım.
Ayrıca son üretilen geliştirme kartımın nasıl uçuş bilgisayarına (so drone) çevirdiğimi anlatarak bu yolda küçük çipleri zor ekonomik şartlarda nasıl limitleri zorladığıma değinmesem olmaz diye düşünüyorum, elinizde olan patlamış mısırla birlikte bir kaç dakikalık bu blog yazıma İnsansız hava araçları tanımıyla başlayalım.
İnsansız Hava Araçları (İHA)
Özel drone İHA |
Büyük iha modelleri |
Ground control station (GCS)
GCS ArduPilot
Cleanflight, Betaflight
Haberleşme Protokolleri
Örneğin koordinat sistemini yada yeni motor hızı gibi bilgileri iki cihaz arasındaki bağlantı bozulsa bile eksiksiz göndermek çok daha önemli oluyor cihazınızın yanlış yere yönlenmesini istemeyiz. Tek kablo ile çalışan seri haberleşme donanımı UART %100 güvenli bir iletişim topolojisi sağlamaz. Pcb kartları, geliştirme kartları, gömülü sistemler, gps modülleri, özel araçlar çoğu cihaz ASCI tablosunu kullanır ama bunun bir dezavantajı sınırlı bant genişliğine sahip olmasıdır (yaklaşık 64 byte sınırlı kodlama sağlar) bu doğruluk tablosu gömülü sistemlerde hazır dönüşebiliyor olsa da iletişim kanalının sadece 1/4 oranında faydalanmış oluyoruz bunun yerine haberleşme protokolleri ile tek bir paket üzerinden çok fazla veriyi doğru şekilde iletebiliriz ve bant genişliğinin tamamını (256 byte) kullanabiliriz. Bu sebeple doğrudan bilgisayardan aktarım bilgisini gönderirken taşıyıcı modülasyonuna ihtiyaç duyuyoruz ki Modülasyon diyorum çünkü karşı tarafta da kod çözücü olması gerek.
Şuna benzetebiliriz insanlar arası iletişimde kullanılan dil bir araç olmakla birlikte ne kadar fazla aracı eden kelime türleri olursa derdimizi o kadar kolay anlatabiliriz günümüz Türkçesinde bilmediğimiz veya adını hatırlamadığımız herhangi bir somut yada somut örnek için "şey" kelimesini kullanırız bu o anda karşı tarafın ne demek istediğimizi anlamasına da pek şaşırmayız çünkü insan doğası henüz bilgisayarların ulaşamadığı bir yerde, doğrusu aynı dili konuşurken insanların yaptığı genelleme ile yada duygu durumunu da işin içine katarak 6. bir haberleşme yayınında sörf yapabiliriz.
Konuyu uzatmadan söylemek istediğim bir paket dil sisteminde haberleşen kelime karşı tarafta doğrulamaya sokulmak yerine toplu bir iletişim sonunda 1 yada 2 byte toplamında olan checksum ile metnimizi doğrulayan bilgi şifresini de paylaşmış oluruz böylelikle karşı taraf paketi aldığında hem şifreyi kendi yeniden hesaplar ki bu çok kolay bir yöntem olan; "özel veya" chekcsum ^= "A" denklemi bu işi çözer. Anahtar şifre paketin sonundan alınarak mobil paketteki dahil edilen her bir bilgiyi yeniden hesapladığı yeni şifre ile karşılaştırarak iletişimin bozulmadığını anlayabilir.
Paket sistemini anladığımıza göre bu şekilde çalışan toplu haberleşme protokollerine ve illetişim methotlarına doğrudan bakalım.
MAVLINK
Mavlink protokolü için paket tanımı |
STX, Yeni bir paketin başlangıcını belirtmek için kullanılan protokole özgü metin başlangıcı (STX) işaretçisi. Protokol sürümünü anlamayan herhangi bir sistem paketi atlayacaktır.
MSP MULTIWII
Mesaj içeriği |
int16_t roll;byte c; // The current byte we read in.c = mspSerial.read(); // The first sent byte of the number.roll = c; // Put the first sent byte into the second byte of the int 16.c = mspSerial.read(); // The second sent byte of the number.roll <<= 8; // Move the first sent byte into the first byte of the int16.roll += c; // Put the second sent byte into the second byte of the int 16.roll = (roll & 0xFF00) >> 8 | (roll & 0x00FF) << 8; // Reverse the order of bytes in the int 16.
- 00100100 -- '$' - Byte 1 of the header.
- 01001101 -- 'M' - Byte 2 of the header.
- 00111110 -- '>' - Byte 3 of the header.
- 00000110 -- '6' - The size byte.
- 01101100 -- '108' - The type number corresponding to "MSP_ATTITUDE".
- 11100010 -- The first sent byte of the roll INT16.
- 11111111 -- The second sent byte of the roll INT16.
- 00010010 -- The first sent byte of the pitch INT16.
- 00000000 -- The second sent byte of the pitch INT16.
- 11000010 -- The first sent byte of the yaw INT16.
- 00000000 -- The second sent byte of the yaw INT16.
- 10100111 -- The checksum byte.
Roll = -3.0Pitch = 1.8
Yaw = 194
URANUSLINK
Uranuslink paket tanımı |
UAVCAN
Sonuçlar
Protocols |
Artılar |
Eksiler |
Yok |
UranusLink |
Açık
kaynak •
Hafif araçlar yerine havacılık ve robotik
uygulamalar için tasarlandı. •
İkili destekler •
Açık kaynak değil
|
Daha
az ampirik kanıt •
Çoklu programlama dili desteği yok • Eşzamanlı
desteklemez. •
Ölçeklenebilir değil • Güvenlik
yok • Yüksek
gecikme süresi •
Daha az ampirik kanıt •
Yaygın olarak kullanılmaz •
Çoklu destek yok Programlama
dilleri •
Destek yok •
Ölçeklenebilir değil •Sadece
İHA'lar için tasarlandı |
• Doğrulama
mesajı yok paket güvenilir olmayabilir ve eski bir protokol |
UAVCan |
Açık kaynak • Hafiflik * Düşük gecikme
süresi * Algılama yeteneği
daha hızlı |
Daha az ampirik
kanıt * Yaygın olarak
kullanılmaz * programlama
dilleri Çoklu destek yok * Eşzamanlı değil
*
Ölçeklenebilir değil * İHA'lar için
tasarlandı * Sınırlı
şifreleme |
• Güvenlik
mekanızması yok. |
MAVLink |
• Yaygın
olarak kabul edilen dil *
Ölçeklenebilir * çoklu
dili destekler * Eşzamanlı
iletişim destekler *
Büyük ampirik kanıtı • Hafiflik *
Açık kaynak *
Düşük gecikme süresi |
|
• Güvenlik
mekanızması yok. |
MSP |
|
|
|
Tartışma
Configrator
#kaynak
21 Ekim 2022 Cuma
Stm32 Mcu ile 60 Amper Electronic Speed Controller (ESC)
Merhabalar, bu günlerde ihtiyacım olduğu kolay üretim şekli ve çalışma algoritmasıyla motorları çılgına çeviren elektronik kartın şahsen üretimi ile karşınızdayım evet başlıkta da okunduğu gibi droneleri şaha kaldıran ESC motor hız kontrolcüsü yapmak için işe koyulalım.
ESC kullanım şekli |
Tasarım konusunda piyasadakilerden çok da ödün vermeden konuya gireyim istetim, aslında boş bir zamanın ardından ve kırık bir ayak ile evde sıkılmaktansa bilgisayarda bir kaç proje fena olmazdı diye düşünerek daha evvel tasarlamış olduğum İvme sensörü destekli flytracker projesine uygun bir proje olması da gerekiyordu bu projeyi drone ile test ederken neden başka bir ekipmanını sıfırdan tasarlamayayım ? evet gene söylemek istiyorum Amerikayı baştan keşfetmek için biraz geç kaldım. Sonunda ESC yapmak için harekete geçtim evet.. Çok şaşırdığım fvp droncuların hazır aldıkları sistemleri kapitalist bir yaklaşımla konuyu sadece kınamak istemedim sonuçta bizde bu sistemin bir parçasıyız ve alt parçaları da olabiliriz. Yakınsamaktan çok bu projeye neden ihtiyacım var olduğunu düşünmem için bir kaç saat film izlemiş olabilirim ve yapmak için işe koyuldum Bir devre kartı tasarlarken o kartın ne iş yapacağı sadece bir fikir tarafı: %50 iş bitirme gerçekleştirmesi diğer yanı ise pcb tasarım işi, kod analizi, elektiriksel hesaplamalar, kullanılacak eleman seçimleri, mosfet ve gate sürücü hesaplamaları gibi bir takım ve listeyi uzatan seçimlerin yapıldığı.. durun işte aynen böyle; ıslak uyanılmış bir rüya dan sonra yatağın diğer tarafının boş kalması ile aynı sıkıntılı durumu anlatıyor olsa gerek (özgürlük ve ciddiyet bazen iş kaçırabilir) diye düşünerek..
Tasarım ve fikir zaten hali hazırda mevcut olabileceği ve benim durumuma ek bir özellik gerektirmeyeceği için orayı es geçerek anlatacağım gate sürücüleri de anlatmak isterim fakat orayı da alıntılıyabilrim çünkü üzerine durduğum tek yer yazılım ve donanım üretimi olduğu yüksek akım tasarlarken signal kablosu kullandığınız bir devre kartında 2 katlı bir pcb nin yeterli olabileceğini ama elektromanyetik uyumluluk EMI ve girşimleri EMC çok fazla kafaya takmadan yapılabilecek bir proje olmasından dolayı orayı da es geçtim aslında yazılım dışında çok zorlanmadığım bir tasarım furyasına giriş yapmak üzere olduğumu farkettim yüksek frekanslı faraday kafesi gerektirecek bir verici devre kartı tasarlamıyorsun Hamza diyerek işe koyulmanın önceden yapılacak hesaplamaları bile es geçmeme sebep verebilir. ( EMC ve EMI hakkında uzun soluklu proje için bilgi tazelemek benim fena olmazdı.) başlayalım.
ESC Çalışma Yöntemi
Üç fazlı fırçasız DA motorun şematik diyagramı |
..Fırçasız DA motorunun geçiş yerlerini, Hall Effect sinyallerini çözerek belirlenmektedir. Altı aşamalı değiştirme tekniği, fırçasız DA motorun üç fazlı motor sürücünün altı adet MOSFET sırasıyla değiştirmek amacıyla kullanılmaktadır. Belirtilen bu yöntemle, her bir sinyal çıkışlarında MOSFET’ler üç fazdan iki tanesini enerjilendirirken tek faz pasif konumda kalmaktadır. Anahtarlama dizilerinin ters çevrilmesi motorun dönüş yönünü değiştirir. Motorun hızı, Hall Effect sensörü sinyallerinin genişliği ile doğru orantılıdır. İdeal hat gerilimleri, geri EMF gerilimleri, komütasyon sinyalleri, faz akımları ve üç fazlı fırçasız DA motorun altı kademeli anahtarlaması şekil’ de gösterilmiştir.
Üç fazlı fırçasız DA motor sinyalleri ve anahtarlama örüntüsü |
Fırçasız DA Motorlarda Manyetik Alan Ve Manyetik Akı HesaplamalarıH=N*I/L Burada, H manyetik alan şiddeti,
N sarım sayısı, I akım şiddeti,
L stator kol uzunluğu B= µ *H veya B= µ (H+M)
Burada, B manyetik akı yoğunluğu, µ = 4π* 10-7 manyetik akı geçirgenliği,
M silisyumlu sacın manyetik geçirgenliği.
Mcu Seçimi
FIRÇASIZ MOTOR
Fırçasız motor iç gösterimi |
Rotor tarafından oluşturulan dönen manyetik alan fırçalar ve komütatör yardımı ile meydana gelir. Komütatör ve fırçalar rotorun pozisyonuna göre rotor sargısı üzerinden geçen akımın yönünü değiştirerek dönen manyetik alanı oluşturur.
BEMF
Rotor pozisyonunu belirlerken stator sargılarında indüklenen zıt emk’ya göre bu dedektörlerden faydalanmak mümkün olmaktadır. Sıfır geçiş dedektörü motor sürücüsüne bağlıdır ve rotorun konumunu belirlemek için, besleme gerilim değerinin yarısı ile statordaki faz sargılarına uygulanan gerilimi karşılaştırmak gerekir. Bu sensörlerin avantajı, hareket eden parçasının olmaması ve motordaki hareket eden diğer parçalarla bağlantısının olmamasıdır. Aşağıdaki şekilde bu dedektöre ait yapısı ile bağlantısı gösterilmiştir.
Açıklamaya göre, rotor pozisyonu belirlenerek çıkış pwm sinyalleri yani hangi mosfetin açılıp kapanacağı gibi bazı sorular için bize bir cevap olur.
Gate Sürücüler
Boostrap gate driver
Projede IR2101S kullanılmaktadır.
Mosfet Seçimi
Pwm sinyali, Dshot, Multishot , TIMER Zamanlayıcı
Final! PCB kart tasarımı
Malzeme listesi
Özet
Kod
Runn!
.
22 Mart 2022 Salı
Altium ile 74hc595 16 Bit DAC Tasarımı
Merhaba arkadaşlar daha önceki yazımda size 16 Bit için teorik olarak Dijital Analog Converter dizaynı yapmıştık Arduino mikrodenetleyicisi ile kontrol edebildik bugün ise bu tasarımın devre şemasını ve Altium çizimini sizinle paylaşmak istiyorum. 480 Khz sinyal için diffarantiel pair olayına girmedim her bir direnç arasındaki mv cinsinden kaybı yazılım ile tolere edebiliriz. Bu devre kartının malzeme fiyatı yaklaşık 10 lira günümüzde 16 bit D/A için 10 dolar üzerinde entegre/modül fiyatı bulunuyor.
Çıkışında Low pass filter var 47nF bir kondasatör için 1 Khz de orjinal sinyale çok yakın bir görünüm veriyor yakın bir zamanda kartı sipariş edip testlerini yapacağım. Onun dışında delikli pertinax ile deneysel bir devre tasarımı yaparak deneyebiliriz.
16 Bit Dac üst görünüm |
16 Bit Dac alt görünüm |
20 Mart 2022 Pazar
DAC Nedir ? Entegreleri neden pahalı ? Ucuz Ve Kaliteli DAC Yapalım
Analog Sinyal
Dijital Sinyal
Dijital sinyal gösterimi |
Yukarıdaki görsel dijital sinyali görüyoruz bu sinyal yani bu veri kümesi elektrikte 1 açık ve 0 kapalı anlamına gelen 2 lik koddan oluşur matematik modellemede binary taban sayısıdır. Dijital sinyal T zaman aralığında, TTL veya CMOS transistör modellemesinde 5.0 veya 3.3 voltdur mesela TLL de' [1:5 Volt 0: 0 volt] olmak üzere 2 farklı değer alabilir..
01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100
Kısaca DAC Nedir ?
Nasıl ?
V+ref = 5.0 voltV-ref = 0 voltn = 8 bitQ = (V+ref - V-ref ) / 2^n = (5-0)/256Q = 0.01953125 volt
(256)10 = (11111111)2 sayısı yaklaşık 4.98 volt analog çıkış gerilimi ile ifade edilmektedir. bu hata örnekleme hatası olarak adlandırılmaktadır.
V(256) = x*Q = 256*0.01953 = 4.9800 volt
R-2R Kedi Merdiveni
Vref = 5,n = 4,Q = 5/2^nQ = 0.3125
V(x) = x*Q
16 adımlık dijital çevirici V(x) sinyali, x değerlerinin 16 farklı değeri ile analog sinyali bulabiliriz.
Şekil 4 Dört bitlik ikilik ağırlıklı direnç D/A çevirici |
Vo = -Vref * (8D3 + 4D2 +2D1 +D0) * 1/16
LFP (Low Pass Filter) Mantığı
fc = 1/(2.π.R.C)
LPF ile dijital sinyalin analog benzetimi sağlanabilir aşağıdaki şekilde bulunan STM32 den alınmış PWM sinyalin duty oranına göre LPF devresi ekleyerek analog gerilim benzetimi blog şeması gösteriliyor.
Harici Donanım "DAC"
Ucuz Yöntem
V+ref = 15 voltV-ref = -15 voltn = 16 bitQ = (V+ref - V-ref ) / 2^n = (15-(-15))/65536Q = 0.000457763672
Dönüştürülmüş analog sinyalden kesit |
Dönüştürülmüş analog sinyal çıktısı |
Bir problem var !
f = 1/Tfc = 16Mhz = 62.5 nsTs - Ti = 249.143 - 249.368Ts- Ti = 0.225 ms= 225usf = 1/225us = 4.444 Khz
Çözüm: SPI Donanımı ile haberleşmek
16bit Latch Clock, Data dijital port çıkış grafiği |
Grafikte en üstteki latch sinyali dijitalWrite komutu yavaş olduğundan spi data gönderme işlemi bittiği halde zaman kaybı yaratıyor az da değil 4.64us o yüzden Arduino kodu dışında farklı bir yöntemle latch yapmamız gerekiyor. Belki Ardinonun frameworkü bu bakımdan tercih edilmeyebilir..
digitalWrite(pin_latch, LOW);SPI.transfer16(val);digitalWrite(pin_latch, HIGH);
Final: Çıkışa LPF Ekleyelim
1/2πR37C1 frekans hesabı ile 500 Hz altıdaki sinyale 47nF kondasatör ekleyelim..
Arduino kodunu aşağıda bulabilirsiniz.
#include <SPI.h>#define sbi(port, bit) (port) |= (1 << (bit))#define cbi(port, bit) (port) &= ~(1 << (bit))int pin_latch = 10,pin_clock = 13,pin_data = 11;void setup() {// put your setup code here, to run once:pinMode(pin_latch ,OUTPUT);pinMode(pin_clock, OUTPUT);pinMode(pin_data, OUTPUT);//SPI.setClockDivider(SPI_CLOCK_DIV2);SPI.setBitOrder(MSBFIRST);SPI.setDataMode(SPI_MODE0);SPI.begin();}void loop() {// put your main code here, to run repeatedly:for(int i = 0; i< 65536; i=i+1){shift_out(i);delay(1);}}void shift_out(int val){/*digitalWrite(pin_latch, LOW);shiftOut(pin_data, pin_clock, MSBFIRST, val>>8);shiftOut(pin_data, pin_clock, MSBFIRST, val);digitalWrite(pin_latch, HIGH);*///digitalWrite(pin_latch, LOW);cbi(PORTB, 2);SPI.transfer16(val);sbi(PORTB, 2);//digitalWrite(pin_latch, HIGH);}
-
Merhaba, bu yazımda haberleşme paketleri üzerinde konuşacağım, iha, siha, drone gibi cihazların hatta uçakların bile kullandığı standart ol...
-
Merhaba Arkadaşlar bugün 555 ve 4017 entegresini kullanarak yürüyen 10 Led ışık devresi yapacağız... Devre şeması: Devrenin bitmiş hali: Bas...