Mikrokrokowanie - problem

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

Reply to
Krzysztof
Loading thread data ...

W dniu 2010-02-21 01:47, Krzysztof pisze:

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?

Reply to
BartekK

BartekK pisze:

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

Reply to
Krzysztof

Roman pisze:

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

Reply to
Krzysztof

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

Reply to
ici

L298 ma trzy wyprowadzenia do sterowania każdym uzwojeniem silnika. Opisz dokładniej jak to podłączyłeś.

Paweł

Reply to
Paweł

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.