Obecnie entuzjaści są bardzo zainteresowani sterowaniem bezszczotkowym silnikiem prądu stałego (BLDC).
W porównaniu z tradycyjnym silnikiem prądu stałego poprawiła się wydajność silnika, poprawiła się również efektywność energetyczna, ale jest on trudniejszy w użyciu. Istnieje wiele gotowych
produktów przeznaczonych do tego celu.
Na przykład istnieje wiele małych kontrolerów BLDC, które bardzo dobrze sprawdzają się w samolotach RC.
Dla tych, którzy chcą bardziej szczegółowo przyjrzeć się sterowaniu BLDC, istnieje również wiele różnych mikrokontrolerów i innego sprzętu elektronicznego dla użytkowników przemysłowych, które zwykle mają bardzo dobrą dokumentację.
Jak dotąd nie znalazłem wyczerpującego opisu wykorzystania mikrokontrolera Arduino do sterowania BLDC.
Ponadto, jeśli jesteś zainteresowany hamowaniem regeneracyjnym lub wykorzystaniem BLDC do wytwarzania energii, nie znalazłem wielu produktów odpowiednich do stosowania z małymi silnikami, ani nie dowiedziałem się, jak sterować generatorem 3-fazowym.
Struktura ta pierwotnie pojawiła się w opowieści o
obliczeniach w czasie rzeczywistym. Kontynuuję to po zakończeniu kursu.
Ideą projektu jest pokazanie proporcjonalnego modelu samochodu hybrydowego z magazynowaniem energii w kole zamachowym i hamowaniem regeneracyjnym.
Silnik zastosowany w projekcie to mały BLDC wyczyszczony z uszkodzonego dysku twardego komputera.
Niniejsza instrukcja opisuje sposób wykorzystania mikrokontrolera Arduino i
czujników położenia Hall-Afects w trybach jazdy i hamowania regeneracyjnego.
Należy pamiętać, że odwiedzenie oscillisoft jest bardzo pomocne, jeśli nie niezbędne, do ukończenia tego projektu.
Jeśli nie możesz uzyskać dostępu do zakresu, dodałem kilka sugestii, jak to zrobić bez zakresu (krok 5).
Jedną rzeczą, której ten projekt nie powinien uwzględniać w żadnym rzeczywistym sterowniku silnika, jest jakakolwiek funkcja bezpieczeństwa, taka jak zabezpieczenie nadprądowe.
Tak naprawdę najgorsze jest to, że spalisz silnik HD.
Jednak wdrożenie zabezpieczenia nadprądowego przy obecnym sprzęcie nie jest trudne i może kiedyś to zrobię.
Jeśli próbujesz sterować większym silnikiem, dodaj zabezpieczenie nadprądowe, aby chronić silnik i własne bezpieczeństwo.
Chcę spróbować użyć tego kontrolera z większym silnikiem, który może wykonać „prawdziwą” pracę, ale nie mam jeszcze odpowiedniego.
Zauważyłem, że w serwisie eBay sprzedano samochód o mocy 86 W za około 40 dolarów.
Wygląda na dobrego kandydata.
Istnieje również witryna RC o nazwie „GoBrushless”, która sprzedaje zestawy składające się z własnego BLDC.
Nie są one zbyt drogie i warto zdobyć doświadczenie w ich zbudowaniu.
Należy pamiętać, że na tej stronie nie ma czujnika Halla dla silnika. Uff!
Napisanie tej struktury to duża praca.
Mam nadzieję, że okaże się przydatny. Prosimy o przesyłanie komentarzy i sugestii.
Multimetr cyfrowy (DMM) -
Jeśli Twój DMM jest wyposażony w oscyloskop z miernikiem częstotliwości (
lepiej mieć co najmniej 2 kanały)
Sterownik T8 Torx (
potrzebujesz jednego, aby otworzyć dowolny dysk twardy).
Jest dobry sklep z narzędziami.
Warsztat maszynowy i szybki prototyp (
są bardzo pomocne, ale myślę, że ten projekt można obejść się bez nich).
Materiał silnik bldc pierścień magnetyczny z dysku twardego komputera (
połowa silnika)
z innego dysku twardego kilka (3-6) w
srebrnym dysku na dysku twardym znajduje się drugi mały silnik (szczotka DC OK)
gumka lub (najlepiej)
bezszczotkowy silnik prądu stałego z rączką z drugim silnikiem elektroniczna płyta chlebowa drut pełny miesiąc Arduino Duemilanove rezystor 120 kΩ rezystor liniowy lub obrotowy potencjometr 100 kΩST L6234 trójfazowy układ scalony sterownika silnika dwa kondensatory 100 uF jeden kondensator 10 nF jeden kondensator 220 nF jeden kondensator 1 uF jeden kondensator 100 uF trzy diody odbiorcze jedna 2.
Honeywell SS411A bipolarny bezpiecznik Halla 5 A 1 oprawka bezpiecznika 3
Uwaga: Mike Anton zaprojektował i sprzedał produkt, który zastąpi elektronikę mocy i obwody czujników Halla, które pokazałem w tej instrukcji (
jest sterowany za pomocą indukcji potencjału wstecznego).
Specyfikacje i informacje dotyczące zamówienia można znaleźć pod tymi dwoma linkami: Jeśli zamierzasz realizować ten projekt, sugeruję poświęcenie czasu na dokładne zrozumienie działania i kontroli BLDC.
W Internecie można znaleźć wiele odniesień (
kilka sugestii znajdziesz poniżej).
Jednakże w moim projekcie umieściłem kilka wykresów i tabel, które powinny pomóc w zrozumieniu.
Oto lista pojęć, które moim zdaniem są najważniejsze dla zrozumienia tego projektu: Tranzystory MOSFET 3-fazowy półmostek 6-3
-stopniowa redukcja zdania
Modulacja szerokości impulsu silnika fazowego (PWM) Halla -
Microchip AVR443: ogólne informacje o czujnikach Silnik prądu stałego Podstawowe zasady dotyczące cyfrowych czujników położenia
Sterowanie trójfazowym bezszczotkowym silnikiem prądu stałego w oparciu o sterowanie silnikiem prądu stałego atmelbrusless
Sterowanie silnikiem fazowym BLDC czujnika Halla Flying Star, dobre film przedstawiający czyszczenie silnika dysku twardego, ale wydaje się, że autor uruchamia silnik jako silnik krokowy i jako silnik krokowy. Bardziej szczegółowa strona internetowa poświęcona BLDC w układzie scalonym napędu silnikowego l6234, zawierająca arkusze danych, uwagi dotyczące zastosowań i informacje dotyczące zakupu.
Bezpłatna próbka bezszczotkowego napędu silnikowego PM do zastosowań w hybrydowych pojazdach elektrycznych.
To jedyna praca, jaką znalazłem, która opisuje kolejność zmiany fazy hamowania regeneracyjnego.
Ta praca Hamowanie regeneracyjne w pojazdach elektrycznych jest przydatna, zapożyczyłem z niej kilka liczb, ale myślę, że błędnie opisuje ona działanie regeneracji.
Zrobiłem ten projekt z silnikiem napędu dyskowego pochodzącym z recyklingu, ponieważ łatwo było go przepuścić, a ja lubię używać małego silnika niskiego napięcia, aby nauczyć się przewodu kontrolowanego przez BLDC i nie powodować żadnych problemów z bezpieczeństwem.
Ponadto konfiguracja magnesu czujnika Halla staje się bardzo prosta dzięki zastosowaniu pierścienia magnetycznego (wirnika)
z drugiego z tych silników (patrz krok 4).
Jeśli nie chcesz zajmować się wszystkimi kłopotami związanymi z instalacją i kalibracją czujnika Halla (kroki 5-7),
wiem, że w czujniku Halla jest co najmniej kilka silników napędu CD/DVD.
Aby zapewnić silnikowi pewną bezwładność skrętu i lekko go obciążyć, umieściłem na silniku 5 dysków twardych, delikatnie sklejonych odrobiną mocnego kleju i przyklejonych do silnika (
w moim autorskim projekcie powstało z tego koło zamachowe).
Jeśli masz zamiar wyjąć silnik z dysku twardego, będziesz potrzebować klucza torx T8 do odkręcenia obudowy (
zwykle za drążkiem na etykiecie pośrodku znajdują się dwie śruby)
oraz śruby wewnętrzne, które utrzymują silnik na miejscu.
Trzeba też zdjąć głowicę Reader (
Sound Circle Executive)
W ten sposób można wyjąć dysk pamięci aby dostać się do silnika.
Ponadto będziesz potrzebować drugiego tego samego silnika dysku twardego, aby wyjąć wirnik z tego silnika (
w środku znajduje się magnes).
Aby rozebrać silnik chwyciłem za wirnik (góra)
Imadło silnika i podważam go o stojan (dół).
Obydwa śrubokręty są od siebie oddalone o 180 stopni.
Nie jest łatwo utrzymać silnik na wystarczająco ciasnej parze bez deformacji.
Możesz chcieć zbudować drewniany
blok v używany do tego celu.
Wywierciłem otwór w pierścieniu magnetycznym na tokarce tak, aby wygodnie pasował na górę silnika.
Jeśli nie możesz korzystać z tokarki, możesz przymocować odwrócony wirnik do silnika za pomocą mocnego kleju.
Zdjęcia 2 i 3 poniżej przedstawiają wnętrze jednego z silników które zdemontowałem.
W pierwszej połowie (wirnik) znajduje się 8 biegunów (
magnes owinięty plastikiem).
W drugiej połowie (stojan)
znajduje się 12 szczelin (uzwojeń).
Każda z trzech faz silnika ma 4 szczeliny połączone szeregowo.
Niektóre silniki HD mają trzy styki na dole, jeden styk na fazę, a drugi jest środkowym zaczepem silnika (
w miejscu, gdzie spotykają się trzy stopnie).
W tym projekcie nie jest wymagane żadne dotknięcie środka, ale może się ono przydać w sterowaniu bez czujników (
mam nadzieję, że pewnego dnia opublikuję notatkę na temat sterowania bez czujników).
Jeśli Twój silnik ma cztery styki, możesz zidentyfikować fazę za pomocą omomierza.
Rezystancja między kranem środkowym a fazą stanowi połowę rezystancji między dowolnymi dwiema fazami.
Większość literatury na temat silników BLDC dotyczy silników z falą potencjału wstecznego w kształcie drabinki, ale wydaje się, że silnik dysku twardego ma potencjał wsteczny, który wygląda jak sinus (patrz poniżej).
O ile wiem, sterowanie silnikiem sinusoidalnym za pomocą sinusoidalnego PWM działa dobrze, chociaż wydajność może nieco spaść.
Podobnie jak wszystkie silniki BLDC, ten składa się z trójfazowego
mostka półtranzystorowego (
patrz drugie zdjęcie poniżej).
Używam układu scalonego firmy ST Micro (L6234)
Do mostka, znanego również jako sterownik silnika.
Podłączenie elektryczne L6234 pokazano w kroku 8.
Trzecie zdjęcie poniżej przedstawia schemat sterownika silnika i trzech faz silnika.
Aby silnik działał zgodnie z ruchem wskazówek zegara, przełącznik zostanie wykonany w następującej kolejności (
pierwsza litera to górny tranzystor, druga litera to dolny tranzystor)
: Krok 1 2 3 4 5 6 zgodnie z ruchem wskazówek zegara: CB, AB, AC, BC, BA, CA przeciwnie do ruchu wskazówek zegara: BC, BA, CA, CB, AB, AC te 6-
Sekwencja kroków wymaga „stopnia elektrycznego” wynoszącego 360, ale tylko stopnia fizycznego 90 dla tych silników.
Dlatego prędkość obrotowa każdego silnika występuje czterokrotnie.
Te dwie sekwencje wydają się być takie same, ale nie są takie same, ponieważ w przypadku
sekwencji 6-etapowej, w przypadku CW kierunek prądu przez fazę jest jednym kierunkiem, a w przypadku CCW kierunek prądu jest przeciwny.
Możesz to zobaczyć sam, przykładając napięcie akumulatora lub zasilacza do którejkolwiek fazy silnika.
Jeśli przyłożysz napięcie, silnik poruszy się nieco w jednym kierunku i zatrzyma się.
Jeśli możesz szybko zmienić napięcie na fazie w jednej z powyższych sekwencji, możesz ręcznie obrócić silnik.
Tranzystory i mikrokontrolery wykonują wszystkie te przełączniki bardzo szybko, przełączając setki razy na sekundę, gdy silnik pracuje z dużą prędkością.
Należy również pamiętać, że jeśli napięcie zostanie przyłożone do obu faz, silnik poruszy się trochę, a następnie zatrzyma się.
Dzieje się tak, ponieważ moment obrotowy wynosi zero.
Można to zobaczyć na czwartym zdjęciu poniżej, które pokazuje potencjał wsteczny pary faz silnika.
To jest fala sinusoidalna.
Kiedy fala przechodzi przez
wał x, moment obrotowy zapewniany przez tę fazę wynosi zero. W sześcioetapowej
sekwencji zmiany fazy BLDC, która nigdy się nie wydarzyła.
Zanim moment obrotowy na określonej fazie stanie się niski, moc jest przełączana na inną kombinację faz.
Większe silniki BLDC są zwykle produkowane przez czujniki Halla znajdujące się wewnątrz silnika.
Jeżeli posiadasz taki silnik to możesz pominąć ten krok.
Wiem też, że przynajmniej kilka silników napędu CD/DVD jest już wbudowanych w czujnik Halla.
Gdy silnik się obraca, do detekcji położenia wykorzystywane są trzy czujniki Halla, dzięki czemu zmiana fazy następuje w odpowiednim momencie.
Mój silnik HD pracuje z prędkością do 9000 obr./min (150 Hz).
Ponieważ na jedno koło następują 24 zmiany, przy 9000 obr./min maszyna zmienia się co 280 mikrosekund.
Mikrokontroler Arduino pracuje z częstotliwością 16 MHz, zatem każdy cykl zegara wynosi 0,06 mikrosekundy.
Nie wiem, ile cykli zegara potrzeba, aby skrócić wyrok, ale nawet jeśli potrzeba 100 cykli zegara, to znaczy, że każde skrócenie wyroku zajmuje 5 mikrosekund.
Silniki HD nie posiadają czujników Halla, dlatego konieczne jest ich zamontowanie na zewnątrz silnika.
Czujnik należy zamocować zgodnie z obrotem silnika i wystawić na szereg biegunów zgodnych z obrotem silnika.
Moje rozwiązanie polega na usunięciu pierścienia magnetycznego z tego samego silnika i zamontowaniu go do góry nogami na sterowanym silniku.
Następnie zainstalowałem trzy czujniki Halla nad tym pierścieniem magnetycznym, w odległości 30 stopni od siebie na wale silnika (
obrót silnika elektrycznego 120 stopni).
Mój uchwyt na czujnik Halla składa się z prostego uchwytu składającego się z trzech przetworzonych przeze mnie części aluminiowych i trzech części plastikowych wykonanych na szybkim prototypie.
Jeśli nie masz tych narzędzi, znalezienie innego sposobu na wskazanie pozycji nie powinno być trudne.
Tworzenie wsporników do czujników Halla będzie większym wyzwaniem.
Oto możliwy sposób pracy: 1.
Znajdź plastikową tacę o odpowiednim rozmiarze i możesz ostrożnie epoksydować czujnik Halla. 2.
Na papierze drukowany jest szablon, który ma taki sam okrąg jak promień pierścienia magnetycznego, a trzy znaki są oddalone od siebie o 15 stopni i 3.
Przyklej szablon do dysku, a następnie użyj szablonu jako wskazówki, aby ostrożnie umieścić żywicę epoksydową czujnika Halla na miejscu.
Teraz, gdy czujniki Halla są zainstalowane na silniku, podłącz je do obwodu pokazanego poniżej i przetestuj je za pomocą multimetru cyfrowego lub oscyloskopu, aby upewnić się, że sygnał wyjściowy wzrasta i spada w miarę obracania się silnika.
Używam tych czujników pod napięciem 5 V, używając wyjścia 5 V Arduino.
Czujnik Halla ma wysoką lub niską moc wyjściową (1 lub 0).
Zależy to od tego, czy wyczuwa Antarktydę, czy Arktykę.
Ponieważ są oddalone od siebie o 15 stopni, magnesy obracają się pod nimi i zmieniają polaryzację co 45 stopni, więc te trzy czujniki nigdy nie będą jednocześnie wysokie ani niskie.
Gdy silnik się obraca, sygnał wyjściowy czujnika wynosi 6.
Schemat krokowy pokazany jest w poniższej tabeli.
Czujnik musi być ustawiony zgodnie z ruchem silnika, tak aby jeden z trzech czujników zmieniał się dokładnie w miejscu zmiany fazy silnika.
W tym przypadku zbocze narastające pierwszego czujnika Halla (H1)
powinno być zgodne z otwarciem kombinacji C (wysoki) i B (niski).
Jest to równoznaczne z włączeniem tranzystorów 3 i 5 w obwodzie mostka.
Wyrównuję czujnik z magnesem za pomocą oscyloskopu.
Aby to zrobić, muszę użyć trzech kanałów zasięgu.
Obracam silnik, podłączając go do paska drugiego silnika i mierzę potencjał wsteczny między kombinacjami dwóch faz (
A i B, A i C).
To jest dwa sinusy.
Podobnie jak fale na obrazku poniżej.
Następnie spójrz na sygnał czujnika Halla 2 na kanale 3 oscyloskopu.
Uchwyt czujnika Halla obraca się, aż wznosząca się krawędź czujnika Halla zrówna się całkowicie z punktem, w którym powinna nastąpić zmiana fazy (patrz poniżej).
Teraz zdałem sobie sprawę, że istnieją tylko dwa kanały umożliwiające wykonanie tej samej kalibracji.
Jeśli BEMF kombinacji faz B-
przy użyciu C, narastająca krawędź H2 będzie powiązana z krzywą BC.
Powodem, dla którego należy przeprowadzić zmianę fazy, jest to, aby zawsze utrzymywać możliwie wysoki moment obrotowy silnika.
Potencjał wsteczny jest proporcjonalny do momentu obrotowego i można zauważyć, że każda zmiana fazy następuje, gdy potencjał wsteczny przechodzi poniżej krzywej następnego stopnia.
Dlatego rzeczywisty moment obrotowy składa się z największej części każdej kombinacji faz.
Jeśli nie możesz uzyskać dostępu do lunety, oto mój pomysł na wyrównanie.
Jest to właściwie interesujące ćwiczenie dla każdego, kto chce wiedzieć, jak działa silnik BLDC.
Jeżeli do zasilania silnika podłączona jest faza A (dodatnia) i B (ujemna)
do zasilania i włączenie zasilania, silnik zacznie się trochę obracać i zatrzyma.
Następnie, jeśli ujemny przewód zasilania zostanie przesunięty do fazy C i zasilanie zostanie włączone, silnik będzie obracał się dalej i zatrzyma się.
Następną częścią sekwencji będzie przeniesienie przewodu dodatniego do fazy B itd.
Kiedy to zrobisz, silnik zawsze zatrzymuje się w miejscu, w którym moment obrotowy wynosi zero, co odpowiada jednemu miejscu, w którym wykres przechodzi przez oś x na wykresie.
Należy zauważyć, że punkt zerowy kombinacji trzeciej fazy odpowiada położeniu zmiany fazy pierwszych dwóch kombinacji.
Dlatego pozycja zerowego momentu obrotowego B-
Kombinacja C jest tam, gdzie chcesz ustawić narastającą krawędź h2.
Zaznacz tę pozycję drobnymi znakami lub ostrymi ostrzami, a następnie wyreguluj uchwyt czujnika Halla za pomocą multimetru cyfrowego, aż moc wyjściowa H2 będzie dokładnie wyższa od tego znaku.
Nawet jeśli trochę odbiegniesz od harmonogramu zajęć szkolnych, silnik powinien działać dobrze.
Trzy fazy silnika będą zasilane z trójfazowego sterownika silnika L6234.
Uważam, że jest to dobry produkt, który przetrwa próbę czasu.
Sposobów na przypadkowe przysmażenie podzespołów podczas korzystania z energoelektroniki jest wiele, nie jestem inżynierem elektrykiem i nie zawsze wiem o co chodzi.
W moim programie szkolnym zrobiliśmy własne 3-
fazowe wyjście półmostkowe składające się z 6 tranzystorów MOSFET i 6 diod.
Użyliśmy tego na HIP4086 innego sterownika Intersil, ale mamy wiele problemów z tą konfiguracją.
Spaliliśmy mnóstwo tranzystorów i chipów.
Używam L6234 (
a więc silnika) przy napięciu 12 V.
L6234 ma nietypowy zestaw wejść do sterowania półmostkiem złożonym z 6 tranzystorów.
Nie każdy tranzystor ma wejście, ale
wejście umożliwiające (EN) dla każdego z trzech stopni, a następnie kolejne wejście (IN).
Wybierz, który tranzystor jest w fazie otwartej (górny lub dolny).
Na przykład włącz tranzystor 1 (górny) i 6 (dolny).
Zarówno EN1, jak i EN3 są w stanie wysokim (
EN2 w stanie niskim, aby stopień był zamknięty).
IN1 Wysoki, IN3 niski.
To sprawia, że kombinacja faz-C.
O ile nota aplikacyjna L6234 sugerowała zastosowanie PWM służącego do sterowania prędkością silnika na pin IN, ja zdecydowałem się zrobić to na pin EN, ponieważ w tamtym momencie uważam, że „dziwne” byłoby włączanie naprzemiennie górnego i dolnego tranzystora fazy.
Właściwie wydaje się, że nie ma nic złego w włączeniu jednocześnie niskich tranzystorów obu faz, ponieważ mają one ten sam potencjał, więc żaden z nich nie przechodzi przez prąd. Według
mojej metody faza wysoka jest włączana i wyłączana na przemian z częstotliwością PWM, podczas gdy faza niska pozostaje włączona przez całą zmianę fazy.
Poniżej znajduje się schemat napędu silnika, dodałem połączenie pinowe do płytki Arduino. Dodaję również
bezpiecznik 2,5 A między dodatnim przewodem akumulatora a obwodem, bezpiecznik 100 uF kondensatora między zasilaczem a masą, aby zmniejszyć tętnienia prądu regeneracyjnego.
Liczba ta jest nieco mała, więc w przypadku większych wersji należy zapoznać się z dokumentacją L6234.
Uwaga: Mike Anton wykonał płytkę drukowaną dla L6234, która (jak sądzę)
zastąpi tę ścieżkę i oszczędzi Ci pracy związanej z jej montażem.
Zobacz te linki, aby zapoznać się ze specyfikacjami i informacjami dotyczącymi zakupu: Nie znalazłem zbyt wiele na temat 3.
Opiszę, jak to działa.
Pamiętaj, że nie jestem inżynierem elektrykiem i będziemy wdzięczni za wszelkie poprawki do moich wyjaśnień.
Podczas jazdy system sterowania przesyła prąd do trzech faz silnika w sposób maksymalizujący moment obrotowy
hamowanie regeneracyjne, układ sterowania również maksymalizuje moment obrotowy, ale tym razem jest to ujemny moment obrotowy, który powoduje spowolnienie silnika podczas przesyłania prądu z powrotem do akumulatora.
Metoda hamowania regeneracyjnego, którą zastosowałem, pochodzi z artykułu opublikowanego w Oakridge National Laboratory w Stanach Zjednoczonych
silnik się obraca
Na rysunku pokazano moment,
pierwszym
, napięcie BEMF w fazie silnika waha się w górę i w dół.
w którym BEMF jest wysoki w stopniu B i niski w stopniu. W tym przypadku możliwy jest przepływ prądu z B do. Krytyczne dla hamowania regeneracyjnego, tranzystory niskiej klasy szybko się włączają i wyłączają (Tysiące przełączeń PWM na sekundę. Kiedy przełącznik tranzystora high-end jest wyłączony, prąd przepływa jak pokazano na
Jeśli chodzi
)
). Energia ta jest uwalniana, gdy tranzystor niższej klasy jest wyłączony, ale przy wyższym napięciu prąd natychmiast przepływa przez diodę przeciwwzbudzenia obok każdego tranzystora, a następnie wraca do akumulatora. Dioda zapobiega
.
przepływowi prądu z akumulatora do silnika kierunek (w przeciwieństwie do jazdy) Interakcja z pierścieniem magnesu w celu wytworzenia ujemnego momentu obrotowego, który spowalnia
o energoelektronikę, obwód przypomina urządzenie zwane konwerterem podwyższającym, w którym energia jest magazynowana w fazie silnika (w
Wikipedii jest dobry artykuł wyjaśniający, jak działa przetwornik podwyższający
Tranzystor dolnej strony wykorzystuje przełącznik PWM, a cykl pracy PWM kontroluje wielkość
silnik.
komutacja
hamowania. Podczas jazdy
silnika przełącza się z jednej kombinacji na drugą w odpowiednim czasie, aby utrzymać najwyższy możliwy moment obrotowy. Komutacja hamulca
regeneracyjnego jest bardzo podobna, ponieważ w niektórych trybach przełączania silnik wytwarza jak najwięcej ujemnego momentu obrotowego
. Jeśli obejrzysz film w pierwszym kroku. widać,
że hamulec regeneracyjny działa dobrze, ale nie działa dobrze. Myślę, że głównym powodem jest to, że silnik dysku twardego, którego używam, ma bardzo niski moment obrotowy, więc nie wytwarza dużego BEMF, z wyjątkiem najwyższej prędkości.
Przy niższej prędkości hamowanie regeneracyjne jest bardzo rzadkie (jeśli w ogóle występuje
, to również znacznie się zmniejsza. wydajność. Używam normalnych diod prostowniczych
). Ponadto mój system działa przy stosunkowo niskim napięciu (12 V). Co więcej, ponieważ każda
o niższym spadku napięcia . Poniżej znajduje się
ścieżka przez diodę przeciwwzbudzenia zmniejsza napięcie o kilka woltów
i mogę uzyskać lepszą wydajność, jeśli użyję specjalnych diod
lista wejść i wyjść na Arduino.
Dołącz także wykresy i zdjęcia mojej płytki. rezystor 400 omów 6 2 wyjścia cyfrowe połączone szeregowo z rezystorem 400 omów 7 3 wyjścia cyfrowe połączone szeregowo z rezystorem 400 omów 9-
wyjście cyfrowe EN 1
szeregowo z rezystorem 400 omów 10-
wyjście cyfrowe EN 2 szeregowo
z rezystorem 400 omów 11-
cyfrowe
100 kΩ, napięcie 5 V i masa
wyjście
. Ten potencjometr służy do sterowania
są podłączone na obu końcach, a pin analogowy 0 jest podłączony pośrodku
EN 3 jest połączone szeregowo z rezystorem 400 omów, potencjometr
Seria X to 3-fazowy układ scalony sterownika silnika
prędkością silnika i głośnością hamowania. Zasilanie 5 V służy również do uruchamiania czujników Halla (patrz krok 5). Oto cały program, który napisałem dla Ardjuino, który zawiera komentarze:/* bldc_congroller 3. 1. 1*3 autorstwa Davida Glazera
obsługujący silnik napędu
wskazówek zegara *. z hamowaniem regeneracyjnym * prędkość silnika i hamowanie kontrolowane za pomocą jednego potencjometru * pozycja silnika za pomocą trzech czujników
ST L6234 *
Halla
dysku w kierunku zgodnym z ruchem
*
Arduino odbiera sygnał wyjściowy z 3 czujników Halla (piny 2,3,4)
* I konwertuje ich kombinację na 6 różnych stopni zmiany fazy na pinach 9, 10, 11 przy 32 kHz * Wyjście PWM (
odpowiadające EN 1,2, 3*3 DO na pinach odpowiednio 5,6, 7 (IN) 1,2,3)
* Podłącz symulację do potencjometru, aby zmienić cykl pracy PWM i zmienić * pomiędzy hamowaniem jazdą a hamowaniem regeneracyjnym *. * 0-
499: hamulec * 500-
523: Taksówka * 524-
1023: motoryzacja * komentarze wielu linii do debugowania poprzez drukowanie różnych wartości do połączenia szeregowego
*/Int allstate1;
HallState2; int HallState3 ;
= 0; /
/Wartość binarna wszystkich 3 czujników Halla int MSP
Poziom prędkości int bSpeed = 0 dla silnika;
/Poziom hamulca przepustnicy = 0;
/Ta zmienna jest używana razem z wejściem analogowym do pomiaru położenia ustawienia szczeliny potencjometru przepustnicy (){pinMode(2,INPUT);
/Hall 2 pinMode (4,WEJŚCIE);
pinMode (5,WYJŚCIE); /In 2-pinMode (7,WYJŚCIE) ;
/L6234 Hall 3/wyjście sterownika silnika
/In 3-pinMode (9,WYJŚCIE);
3/serial. Begin(9600); Jeśli
na końcu programu. /* Ustaw częstotliwość PWM na pinach 9,
10 i 11/ ustaw PWM na 32 kHz dla pinów 9, 10
/
najpierw wyczyść wszystkie trzy bity dzielnika wstępnego: int prescalerVal = 0x07; /Utwórz
będziesz używać połączenia szeregowego, odkomentuj tę linię
zmienną o nazwie prescalerVal
i ustaw go na równy liczbie binarnej \'00000111\' TCCR1B & = ~ Prescaler /I wartość w TCCR0B z liczbą binarną \'11111000\'/teraz ustaw odpowiedni bit wstępnego kodowania: int bit wstępnego kodowania 2 = 1;
/Set prescalerVal równy liczbie binarnej \'00000001\' TCCR1B | prescalerVal2
; /Lub wartość w TCCR0B z liczbą binarną \\\\\\\\\ustaw PWM na 32 kHz dla pinu 3,11 (Ten program używa tylko Pinu 11)
TCCR2B & = ~ Pre- calerval
/I wartość w TCCR0B z liczbą binarną \\\\now; set the appropriate
/ Najpierw wyczyść wszystkie trzy bity pre-calera:
pre-encoding bit: TCCR2B | = Pre-encoding bit 2;
/Or the value in TCCR0B with a binary number of \'00000001\'/
first clear all three pre-encoded bits :} The main loop of the/PRGROM
void loop (){
/Time = millis ();
Time after the printing program starts. println(time); //Serial. print(\'\');
Throttle = analogRead (0 );
/Potencjometr przepustnicy MSP = mapa (
Przepustnica, 512,1023, 0,255);
/Jazda jest mapowana do górnej połowy potencjometru bSpeed = mapa (
Przepustnica, 0,511,255, 0);
/Półczęściowe hamowanie regeneracyjne na dole garnka/MSP ed = 100;
digitalRead (2); /Odczytaj wartość wejściową z hali 1 2 = Odczyt cyfrowy (3);
/Odczytaj wartość wejściową z hali 2
3 = Odczyt cyfrowy (4);
Odczytaj wartość wejściową/zapis numeryczny z hali 3 (8, HallState1);
/Gdy odpowiedni czujnik jest w trybie dużej mocy, dioda LED zaświeci się.
Pierwotnie używany do debugowania digitalWrite (9, HallState2);
(2*HallState2)+ (4*HallState3);
/Calculate the binary values of 3 hall sensors/* series. print(\'H 1: \');
For debugging serial port. println(HallState1); Serial. print(\'H 2: \'); Serial. println(HallState2); Serial. print(\'H 3: \'); Serial. println(HallState3);
Serial. println(\' \'); */ //Serial. println(mSpeed); //Serial. println(HallVal) ;
transistor output
//Serial. print(\'\'); /Monitor
/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
/Zmiana fazy sterującej/każda liczba binarna ma obudowę odpowiadającą różnym włączonym tranzystorom/bitowa matematyka używana do zmiany wartości wyjściowej arduino:
(\'\'); //delay(500); *
/PORTD
/pin
zawiera wyjście pinu IN sterownika L6234/wyjście używane do określenia, czy
/
polecenia Arduino, ustaw cykl pracy PWM (0 = WYŁ., 255 = WŁ. lub wartość przepustnicy kontrolowana przez potencjometr).
dla każdego faza jest kontrolowana przez analogię
tranzystor jest górny, czy dolny
if (przepustnica > 511){przełącznik (HallVal
){
Przypadek 3:/PORTD = 1111xxx00;
Oczekiwane wyjście pinów 0-7
xxx odnosi się do wejścia Halla i PORTD & = B00011111 nie powinno być zmieniane;
PORTD |. = B01100000;
/Analowrite (9,mSpeed);
PWM na fazie A (
tranzystor wysokiej klasy
)analogWrite(10,0); Zamknięcie fazy B (duty = 0)analogWrite(11,255); // Faza C
niskiej klasy)przypadek 1:/PORTD = B001xxx00
na -duty = 100% (tranzystor
; 7
PORTD & = B00011111;
/PORTD |. = B00100000; /Analowrite (9,mPrędkość); PWM na fazie A (tranzystor najwyższej klasy)
wyjście pinu
0-7
analogWrite (10,255); //
włączona (tranzystor niskiej klasy)analogWrite(11,0); B101xxx00;
Faza B
/Oczekiwane
PORTD & = B0001111; /
PORTD |. = B10100000;
analogWrite(10,255); analogWrite(11,mSpeed); B00011111; PORTD |
= bym000; /Analowrite (9,255);
Expected output of pin
analogWrite(10,0); analogWrite(11,mSpeed); break; Case 6:/PORTD
= B110xxx00 ; /
0- 7 PORTD & = B00011111; PORTD
( 9,255
b11. 000 =
; /Analowrite
); analogWrite(10,mSpeed); analogWrite(11,0); break; Case 2:/PORTD = B010xxx00;
/Expected output of pin 0-
7 PORTD & = B00011111;
B0201700 PORTD | =;
/Analowrite (9,0); analogWrite(10,mSpeed); analogWrite(11,255); break;
}} /Zmiana fazy hamulca regeneracyjnego/PORTD (Wyjście pinu IN na L6234) Piny są zawsze w stanie niskim, więc podczas hamowania używane są tylko tranzystory o niskim stanie na każdej
fazie. else{ /PORTD = B000xxx00;
/Oczekiwane wyjście pinu 0- 7 PORTD & = B00011111; = by0000;
// przełącznik (HallVal){ Przypadek 3: zapis analogowy (9,bSpeed); //analogWrite(9,0);
analogWrite(10,0); analogWrite(11,0); break; Case 1: analogy writing (9,bSpeed); analogWrite(10,0); analogWrite(11,0); break; Case 5: analogy writing
(
); analogWrite(10,0); analogWrite(11,bSpeed); break; Case 4: analogy writing (9,0); analogWrite(10,0); analogWrite(11,bSpeed); break; Case 6
9,0
10,bSpeed); analogWrite(11,0
: analogy writing (9,0); analogWrite(10,bSpeed); analogWrite(11,0); break; Case 2: analogy writing (9,0); analogWrite(
); break; }} /Time = millis (); Time
after the printing program starts.
. print(
println(time); //Serial
przy użyciu portu szeregowego, odkomentuj} Myślę, że operacja wykonywana przez Arduino w tym
projekcie jest tak prosta,
\'\'); //Serial. Flush(); /Jeśli chcesz debugować
że wykonywanie tego zadania za pomocą mikroprocesora wydaje się stratą czasu. W rzeczywistości uwagi dotyczące aplikacji L6234 zalecają prostą programowalną macierz bramek (GAL16V8 wykonaną z półprzewodnika Lattice) do wykonania tego zadania. ale koszt układu scalonego to tylko 2,39 USD w Newark. Inne podobne układy scalone są również bardzo tanie. Inną opcją jest złożenie dyskretnych bramek logicznych. Wymyśliłem kilka stosunkowo prostych sekwencji logicznych, które mogłyby sterować układem scalonym L6234 z wyjścia trzech czujników Halla. Wykres dla stopnia A pokazano poniżej i tabelę prawdy dla wszystkich trzech stopni (Aby obwód logiczny faz B i C, drzwi „nie” muszą być przełączone na drugą stronę. lub. Problem z tym podejściem polega na tym, że na każdym etapie jest prawie 20 połączeń, więc złożenie tego w całość zajmuje sporo pracy.
Najlepiej zaprogramować to jako programowalną bramkę logiczną.