STM32, PWM ve H-Bridge

en önemli ve meşakkatli kısımlardan birisi de akım okuma. nerede ve nasıl okuyacağın çokomelli. sensör mü kullanmayı planlıyorsun, şönt direnç mi?
 
en önemli ve meşakkatli kısımlardan birisi de akım okuma. nerede ve nasıl okuyacağın çokomelli. sensör mü kullanmayı planlıyorsun, şönt direnç mi?
Motorun anma akımı 0.8A o yüzden INA226 ile i2c üzerinden 2 akım hattını okuyayım diyorum ama ileride şönt direnci ile okumayı da deneyebilirim. Şönt direnci konusunda tek sıkıntım akımın negatif okunması gerektiği durumlarda bunu nasıl yapacağımı anlamamış olmam. Sanırım en pratik yöntem op-amp+ offsetli adc ama pratik olsun diye şu anlık INA226'ya gideceğim gibi duruyor. Okuma işini de motorun girişinden yapmayı planlıyorum.[math]IC = -(IA+IB)[/math] şeklinde okuyarak da üçüncü akımı bulacağım.
 
Bu bana biraz sakat bir yöntem gibi geldi sonuçta PWM sinyal ve 20kHz gibi seviyelerde çalışacak. Bunun yerine eğer tersliyorsa PWMN ile PWM'i ters düşünürek çalıştırmak daha az yorar gibi ama kaçırdığım bir nokta varsa açıklarsan sevinirim.
Yukarıdaki mesajda @clc açıklamış, benzer cümleler ile bende katkıda bulunayım.
Yazılım ile pwm sinyalinin tersini alabilirsinz burada sorun yok, fakat mcu nun çalışmadığı durumlarda, (mcu açılış sonrası ve pwm donanım ayarlarının yapılıncaya kadar geçen süre, geliştirme devam ederken güç hattı enerji altında iken yeni yazılım yükleme sırası... vb.) HIN ve LIN high olduğunda mosfet sürcüde bir koruma yoksa, Q1 ve Q2 üzerinden besleme hattı kısa devre olur.

İlla ilk yapıdaki gibi bağlantı yapmak istiyorsanız IL2101 yerine IL2102 kullanın.

Öneri: IL21XX vcc si olarak+12V kullanıyorsanız opto kollektöründe kullandığınız +5V u da +12V yapın.
 
Yukarıdaki mesajda @clc açıklamış, benzer cümleler ile bende katkıda bulunayım.
Yazılım ile pwm sinyalinin tersini alabilirsinz burada sorun yok, fakat mcu nun çalışmadığı durumlarda, (mcu açılış sonrası ve pwm donanım ayarlarının yapılıncaya kadar geçen süre, geliştirme devam ederken güç hattı enerji altında iken yeni yazılım yükleme sırası... vb.) HIN ve LIN high olduğunda mosfet sürcüde bir koruma yoksa, Q1 ve Q2 üzerinden besleme hattı kısa devre olur.

İlla ilk yapıdaki gibi bağlantı yapmak istiyorsanız IL2101 yerine IL2102 kullanın.

Öneri: IL21XX vcc si olarak+12V kullanıyorsanız opto kollektöründe kullandığınız +5V u da +12V yapın.

tavsiyeye uyarak optoyu 6N137 olarak değiştirdim. Bu yüzden 12V kullanamıyorum. Devre aşağıdaki hale geldi.


H Bridge 3.JPG

InputEnableOutput
LHH
HHL
LLH
HLH

6N137'nin yukarıdaki gibi bir doğruluk tablosu var. Bu yüzden burada çıkış yazılımsal olarak mecbur ters ayarlanacak.

Uygun bir dead time koyacağım, G-S aralarına TVS diyot atarak da mosfetleri ekstra korumaya alabilirim. Direkt olarak HIN ve LIN'ı aynı anda kısa devre durumundan korumak için yazılımsal ayarların dışında donanımsal olarak yapabileceğim ekstra bir şey var mı?
 
