Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
116
Cevap
6246
Tıklama
4
Öne Çıkarma
Cevap: Arduino çalışmalarım,,, (5. sayfa)
M
8 yıl
Yarbay
Konu Sahibi

analog= uyartımına uyumlu genlik değişiyor ama maalesef iki çıkışta aynı anda sürülüyor,yani bir HIGH diğeri LOW olmalı ve genlikte aynı oranda olmalı.Giriş voltajı düşük ve yüksek zamanı doluluk oranını gösteren 2 farklı resimle aldığım sonucu göstermeye çalıştım.< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >



G
8 yıl
Yarbay

Sinyaller aynı uzunlukta olacak ama birbirlerinin tersi olacak? Öyleyse B kanalını invert edelim.

TCCR1A = 0xA2; yerine
TCCR1A = 0xB2;
yazıp deneyin.


Yazdığınız kodu da koyun bakalım hata olmasın.





< Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 1 Eylül 2017; 1:2:52 >

M
8 yıl
Yarbay
Konu Sahibi

Merhaba;benim PC'ye bir haller oluyor.Dün sizin kod yazılımlı çalışan .ino dosyasını D'ye kaydetmiştim.Aynı dosyayı bu gün açtığımda boş .ino sayfası çıkıyor hayret.
Bende yeniden derleyip en son yazdığınız düzeltmeyi yapıp çalıştırdığımda; OCR1A = OCR1B = x * voltaj satırında hata verdi.Eklediğim resimde durum görülüyor.Oysa aynı satır dün çalışmıştı.

< Resime gitmek için tıklayın >



M
8 yıl
Yarbay
Konu Sahibi

Resimde görülüyor ama kodları ayrıca ekliyorum.

 

void setup()
{
pinMode (9,OUTPUT);
pinMode (10,OUTPUT);
pinMode (A0,INPUT);
}

void loop()
{
DDRB |= 0x06;
ICR1 = 625;
TCCR1A = 0xB2;
TCCR1B = 0x14;
OCR1A = 312;

unsigned int voltaj = 1023 - analogRead(A0);
OCR1A = OCR1B = x * voltaj;

}



G
8 yıl
Yarbay

 
const float x = 625.0 / 1023.0;

void setup()
{
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
pinMode (A0, INPUT);

ICR1 = 625;
TCCR1A = 0xB2;
TCCR1B = 0x14;
}

void loop()
{
OCR1A = OCR1B = x * analogRead(A0);
}


Biraz daha sadeleştirdim. x tanımlanmamış, onu ekledim. Gereksizleri çıkardım.



M
8 yıl
Yarbay
Konu Sahibi

Eyvallah hocam,pro. çalıştı,tek problem her uyartım voltajı değişiminde(analog0) 2 çıkışın birinin genliği değişiyor,yani sonuca ulaşamadık henüz ama iyice yaklaştık diyorum.Demek istediğimi resimlerle anlatmaya çalıştım.
Benim istediğim;2 çıkışında genliği % 50 ile başlayacak uyartım voltajı değiştikçe genlik düşecek,azalacak.Tabi 2 çıkışında aynı anda genliği etkilenecek yani azalacak.Diyelim ki analog0 voltajı 4,5VDC iken % 50 çıkış veriyorsa 0,2-0,3VDC olduğunda % 1'e genlik düşsün,,,0,1 voltlarda genlik sıfır olsun.Yam da tam tersi voltaj da olabilir.Yani (analog0 uyartım)artı volt yükseldikçe genlik azalabilir.Elinize sağlık tekrar teşekkür ederim.< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi malisert32 -- 1 Eylül 2017; 16:36:4 >


Bu mesajda bahsedilenler: @elektro_gadget
G
8 yıl
Yarbay

Yaptığımız şey şu. Giriş voltajına doğru orantılı olarak pinlerin genliğini değiştiriyoruz. Yani analog voltaj arttıkça genlik artar. Yanlız 9. pin high olarak genişlerken 10. pin invert olduğu için low olarak genişler. Yani bu pinler HER ZAMAN birbirinin zıttıdır. İstediğiniz bu değil miydi?

Bir de 4.5 voltta %50 genlik olmaz, %90 olur. Çünkü 4.5V, 5V'un %90'nı dır. Eğer farklı voltaj aralıklarında farklı genlik istiyorsanız bunun için yazılımla oynamak gerekir. Bizim yaptığımız direkt orantı.

TCCR1A register'ının değerleriyle oynayarak farklı çıkışlar elde edebilirsiniz. Tabi iki çıkışında aynı olması mantıklı olmaz.
 
------- 9. pin - 10. pin
0xA2 H H
0xB2 H L
0xE2 L H
0xF2 L L



M
8 yıl
Yarbay
Konu Sahibi

