Krzysztof
Guest
Sun Feb 21, 2010 1:47 am
Witam!
Potrzebuję zrobić układ, który zapewni praktycznie płynne obracanie się
wału silnika krokowego (12V, 0.5A, 24om, bipolarny, 2-fazowy). Prędkość
obrotowa to jeden obrót na 15 sekund.
Zrobiłem układ próbny z ATmega8 i L298, który generuje odpowiednie
przebiegi PWM, przesunięte w fazie o 90 stopni. PWM pracuje z
częstotliwością około 30kHz, wypełnienie zmieniane jest z
rozdzielczością 8 bitów.
W czym mam problem? Okazuje się, że tak sterowany silnik wcale nie
obraca się jednostajnie, tylko ma chwilowe zatrzymania w momencie, gdy
wypełnienie wynosi około 50%, czyli średnia wartość napięcia jest w
okolicach zera.
Trochę nie potrafię zidentyfikować przyczyny. Przypuszczam, że związane
jest to z krzywą magnesowania, która powoduje, że po przejściu napięcia
na przeciwną polaryzację natężenie pola nie rośnie dopóki prąd nie
przekroczy pewnej wartości, dlatego silnik przez moment stoi.
Rozwiązaniem tego problemu jest zatem dobranie takiej krzywej napięcia
(układ jest relatywnie prosty i nie mierzy chwilowej wartości prądu)
przebiegu napięcia, by zniwelować ten efekt.
Poprawne rozumowanie? Jak dobrać tą krzywą, bo przebadałem
paręnaście/dziesiąt różnych wariantów i wciąż brak satysfakcjonującej
poprawy. Czy może w takiej aplikacji pomiar prądu jest niezbędny?
Pozdrawiam
Krzysiek
BartekK
Guest
Sun Feb 21, 2010 11:41 am
W dniu 2010-02-21 01:47, Krzysztof pisze:
Quote:
W czym mam problem? Okazuje się, że tak sterowany silnik wcale nie
obraca się jednostajnie, tylko ma chwilowe zatrzymania w momencie, gdy
wypełnienie wynosi około 50%, czyli średnia wartość napięcia jest w
okolicach zera.
Rozwiązaniem tego problemu jest zatem dobranie takiej krzywej napięcia
(układ jest relatywnie prosty i nie mierzy chwilowej wartości prądu)
przebiegu napięcia, by zniwelować ten efekt.
Ja kiedyś coś podobnego popełniłem, to faktycznie prędkość chwilowa
"pływała" pomimo stałego sterowania, więc wartości pwm nie liczyłem +n
tylko brałem z tablicy, obliczone wg sinusa (czy cosinusa?), i już
pływanie było praktycznie niezauważalne. Może tak spróbuj?
--
| Bartlomiej Kuzniewski
| sibi@drut.org GG:23319 tel +48 696455098
http://drut.org/
|
http://www.allegro.pl/show_user_auctions.php?uid=338173
Krzysztof
Guest
Sun Feb 21, 2010 11:54 am
BartekK pisze:
Quote:
(... )to faktycznie prędkość chwilowa
"pływała" pomimo stałego sterowania, więc wartości pwm nie liczyłem +n
tylko brałem z tablicy, obliczone wg sinusa (czy cosinusa?), i już
pływanie było praktycznie niezauważalne. Może tak spróbuj?
Hej!
Tą opcję właśnie testuję i jest niewiele lepiej niż z n++. Zauważyłem,
że silnik zatrzymuje się kiedy następuje zmiana kierunku prądu na
przeciwny, czyli wypełnienie jest własnie bliskie 50%, ale ten moment
trwa przecież nadzwyczaj krótko. Wygląda obecnie to tak, że silnik
zatrzymuje się gdzieś przy wypełnieniu w zakresie 45 - 55%. Wymyśliłem
więc by zmodyfikować funkcję sinus tak, by w tych okolicach była funkcją
bardzo szybko zmienną, ale rezultat nadal jest kiepski, bo pojawia się
lekka nierównomierność, przy tak szybkiej zmianie prądu...
Krzysiek
Roman
Guest
Sun Feb 21, 2010 2:22 pm
Użytkownik "Krzysztof" <krzysztof.gedroyc_NOSPAM_@wp.pl> napisał w
wiadomości news:hlq0g1$r65$1@nemesis.news.neostrada.pl...
Quote:
Zrobiłem układ próbny z ATmega8 i L298, który generuje odpowiednie
przebiegi PWM, przesunięte w fazie o 90 stopni. PWM pracuje z
częstotliwością około 30kHz, wypełnienie zmieniane jest z
rozdzielczością 8 bitów.
Mogłbyś dokładniej opisać połączenie sygnałowe ATmegi z L298 i algorytm tego
przesunięcia fazowego ?
Pozdrawiam
Roman
Krzysztof
Guest
Sun Feb 21, 2010 2:43 pm
Roman pisze:
Quote:
Mogłbyś dokładniej opisać połączenie sygnałowe ATmegi z L298 i algorytm tego
przesunięcia fazowego ?
Układ ATmega generuje dwa przebiegi PWM (na Timerze 1, tryb Fast-PWM,
8-bit). By poprawnie realizować sterowanie potrzeba oczywiście mieć
również zanegowany każdy z sygnałów. Realizuję to przez dwa zewnętrzne
tranzystory.
Zatem sygnały bezpośrednio z PWM trafiają na piny A i C układu L298, i
odpowiednio zanegowane na B i D. Uzwojenia silnik krokowego są
podłączone do wyjść Output1-Output2 (jedna para biegunów) i
Output3-Output4 (druga para biegunów).
Próbki przebiegu sinusoidalnego są stablicowane i zapisane w pamięci
(tablica 255 elementowa). Wartości wypełnienia są pobierane według schematu:
Pseudokod:
for n=1 to 256
kanał A PWM = tab(n) // zmiany wypełnienia zgodnie z sinusem
kanał B PWM = tab(n+64) // zmiany wypełnienia zgodnie
// z cosinusem
end
Część elektroniczna jest raczej poprawna, bo wszystko mam posprawdzane
oscyloskopem. Ostatnio doczytałem, że mam hybrydowy silnik krokowy (z
magnesem trwałym na wirniku). Może w tym tkwi ten problem...?
Krzysiek
ici
Guest
Sun Feb 21, 2010 4:43 pm
Coś mi się widzi, ze na PWM to ty nie uzyskasz 1 obrotu na 15s.
Sterowanie PWM to sterowanie mocą skuteczną. Zmniejszając wypełnienie do
pewnego momentu obroty owszem spadają, ale potem wirnik się "klei" do
stojana z braku odp momentu napędowego "zamachu" i co najwyżej szarpie,
później staje. Moc w tym przedziale obrotowym też jest już żadna.
Sugerował bym użycie przekładni jeśli koniecznie chcesz używać tego
silnika i sterowania PWM.
Widziałem w ogłoszeniach Elektroniki Praktycznej motoreduktory małych
mocy. Pewnie wygrzebiesz je też w sieci pod hasłem: motoreduktor.
Nie wiem co to za urządzenie, ale ja kiedyś adoptowałem stary
motoreduktor planetarny od wkrętarki 12V?
Uzyskałem:
- zmniejszenie obrotów,
- znaczny moment napędowy,
- duży moment hamujący (szybki stop, dodatkowo zwierałem silnik),
- w miarę małe urządzenie i
- stosunkowo tanio mi to wyszło.
Może i tobie się coś podobnego nada?
ici
Paweł
Guest
Sun Feb 21, 2010 7:12 pm
Quote:
Mogłbyś dokładniej opisać połączenie sygnałowe ATmegi z L298 i
algorytm tego
przesunięcia fazowego ?
Quote:
Układ ATmega generuje dwa przebiegi PWM (na Timerze 1, tryb Fast-PWM,
8-bit). By poprawnie realizować sterowanie potrzeba oczywiście mieć
również zanegowany każdy z sygnałów. Realizuję to przez dwa zewnętrzne
tranzystory.
Zatem sygnały bezpośrednio z PWM trafiają na piny A i C układu L298, i
odpowiednio zanegowane na B i D. Uzwojenia silnik krokowego są
podłączone do wyjść Output1-Output2 (jedna para biegunów) i
Output3-Output4 (druga para biegunów).
L298 ma trzy wyprowadzenia do sterowania każdym uzwojeniem silnika.
Opisz dokładniej jak to podłączyłeś.
Paweł
Waldemar Krzok
Guest
Mon Feb 22, 2010 1:00 am
Krzysiek Gedroyć SQ4IXA wrote:
Quote:
On 21 Lut, 19:12, Paweł <pawel....@neostrada.pl> wrote:
L298 ma trzy wyprowadzenia do sterowania każdym uzwojeniem silnika.
Opisz dokładniej jak to podłączyłeś.
Końcówka ENABLE jest na stałe ustawiona w stan wysoki, bo układ na
etapie testów ma cały czas pracować. Nóżka SENSE jest podłączona do
masy, bo układ nie współpracuje z L297, więc nie jest potrzebny pomiar
prądu. Nóżki In1, In2, In3 i In4, są odpowiednio zasilane sygnałami
A, /A, B, /B z mikrokontrolera.
Nie napisałeś jeszcze ile kroków na obrót ma twój silnik. Bo może się
okazać, że 30kHz PWM to za mało. Ewentualnie dodanie RC na wyjścia może
pomóc. Sterujesz wtedy "prawdziwym" sin/cos.
Waldek
Krzysiek Gedroyć SQ4IXA
Guest
Mon Feb 22, 2010 1:01 am
On 21 Lut, 19:12, Paweł <pawel....@neostrada.pl> wrote:
Quote:
L298 ma trzy wyprowadzenia do sterowania każdym uzwojeniem silnika.
Opisz dokładniej jak to podłączyłeś.
Końcówka ENABLE jest na stałe ustawiona w stan wysoki, bo układ na
etapie testów ma cały czas pracować. Nóżka SENSE jest podłączona do
masy, bo układ nie współpracuje z L297, więc nie jest potrzebny pomiar
prądu. Nóżki In1, In2, In3 i In4, są odpowiednio zasilane sygnałami
A, /A, B, /B z mikrokontrolera.
Krzysiek
Waldemar Krzok
Guest
Mon Feb 22, 2010 8:27 am
Krzysiek Gedroyć SQ4IXA wrote:
Quote:
On 22 Lut, 01:00, Waldemar Krzok <walde...@zedat.fu-berlin.de> wrote:
Nie napisałeś jeszcze ile kroków na obrót ma twój silnik. Bo może się
okazać, że 30kHz PWM to za mało. Ewentualnie dodanie RC na wyjścia może
pomóc. Sterujesz wtedy "prawdziwym" sin/cos.
Silnik ma krok równy 1,8 stopnia. Przebieg napięcia obserwowany na
silniku na oscyloskopie wskazuje, że indukcyjność silnika jest na tyle
duża, że PWM jest właściwie uśredniane. Wszystko wygląda tak, jakby
silnik był nieczuły na ten zakres 45-55% wypełnienia, gdzie średnia
wartość napięcia jest bliska zeru. W pierwszym odruchu należałoby
zmodyfikować tą funkcję sinus, by była szybkozmienna dla pi i 2pi, ale
nie wiem jak skutecznie zaprojektować taką funkcję. Robiłem jakieś z
tym próby, owszem silnik się obraca, ale pojawia się jakaś
nierównomierność pracy...
najpierw spróbowałbym zmienić przesunięcie fazowe, znaczy nie sin/cos, tylko
sin(t) i sin(t+8

, na przykład. No i zmienić przy zmianie kierunku. Czasem
bydlęta są trochę niesymetrycznie zbudowane.
Masz stałe obroty, czy chcesz jeszcze je zmieniać?
Waldek
Krzysiek Gedroyć SQ4IXA
Guest
Mon Feb 22, 2010 8:40 am
On 22 Lut, 01:00, Waldemar Krzok <walde...@zedat.fu-berlin.de> wrote:
Quote:
Nie napisałeś jeszcze ile kroków na obrót ma twój silnik. Bo może się
okazać, że 30kHz PWM to za mało. Ewentualnie dodanie RC na wyjścia może
pomóc. Sterujesz wtedy "prawdziwym" sin/cos.
Silnik ma krok równy 1,8 stopnia. Przebieg napięcia obserwowany na
silniku na oscyloskopie wskazuje, że indukcyjność silnika jest na tyle
duża, że PWM jest właściwie uśredniane. Wszystko wygląda tak, jakby
silnik był nieczuły na ten zakres 45-55% wypełnienia, gdzie średnia
wartość napięcia jest bliska zeru. W pierwszym odruchu należałoby
zmodyfikować tą funkcję sinus, by była szybkozmienna dla pi i 2pi, ale
nie wiem jak skutecznie zaprojektować taką funkcję. Robiłem jakieś z
tym próby, owszem silnik się obraca, ale pojawia się jakaś
nierównomierność pracy...
Krzysiek
Krzysiek Gedroyć SQ4IXA
Guest
Mon Feb 22, 2010 3:49 pm
On 22 Lut, 08:27, Waldemar Krzok <walde...@zedat.fu-berlin.de> wrote:
Quote:
najpierw spróbowałbym zmienić przesunięcie fazowe, znaczy nie sin/cos, tylko
sin(t) i sin(t+8

, na przykład. No i zmienić przy zmianie kierunku. Czasem
bydlęta są trochę niesymetrycznie zbudowane.
Wszystkie takie rzeczy sprawdzałem. Sprawa jest nietypowa. Wydaje mi
się, że przyczyną jest konstrukcja silnika, bo akurat mam hybrydowy
silnik krokowy, czyli z magnesem trwałym.
Quote:
Masz stałe obroty, czy chcesz jeszcze je zmieniać?
Przydałoby się zmieniać.
W tej chwili obroty silnika, oczywiście w przypadku tych najniższych
prędkości wyglądają tak jak na tym linku:
http://www.youtube.com/watch?v=OFueWFfLA1Y
Krzysiek
Paweł
Guest
Mon Feb 22, 2010 10:00 pm
Quote:
Końcówka ENABLE jest na stałe ustawiona w stan wysoki, bo układ na
etapie testów ma cały czas pracować. Nóżka SENSE jest podłączona do
masy, bo układ nie współpracuje z L297, więc nie jest potrzebny pomiar
prądu. Nóżki In1, In2, In3 i In4, są odpowiednio zasilane sygnałami
A, /A, B, /B z mikrokontrolera.
Moim zdaniem wyjścia PWM powinieneś podłączyć do wejść ENABLE a
wejściami In1,In2,In3,In4 sterować odpowiednio z uP (zmieniać ich stan
gdy funkcje SIN i COS zmieniają znak).
Paweł
BartekK
Guest
Tue Feb 23, 2010 8:37 am
W dniu 2010-02-22 22:00, Paweł pisze:
Quote:
Końcówka ENABLE jest na stałe ustawiona w stan wysoki, bo układ na
etapie testów ma cały czas pracować. Nóżka SENSE jest podłączona do
masy, bo układ nie współpracuje z L297, więc nie jest potrzebny pomiar
prądu. Nóżki In1, In2, In3 i In4, są odpowiednio zasilane sygnałami
A, /A, B, /B z mikrokontrolera.
Moim zdaniem wyjścia PWM powinieneś podłączyć do wejść ENABLE a
wejściami In1,In2,In3,In4 sterować odpowiednio z uP (zmieniać ich stan
gdy funkcje SIN i COS zmieniają znak).
Też mi się tak wydaje, a w dodatku dlaczego nie używasz Sense? Przecież
wymuszanie prądu przy takich indukcyjnościach i wąziutkich szpileczkach
z pwm 30kHz to podstawa. Przecież tylko sterując "włączmy mu zasilanie i
niech sie martwi" to przy tak wąskich szpilkach - nic nie popłynie. A
siła/moment jest od prądu a nie napięcia! To się nie ma prawa kręcić,
jak momentu nie posiada
--
| Bartlomiej Kuzniewski
| sibi@drut.org GG:23319 tel +48 696455098
http://drut.org/
|
http://www.allegro.pl/show_user_auctions.php?uid=338173