From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI Ürünleri İle İlgili Tartışmalar

cancel
Showing results for 
Search instead for 
Did you mean: 

3 faz jenerator un stator gerilimi ve avr by arduino

Slm ıyi günler ,
Yeni arduino kullaniciyim, kendi hazirlamis olduğum 3 faz senkron motoruma avr katmanı ekliycem, ama statordan gelen gerilimi arduino kartımdan nasıl okurum, adc girişinden sonra hangi adımı izlememem gerekli, yardımcı olabiliecek kişiden şimdiden teşekkür ederim..labview yada programdaki olrak
0 Kudos
Message 1 of 6
(5,646 Views)
Ac sinyal okunucak
0 Kudos
Message 2 of 6
(5,645 Views)

Merhaba Emre,

 

Öncelikle arduino karta giren AC sinyalin kart için güvenli aralıkta olduğuna emin olman gerekir.

Örneğin arduino'ya negatif bir gerilim ya da 5V'u geçen bir gerilim vermen kartında hasara neden olabilir.

 

Ölçmek istediğin sinyali öncelikle bu aralığa getirmen gerekecektir. Öncelikle negatif yönde salınma varsa bunu uygun bir rectifier ile doğrultabilir, genliği de yine direnç bölücü ile 0-5V aralığına indirebilirsin.

 

Daha sonra sinyal frekansının en az 2 katı bir hızla (sinyalin 50Hz ise en az saniyede 100 kere) arduino koduna analogRead() yaptırman gerekir.

 

Buraya kadar geldikten sonra, gerilim ölçümünü bilgisayarda göstermek için 2 yol var:

 

analogRead() ile aldığın her gerilim örneğini (10 bit'lik değerler olduğu için 2'şer byte halinde) seri porttan LabView koduna gönderebilir. Kodunda yeterli örnek oluştuktan sonra RMS, peak gibi değerleri kodunda hesaplayıp ekranda gösterebilirsin.

 

Ya da, arduino ile belirli bir süre (örneğin 1 saniyelik pencereler halinde) topladığın örneği arduino hafızasında (short tipinde array tanımlayarak) biriktirip daha sonra hesaplamaları yapıp sonucu yine seri porttan LabView'a gönderebilirsin.

 

Arduino herhangi bir anda tek bir işle meşgul olabileceği için analogRead() haricinde yazacağın her kod örnekleme hızını düşürecektir. Bu yüzden hesaplama kısımlarını bilgisayara bırakmak daha iyi olabilir.

 

Yaptığın ölçümleri tek tek bilgisayara gönderirken de yüksek bir baud rate'i seçersen (115200 veya daha üstü) gönderme sırasında arduino kodun fazla zaman harcamadan yeniden analogRead() işine geri dönebilir.

 

Bilgisayara ulaşan gerilim verileri 0 ile 1024 arasında sayılar olacaktır. Çünkü analogRead fonksiyonu 0-5V aralığını 1024 parçaya bölerek okuduğu gerilimin hangi parçaya denk geldiğini sana söyler.

Önce bunları geri VOLT cinsine dönüştürmen gerekir.

 

Daha sonra eğer orijinal stator gerilimini arduino'ya bağlamak için direnç bölücü gibi bir yöntemle gerilimi düşürdüysen bu işlemi tersine çevirerek orjinal stator gerilimine ulaşacaksın.

 

Kolay gelsin...

S. Eren BALCI
IMESTEK
Message 3 of 6
(5,632 Views)

Aşağıdaki link'e bir göz atmanı tavsiye ederim.

Analog okuma ile ilgili güzel denemeler ve örnek kodlar var.

 

http://meettechniek.info/embedded/arduino-analog.html

 

Sayfada Free Running Sampling başlığı altında arduino loop() kodunu meşgul etmeden, interrupt ile nasıl analog okuma yapılacağı hakkında da kısa ama güzel bir örnek var.

 

Önce basit olması açısından loop() içinde analogRead() ile okuyarak projeyi gerçekleyip, bunu başardıktan sonra örnekleme hızını artırmak için interrupt tabanlı bir yöntemi de deneyebilirsiniz.

S. Eren BALCI
IMESTEK
Message 4 of 6
(5,630 Views)

sağolun eren balcı beyfendi, çok tesekkur ediyorum bilgiler için, yazdıklarınız inceledim ve halen bakmaktayım. ama lakin bu boundrate oranı sanırım arduino uno için 9600 diye biliyorum, ama farklı bir boundrate yazabilirmiyim yani dediğiniz gibi 115200. bu boundarate oranı sanırıım Mega için gecerli. yani şuan için elimde sadece uno mevcut. 

Tez olarak 3 phase synchonours motor (generator) ü kendim tasarlayıp daha sonra bunu jenerator oralarak kullanarak statoruna automatic voltage regulator (avr) eklemek. basitce jeneratorun çalışma mantığı. rotorumuza DC besleme yapıp sonra rotoru baska bir motor yada el yardımı ile dönderip. Statoru  manyetiklemek sonra ordan elde ettiğimiz voltaj değerlerine bakıp fazla ise rotora verilen akımın azaltılması gerekicek azsa da tam tersi..

 

burda arduinonun görevi satordaki gerlimleri sanırım pwm moduna çevirmek olucak.. reticifer dan sonra tam dalga dogrultumuz sınyali okuyup ona göre rotor akımını ayarlamak 🙂 

 

yanıtınız ve bilgilendimeleriniz için çok teşekkür ederim, çalışmalrınızda da başarılar dilerim.

 

Saygılar, Emre Öztoklu

0 Kudos
Message 5 of 6
(5,624 Views)
Merhaba Emre,

Yanıtını az önce şans eseri gördüm. Biraz geç cevap yazıyorum kusura bakma 😉

Uno'nun 9600 gibi bir limiti yok. O da Mega gibi pekala 115200 hızına çıkabiliyor.
Böyle bir limit olduğunu nerde okudun?

Biliyorsundur muhtemelen ama yine yazayım, Arduino'nun hazır pwm çıkış fonksiyonu da var: analogWrite

Tezinde de başarılar dilerim.
S. Eren BALCI
IMESTEK
0 Kudos
Message 6 of 6
(5,397 Views)