Son düzenleme:
Motorun anma akımı 0.8A o yüzden INA226 ile i2c üzerinden 2 akım hattını okuyayım diyorum ama ileride şönt direnci ile okumayı da deneyebilirim. Şönt direnci konusunda tek sıkıntım akımın negatif okunması gerektiği durumlarda bunu nasıl yapacağımı anlamamış olmam. Sanırım en pratik yöntem op-amp+ offsetli adc ama pratik olsun diye şu anlık INA226'ya gideceğim gibi duruyor. Okuma işini de motorun girişinden yapmayı planlıyorum.[math]IC = -(IA+IB)[/math] şeklinde okuyarak da üçüncü akımı bulacağım.
Akım değeri hangi sıklıkla alınacak? I2C üzerinden 16 bit read mesajı START + SLA+R + ACK + HBYTE + ACK + LBYTE + NACK + STOP = 29 scl kadar zaman alır. 400KHz SCL için >>> 1000/(400/29) =72.5 usec. Bunun dışında datasheet'de Frequency Response grafiği 200 Hz den sonra ciddi düşüş olduğunu söylüyor. Bu da sıkıntılara yol açabilir.
STM32 üzerinde 1Msmp/sec hıza kadar çalışan ADCler var (gerçe o hızlarda hassasiyetle iligili sorunlar çıkıyor diye şikayetler duydum). Lakin ek entegre kullanmaktansa işlemcinin olanakları ile idare etmek daha mantıklı gibi duruyor.
 
Akım değeri hangi sıklıkla alınacak? I2C üzerinden 16 bit read mesajı START + SLA+R + ACK + HBYTE + ACK + LBYTE + NACK + STOP = 29 scl kadar zaman alır. 400KHz SCL için >>> 1000/(400/29) =72.5 usec. Bunun dışında datasheet'de Frequency Response grafiği 200 Hz den sonra ciddi düşüş olduğunu söylüyor. Bu da sıkıntılara yol açabilir.
STM32 üzerinde 1Msmp/sec hıza kadar çalışan ADCler var (gerçe o hızlarda hassasiyetle iligili sorunlar çıkıyor diye şikayetler duydum). Lakin ek entegre kullanmaktansa işlemcinin olanakları ile idare etmek daha mantıklı gibi duruyor.
Vallahi çok güzel yaklaşım ama dediğim gibi işin acemisiyim şu anda. Normalde her bir while döngüsü (artık ne kadar sürerse + 1ms) ile okumayı planlıyordum. Akımları projenin ilerleyen zamanlarında ADC ile okumayı planlıyorum. Şu anda ilk amacım şu motoru H-Bridge ile çalıştırmak ve hızını ayarlayabilmek. Daha profesyonel yaklaşıma bir süre sonra geçeceğim. Söylediklerinizi not aldım.
 
Bu gerilim seviyeleri için izolasyon gerçekten gerekli mi emin değilim? Ben olsam hazır paketli IPM kullanırdım bu arada. Yine de discrete yapacağım derseniz 3-Faz Half Bridge Gate Driver çipleri var onları kullanabilirsiniz, daha kompakt bir çözüm olur. İzolasyonsuz 74HC244 ile güçlendirip gönderin gitsin, hatta direk MCU push pull çıkışlarını bile bağlayabilirsiniz. İzolasyon olsun derseniz TLP2745 kullanabilirsiniz. Optoları yine 74HC244 ile sürebilirsiniz.
 
Akım okuma için faz akımı okunacaksa ACS712 türevi bir ürün yeterli olacaktır. Eğer DC Bus akımı okunacaksa Shunt + Opamp yükselteç yapısı kurgulanabilir. Benim tercihim işleri kolaylaştırmak adına faz akımı ölçmek yönünde olacaktır.
 
Bu gerilim seviyeleri için izolasyon gerçekten gerekli mi emin değilim? Ben olsam hazır paketli IPM kullanırdım bu arada. Yine de discrete yapacağım derseniz 3-Faz Half Bridge Gate Driver çipleri var onları kullanabilirsiniz, daha kompakt bir çözüm olur. İzolasyonsuz 74HC244 ile güçlendirip gönderin gitsin, hatta direk MCU push pull çıkışlarını bile bağlayabilirsiniz. İzolasyon olsun derseniz TLP2745 kullanabilirsiniz. Optoları yine 74HC244 ile sürebilirsiniz.
48V yazıyor ama aslında 400VDC civarı KiCad'de üşendiğim için öyle koymuştum sonra unutmuşum. Bu arada IKCM30F60GA gibi hazır paket IGBT düşündüm ama sonradan fikir değiştirdim. Yani aslında kabaca H-Bridge tarafını bu şekilde bitirmeyi planlıyorum. ACS712'ye gelecek olursak o da bir alternatif aslında o aklımdan çıkmış yoksa fikir olarak onu da düşünüyordum. Bu fikirleri gelecekteki olası değişimler için not alıyorum.
 

Forum istatistikleri

Konular
7,240
Mesajlar
122,522
Üyeler
2,924
Son üye
aytu

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top