Jak prowadzić silnik bezszczotkowy za pomocą Arduino?

28

Czy można napędzać silnik bezszczotkowy bezpośrednio za pomocą Arduino? Czy powinienem powrócić do sterowania bezszczotkowym silnikiem ESC za pomocą impulsów PWM?

tuupola
źródło
1
Być może możesz dostać układ sterownika ze starego odtwarzacza DVD / CD-ROM.
Lars

Odpowiedzi:

10

Zdecydowanie powinieneś użyć ESC. Silniki bezszczotkowe działają najlepiej, gdy są napędzane falą sinusoidalną (lub jak najbliżej fali sinusoidalnej). Wymagają również dość dokładnego i skomplikowanego zestawu sygnałów. Generowanie odpowiednich form fali i czasu z arduino byłoby trudne i chyba, że ​​naprawdę tego potrzebujesz, prawdopodobnie nie jest tego warte. Zawsze możesz zorganizować kontrolę ESC z twojego arduino, co dałoby ci programową kontrolę plus wydajność i moc ESC.

jkopel
źródło
nitpick: Według Wikipedii ( en.wikipedia.org/wiki/brushless_DC_electric_motor ), silniki BLDC są zoptymalizowane do pracy najlepiej, gdy są sterowane przez przełączane napięcie DC: w pełni dodatnie, nieużywane i całkowicie ujemne. Silniki prądu przemiennego z magnesami trwałymi są zoptymalizowane do pracy najlepiej, gdy są napędzane falą sinusoidalną; to jedyna znacząca różnica między nimi. Zgadzam się z twoją konkluzją: prawdopodobnie warto skorzystać z gotowego ESC, a nie samemu go opracować.
davidcary
4
Kontroler na BLCD mógłby równie dobrze używać tej samej atmegi, co arduino; więc zaletą jest przekazanie problemu szczegółowego komuś innemu do rozwiązania; i przekazanie zadania komutacji na niskim poziomie, aby pozostawić atmega arduino wolną dla zadań na wyższym poziomie.
Chris Stratton,
Silniki BLDC do cewek używają zasadniczo fal prostokątnych. Po stronie użytkownika kontrolera (ESC) używają zasilania DC oraz wszelkich sygnałów sterujących wymaganych przez ESC. Fale sinusoidalne nie występują.
Russell McMahon
13

Właściwie czasami MUSISZ stworzyć własny ESC. ESC sprzedawane na makecie są „skomercjalizowane” i mają własne kody kontrolne dla RC, takich jak samoloty, helikopter, samochody ...

Na przykład czasami trzeba mieć dwustronny hamulec regeneracyjny. Od tyłu do stopu i od przodu do stopu. Nie ma RC ESC, który ma tę funkcję. Mają albo tylko jeden hamulec regeneracyjny od przodu do zatrzymania, albo żaden. Lub może być potrzebny czujnik BLDC do sterowania czujnikami, ale na rynku jest tylko kilka czujników ESC i mają one (takie same w przypadku zwykłych ESC bez czujników) wbudowane funkcje, których nie potrzebujesz i nie masz takich, które są absolutnie potrzebne !

Zaprojektowanie własnego ESC to idealny wybór i znacznie tańszy, nawet niż najtańszy z 10 USD o OGROMNEJ mocy.

Prawdą jest, że kod kontrolny i sprzęt mogą być uciążliwe, ale po pewnym przeczytaniu jest to tylko zabawka.

Jest tu dobry tutorial na temat tworzenia kontrolera BLDC z arduino za pomocą 6 mosfetów i innych rzeczy, które można łatwo znaleźć na stronie Jameco (bardzo fajnie) To tutaj kupuję moje rzeczy tanio, ale spurkfun może być dobrą alternatywą, jeśli nie znajdziesz niektórych czujników, takich jak żyroskopy itp.

http://www.instructables.com/id/BLDC-Motor-Control-with-Arduino-salvaged-HD-motor/

bardzo ładny i łatwy do naśladowania przewodnik. Możesz wykonać KAŻDĄ moc od niskich do bardzo wysokich ESC, korzystając z tego przewodnika i prawie dowolnej kombinacji hamulca regeneracyjnego, używając rezystancji, uzwojenia silnika lub ładowarki ...

Korzystanie z mosfetów to tylko zabawka, możesz zrobić prawie wszystko.

Problem polega na tym, że nie można bardzo skutecznie kontrolować tego mosfetu za pomocą MCU, takiego jak karta arduio, która wydaje tylko 5 V, a myślę, że napięcie wejściowe mosfetu dla średnich napięć jest znacznie wyższe w zakresie 16-30 V. Musisz więc użyć innego tansisora, aby zwiększyć napięcie arduino.