Anlıyorum.İn voltajı bir şekilde ayar edilir.Ben araştırmaya devam edeyim.Bir olumlu sonuç bulursam yazarım,teşekkür ederim.




Bu mesajda bahsedilenler: @elektro_gadget
G
8 yıl
Yarbay

Sorunu çözemezsek strese girerim. Hocam istediğin şu aşağıdaki resimdeki şey değil mi? Eğer buysa sadece şu soruya detaylı bir cevap ver sorunu çözelim.

Max genlik % kaç olacak? %50 mi, %100 mü yoksa başka bişey mi?
Max genliğe kaç volt ile ulaşacak? 1v, 3v, 5v?

< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.
M
8 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: elektro_gadget

Sorunu çözemezsek strese girerim. Hocam istediğin şu aşağıdaki resimdeki şey değil mi? Eğer buysa sadece şu soruya detaylı bir cevap ver sorunu çözelim.

Max genlik % kaç olacak? %50 mi, %100 mü yoksa başka bişey mi?
Max genliğe kaç volt ile ulaşacak? 1v, 3v, 5v?

< Resime gitmek için tıklayın >

Max. % 50 genlik ile başlayıp analog-in voltajı sıfırdan(GND'den)başlayıp yükseldikçe genlik azalsın.3-3,5 VDC'lerde genlik sıfıra düşsün.Hatda bu max. voltajı ayar edebilelim.Ör; analogWrite(ledPin, val / 0.4); bu yazılımdaki 0.4 rakamını 4 yaparsam daha geniş voltaj aralığında genliğin değiştiği gibi...Kolay gelsin.



G
8 yıl
Yarbay

Hocam arduinoda AREF diye bir pin var. Oraya bir referans voltaj veriyorsun, ona göre ölçüm yapacak. Kaç voltta %50 genlik istiyorsan oraya o voltajı vereceksin. Böylece max voltaj ayarlanabilir olacak.

Koddan max genlik seviyesini değiştirebilmen de mümkün. "#define MAX_GEN 50.0" yazan yerdeki 50.0'yi istediğin sayı ile değiştirebilirsin. Bir dene bakalım ne olacak.


 
#define MAX_GEN 50.0

const float x = (MAX_GEN / 100.0) * 625.0 / 1023.0;

void setup()
{
analogReference(EXTERNAL);
pinMode (A0, INPUT);
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);

ICR1 = 625;
TCCR1A = 0xB2;
TCCR1B = 0x14;
}

void loop()
{
OCR1A = OCR1B = x * (1023 - analogRead(A0));
}



M
8 yıl
Yarbay
Konu Sahibi

Hocam size de baya zahmet verdik kusura bakmayın..Sonuç maalesef aynen öncekiler gibi,Aref voltajını 2,06V'da sabit tutuyorum.Pot ile analog0'dan voltajı değiştiğinde 2 uç nokta voltajında dalga şekli aynen resimlerdeki gibi...< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >



M
8 yıl
Yarbay
Konu Sahibi

İstediğim yazılım sonucu eklediğim resimlerdeki gibi olmalı.Bu resimlerde SG3526 ile 50Hz. inverter çalışmasından 2 farklı kesit var.RD pini ile genliğini değiştiriyoruz ama maalesef FB ile bunu yapmıyor.Diğer entegreler de bunu yapmak yerine çalışmayı anlık durdurup başlattığı için bozuk sinüslü inverter yapmış oluyoruz namı diğer modifiye sinüs inverter oluyor.
2 çıkışın da genliği aynı anda ve aynı oranda değişmesi gerekiyor.
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >



G
8 yıl
Yarbay

Yazılımla uğraşmak benim için zevkli iş, isteyerek yapıyorum ama elektronik bilgim kıt olduğu istenilen şeyi anlamakta zorlanıyorum.

Şimdi hocam en başta zaten 2 çıkışı da aynı yapmıştık ta olmaz demiştin ya? Biri high biri low olacak demiştin. Ben de çıkışlardan birini tersine çevirmiştim, ama yanlış anladım heralde. Çıkışları eşitlemek için;
TCCR1A = 0xA2;

yapman yeterli. Ancak bu son koyduğun resimlerden anladığım kadarıyla istediğin şey ikisi de değil. Sinyallerden biri diğerinin ortasına konumlanmış. Eğer istediğin buysa arduinoda bunu yapmak kolay olmaz.



M
8 yıl
Yarbay
Konu Sahibi

Bende de tam tersi hocam,,henüz 1 aylık arduinocuyum,çırak bile sayılmam..Ama elektronik bilhassa güç elektroniği de benim için sorun değil.Esasen ben arduino'yu 1=bu devre için ve 2=2 dakika çalış 5 dak. kapat gibi istekler için öğrenmek zorunda kaldım,öğrenmeye çalışıyorum daha doğrusu...
Bu tekniği ısrarla istememden amaç;2 kademe de tam sinüs inverter sonucu alıyorum ve ben bunu 1 kademe de(tek kat devre ile)sonuç alma babından ısrarcı oluyorum.

