Günümüzde meraklılar Fırçasız DC (BLDC) kontrolüne büyük ilgi duyuyor
Geleneksel DC motorla karşılaştırıldığında motorun performansı arttı, enerji verimliliği de arttı, ancak kullanımı daha zor. pek çok hazır ürün mevcuttur.
Bu amaç için
Örneğin, RC uçakları için çok iyi çalışan çok sayıda küçük BLDC kontrol cihazı vardır.
BLDC'nin kontrolüne daha derinlemesine bakmak isteyenler için, endüstriyel kullanıcılar için genellikle çok iyi belgelere sahip birçok farklı mikro denetleyici ve diğer elektronik donanım da bulunmaktadır.
Şu ana kadar Arduino mikro denetleyicisinin BLDC kontrolü için nasıl kullanılacağına dair kapsamlı bir açıklama bulamadım.
Ayrıca, rejeneratif frenleme yapmak veya güç üretimi için BLDC kullanmakla ilgileniyorsanız, küçük motorlarla kullanıma uygun çok fazla ürün bulamadım veya 3 Fazlı jeneratörün nasıl kontrol edileceğini de öğrenmedim.
Bu yapı başlangıçta gerçek zamanlı hesaplamayla ilgili bir hikayedeydi
, kurs bittikten sonra da bunu yapmaya devam ediyorum.
Projenin amacı, volan enerji depolamalı ve rejeneratif frenlemeli bir hibrit otomobilin orantılı modelini göstermektir.
Projede kullanılan motor, bilgisayarın zarar görmüş sabit diskinden temizlenmiş küçük bir BLDC'dir. Bu kılavuz
Arduino mikro denetleyicisinin ve Hall-Affects konum sensörlerinin nasıl kullanılacağını açıklamaktadır .
, sürüş ve rejeneratif frenleme modlarında
Bu projeyi tamamlamak için oscillisoft'u ziyaret etmenin gerekli olmasa da çok yararlı olduğunu lütfen unutmayın.
Kapsama erişemiyorsanız kapsam olmadan nasıl yapabileceğinize dair bazı öneriler ekledim (adım 5).
Bu projenin herhangi bir gerçek motor kontrolörüne dahil etmemesi gereken şey, aşırı akım koruması gibi herhangi bir güvenlik fonksiyonudur.
Aslında en kötüsü HD motorunu yakmanızdır.
Ancak aşırı akım korumasını mevcut donanımla uygulamak zor değil ve belki bir noktada bunu yapacağım.
Daha büyük bir motoru kontrol etmeye çalışıyorsanız, motorunuzu ve kendi güvenliğinizi korumak için lütfen aşırı akım koruması ekleyin.
Bu denetleyiciyi bazı 'gerçek' işler yapabilecek daha büyük bir motorla kullanmayı denemek istiyorum ancak henüz doğru motora sahip değilim.
eBay'in 86 W'lık bir arabayı yaklaşık 40 dolara sattığını fark ettim.
İyi bir aday gibi görünüyor.
Ayrıca kendi BLDC'lerini bir araya getiren kitler satan \'GoBrushless\' adlı bir RC web sitesi de bulunmaktadır.
Bunlar çok pahalı değil ve bir tane inşa etmek için deneyime değer.
Bu web sitesinde motor için salon sensörünün bulunmadığını lütfen unutmayın. Vay be!
Bu yapıyı yazmak büyük bir iştir.
Umarım faydalı bulursunuz, lütfen görüş ve önerilerinizi belirtin.
Dijital Multimetre (DMM) -
DMM'nizde bir frekans ölçer osiloskopu varsa (
En az 2 kanalın olması daha iyidir)
T8 Torx sürücüsü (
Herhangi bir sabit sürücüyü açmak için bunlardan birine ihtiyacınız vardır).
İyi bir hırdavat mağazası var.
Makine Atölyesi ve hızlı prototip (
Bunlar çok faydalı ama bu projenin onlarsız da yapılabileceğini düşünüyorum).
Malzeme bldc motor manyetik halkası bilgisayarın sabit diskinden (
Motorun yarısı)
Başka bir sabit diskten Birkaç (3-6)
Sabit diskteki gümüş diskte ikinci bir küçük motor var (DC fırçalanmış OK)
Lastik bant veya (tercihen)
Fırçasız DC motor ile başka bir motor elektronik ekmek plakası katı tel ay Arduino Duemilanove 120 k ohm direnç altı ila 400 ohm direnç doğrusal veya döner Poteniyometre100 k ohmST mikro devre L6234 üç faz motor sürücü entegresi iki adet 100 uF kondansatör bir adet 10 nF kondansatör bir adet 220 nF kondansatör bir adet 1 uF kondansatör bir adet 100 uF kondansatör üç adet alıcı diyot Bir adet 2.
Honeywell SS411A bipolar Hall-5 Amp Sigorta 1 adet sigorta tutucu 3
Not: Mike Anton bu kılavuzda gösterdiğim güç elektroniği ve Hall sensör devrelerinin yerini alacak bir ürün tasarladı ve sattı (
Geri potansiyel indüksiyon kullanılarak kontrol edilir).
Şartname ve satın alma bilgilerine bu iki bağlantıdan ulaşabilirsiniz: Eğer bu projeyi yapacaksanız, BLDC'nin nasıl çalıştığını ve kontrol ettiğini iyice anlamak için zaman ayırmanızı öneririm.
Çevrimiçi olarak çok sayıda referans bulunmaktadır (
Bazı öneriler için aşağıya bakın).
Ancak projeme anlamanıza yardımcı olacak bazı çizelgeler ve tablolar ekliyorum.
Bu projeyi anlamak için en önemli olduğunu düşündüğüm kavramların bir listesi: MOSFET transistörler 3 fazlı yarım köprü 6-
3 adımlı cümle azaltımı
Faz motorunun Darbe Genişliği Modülasyonu (PWM)Hall-
Mikroçip AVR443: sensörler-genel referans DC motor Dijital konum sensörleri için Temel Prensipler
Atmelbrusless DC motor kontrolüne dayalı üç fazlı fırçasız DC motorun
kontrolü Flying Star Hall sensörünün faz BLDC motor kontrolü, güzel bir video sabit sürücü motorunu temizliyor, ancak yazar motoru bir adımlı motor ve bir adımlı motor olarak çalıştırıyor gibi görünüyor. Veri sayfaları, uygulama notları ve satın alma bilgilerini içeren l6234 motor sürücüsü IC'sindeki BLDC için daha spesifik bir referans web sayfası.
Hibrit elektrikli araç uygulamalarına yönelik PM fırçasız motor sürücüsü için ücretsiz örnek.
Rejeneratif frenleme fazı değişiminin sırasını açıklayan bulduğum tek makale bu.
Elektrikli araçlarda rejeneratif frenlemenin faydalı olduğu bu makale, ondan birkaç rakam ödünç aldım, ancak rejenerasyonun nasıl çalıştığını yanlış açıkladığını düşünüyorum.
Bu projeyi geri dönüştürülmüş disk sürücülü motorla yaptım çünkü içinden geçmesi kolaydı ve BLDC tarafından kontrol edilen kabloyu öğrenmek ve herhangi bir güvenlik sorununa neden olmamak için küçük bir düşük voltajlı motor kullanmayı seviyorum.
Ek olarak, hall sensörünün mıknatıs konfigürasyonu,
bu motorlardan ikincisindeki manyetik halkanın (rotor) kullanılmasıyla çok basit hale gelir (Bkz. Adım 4).
Salon sensörünü kurma ve kalibre etme zahmetine katlanmak istemiyorsanız (5-7. adımlar),
Hall sensöründe yerleşik en azından bazı CD/DVD sürücü motorları olduğunu biliyorum.
Motora bir miktar dönüş ataleti sağlamak ve onlara bir miktar yük vermek için, motora 5 adet sabit disk yerleştirip, biraz kuvvetli bir yapıştırıcı ile hafifçe birbirine yapıştırıp motora yapıştırdım (
Bu, orijinal projemde volanı yaptı).
Motoru sabit sürücüden çıkaracaksanız, Muhafazayı sökmek için bir T8 torx sürücüsüne (
Genellikle centeron etiketindeki çubuğun arkasında gizlenmiş iki vida vardır)
ve motoru yerinde tutan dahili vidalara ihtiyacınız vardır.
Ayrıca kafa okuyucuyu da çıkarmanız gerekir (
Ses çemberi yöneticisi).
Bu şekilde motora ulaşmak için hafıza diskini çıkarabilirsiniz.
Ayrıca rotoru o motordan çıkarmak için aynı sabit sürücüde ikinci bir motora ihtiyacınız olacaktır (
İçinde bir mıknatıs vardır).
Motoru parçalarına ayırmak için rotoru (üstte)
Motorun bir mengenesinden tuttum ve statora (altta) doğru kaldırdım.
İki tornavida birbirinden 180 derece uzakta.
Motoru deformasyon olmadan yeterince sıkı bir çift üzerinde tutmak kolay değildir.
ahşap bir v-Blok oluşturmak isteyebilirsiniz .
Bu amaç için kullanılan
Tornadaki manyetik halkaya motorun üstüne rahatça oturacak şekilde bir delik açtım.
Tornayı kullanamıyorsanız ters rotoru güçlü bir yapıştırıcıyla motora sabitleyebilirsiniz.
Aşağıdaki 2 ve 3 numaralı resimler, söktüğüm motorlardan birinin iç kısmını göstermektedir.
İlk yarıda (rotor) 8 kutup vardır (
Plastikle sarılmış mıknatıs).
İkinci yarıda (stator)
12 adet slot (sargı) bulunmaktadır.
Üç motor fazının her biri seri olarak 4 yuvaya sahiptir.
Bazı HD motorların alt kısmında üç kontak bulunur; faz başına bir kontak, diğeri ise motorun orta kısmıdır (
Üç aşamanın buluştuğu yer).
Bu projede orta dokunuşa gerek yoktur, ancak sensörsüz kontrolde kullanışlı olabilir (
Bir gün Sensörsüz kontrol hakkında bir not yayınlamayı umuyorum).
Motorunuzun dört kontağı varsa fazı ohmetre ile tanımlayabilirsiniz.
Ortadaki musluk ile faz arasındaki direnç, herhangi iki faz arasındaki direncin yarısı kadardır.
BLDC motorlarla ilgili literatürün çoğu, merdiven şeklinde bir arka potansiyel dalga formuna sahip olanlarla ilgilidir, ancak sabit sürücü motorunun sinüs gibi görünen bir arka potansiyele sahip olduğu görülmektedir (Aşağıya bakın).
Bildiğim kadarıyla, sinüs dalgalı bir PWM ile sinüs dalgalı bir motoru sürmek iyi çalışıyor, ancak verimlilik bir miktar düşebilir. Tüm BLDC motorlar gibi bu motor da üç fazlı yarım
oluşur (
Transistör Köprüsünden
Aşağıdaki 2. fotoğrafa bakın).
ST Micro (L6234) tarafından üretilen entegreyi kullanıyorum .
Köprü için motor sürücüsü olarak da bilinen
L6234'ün elektrik bağlantısı 8. adımda gösterilmektedir.
Aşağıdaki üçüncü fotoğraf, motor sürücüsünün ve üç motor fazının şematik diyagramını göstermektedir.
Motorun saat yönünde çalışabilmesi için anahtarlama şu sırayla yapılacaktır (
İlk harf üst transistör ve ikinci harf alt transistördür)
: Adım 1 2 3 4 5 6 saat yönünde: CB, AB, AC, BC, BA, CA saatin tersi yönünde: BC, BA, CA, CB, AB, AC bunlar 6-
Adım sırası 360'lık bir 'elektriksel derece' gerektirir, ancak yalnızca fiziksel derece Bu motorlar için 90.
Bu nedenle her motorun dönüş hızı dört kez gerçekleşir.
İki dizi aynı gibi görünüyor ancak aynı değiller çünkü 6
Adımlı dizi için CW için fazdan geçen akım yönü bir yöndür ve CCW için akım yönü zıttır.
Pilin veya güç kaynağının voltajını her iki motor fazına uygulayarak bunu kendiniz görebilirsiniz.
Gerilim uygularsanız motor bir yönde biraz hareket edecek ve duracaktır.
Yukarıdaki sıralardan birinde fazdaki voltajı hızlı bir şekilde değiştirebiliyorsanız motoru manuel olarak döndürebilirsiniz.
Transistörler ve mikrokontrolörler, motor yüksek hızda çalışırken saniyede yüzlerce kez anahtarlama yaparak tüm bu anahtarları çok hızlı bir şekilde tamamlarlar.
Ayrıca her iki faza da gerilim uygulandığında motorun bir miktar hareket edeceğini ve sonra duracağını lütfen unutmayın.
Bunun nedeni torkun sıfır olmasıdır.
Bunu, bir çift motor fazının arka potansiyelini gösteren aşağıdaki dördüncü fotoğrafta görebilirsiniz.
Bu bir sinüs dalgasıdır.
Dalga x-şaftından geçtiğinde
bu fazın sağladığı tork sıfırdır. Altı
Adımlı BLDC faz değişimi dizisinde asla gerçekleşmedi.
Belirli bir fazdaki tork düşmeden önce güç başka bir faz kombinasyonuna geçirilir.
Daha büyük BLDC motorlar genellikle motorun içindeki Hall sensörleri tarafından üretilir.
Eğer böyle bir motorunuz varsa bu adımı atlayabilirsiniz.
Ayrıca, Hall sensöründe yerleşik en azından bazı CD/DVD sürücü motorlarının bulunduğunu biliyorum.
Motor döndüğünde konum tespiti için üç hall sensörü kullanılır, böylece faz değişimi doğru anda gerçekleştirilir.
HD motorum 9000 RPM'ye (150 Hz) kadar çalışıyor.
9000 RPM'de tekerlek başına 24 değişiklik olduğundan, makine her 280 mikrosaniyede bir değiştirilir.
Arduino mikro denetleyicisi 16 MHz'de çalışır, yani her saat döngüsü 0,06 mikrosaniyedir.
Cümle azaltma işlemini gerçekleştirmek için kaç saat döngüsü gerektiğini bilmiyorum ama 100 saat döngüsü gerekse bile, yani her cümle azaltma işlemi 5 mikrosaniye sürer.
HD motorlarda Hall sensörleri bulunmadığından bunların motorun dışına takılması gerekir.
Sensörün motor dönüşüne göre sabitlenmesi ve motor dönüşüyle tutarlı bir dizi kutba maruz bırakılması gerekir.
Benim çözümüm, manyetik halkayı aynı motordan çıkarıp, kontrol edilecek motora ters takmaktır.
Daha sonra bu manyetik halkanın üzerine, motor miline birbirinden 30 derece aralıklarla (
120 derece elektrik motoru dönüşü) üç hall sensörü yerleştirdim.
Hall sensör tutucum, benim tarafımdan işlenmiş üç alüminyum parça ve hızlı bir prototip üzerinde yapılmış üç plastik parçadan oluşan basit bir tutucudan oluşur.
Eğer bu araçlara sahip değilseniz konumu belirtmenin başka bir yolunu bulmak zor olmasa gerek.
Hall sensörleri için braketler oluşturmak daha zor olacaktır.
Bu, çalışmanın olası bir yoludur: 1.
Doğru boyutta bir plastik tepsi bulun ve salon sensörünü dikkatli bir şekilde epoksileyebilirsiniz. 2.
Manyetik halka yarıçapıyla aynı daireye sahip olan ve üç işaret birbirinden 15 derece 3 uzaklıkta olan kağıda bir şablon yazdırılır.
Şablonu diske yapıştırın ve ardından şablonu kılavuz olarak kullanarak salon sensörü epoksisini dikkatlice yerine yerleştirin.
Artık Hall sensörleri motora takıldığına göre, bunları aşağıda gösterilen devreye bağlayın ve motor döndükçe çıkışın yükselip alçaldığından emin olmak için bir DMM veya osiloskop kullanarak test edin.
Bu sensörleri Arduino'nun 5v çıkışını kullanarak 5v'un altında çalıştırıyorum.
Hall sensörünün çıkışı yüksek veya düşük (1 veya 0)
Bu, Antarktika'yı mı yoksa Arktik'i mi hissettiklerine bağlıdır.
Aralarında 15 derece fark olduğu için, mıknatıslar altlarında dönüp her 45 derecede bir kutup değiştirdikleri için bu üç sensör hiçbir zaman aynı anda yüksek veya alçak olmayacaktır.
Motor döndüğünde sensör çıkışı 6-
Aşağıdaki tabloda gösterilen adım düzenidir.
Üç sensörden birinin motor faz değişim konumunda tam olarak değişmesi için sensörün motorun hareketiyle hizalanması gerekir.
Bu durumda birinci hall sensörünün (H1) yükselen kenarı,
C (yüksek) ve B (alçak) kombinasyonunun açılmasıyla tutarlı olmalıdır.
Bu, köprü devresindeki 3 ve 5 numaralı transistörlerin açılmasına eşdeğerdir.
Sensörü bir osiloskopla mıknatısla hizalıyorum.
Bunu yapabilmek için üç kapsam kanalını kullanmam gerekiyor.
İkinci motorun kayışına bağlayarak motoru döndürüyorum ve iki faz kombinasyonu (
A ve B, A ve C) arasındaki arka potansiyeli ölçüyorum
. Bu iki sinüs.
Aşağıdaki resimdeki dalgalar gibi
Daha sonra osiloskopun 3. kanalındaki Hall sensörü 2'nin sinyaline bakın.
Hall sensörü tutucusu, hall sensörünün yükselen kenarı, faz değişiminin gerçekleştirilmesi gereken noktayla tamamen hizalanıncaya kadar döndürülür (Aşağıya bakın).
Artık aynı kalibrasyonu yapacak yalnızca iki kanal olduğunu fark ettim.
Faz kombinasyonunun BEMF'si B-
C kullanılırsa, H2'nin yükselen kenarı BC eğrisi ile ilişkilendirilecektir.
Faz değişiminin burada yapılmasının nedeni motor torkunun daima mümkün olduğu kadar yüksek tutulmasıdır.
Geri potansiyel torkla orantılıdır ve her faz değişiminin, geri potansiyel bir sonraki aşama eğrisinin altına geçtiğinde meydana geldiğini fark edeceksiniz.
Bu nedenle gerçek tork her faz kombinasyonunun en yüksek kısmından oluşur.
Kapsama erişemiyorsanız işte benim hizalama fikrim.
Bu aslında BLDC Motorunun nasıl çalıştığını bilmek isteyen herkes için ilginç bir alıştırmadır. Motorun A fazı (artı) ve B (negatif) fazı
bağlanırsa ve güç kaynağı açılırsa, motor bir miktar dönecek ve duracaktır.
güç kaynağına
Daha sonra negatif güç kablosu C fazına getirilip enerji verilirse motor daha fazla dönecek ve duracaktır.
Sıranın bir sonraki kısmı pozitif ucu Faz B'ye vb. taşımak olacaktır.
Bunu yaptığınızda, motor her zaman torkun sıfır olduğu yerde durur; bu, grafiğin grafikteki x ekseninden geçtiği bir yere karşılık gelir.
Üçüncü faz kombinasyonunun sıfır noktasının, ilk iki kombinasyonun faz değişim konumuna karşılık geldiğine dikkat edin.
Bu nedenle B- C kombinasyonunun sıfır tork konumu,
h2'nin yükselen kenarını konumlandırmak istediğiniz yerdir.
Bu konumu ince işaretlerle veya keskin bıçaklarla işaretleyin ve ardından H2 çıkışı bu işaretin tam olarak üstüne çıkana kadar DMM kullanarak salon sensörü tutucusunu ayarlayın.
Okul programınızdan biraz sapsanız bile motorun iyi çalışması gerekir.
Üç motor fazı, L6234 üç fazlı motor sürücüsünden güç alacaktır.
Bunun zamana direnebilecek iyi bir ürün olduğunu buldum.
Güç elektroniğini kullanırken bileşenlerinizin yanlışlıkla kızarmasının birçok yolu vardır; ben bir elektrik mühendisi değilim ve neler olduğunu her zaman bilmiyorum.
Okul programımda
6 MOSFET transistör ve 6 diyottan oluşan 3 Fazlı yarım köprü çıkışımızı kendimiz yapmıştık.
Bunu diğer sürücü Intersil'in HIP4086'sında kullandık ama bu kurulumda çok fazla sorun yaşıyoruz.
Bir sürü transistör ve çip yaktık. L6234'ü (
çalıştırıyorum .
Yani motor) 12V'da
L6234, 6 transistörden oluşan bir yarım köprüyü kontrol etmek için alışılmadık bir giriş setine sahiptir.
Her transistörün bir girişi yoktur, ancak
üç aşamanın her biri için bir etkinleştirme (EN) girişi ve ardından başka bir giriş (IN)
Açık fazda hangi transistörün (üst veya alt) seçileceğini seçin.
Örneğin, transistör 1'i (üst) ve 6'yı (alt) açın
Hem EN1 hem de EN3 yüksektir (
kademeyi kapalı tutmak için EN2 düşük)
IN1 Yüksek, IN3 düşük.
Bu, faz kombinasyonunu-C yapar.
L6234 uygulama notu, motorun hızını kontrol etmek için kullanılan PWM'nin IN pinine uygulanmasını önerirken, bunu EN pini üzerinde yapmaya karar verdim çünkü o zamanlar fazın üst ve alt transistörlerini dönüşümlü olarak açmanın 'tuhaf' olacağını düşünüyorum \'.
Aslında her iki fazın düşük transistörlerini aynı anda açmakta yanlış bir şey yok gibi görünüyor, çünkü bunlar aynı potansiyele sahip, yani ikisi de akımı geçmiyor.
Benim yöntemimde, yüksek faz dönüşümlü olarak PWM frekansında etkinleştirilir ve devre dışı bırakılır, düşük faz ise tüm faz değişimi boyunca açık kalır.
Aşağıda motor sürücüsünün şeması verilmiştir, Arduino kartına pin bağlantısını da ekledim. Ayrıca
, rejeneratif akımdaki dalgalanmayı azaltmak için güç kaynağı ile gnd arasına 2,5 amperlik bir sigorta ekledim.
L6234 için.
Not: Mike Anton, PCB'yi L6234 için yaptı (sanırım)
bu parçayı değiştirecek ve sizi montaj işinden kurtaracaktır.
Teknik özellikler ve satın alma bilgileri için bu bağlantılara bakın: 3 hakkında pek bir şey bulamadım .
yapılacak herhangi bir düzeltmeyi memnuniyetle karşılayacağımı unutmayın. Rejeneratif
Lütfen elektrik mühendisi olmadığımı ve açıklamamda
frenleme, kontrol sistemi de torku maksimuma çıkarır, ancak bu sefer akımı aküye geri gönderirken motorun yavaşlamasına neden olan negatif torktur. Kullandığım rejeneratif frenleme yöntemi, Otomotiv motorları için birçok araştırma
Ancak, bu ikinci makalede verilen açıklamanın kısmen yanlış olduğunu düşünüyorum). Şekilde BEMF'nin Aşama B'de yüksek ve düşük aşamada olduğu anı göstermektedir. Bu durumda akımın B'den rejeneratif frenlemeye doğru akması mümkündür, alt uç transistörler hızlı bir şekilde açılıp kapanır ( Üst uç transistör anahtarı
yapan Oakridge Ulusal Laboratuvarı'ndan bir makaleden alınmıştır (
bir cihaza benzer (
nasıl çalıştığını açıklayan iyi bir makale vardır ).
Wikipedia'da yükseltici dönüştürücünün
kapatıldığında, ilk şekilde gösterildiği gibi). Güç elektroniği açısından devre, enerjinin motorun fazında depolandığı, yükseltici dönüştürücü adı verilen
Bu enerji, düşük uçlu transistör kapatıldığında serbest bırakılır, ancak daha yüksek bir voltajda
, akımın aküden motora akmasını engeller.
, akım anında her transistörün yanındaki 'anti-uyarma' diyotundan akar ve ardından aküye geri döner . Diyot
Yön (Sürüşün aksine) Motoru yavaşlatan negatif bir tork üretmek için mıknatıs halkasıyla etkileşime girer.
Düşük taraf transistörü
.
bir PWM anahtarı kullanır ve PWM'nin görev döngüsü, sürüş sırasında mümkün olan en yüksek torku korumak için bir kombinasyondan diğerine geçiş yapar. Adımda, rejeneratif
frenin iyi çalıştığını görebilirsiniz, ancak iyi çalışmıyor. Bence bunun asıl nedeni, kullandığım sabit sürücü motorunun çok düşük torklu bir motor olması, dolayısıyla en yüksek hız dışında çok fazla BEMF üretmemesidir. Ayrıca, sistemim nispeten düşük bir voltajda (12 V) çalışır
, anti-uyarma diyotundan geçen her yol
Ayrıca
kullanırsam
diyotlar
voltajı birkaç volt azalttığından, bu da büyük ölçüde olur. verimi düşürür normal doğrultucu diyotlar kullanırım ve daha düşük voltaj düşüşü olan bazı özel
daha iyi performans
alabilirim. Aşağıda arduinodaki giriş ve çıkışların bir listesi bulunmaktadır. Ayrıca anakartımın grafiklerini ve fotoğraflarını da içerir
1 120 K Gnd 3 direnci Dijital giriş holü 2 120 K direnç Gnd 5 1 Dijital Çıkış. 400 ohm direnç 6 2 Dijital çıkış 400 ohm direnç ile seri 7 3
2- Dijital giriş-Hall
Dijital çıkış 400 ohm direnç ile seri 9- EN 1 Dijital Çıkışı 400 ohm direnç ile seri 10- EN 2
frenleme hacmini kontrol etmek için kullanılır. 5 V güç kaynağı aynı zamanda
(bkz. adım 5) . İşte Ardjuino
Dijital Çıkışı 400 ohm direnç ile seri 11- EN 3 dijital çıkış 400 ohm direnç ile seri, 100 k Ohm potansiyometre, 5 v ve gnd her iki uca bağlı ve analog pin 0, motor hızını ve
Hall sensörlerini çalıştırmak için de kullanılır
tamamı:/*
için yazdığım programın
bldc_congroller 3. 1.
1*3 David Glazer tarafından yazılan
tek
ST L6234
üç Hall
3-Fazlı motor sürücü IC'sidir. rejeneratif frenleme ile * motor hızı ve frenleme
bir potansiyometre tarafından kontrol edilir * motor konumu
Etkisi Sensörü tarafından kontrol edilir * Arduino,
3 hall sensöründen çıkış alır (pimler 2,3,4) *
32 kHz'de pin
Ve bunların kombinasyonlarını
9, 10, 11 üzerinde 6 farklı faz değiştiren adıma dönüştürür * PWM çıkışı ( Sırasıyla pin 5,6, 7'de EN 1,2,
döngüsünü değiştirmek için 0'daki simülasyonu potansiyometreye bağlayın ve Sürüş ve rejeneratif frenleme arasında * değiştirin *.
(IN) 1,2,3) * PWM görev
HallState2; int HallVal = 1; /
3* 3 DO'ya karşılık gelir
Bu değişken, gaz kelebeği potansiyometresinin boşluk ayarının konumunu ölçmek için kullanılır
3 hall sensörünün ikili değeri int MSP'ler = 0; /Motor için hız seviyesi int bSpeed = 0; /
. (3,INPUT)
; /L6234 Hall 3/pinMode motor sürücüsünün çıkışı (5,OUTPUT); /In 2 pinMode (7,OUTPUT); /In 3 pinMode (10,OUTPUT); (11,OUTPUT);
/EN 3/serial.begin(9600) ; Eğer seri bağlantı kullanacaksanız
, lütfen programın sonundaki temizleme komutunu kaldırın. /* Pin 9, 10 ve 11'deki PWM frekansını 32 kHz'e ayarlayın/öncelikle
ön
bölücü
temizleyin
üç
biti
: int prescalerVal = 0x07; değişkeni prescalerVal olarak adlandırın ve bunu ikili sayıya eşit olacak şekilde
ikili sayısına sahip
ayarlayın \'00000111\' TCCR1B & = ~ Prescaler /Ve TCCR0B'deki değer
\'11111000\ '
/şimdi uygun ön kodlama bitini ayarlayın: int ön kodlama biti 2 = 1;
/
/set prescalerVal'ı ikili sayıya eşit olacak şekilde ayarlayın; \'00000001\' TCCR1B | = prescalerVal2;
Veya TCCR0B'deki değer
, \'00000001\'
/pim 3,11 için PWM'yi 32 kHz'e ayarlayın (Bu program yalnızca Pim 11'i
)
/Önce üç ön-kaler bitini temizleyin: TCCR2B & = ~ Ön calerval;
TCCR0B, \'11111000\'
ikili numarasıyla/şimdi uygun ön kodlama bitini ayarlayın: TCCR2B | =
kullanır
Ön kodlama biti
2; /Veya TCCR0B'deki değer, \'00000001\'/önceden kodlanmış üç bitin tümünü temizleyin:}
/PRGROM void döngüsünün ana döngüsü (){ /Time = millis (); yazdırma programı başlar. println(time); //Serial.print(\'
\'); Gaz Kelebeği = analogRead (0);
/ Gaz kelebeği potansiyometresi MSP'ler = harita ( Gaz kelebeği, 512,1023, 0,255); potun/MSP'lerin altında rejeneratif frenleme ed = 100;
/Hata ayıklama için HallState1 = digitalRead (2); /Salon 1'den giriş değerini okuyun 2 = Dijital Okuma (
3)
;
/Salon 2'den giriş değerini okuyun 3 = Dijital Okuma (4); /İlgili sensör yüksek güçte olduğunda, led yanar
Orijinal olarak digitalWrite'da hata ayıklamak için kullanılır (9, HallState2); //digitalWrite(10, HallState3); HallVal = (HallState1)+ (2*HallState2)+
hall sensörünün ikili değerlerini hesaplayın
(4*HallState3); /3
(\'H 1: \'); println(\'H 2:
'); println(HallState2); Serial.
\
;
print(\'H 3
: \')
Serial. println(HallState3); Serial. println(\' \'); */ //
);
Serial. println(mSpeed
//Serial. println(HallVal );
//Serial. print(\'\'); /Monitor transistor output/
delay (1000); /* T1 = digitalRead (
2);
//T1 = ~T1; T2 = digitalRead (4); //T2 = ~T2; T3 = digitalRead (5);
//T3 = ~T3; Serial. print(T1);
Serial. print(\'\t\'); Serial. print(T2); Serial. print(\'\t\'); Serial. print(T3); Serial. print(\'\'); Serial. print(\'\');
Serial. print(digitalRead(3)); Serial. print(\'\t\'); Serial. print
(
digitalRead(9)); Serial. print(
\'\t\');
Serial. println(digitalRead(10)); Serial. print(\'\'); Serial. print(\'\'); //delay(500); */Sürüş fazı değişimi/her ikili sayı, açık olan farklı transistörlere karşılık gelen bir duruma sahiptir/arduino çıkışının değerini değiştirmek için kullanılan bit matematiği: /PORTD, L6234 sürücüsündeki IN pininin çıkışını içerir/üst transistörün veya alt transistörün/EN pininin Arduino komut benzetmesi ile kontrol edilip edilmediğini belirlemek için kullanılır, PWM'nin görev döngüsünü ayarlayın ( 0 = KAPALI, 255 = AÇIK veya gaz kelebeği
değeri tarafından kontrol edilir) potansiyometre). if (throttle > 511){switch (HallVal){ Durum 3:/PORTD = 1111xxx00; /Beklenen pin 0-7 xxx çıkışı Hall girişini ifade eder ve PORTD & = B00011111 değiştirilmemelidir
; PORTD | = B01100000; /Analowrite (9,mSpeed); transistör)analogWrite(10,0); Faz B kapatma (görev = 0)analogWrite(11,255); // Faz
Durum 1:/PORTD = B001xxx00;
/Pin 0-7'nin beklenen çıkışı PORTD &
C açık -görevde (Düşük uçlu transistör)kesme;
= B00011111; B00100000;
/Analowrite (9,mSpeed) ;
A fazında (
Yüksek uç transistör)analogWrite (10,255); //Faz B açık
analogWrite(11,0); //Faz B kapalı (görev = 0)
Düşük uç transistör)
Durum 5:/PORTD = B101xxx00
break ;
; = B00011111;
/PORTD | =
) ;
(
B10100000; analogWrite(9,0
analogWrite(10,255); analogWrite(11,mSpeed); break;
Case 4:/PORTD = B100xxx00;
/Expected output of pin 0-
7 PORTD & = B00011111;
PORTD | = bym000; /Analowrite (9,255); analogWrite(10,0); analogWrite(11,mSpeed); break;
Case 6:/PORTD
output of pin 0- 7
= B110xxx00; /Expected
PORTD & = B00011111
; PORTD b11. 000 =; /Analowrite (9,255);
analogWrite(
7 PORTD
10,mSpeed);
analogWrite
(11,0); break;
Durum 2:/PORTD = B010xxx00;
/Beklenen pin çıkışı
& = B0001700
PORTD | =;
/Analowrite(10,mSpeed); break;
/PORTD = B000xxx00;
PORTD
pinler her zaman düşüktür, dolayısıyla frenleme sırasında yalnızca düşük transistörler kullanılır {
| = bym0000; // anahtar (HallVal){ Durum 3: analoji yazma (9,bSpeed(9,0);
/Pin 0-7'nin beklenen çıkışı
analogWrite(10,0); analogWrite
(11,0); break;
Case 1: analogy writing (9,bSpeed); analogWrite(10,0); analogWrite(11,0); break;
Case 5: analogy writing (9,0); analogWrite(10,0); analogWrite(11,bSpeed); break;
Case 4: analogy writing (9,0); analogWrite(10,0);
analogWrite(11,bSpeed); break;
Case 6: analogy writing (9,0); analogWrite(10,bSpeed); analogWrite(11,0); break;
Case 2: analogy writing (9,0); analogWrite(10,bSpeed); analogWrite(11,0); break; }}
/Time = millis ();
Time after the printing program starts. println(time); //Serial. print(\'\'); //Serial. flush();
/If you Seri port kullanarak hata ayıklamak istiyorsanız lütfen yorum yapmayın}
Arduino'nun bu projede yaptığı işlem o kadar basit ki, bu görevi bir mikroişlemci ile yapmak israf gibi görünüyor.
Aslında, L6234'ün uygulama notları
bu işi yapmak için basit bir programlanabilir kapı dizisi (GAL16V8, Lattice Semiconductor'dan yapılmıştır)
önermektedir, ancak IC'nin Newark'taki maliyeti sadece 2,39 $'dır.
Ayrıca çok ucuz.
Diğer bir seçenek de gizli mantık kapılarını bir araya getirmektir.
L6234 entegresini üç salon sensörünün çıkışından yönlendirebilecek bazı nispeten basit mantık dizileri buldum.
Aşama A için grafik aşağıda gösterilmiştir ve üç aşamanın tümü için doğruluk tablosu (
B ve C fazlarının mantık devresi için 'değil' kapısının 'veya' nın diğer tarafına çevrilmesi gerekir.
Bu yaklaşımın sorunu, her birinde yaklaşık 20 bağlantı olmasıdır. Bu nedenle onu bir araya getirmek oldukça fazla çalışma gerektirir.
Bunu programlanabilir bir mantık kapısı olarak programlamak en iyisidir.