Tam program kodlu Arduino saf sinüsünde inverter 12-220 volt.
teori
Sinüs dalgası çıkışı elde etmek oldukça zordur ve inverterler için önerilemez, çünkü elektronik cihazlar genellikle katlanarak artan akımları veya gerilimleri sevmez. İnvertörler esas olarak katı hal elektronik cihazları kullanılarak üretildiğinden, genellikle sinüzoidal bir dalga şekli ortadan kaldırılır.
Sinüzoidal dalgalarla çalışırken elektronik güç cihazları etkisiz sonuçlar verir, çünkü kural olarak cihazlar dikdörtgen darbelerle karşılaştırıldığında ısıtılır.
Bu nedenle, bir invertör üzerine sinüs dalgası uygulamak için en iyi seçenek PWM'dir, bu da darbe genişliği modülasyonu veya PWM'dir.
PWM, net değeri tam olarak seçilen üstel dalga formunun net değerine göre hesaplanan, oransal olarak değişen kare darbe genişlikleri yoluyla üstel dalga formu maruziyetinin geliştirilmiş bir yoludur (dijital versiyon), burada "saf" değer RMS değerini ifade eder. Bu nedenle, belirli bir sinüs dalgasına referansla hesaplanan PWM, belirli bir sinüs dalgasının replikasyonu için ideal bir eşdeğer olarak kullanılabilir. Buna ek olarak, PWM'ler elektronik güç cihazlarıyla (mosfetler, BJT'ler, IGBTS) ideal bir şekilde uyumlu olacak ve minimum ısı ile kullanılmalarına izin verecektir.
SPWM nedir?
En yaygın yöntem, gerekli işleme için operasyonel bir amplifikatörün girişine birkaç üstel değişken sinyal uygulayarak bir PWM sinewaver (sinüs dalgası) veya SPWM üretmektir. İki giriş sinyali arasında biri diğerine göre frekans bakımından çok daha yüksek olmalıdır.
İki giriş sinyali kullanma
Önceki bölümde belirtildiği gibi, prosedür, işlemsel amplifikatörün girişlerine üstel olarak değişen iki sinyalin verilmesini içerir.
Burada, işlemsel yükselteç tipik bir karşılaştırıcı olarak yapılandırılmıştır, bu nedenle işlemsel yükselticinin bu iki üst üste bindirilmiş sinyalin anlık voltaj seviyelerini göründükleri veya girişlerine uygulandığı anda karşılaştırmaya başlayacağını varsayabiliriz.
İşlemsel yükselticinin çıkışında gerekli sinüzoidal PWM'yi doğru bir şekilde uygulayabilmesi için, sinyallerden birinin diğerinden çok daha yüksek bir frekansa sahip olması gerekir. Buradaki daha yavaş frekans, PWM'ler tarafından simüle edilmesi (çoğaltılması) gereken numunenin sinüs dalgası olması gereken frekanstır.
İdeal olarak, her iki sinyal de sinüsoidal (biri diğerinden daha yüksek frekansa sahip olmalıdır), ancak aynı şey üçgen dalga (yüksek frekans) ve sinüs dalgası (düşük frekanslı seçici dalga) dahil edilerek gerçekleştirilebilir. Aşağıdaki görüntülerde görülebileceği gibi, yüksek frekanslı sinyal her zaman işlemsel yükselticinin evirici girişine (-) beslenirken, işlemsel yükselticinin evirmeyen (+) girişine daha yavaş bir sinüzoidal sinyal verilir. En kötü durumda, her iki sinyal de yukarıda tarif edildiği gibi önerilen frekans seviyelerine sahip üçgen dalgalar olabilir. Bununla birlikte, bu, PWM sinüs dalgasının oldukça iyi bir eşdeğerinin elde edilmesine yardımcı olacaktır.
Daha yüksek frekansa sahip bir sinyale taşıyıcı sinyali, daha yavaş bir örnek sinyale ise modüle edici giriş denir.
Üçgen ve tendon dalgası ile SPWM oluşturun
Yukarıdaki şekle istinaden, çizilen noktalar boyunca, belirli bir süre boyunca iki sinyalin çeşitli çakışan veya çakışan voltaj noktalarını açıkça görselleştirmek mümkündür. Yatay eksen dalga formunun zaman periyodunu gösterirken, dikey eksen aynı anda çalışan 2'nin üst üste gelen dalga formunun voltaj seviyelerini gösterir. Şekil, operasyonel amplifikatörün iki sinyalin gösterilen çakışan anlık voltaj seviyelerine nasıl tepki vereceğini ve çıkışında buna uygun olarak değişen bir sinüzoidal PWM üreteceğini bildirir. Operasyonel bir amplifikatör (op-amp), sinüs dalgasını anında değiştiren hızlı bir üçgen dalganın voltaj seviyelerini karşılaştırır (ayrıca bir üçgen dalga olabilir) ve üçgen dalga formunun voltajının sinüs dalgasının voltajından daha düşük olabileceği durumları kontrol eder ve yanıt verir hemen çıkışlarınızda yüksek mantık oluşturun.
Bu, üçgenin potansiyel dalgası sinüs dalgasının potansiyelinden daha düşük olmaya devam ettiği sürece devam eder ve sinüs dalgasının potansiyelinin, üçgenin dalgasının anlık potansiyelinden daha düşük olduğu tespit edildiğinde, çıkışlar minimumla geri döner ve durum tekrarlanana kadar dayanır.
İşlemsel amplifikatörlerin iki girişindeki üst üste binmiş iki dalga formunun anlık potansiyel seviyelerinin bu sürekli karşılaştırması, işlemsel amplifikatörün evirmeyen girişine uygulanan sinüzoidal şekli doğru bir şekilde tekrarlayabilen karşılık gelen değişen PWM'lerin oluşturulmasına yol açar.
İşlemsel Yükselteç ve SPWM
Aşağıdaki şekil gösterir modelleme yukarıdaki işlem:
Burada pratikte nasıl uygulandığını gözlemleyebiliriz ve işlemsel amplifikatör de aynısını yapacaktır (çok daha yüksek bir hızda, MS'de).
İşlem oldukça açıktır ve önceki bölümlerde açıklandığı gibi girişlerinde eşzamanlı olarak değişen iki sinyali karşılaştırarak işlemsel amplifikatörün PWM sinüs dalgasını nasıl işlemesi gerektiğini açıkça gösterir.
Aslında, operasyonel amplifikatör sinüzoidal PWM'yi yukarıda gösterilen simülasyondan çok daha doğru bir şekilde işleyecektir, 100 kat daha iyi olabilir ve tedarik edilen örnekle eşleşen son derece düzgün ve iyi ölçülmüş PWM oluşturabilir. Sinüs dalgası.
Arduino inverter iki devre
parça listesi
Tüm 1/4 Watt Dirençler,% 5 CFR
• 10K = 4
• 1K = 2
• BC547 = 4 adet
• MOSFET'ler IRF540 = 2 adet
• Arduino UNO = 1
• Transformatör = 9-0-9V / 220V / 120V.
• Batarya = 12V
Tüm 1/4 Watt Dirençler,% 5 CFR
• 10K = 4
• 1K = 2
• BC547 = 4 adet
• MOSFET'ler IRF540 = 2 adet
• Arduino UNO = 1
• Transformatör = 9-0-9V / 220V / 120V.
• Batarya = 12V
Tasarım, aşağıdaki şekilde gösterildiği gibi, aslında çok basittir.
Pim # 8 ve pim # 9 dönüşümlü olarak PWM oluşturur ve aynı PWM ile Mosfetleri değiştirir.
Mosfet, akünün gücünü kullanarak, transformatör üzerinde yüksek akımlı bir SPWM dalga formunu indükler ve ikincil transformatörün aynı dalga formunu üretmesine neden olur.
Önerilen Arduino inverter devresi, sırasıyla Mosfetleri ve transformatörü değiştirerek tercih edilen herhangi bir yüksek güç seviyesine yükseltilebilir, alternatif olarak, bunu tam bir köprüye veya H köprüsü sinüs dalgası invertörüne de dönüştürebilirsiniz.
Arduino Kurulu Gücü
Arduino SPWM için Dalga Formu Görüntüleri
Arduino 5V çıkış üreteceğinden, bu doğrudan MOS transistörlerini kontrol etmek için ideal olmayabilir.
Bu nedenle, Mosfetlerin cihazları ısıtmadan doğru çalışması için flaş seviyesini 12 V'ye yükseltmek gerekir.
Arduino başladığında veya başladığında Mosfety'nin başlamamasını sağlamak için, aşağıdaki gecikme jeneratörünü eklemeniz ve BC547 transistörlerin tabanına bağlamanız gerekir.Bu, Mosfetleri koruyacak ve bir güç anahtarı sırasında ve Arduino önyükleme yaptığında yanmalarını önleyecektir.
Otomatik Voltaj Regülatörü Ekleme
Diğer tüm inverterlerde olduğu gibi, bu tasarımın çıkışında da akü tamamen şarj olduğunda akım güvenli olmayan sınırlara yükselebilir.
Bunu kontrol etmek için bir otomatik voltaj regülatörü ekleyin.
BC547 kolektörleri, Arduino'ya 10K dirençler ile bağlanan sol BC547 çiftinin tabanlarına bağlanmalıdır.
Sn7404 / k155ln1 yongasını kullanan invertörün ikinci versiyonu
Bu önemlidir:
Arduino'yu yüklemeden önce yanlışlıkla açmayı önlemek için, yukarıdaki tasarıma aşağıda gösterildiği gibi basit bir gecikme dahil edilebilir:
Program kodu:
/ *
Bu kod, hataları gidermek için yapılan değişikliklerle Swagatam SPWM kodunu temel aldı. Bu kodu, başka herhangi bir Swagatam’ın çalışmasında kullandığınız gibi kullanın.
Atton Riski 2017
* /
const int sPWMArray [] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500}; // Bu, SPWM değerlerinin istenildiği gibi değiştirildiği dizidir
const int sPWMArrayValues = 13; // Buna ihtiyacınız var çünkü C size bir Dizinin uzunluğunu vermiyor
// Pimler
const int sPWMpin1 = 10;
const int sPWMpin2 = 9;
// Pim anahtarları
bool sPWMpin1Status = doğru;
bool sPWMpin2Status = doğru;
geçersiz kurulum ()
{
pinMode (sPWMpin1, ÇIKIŞ);
pinMode (sPWMpin2, ÇIKIŞ);
}
void loop ()
{
// Pim 1 için döngü
için (int i (0); i! = sPWMArrayValues; i ++)
{
eğer (sPWMpin1Status)
{
digitalWrite (sPWMpin1, YÜKSEK);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = yanlış;
}
başka
{
digitalWrite (sPWMpin1, DÜŞÜK);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = doğru;
}
}
// Pim 2 için döngü
için (int i (0); i! = sPWMArrayValues; i ++)
{
eğer (sPWMpin2Status)
{
digitalWrite (sPWMpin2, YÜKSEK);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = yanlış;
}
başka
{
digitalWrite (sPWMpin2, DÜŞÜK);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = doğru;
}
}
}
İyi şanslar.