Powodzenia.

stevenvh
źródło
6

Chodziłem tam iz powrotem przez około 30 minut. Myślę, że prawdopodobnie chcesz użyć ESC, chyba że robisz to tylko jako doświadczenie edukacyjne. Właściwe kontrolowanie silnika wiązałoby więcej zasobów z twojego arduino, niż mogłem sobie wyobrazić. Dodatkowo ograniczałbyś reakcję silnika do odpytywania adc. Nie pomyślałbym o użyciu ESC jako przywracania, tak właśnie należy to robić.

Scott Murphy
źródło
4

Ponieważ nikt inny tego nie powiedział - nie byłbyś w stanie praktycznie napędzać silnika bezpośrednio z arduino, po prostu dlatego, że układ AVR nie wytwarza wystarczającej ilości prądu, aby dostarczyć jakiejkolwiek użytecznej mocy.

Przynajmniej chciałbyś stworzyć trójfazowy układ mostków H (czytaj: trzy „pół-mosty H”) do napędzania potrzebnych prądów, wymagający sześciu cyfrowych linii tylko do obsługi tranzystorów sterujących.

Zakładając, że problem z napędem został rozwiązany, a to nie jest trywialne, musisz wejść do kodu sterującego. Silniki te mają wirniki z magnesami trwałymi, więc nie można po prostu ślepo wirować w polu stojana i uzyskać użyteczny moment obrotowy. Musisz znać orientację wirnika, aby utrzymać regulowane kąty fazowe, aby uzyskać równomierny moment obrotowy.

Tak jak powiedzieli inni, chyba że chcesz mieć szczególne doświadczenie edukacyjne, nie ma hańby w kupowaniu ESC.

JustJeff
źródło
3

Myślę, że byłoby to świetne ćwiczenie edukacyjne, ale ESC używają wstecznego pola elektromagnetycznego do wykrywania obrotu, chociaż można do tego użyć czujników optycznych lub magnetycznych. Zasadniczo musisz wygenerować 3 fazy AC i aktywować / dezaktywować je w odpowiednim momencie.

Prędkość obrotu pola magnetycznego musi być dostosowana do silnika, tzn. Jeśli chcesz przyspieszyć, pole musi biec nieco wcześniej i szybciej. Możesz także złamać, robiąc odwrotnie.

W celu dokładnego wyjaśnienia: http://www.embedded.com/columns/technicalinsights/196701832?_requestid=137540

Aby uzyskać praktyczną pracę, uzyskaj ESC.

ppvi
źródło
najpierw pomyślałem, że przyspieszenie i opóźnienie zostały osiągnięte w sposób opisany przez prowadzenie i opóźnianie pola. ale potem przeczytałem, że przyspieszenie zależy głównie od napięcia (chociaż nie widzę, jak to może spowolnić). czuję się trochę zmieszany. czy któreś z podejść działa na rzecz przyspieszenia? jakiś powód, aby preferować jeden od drugiego lub mieszać je? dzięki!
nekromanta
2

Państwo może prowadzić bezpośrednio z Arduino czy jadąc nie znaczy dosłownie dostarczanie prądu do uzwojenia - wszelkie MCU będzie zbyt słaby do tego. Poza tym Arduino może tonąć, ale nie może pobierać prądu, ale potrzebne byłyby oba w przypadku silnika bezszczotkowego.

Jeśli jednak użyjesz bardzo prostego układu scalonego sterownika H-bridge oprócz Arduino, możesz zaimplementować prawie każdą funkcję ESC. W rzeczywistości, w zależności od zastosowania, możesz nawet nie potrzebować E * SC *, co oznacza, że ​​możesz nie potrzebować regulacji prędkości w zamkniętej pętli - jeśli obciążenie nie jest zbyt duże, możesz po prostu uciec od zwykłego zaufania silnikowi aby zsynchronizować się z energetyzacją uzwojenia, a tempo zmian prądu uzwojenia pochodziłoby z Arduino. Sprawdź ten bardzo prosty schemat sterowania silnikiem bezszczotkowym (BLDC) i szkic Arduino, które możesz dostosować do napędzania silnika. Ten oparty jest na poczwórnym układzie scalonym z mostkiem H SN754410NE, który jest maksymalny przy 750 mA, jeśli pamięć służy.

Kod nie jest zbyt trywialny i wykorzystuje PWM do płynnego obrotu, ale nie jest zbyt trudne do przeanalizowania, aby dostosować się do twojej aplikacji. Aktualny szkic Arduino dla silnika BLDC znajduje się tutaj .

ElectroNick
źródło