[C][Atmega32] Opis serwonapędu + TWORZENIE v2.0

Dyskusje na temat silników krokowych i sterowników silników krokowych.

Autor tematu
volkhen
Sympatyk forum poziom 1 (min. 40)
Sympatyk forum poziom 1 (min. 40)
Posty w temacie: 33
Posty: 45
Rejestracja: 03 mar 2007, 10:44
Lokalizacja: Bydgoszcz

#61

Post napisał: volkhen » 26 maja 2013, 13:24

pod obciążeniem błąd jest o okolo 30% większy. obciążenie to mój palec ;) no i oczywiście bezwładnośc karetki ktora przy tak dużych prędkościach ma znaczenie.

w tej chwili tylko pid. teraz jak juz wszystko działa bezbłędnie tj końcówka mocy i uP poeksperymentuje z feedforward dziś.

z perspektywy podawanie pwm na wejście enable bylo największym błędem.

ps. pisalem z telefonu.

[ Dodano: 2013-05-26, 19:57 ]
Napiszcie mi proszę czy moje przypuszczenia są słuszne.

Na układzie L298 zakłócenia są dużo mniejsze i układ pracuje prawidłowo.

Sterowanie L298 i L6203 jest dokładnie takie samo. Podczas pracy na L6203 z silnika wychodzą szpilki, które zakłócają prace enkodera oraz sygnałów STEP/DIR.

L298 jest oparty o tranzystory bipolarne a układ L6203 o unipolarne.

Przypuszczam, że tranzystory unipolarne są szybsze, więc generują większe szpilki zwrotne, czy moje przypuszczenia są prawdziwe?



Tagi:

Awatar użytkownika

ursus_arctos
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 25
Posty: 2083
Rejestracja: 11 cze 2011, 18:29
Lokalizacja: Warszawa / Lublin

#62

Post napisał: ursus_arctos » 26 maja 2013, 21:40

Hmm... w takim razie co to za silnik? Musi mocny być, że taki mały uchyb....
Co do zakłóceń - tranzystory MOSFET szybciej się wyłączają, co generuje potężne zakłócenia w wysokich częstotliwościach - niemniej jednak coś musi być źle zrobione (przewody, ścieżki), bo u mnie sterownik pracuje na dużych dyskretnych mosfetach z bardzo szybkim sterowaniem i problemu nie ma.


Autor tematu
volkhen
Sympatyk forum poziom 1 (min. 40)
Sympatyk forum poziom 1 (min. 40)
Posty w temacie: 33
Posty: 45
Rejestracja: 03 mar 2007, 10:44
Lokalizacja: Bydgoszcz

#63

Post napisał: volkhen » 27 maja 2013, 00:25

Taki jest to silnik:
Obrazek

Awatar użytkownika

ursus_arctos
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 25
Posty: 2083
Rejestracja: 11 cze 2011, 18:29
Lokalizacja: Warszawa / Lublin

#64

Post napisał: ursus_arctos » 27 maja 2013, 11:51

Tak mi się przypomniało, że we wszystkich moich sterownikach jest pewien "patent", który może znacząco zmniejszać zakłócenia: przed kondensatorem elektrolitycznym zasilającym mostek/silnik jest cewka (indukcyjność rzędu 10uH). Ta cewka blokuje propagację wysokich częstotliwości z powrotem do zasilacza oraz do innych części układu. W 4-osiowym sterowniku każdy mostek ma swój kondensator i swoją cewkę - w ten sposób EMI z jednego mostka nie przechodzi na drugi. Tak samo robiłem w sterowniku silników krokowych, również z dobrym rezultatem.


etet100
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 5
Posty: 569
Rejestracja: 24 lut 2008, 12:40
Lokalizacja: Rybnik
Kontakt:

#65

Post napisał: etet100 » 30 maja 2013, 11:57

ursus_arctos pisze: W 4-osiowym sterowniku każdy mostek ma swój kondensator i swoją cewkę - w ten sposób EMI z jednego mostka nie przechodzi na drugi.
Może byś się podzielił jakimś uproszczonym schematem z uwzględnieniem elementów blokujących zakłócenia od silników ?


Autor tematu
volkhen
Sympatyk forum poziom 1 (min. 40)
Sympatyk forum poziom 1 (min. 40)
Posty w temacie: 33
Posty: 45
Rejestracja: 03 mar 2007, 10:44
Lokalizacja: Bydgoszcz

#66

Post napisał: volkhen » 01 cze 2013, 20:27

Poradziłem sobie z zakłóceniami w następujący sposób:

- Na kablach do silnika umieściłem krążki ferytowe - widać je na filmie
- Na kablach sterujących z komputera - krążki ferrytowe, tak samo na kabelkach z enkodera do mikroprocesora.
- Największą róźnicę zrobiła zamiana układu 74HCT14 na 74LS14 (układzik wyciągnąłem z urządzenia, które miało rok produkcji 1986 ;) tyle lat co ja) problem zniknął jak ręką odjął.

W tej chwili uzyskuję błąd 5 impulsów z enkodera przy zastosowaniu predykcji 1 i 2 rzędu (prędkość i przyspieszenie) przy prędkości 30000mm/min (500mm/s) i przyspieszeniu 3000mm/s2. Silniki przy takich parametrach pracują dość głośno, Jeśli zmniejszę P i D to silniki są prawie bezgłośne, ale błąd rośnie 3 krotnie.
[youtube][/youtube]