Önceden de dediğim gibi evet henüz çırağım ama "TimerOne.h" ile 2x50 Hz sürdüğüm çıkışların doluluk oranını yine yazılım ile(ör.= duty cycle = 350,,,yada 100 gibi) ayarlıyorum sorun değil.Sorun bir FB (analogIn)ile yani çıkış voltajının anlık durumuna göre devamlı duty oranı değişimiyle full kontrol arzusundayım.
Şu eklediğim resim;yazılım ile duty oranını kontrol ettiğim devreden bir kesit.A< Resime gitmek için tıklayın >ynen SG3526 resimlerindeki gibi,istediğim olan teknikdir.





< Bu mesaj bu kişi tarafından değiştirildi malisert32 -- 2 Eylül 2017; 22:38:36 >

M
8 yıl
Yarbay
Konu Sahibi

Bu gün yeni 2004 ve 1602 LCD'ler,,,32x8 dotmatrix,,,DHT11 sensörler,UNO'lar ve diğer elemanlar geldi.Hazırladığım NEM ve ISI yazılımını hemen yükledim.Sonuç gerçekten güzel.4-5 ad. 16x02 2 ad.20x4 LCD'lerin bağlantısını lehimleyip denedim,hepsi full sağlam.Bu arada belirteyim;Nem sensörü gerçekten çok hassas anlık değişimleri dahi hemen LCD'ye yansıtıyor.Yakından üzerine üflediğimde nefesimin nemi % 40lara çıkarıyor,süpermiş gerçekten.
Dot matrix,,de maalesef problem var,32x8'e uygun şöyle adam gibi bir yazılım bulamadım.Ayrıca Yazılar tersine akıyor,araştırmaya devam...< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >



G
8 yıl
Yarbay

Bu problem sayesinde elimdeki bazı malzemeleri denemiş oldum. Aliexpress'ten daha önce alıp hiç kullanmadığım lojik analizör ve yeni gelmiş STM32F0 lar vardı. Smd çip şeklinde çok ucuza alıp kendim lehimledim. Biraz referans döküman karıştırarak çift timer ile istediğiniz çıkışları elde ettim.

< Resime gitmek için tıklayın >


Aynı tekniği arduino için de uyarlamaya çalıştım ama elimde ne arduino var ne windows. Yani denemesi senden hocam. Yine AREF pini ile tepe voltajını ayarlıyorsun. Unutmadan bu sefer çıkış için 3. ve 10. pinleri kullanıyorsun.



#define TOP_VAL 156
const float x = (TOP_VAL / 2.0) / 1023.0;

void setup()
{
analogReference(EXTERNAL);
pinMode (A0, INPUT);
pinMode (3, OUTPUT);
pinMode (10, OUTPUT);

OCR1A = OCR2A = TCNT2 = TOP_VAL;
TCNT1 = 0;
TCCR1A = 0x33;
TCCR2A = 0x31;
TCCR1B = 0x15;
TCCR2B = 0x0F;
}

void loop()
{
OCR2B = OCR1B = x * analogRead(A0);
}





< Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 5 Eylül 2017; 0:59:11 >

M
8 yıl
Yarbay
Konu Sahibi

Merhaba;hocam maalesef 3 no çıkış çalışmadı sadece 10 no. çıkış veriyor.Resim ekliyorum.
Edit;Bu arada eğer güç elektroniği-yenilenebilir enerji hk. bir probleminiz olursa buradan yada özelden yazın,çözeriz inşallah.Bu devreyi çözdüğümüzde bakarsınız sizde bir inverter yaparsınız.
Analizör gerçekten gerekli bende de PC osiloskop'un analizör ve Lissajauss programı var,faydası oluyor tabi...

< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi malisert32 -- 5 Eylül 2017; 1:47:10 >

G
8 yıl
Yarbay

Şunu dene hocam. Olmazsa atmega328 ile fiziksel olarak denerim. Simulatörlere pek güvenmiyorum.

 
#define TOP_VAL 156
const float x = (TOP_VAL / 2.0) / 1023.0;

void setup()
{
analogReference(EXTERNAL);
pinMode (A0, INPUT);
DDRD |= 0x08;
DDRB |= 0x04;

OCR1A = OCR2A = TOP_VAL;
TCNT1 = 0;
TCNT2 = TOP_VAL - 1;
TCCR1A = 0x33;
TCCR2A = 0x31;
TCCR1B = 0x15;
TCCR2B = 0x0F;
}

void loop()
{
OCR2B = OCR1B = x * analogRead(A0) + 78;
}





< Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 5 Eylül 2017; 2:46:49 >

C
8 yıl
Yüzbaşı

Kolay gelsin