PWM-CORE
SPWM103F- 2S0P/1S2P
GENEL ÖZELLİKLER
SPWM Frekans Aralığı: 0,1 Hz – 10 KHz o Örnekleme Seçim Aralığı: 2 – 102
o Dead-Time Seçim Aralığı: %0,00 – %25,00
PWM Frekans Aralığı: 4 Hz – 500 KHz (Sadece 1S2P için) o Faz Açısı Seçim Aralığı: 0,00º – 360,00º
o Çalışma Oranı Seçim Aralığı: %0,00 – %100,00
Yüksek Hassasiyetli Osilatör: 100 ppm tolerans (Maks.)
Kolay İletişim: UART (Rx, Tx)
Dâhili Hafızaya Otomatik Kayıt Yeteneği.
Geniş Giriş Besleme Gerilimi: 5V – 24V
Düşük Voltaj Salınımı: < 1 mV
UYGULAMA ALANLARI
MOSFET, IGBT Tetikleme Uygulamaları.
H Köprü ve Yarım Köprü Sürücü Devreleri.
Tek Fazlı Sinüs Inverter uygulamaları.
DC/AC Çevirici Uygulamaları.
Solar ve Rüzgâr Enerjisi Inverter’leri.
Tek Fazlı Motor Hız Kontrol ve Frekans Transformatör Uygulamaları.
UPS’ler (Kesintisiz Güç kaynakları).
Hobi Uygulamaları.
GENEL AÇIKLAMA
SPWM103F, sinüs dalgasını dijital olarak modelleyen Sinüzoidal PWM çekirdeğidir. 2S0P sadece iki SPWM çıkışına sahip iken 1S2P bir SPWM ve iki PWM çıkışına sahiptir. Sinüs modelinin frekans, örnekleme sayısı ve Dead-Time parametreleri ve 1S2P’nin sahip olduğu iki PWM çıkışının frekans, faz ve çalışma oranı parametreleri programlanabilirdir. 5 – 24V giriş gerilimine ve 5V sinyal çıkış genliğine sahiptir. Frekans toleransı en fazla 100 ppm’dir.
İletişim mekanizması oldukça kullanışlı ve basittir. Kontrol işlemlerinin tamamı
SPWM103F’nın Rx pinine gelecek olan kodlarla sağlanır. İletişim kuralları aşağıda örneklerle
birlikte gösterilmiştir. Cihaz tüm sinyal yapılandırmalarını hafızasında tutmaktadır. Böylece her
kullanımda tekrar yapılandırmaya ihtiyaç duymamaktadır.
Rev. 01.02.2021 || Lentark®, 2020 Sayfa 2/6 GND
PWM 1 PWM 2 GND Rx
Tx GND +5V Reset
GND 5-24V Girişi
SPWM 1 [H]
SPWM 1 [L]
GND
SPWM 2 [H]
SPWM 2 [L]
GND Rx
Tx GND +5V Reset
GND 5-24V Girişi
SPWM 1 [H]
SPWM 1 [L]
PIN ÇIKIŞLARI
SPWM103F – 2S0P SPWM103F – 1S2P
ELEKTRİKSEL KARAKTERİSTİKLERİ
Aşağıdaki tabloda “En Fazla” olarak belirtilen seviyelerin üstünde cihazı çalışmaya zorlamak cihazın ısınmasına ve kalıcı hasar almasına sebep olabilir. Cihazın, bu teknik belgede belirtilen çalışma sınırlarının dışında işlevsel çalışması düşünülemez. Uzun süre “En Fazla” derecelendirme koşullarında çalışmaya maruz kalma cihaz güvenilirliğini etkileyebilir.
Tablo 1: Elektriksel Karakteristikleri.
Koşullar: Aksi Belirtilmedikçe, 𝑇𝑂= +25 𝐶𝑜 ve 9𝑉 ≤ 𝑉𝐼𝑁≤ 18𝑉.
Parametreler Sembol En Az Norm. En Fazla Birim Test Şartı
Giriş
Giriş Voltajı 𝑉𝐼𝑁 5 12 24 V DC
Giriş Akımı [Yüksüz]
𝐼𝐼𝑁 5,6
7,2 8,4
11,8 10,5
13,1 mA 𝑓𝑠 = 10 𝐻𝑧 𝑓𝑠 = 500𝐾𝐻𝑧
Çıkış
Yüksek Çıkış Voltajı 𝑉𝑂𝑈𝑇,𝐻𝐼𝐺𝐻 4,200 5 5,100 V
𝑉𝐼𝑁= 12𝑉
Düşük Çıkış Voltajı 𝑉𝑂𝑈𝑇,𝐿𝑂𝑊 0 0 0,615 V
Yüksek Voltaj Çıkış Direnci 𝑅𝑂𝑈𝑇,𝐻𝐼𝐺𝐻 — — 200
Düşük Voltaj Çıkış Direnci 𝑅𝑂𝑈𝑇,𝐿𝑂𝑊 75 — —
Toplam Çıkış Akımı* 𝐼𝑂𝑇 — 32 45 mA
Tetikleme
Yükselme Zamanı 𝑡𝑅 — 30 65 ns 𝐶𝐿 = 50 pF
Düşme Zamanı 𝑡𝐹 — 30 60 ns 𝐶𝐿 = 50 pF
Çıkış Güç Tüketimi 𝑊𝑃𝐷 — — 750 mW Not 1
Tolerans & Hassasiyet
Parametreler Sembol En Az Norm. En Fazla Birim Test Şartı
Frekans Toleransı — 50 100 ppm 250 ms − 2 μs
Frekans Hassasiyeti — 0,0312 — μs 𝑇> 2 μs
Çalışma Oranı Hassasiyeti**
(0,00 – 100,00) D 0,01 — 0,01
% [yüzde]
𝑇> 312 μs
0,01 — 0,1 𝑇> 31 μs
0,1 — 1 𝑇< 31 μs
Faz Açısı Hassasiyeti**
(0,00 – 360,00) P
0,01 — 0,01
º [derece]
𝑇> 1,12 ms
0,01 — 0,1 𝑇> 112 us
0,1 — 1 𝑇< 112 us
* : Sinyal çıkışlarından çekilebilecek toplam akımı ifade etmektedir.
** : Sadece 1S2P’de PWM çıkışı olmasından dolayı sadece 1S2P için geçerlidir.
Not1 : Sinyal giriş ve çıkışlarında tüketilebilecek toplam gücü ifade etmektedir.
Rev. 01.02.2021 || Lentark®, 2020 Sayfa 3/6
PIN AÇIKLAMALARI
Tablo 2: Pin Açıklamaları.
TERİMLERİN TANITILMASI
Terimler İfade Kod En Az Değer En Fazla Değer
SPWM Periyot 𝑇𝑆𝑃𝑊𝑀
𝑆, 𝑀, 𝑈 100 mikro saniye 10 saniye
Örnekleme Sayısı 4𝑛 + 2 𝑁 2 102
Dead-Time Oranı 𝐷𝑡 𝑇 %0,00 %25,00
PWM
Periyot
𝑇𝑃𝑊𝑀𝑆, 𝑀, 𝑈 2 mikro saniye 250 milisaniye
Çalışma Oranı % D %0,00 %100,00
Faz Açısı
ºP 0,00
º360,00
ºTablo 3: Terimlerin Tanıtılması.
Pin Açıklama Notlar Bağlantı Çeşitleri
Rx Herhangi bir MCU’dan veri okumak için kullanılır.
(9600 Baud Rate – 8 Bit Buffer)
Herhangi MCU’nun Tx portuna bağlanır.
Tx Bu pin, Pwm-Core’un Rx pininin yeni veri okumaya hazır olup olmadığı bilgisini verir. (1: Hazır — 0: Meşgul)
Herhangi MCU’nun Rx ya da Input portuna bağlanır.
( 0 ≤ R1,2 ≤ 470 Ω ) Rst Pwm-Core’un reset pinidir.
(1: Aktif — 0: Pasif)
Herhangi MCU’nun Output pinine bağlanır, Pwm-Core’un reset pini olarak kullanılabilir.
+5V 5V Çıkışı Maks. 130 mA alınabilir.
12V 5-24V Besleme Girişi Nominal 12V
GND GND —
𝑆_1 1. SPWM Çıkışı [Yüksek] — 𝑆_1̅̅̅̅̅ 1. SPWM Çıkışı [Düşük] —
𝑆_2 2. SPWM Çıkışı [Yüksek] Sadece 2S0P.
𝑆_2̅̅̅̅̅ 2. SPWM Çıkışı [Düşük] Sadece 2S0P.
P_1 1. PWM Çıkışı Sadece 1S2P.
P_2 2. PWM Çıkışı Sadece 1S2P. Şekil 1: Tipik Bağlantı Şemaları.
Rev. 01.02.2021 || Lentark®, 2020 Sayfa 4/7
İLETİŞİM KURALLARI
Pwm-Core’un bağlantıları “Pin Açıklamaları” başlığında belirtildiği gibi gerçekleştirilmelidir. Komut gönderecek olan MCU’nun UART iletişim protokolü “Protokol Bilgileri” başlığında verilen bilgilere göre yapılandırılmalı ve gönderilecek komut için, String/Char*/Char[] değişkeni aşağıdaki iki kurala uygun olarak hazırlanmalıdır.
Not: Cihaz tüm sinyal yapılandırmalarını hafızasında tutmaktadır. Böylece her kullanımda tekrar yapılandırmaya ihtiyaç duymamaktadır.
Kural 1 – Format:
Konfigürasyon Açıklama Değerler
C
PWM kanallarında 120 saniye – 250 milisaniye aralığındaki periyot değerleri için cihaz farklı bir CLK frekansı
kullanmaktadır. Bu aralıkta değer atama kalibrasyon ihtiyacını meydana getirebilmektedir. Böyle bir durumda kalibrasyon katsayısı olarak bu konfigürasyon kullanılır.
Bk. Not.
1C10.00>
1C0.00>
1C5.00>
1C7.25>
1C1.00>
Maksimum Değer Minimum Değer Varsayılan Değer Örnek 1
Örnek 2
B
Cihaz varsayılan olarak 9600 Baud Rate hızındadır. Bu konfigürasyon kullanılarak Baud Rate değiştirilebilir.
1B4.00>
1B3.00>
1B2.00>
1B1.00>
9600 Baud Rate [Varsayılan]
19200 Baud Rate 57600 Baud Rate 115200 Baud Rate Tablo 4: Cihaz Ayarları İçin Komutlar.
Not: ’C’ Konfigürasyonu sadece 1S2P’de bulunan PWM kanalları için geçerlidir.
Şekil 2: İletişim Kuralları.
Rev. 01.02.2021 || Lentark®, 2020 Sayfa 5/7
Kural 2 – Protokol, İşlem Süresi ve Sınırlar:
Protokol Bilgileri: Sınırlar:
Mod: Asenkron
Baud Rate: 9600 /19200 / 57600 / 115200 Veri Polaritesi: Aktif-Yüksek
Rx Alış Bitleri: 8 Bit
İşlem_Süresi:
Eğer Pwm-Core’un Tx[Rx_Rdy] pini kullanılmayacak ise gönderilen verinin tam ve eksiksiz alınabilmesi için mutlaka Pwm-Core’un işlem süresi göz önünde bulundurulmalıdır, ilk gönderilen verinin işlemleri devam ederken ikinci veri bekletilmelidir. Tablo 5’de belirtilen süreler, belirlenen en yüksek ve tipik işlem sürelerini göstermektedir. Ancak her konfigürasyon farklı bir dizi matematiksel işlemden geçtiği için belirtilen işlem sürelerinin dışına çıkmayacağı garanti edilemez.
İletişim Kuralları Hızlı Örnekler:
SPWM103F – 2S0P
SPWM103F – 1S2P
Konfigürasyon Tipik En Fazla SPwm Periyot 10.520 ms 32.00 ms Örnekleme 7.210 ms 32.00 ms Dead-Time Oranı 7.120 ms 32.00 ms Pwm Periyot 4.250 ms 5.175 ms
Faz 3.325 ms 4.290 ms
Çalışma Oranı 3.795 ms 4.850 ms Tablo 5: İşlem Süreleri.
Rev. 01.02.2021 || Lentark®, 2020 Sayfa 6/7
Kodlama İçin Örnekler:
SPWM103F – 2S0P
//SPWM103F_2S0P
#define Rx_Ready 10 //Any Input Pin
#include <SoftwareSerial.h>
SoftwareSerial _mySerial(10, 11);// RX, TX //---Baud Rate---
//Baud Rate: 4 -> 9600 | 3 -> 19200 | 2 -> 57600 | 1 -> 115200 uint16_t cong_Baud_[2]= {4, 0};
// Channel 1 : S_1 & !S_1 Outputs // Channel 2 : S_2 & !S_2 Outputs
// {x, y} : {x -> Integer Part, y -> Floating Part}
// Examples:
// 500.00 -> {500,0} 60.00 -> {60,0} 9.00 -> {9,0}
// 350.07 -> {350,7} 60.01 -> {60,1} 0.09 -> {0,9}
// 350.79 -> {350,79} 60.10 -> {60,10} 0.90 -> {0,90}
//---Period Type--- // S: Seconds | M: Milliseconds | U: Microseconds uint8_t channel_1_SMU_= 'M';
uint8_t channel_2_SMU_= 'M';
//---Period of the Entire Sinus Model--- uint16_t channel_1_period_[2]= {20, 0};
uint16_t channel_2_period_[2]= {16, 67};
//---Number of Samples--- uint16_t channel_1_samples_[2]= {22, 0};
uint16_t channel_2_samples_[2]= {18, 0};
//---Dead-Time Ratio--- uint16_t channel_1_dt_[2]= {4, 75};
uint16_t channel_2_dt_[2]= {6, 0};
void setup() {
Serial.begin(9600); while (!Serial) {;}
_mySerial.begin(9600); // Set Baud Rate
pinMode(Rx_Ready, INPUT_PULLUP); // Set Rx_Ready to input & Turn on pull-up resistors
//send_configuration(1, 'B', cong_Baud_);
send_configuration(1, channel_1_SMU_, channel_1_period_);
send_configuration(2, channel_2_SMU_, channel_2_period_);
send_configuration(1, 'N', channel_1_samples_);
send_configuration(2, 'N', channel_2_samples_);
send_configuration(1, 'T', channel_1_dt_);
send_configuration(2, 'T', channel_2_dt_);
}
void loop() {
if (Serial.available()) {int a =Serial.read();
_mySerial.write(a);Serial.write(a);}
}
void send_configuration (uint8_t _ch, uint8_t _conf, uint16_t*
_value){
char _buffer[12]; // Buffer sprintf(_buffer,
"%d%c%d.%02d%c\n\r",_ch,_conf,_value[0],_value[1],'*'); //
Prepare the buffer Note: \n\r is not necessary
while(!digitalRead(Rx_Ready)); delayMicroseconds(50); // Wait for the Pwm-Core to be ready
_mySerial.write(_buffer); // Send buffer to Pwm-Core Serial.write(_buffer);
}
//End of CODE //Outputs:
// 1M20.00*
// 1N22.00*
// 1T4.75*
// 2M16.67*
// 2N18.00*
// 2T6.00*
SPWM103F – 1S2P
//SPWM103F_1S2P
#define Rx_Ready 10 //Any Input Pin
#include <SoftwareSerial.h>
SoftwareSerial _mySerial(10, 11);// RX, TX //---Baud Rate---
//Baud Rate: 4 -> 9600 | 3 -> 19200 | 2 -> 57600 | 1 -> 115200 uint16_t cong_Baud_[2]= {4, 0};
// Channel 1 : S_1 & !S_1 Outputs // Channel 2 : P_1 Output // Channel 3 : P_2 Output
// {x, y} : {x -> Integer Part, y -> Floating Part}
// Examples:
// 500.00 -> {500,0} 60.00 -> {60,0} 9.00 -> {9,0}
// 350.07 -> {350,7} 60.01 -> {60,1} 0.09 -> {0,9}
// 350.79 -> {350,79} 60.10 -> {60,10} 0.90 -> {0,90}
//---Period Type--- // S: Seconds | M: Milliseconds | U: Microseconds uint8_t channel_1_SMU_= 'M';
uint8_t channel_2_SMU_= 'M';
uint8_t channel_3_SMU_= 'M';
//---Period of the Entire Sinus Model--- uint16_t channel_1_period_[2]= {20, 0};
//---Number of Samples--- uint16_t channel_1_samples_[2]= {22, 0};
//---Dead-Time Ratio--- uint16_t channel_1_dt_[2]= {8, 75};
//---PWM Period Calibration--- /* Calibration value is required for period values outside the maximum limits specified in the technical document : 250 msec - 120 sec*/
uint16_t channel_Tune_[2]= {5, 50}; // Default Value: {5, 0}
//---Period of PWM--- uint16_t channel_2_period_[2]= {10, 0};
uint16_t channel_3_period_[2]= {10, 0};
//---Phase--- uint16_t channel_2_phase_[2]= {0, 0};
uint16_t channel_3_phase_[2]= {180, 0};
//---Duty Cycle--- uint16_t channel_2_duty_[2]= {47, 50};
uint16_t channel_3_duty_[2]= {47, 50};
void setup() {
Serial.begin(9600); while (!Serial) {;}
_mySerial.begin(9600); // Set Baud Rate
pinMode(Rx_Ready, INPUT_PULLUP); // Set Rx_Ready to input & Turn on pull-up resistors
//send_configuration(1, 'B', cong_Baud_);
//send_configuration(1, 'C', channel_Tune_);
send_configuration(1, 'N', channel_1_samples_);
send_configuration(1, channel_1_SMU_, channel_1_period_);
send_configuration(1, 'T', channel_1_dt_);
send_configuration(2, channel_2_SMU_, channel_2_period_);
send_configuration(2, 'P', channel_2_phase_);
send_configuration(2, 'D', channel_2_duty_);
send_configuration(3, channel_3_SMU_, channel_3_period_);
send_configuration(3, 'P', channel_3_phase_);
send_configuration(3, 'D', channel_3_duty_);
}
void loop() {
if (Serial.available()) {int a = Serial.read();
_mySerial.write(a);Serial.write(a);}
}
void send_configuration (uint8_t _ch, uint8_t _conf, uint16_t*
_value){
char _buffer[12]; // Buffer sprintf(_buffer,
"%d%c%d.%02d%c\n\r",_ch,_conf,_value[0],_value[1],'*'); //
Prepare the buffer Note: \n\r is not necessary
while(!digitalRead(Rx_Ready)); delayMicroseconds(50); // Wait for the Pwm-Core to be ready
_mySerial.write(_buffer); // Send buffer to Pwm-Core Serial.write(_buffer);
}
//End of CODE //Outputs:
// 1M20.00*
// 1N22.00*
// 1T4.75*
//
// 2M10.00*
// 2P0.00*
// 2D47.20*
//
// 2M10.00*
// 2P180.00*
// 2D47.20*
Rev. 01.02.2021 || Lentark®, 2020 Sayfa 7/7