[ Dodano: 2013-06-02, 15:10 ]
Nowe testy
[youtube][/youtube]

Awatar użytkownika

ursus_arctos
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 25
Posty: 2083
Rejestracja: 11 cze 2011, 18:29
Lokalizacja: Warszawa / Lublin

#67

Post napisał: ursus_arctos » 03 cze 2013, 21:17

Robi wrażenie :) Prędkość i 5 impulsów również. Ja na swoich silnikach 5 impulsów uzyskuję na w miarę spokojnych przebiegach (w porównaniu z tym, co pokazał kolega) - ale mam też przełożenie 2mm/obrót, więc nie ma co porównywać.


Autor tematu
volkhen
Sympatyk forum poziom 1 (min. 40)
Sympatyk forum poziom 1 (min. 40)
Posty w temacie: 33
Posty: 45
Rejestracja: 03 mar 2007, 10:44
Lokalizacja: Bydgoszcz

#68

Post napisał: volkhen » 04 cze 2013, 10:28

5 impulsów było na innej "spokojnej" grafice, ale przy tych samych ustawieniach prędkości i przyspieszenia. Na tej konkretnej grafice mam 8 impulsów błędu.

Mój serwomechanizm bardzo mnie zaskoczył. Otóż okazało się, że PID oscyluje wokół wartości 1023 / 2 a nie jak było wcześniej wokół zera. Prawdę mówiąc to zadziałało przez jakiś przypadek ;) Stało się to od momentu gdy zacząłem sterować końcówkę mocy dwoma przebiegami PWM (odwrotnymi). W tej chwili rozszyfrowałem zasadę działania i wygląda na to, że składowa całkująca kompensuje to "przesunięcie" i ma wartość cały czas zbliżoną do 500 a pozostałe dwa człony odpowiadają za sterowanie. Co ciekawe polaryzacja sygnałów PWM zmienia się gdy wartość jest poniżej 511,5 lub powyżej. Najlepsze jest to, że takiej funkcjonalności nigdzie nie mogę znaleźć w nocie katalogowej. Poniżej konfiguracja PWM oraz funkcja od ustawiania PWM.

Konfiguracja Timera1

Kod: Zaznacz cały

// Timer1 jako fast PWM
TCCR1A = 0xB3; 					// Konfiguracja z CodeVision
TCCR1B = 0x09; 
TCNT1H = 0x00; 
TCNT1L = 0x00; 
ICR1H  = 0x00; 
ICR1L  = 0x00; 
OCR1AH = 0x00; 
OCR1AL = 0x00; 
OCR1BH = 0x00; 
OCR1BL = 0x00;
Najlepsze jest to, że te zmienne od kierunku nie są w ogóle potrzebne i serwo działa również bez tego tak jakby Timer sam w sobie zmieniał polaryzację przebiegów PWM wokół wartości 511,5. Czyli połowy maksymalnej 1023.

Kod: Zaznacz cały

void setPWM(float amps) 
{ 
  static float lpf = 0.0; 
  
  //lpf = (0.8 * lpf) + (0.2 * amps);    // Filtr LPF - nieużywany
  lpf = amps; 

  if(stat.dir == stat.dirLast) 
  { 
    // Wpisanie wart. PWM do rejestru porównującego
    OCR1A = abs(lpf);									
    OCR1B = abs(lpf); 
  } 
  else
  { 
    // Wyłączenie silnika na jedną pętlę po zmianie kierunku
    OCR1A = 0;               
	OCR1B = 0; 
  } 
  stat.dirLast = stat.dir; 
}
Jak ktoś to rozumie, to chętnie usłyszę wyjaśnienie bo wykres Fast PWM z noty katalogowej wg mnie tego nie wyjaśnia.

Jeszcze jedno. Gdy wyłączę człon całkujący (Igain = 0) to serwo zatrzymuje się na 52 lub -52 kroku enkodera, czyli człon P wyrównał aby serwo stało w miejscu. Przy wzmocnieniu Pgain = 10 wyjście wynosi wtedy 520... czyli silnik stoi.

Awatar użytkownika

ursus_arctos
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 25
Posty: 2083
Rejestracja: 11 cze 2011, 18:29
Lokalizacja: Warszawa / Lublin

#69

Post napisał: ursus_arctos » 04 cze 2013, 11:44

Wczoraj zrobiłem testy na parametrach:
50mm/s, 1500mm/s^2 (czyli w obrotach/s odpowiednio 25Hz i 750Hz^2). Zazwyczaj 3-6 imp, okazjonalnie do 11imp (ciut więcej na osi Z, ale sądzę, że jest to związane z asymetrią obciążenia oraz brakiem kasowania luzu i ogólnie bardzo zmiennymi oporami).
Silnik wyciąga max. 110mm/s, przyśpieszenia rozruchowe do 4500 mm/s^2 (czyli przy 55mm/s będzie już tylko 2250).
Jak parametry z przedstawionych wcześniej testów mają się do osiągów silnika kolegi?


Autor tematu
volkhen
Sympatyk forum poziom 1 (min. 40)
Sympatyk forum poziom 1 (min. 40)
Posty w temacie: 33
Posty: 45
Rejestracja: 03 mar 2007, 10:44
Lokalizacja: Bydgoszcz

#70

Post napisał: volkhen » 04 cze 2013, 16:12

Przepraszam, ale mógłbyś uściślić pytanie...

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Silniki Krokowe / Sterowniki Silników Krokowych”