Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 6 lut 2025, o 14:16


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 
Autor Wiadomość
PostNapisane: 17 mar 2013, o 14:40 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

Witam wszystkich jako, że to mój pierwszy post.

Jakiś czas temu popełniłem pracę inżynierską, w której skonstruowałem serwonapęd z PIDem oparty na silniku DC.
Teraz tworząc pracę magisterską tj. ploter tnący napotykam na wiele problemów, które mam nadzieję, za Waszą radą rozwiąże. Mimo iż dla niektórych wydawać się może, że temat skomplikowany to uważam się za początkującego programistę, więc jeśli będę pytał o banały proszę o wyrozumiałość.
Gdyby ktoś chciał dostać ową pracę inż, jest temat na elce albo proszę pisać to wrzucę tutaj jeśli będzie zainteresowanie.

Przedstawienie tematu:
Układ uruchomieniowy niestety nie mam z firmy ATNEL :oops: (mam nadzieję, że za to bana nie dają ;) ) Jednak kolejnym moim zestawem będzie na pewno jakiś ATNEL z uwagi na ogromne wsparcie i moją sympatię do tej firmy. Dość reklamy.

W tej chwili sprawa wygląda tak:
pierwsze testy z LinuxCNC i wejściem STEP/DIR
[youtube]http://www.youtube.com/watch?v=LhRw_pOWaoE[/youtube]

[youtube]http://www.youtube.com/watch?v=abr75eov8Ro[/youtube]

W tej chwili siedzę nad możliwością wizualizacji przebiegów zmiennych w serwie.
Póki co mam to:
Obrazek
oś X: t [ms], oś Y lewa pozycja [kroki], oś Y prawa błąd [kroki]

Obrazek

Niestety skończyła mi się pamięć w procesorze do zapisu zmiennych w tablicach. Zapis co 1ms ruchu.
Jak to przeskoczyć? Jak zacząć temat zapisu do Flasha? Czy taki zapis jest na tyle szybki, że zdąży w pętli 1kHz? W tej pętli jest obliczana cała odpowiedź serwonąpędu.
deklaracja prog_int nie działa, kompilator wyrzuca błędy (AVR STUDIO 4.18).
Wracam do pracy nad tym ustrojstem...



Ostatnio edytowano 17 mar 2013, o 15:47 przez volkhen, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2013, o 15:01 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

Witamy, ale zapis do FLASH'a nie jest możliwy ot tak jak do RAM czy EEPROM ? :( .... normalnie zwykle się go nawet nie stosuje poza tym co programujemy do pamięci programu podczas wgrywania wsadu.

Jest oczywiście możliwy zapis do pamięci FLASH także z poziomu programu w AVR'kach no ale do takich celów to może być koszmar jeśli chodzi o czas niestety. Trzeba bowiem procedury zapisu umieszczać w sekcjach NRWW czyli tam gdzie się umieszcza bootloader. Potem trzeba niestety zapisywać całymi stronami oczekując grzecznie na zapis strony. Więc jeśli potrzebny jest szybki zapis dużych ilości danych to może być poważny kłopot.

Myślę, że najlepszym rozwiązaniem może być zastosowanie zewnętrznych pamięci albo EEPROM albo (o wiele szybszych FRAM) działających szeregowo po SPI ... albo .....

albo jeśli zapis co 1ms hmmm to spokojnie można wczytywać na kartę pamięci SD może ?

------------------------ [ Dodano po: kilkunastu sekundach ]

ciekawy temat tak nawiasem mówiąc ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2013, o 15:43 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

Dzięki za odpowiedź. Spytałem o tego Flasha bo opacznie zrozumiałem ten artykuł: http://avr.elektroda.eu/?q=node/4 . Chodziło tam o stałe a nie o zmienne.

Zapomniałem dodać, że gdy temat zostanie ukończony to zostanie opublikowana cała praca gdyż wg mnie brakuje na świecie dobrze opisanego serwonapędu z testami itd. Raczej nie będę miał czasu tego tłumaczyć na angielski, ale chociaż Polacy skorzystają ;)

OK, spróbuję karty SD, ale jeszcze nigdy tego tematu nie ruszałem. Czas powoli się kończy a pracy jeszcze tak dużo... Masakra.
Znacie jakiś step by step poradnik o dostępie/obsłudze karty SD?
Jak długi jest mniej więcej zapis jedno bajtu na karcie SD?
Pytam bo procek ma naprawdę co robić, gdy motor się nie porusza to przerwanie 1kHz trwa około 0,25ms a gdy motor pędzi z dużą prędkością i dochodzą przerwania rozkazu i kanału enkodera to dochodzi do 0,7ms, więc zostaje tylko 0,2ms na zapis. Pytam bo nie mam już czasu na sprawdzanie rozwiązań z góry skazanych na niepowodzenie.

btw. dlaczego nie działa okienkowanie youtube? Coś źle robię?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2013, o 16:39 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

a no nie zapis co 0,2ms to ... hmmm raczej byłby ogromny problem na kartę ... moim zdaniem

w takim razie sięgnij po pamięci FRAM na SPI lub coś w tym stylu

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2013, o 16:53 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

Chyba się nie zrozumieliśmy. Napisałem, że co 1ms, ale czasu pozostało na zapis około 0,2ms w pętli zanim ta pętla wywoła się na nowo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2013, o 17:43 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

no tak ale 0,2ms czyli 200us ? ... nie wiem trzeba byłoby popróbować ale to już mało

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2013, o 19:18 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

Zabawy ciąg dalszy:
Odczytuję z procka przez 0,2s ruchu takie dane:
Pozycja silnika (feedback)
Pozycja rozkazu (command)
Wyjście PIDa (wypełnienie PWM inaczej poprostu Output).

W arkuszu kalk. (OpenOffice-Excel) (kto by pomyślał) obliczyłem wg wzoru wszystkie człony PIDa na podstawie, wyjścia i błędu można odtworzyć wartości poszczególnych członów z równania:

output(n) = Pgain * error(n) + Igain * suma(error) + Dgain * (error(n)-error(n-1))
Jak pisałem znam output, człon P można wyliczyć w Excelu, tam samo człon D, więc to co zostanie musi być członem I.

Teraz jak na dłoni widać to co piszą w książkach. Czyli akcja różniczkująca wzmacnia szum i to, że akcja całkująca jako, że uśredniająca to ma w sobie filtr dolnoprzepustowy, a właściwie nim jest... Poprawcie mnie jak głupoty piszę.
Obrazek
Fajnie, bo teraz mam narzędzie, które po wrzuceniu danych pokazuje wszystko jak na dłoni. Tuning powinien być dużo łatwiejszy.
Teraz jeszcze dodać feedforward control i może będzie hulać jak trzeba.
Autor UHU servo pisał, że warto dodać drugą pochodną błędu - przyspieszenie zmian błędu, ale z takim szumem to będzie jeszcze większe wzmocnienie szumu. Dziwne bo jego serwo działa z tą samą prędkością.

Jakieś pomysły na zmniejszenie szumu?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 14:42 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

Witam ponownie,

Poświecając każdą wolną chwilę (nie ma ich zbyt wiele) temat idzie powoli do przodu. Z powodu wielu problemów z końcówką mocy na L298 postanowiłem zaprojektować coś mocniejszego. Wybór padł na L6203, ponieważ większość producentów ploterów tnących wybiera ten układ na końcówkę mocy.

Poniżej schemat i płytka. Jutro będę wytrawiał. Przy okazji pokaże jak można zrobić PCB przy użyciu plotera drukującego UV.

Jeśli ktoś ma jakieś uwagi co można poprawić proszę pisać zanim będzie za późno... :)
Obrazek

PCB:
Obrazek

Ogólnie to układ działa w tej chwili w ten sposób:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 15:03 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

No jak się widzi efekt w działaniu - to rewelacja ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 15:10 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

Fajny telewizorek ;)

Efekty są tylko dlaczego to zabiera tyle czasu? ;)

A tak na szybko, to popełniłem jakiś oczywisty błąd przy prowadzeniu ścieżek?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 15:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

volkhen napisał(a):
Gdyby ktoś chciał dostać ową pracę inż, jest temat na elce albo proszę pisać to wrzucę tutaj jeśli będzie zainteresowanie.

Chętnie rzucę okiem, jaklo że sam robię pracę mgr z PID-em. :)

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 15:27 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

Ok, podeślę na maila. Tylko bez przepisywania proszę ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 15:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Dzięki za maila.
No wiadomo, że bez przepisywania, chciałem tylko rzucić okiem jak inni podeszli do PID'a.

Dzięki za maila.
Pozwolisz, że odpowiem tutaj na maila.


Cytuj:
Robisz PIDa na zmiennych stało czy zmienno przecinkowych?

W moim najnowszym wcieleniu PID przeszedłem na floaty.


Ja robię tak jak w linku:
post34446.html#p34446

Na całkowitych. Floaty to dla AVR przecież samobójstwo dla pamięci programu... Powodzenia... :D

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 16:42 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

Układ działa na floatach póki co. Teraz walczę z końcówkami mocy bo L298 za szybko się paliły.
Zobaczymy czy układ da radę jak dodam jeszcze kontrolę prądu. Najwyżej wrócę do całkowitych :) Albo zmienię scalaka, ale na to pewnie już czasu zabraknie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 18:34 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

Mam nadzieję, że to ostateczna wersja...
Obrazek

Komentarze mile widziane.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 19:06 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

Ale płyteczka wygląda całkiem całkiem ;) nie ma się tu czego przyczepić za bardzo. Wprawdzie przydałby się polygon i więcej masy - jednak robisz to z priorytetem na jednostronną więc nie ma za bardzo tu pola manewru. Jak już to jedynie bym te dwa kondki w lewym górnym rogu dał odwrotnie żeby ścieżka masy była krótsza - tzn wyobraź sobie że elektrolit odwracasz plusem i minusem ... i wtedy ścieżkę masy można skrócić - bo tak troszkę i tak kondek nie po drodze na głównej ścieżce masy w przeciwieństwie do tego co jest na środku płytki przy drugim kanale. Ale jak działa to nie wiem nawet czy trzeba tą przeróbkę robić - to taka kosmetyka już a ja zawsze staram się też jak mogę na to zwracać uwagę.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 19:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 sty 2013
Posty: 844
Lokalizacja: Przemyśl
Zbananowany użytkownik

Pomógł: 43

Ja zwykle w złączach gdzie mam dwa napięcia (w Twoim przypadku 5 oraz 24) daję masę na środkowy zacisk; mniejsza szansa na puszczenie z dymem obwodów na 5V jak przypadkowo podczas wkładania przewodu jedna "żyłka" z linki trafi nie tam gdzie trzeba :)

_________________
Klimatyzacja Przemyśl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 21:18 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

janeczqu, słuszna uwaga, już poprawiłem.

mirek, dziękuję za uwagi. Kondensatorki poprawiłem, wpadłem też w jakiś masoholizm i nie wiem czy nie przesadziłem ;) Czy tyle masy może zaszkodzić czy to działa po prostu jak ekran?
Dodam tylko, że PWM działa z f = 15kHz.
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 21:52 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

No i teraz z masą jest miodzio ;) dokładnie także z tą masą po środku - i 24V od razu ładnie leci

ostatnia rzecz - ale czysta kosmetyka wzrokowa - to te diody po prawej stronie płytki - po co pady prawie na krawędzi ? przecież spokojnie można przesunąć parę milsów w lewo

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 kwi 2013, o 18:33 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

Płyteczki zrobione :)

Do zrobienia płytek wykorzystałem ploter Roland VersaUV LEF-12. Maszyna jest w stanie drukować kolorami CMYK + Biały i lakier, więc właściwie można nią stworzyć dowolną płytkę PCB z opisem i maskami.

Super sprawa - wsadzamy płytkę do plotera, drukujemy i już... Niestety opcja dla zwykłego śmiertelnika niedostępna gdyż maszyna kosztuje około 20000€... :]

Chciałbym tutaj nadmienić, że normalnie służy do druku gadżetów a druk płytek PCB to mój wymysł :). Tak czy siak poszło świetnie i dopóki będę miał tą maszynę pod ręką będę na niej drukował płyteczki.

Trochę zdjęć aby pokazać jak to wyglądało:

Najpierw próba na płytce PCV jak wychodzi wydruk i czy jakość jest wystarczająca. Roland drukuje z rozdzielczością 1440dpi, więc musiało być ok.
Obrazek

Wsadzamy laminat ustawiamy wysokość i drukujemy:
Obrazek

Zrobiłem dwie wersje, zadruk podwójnej grubości i pojedynczej okazało się, że zadruk pojedynczy był wystarczający.
Obrazek Obrazek

Trawienie:
Obrazek Obrazek

Po wytrawieniu farbę UV można usunąć poprzez odparzenie farby gorącą wodą.
Obrazek Obrazek

Tak wygląda efekt końcowy:
Obrazek Obrazek

Jak oceniacie efekt końcowy?
Jutro druknę jakąś płytkę z malutkimi padami od scalaka powierzchniowego.

Zamieściłem tutaj ten opis jako ciekawostkę gdyż w ten sposób nikt raczej płytek nie wytwarzał... a na pewno nie na takim ploterze.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 maja 2013, o 11:58 
Offline
Nowy

Dołączył(a): 17 mar 2013
Posty: 12
Pomógł: 0

Po początkowych porażkach w końcu końcówka mocy działa przyzwoicie.

Mam nadzieję, że moje doświadczenie przyda się innym.

Otóż układ L298 sterowałem w ten sposób, że and wejście ENABLE podawany był sygnał PWM a na IN1, IN2 przeciwne sygnały sterujące kierunkiem. Działało to dobrze, z wyjątkiem, że układ czasem lubił się upalić czy to dlatego - nie wiem. Takie podłączenie było podane w datasheet.

Gdy zbudowałem końcówkę mocy na L6203 i podłączyłem w ten sam sposób co L298 układ działał jednak w sposób bardzo niestabilny, silnika szarpał jak cholera, nie dało się znaleźć "spokojnych" ustawień PIDa.
Walczyłem z tym cały dzień. W końcu postanowiłem wysterować układ tak jak to robią producenci ploterów czyli +PWM na IN1 i -PWM na IN2. Na ENABLE natomiast sygnał wyłączający silnik w razie przeciążenia.

Jakież było moje zdziwienie gdy po zmianach w programie aby uzyskać dwa przebiegi PWM (odwrócone wypełnieniem) i podłączeniu układu - układ zadziałał wyśmienicie!

Od razu zauważyłem, że serwo jest sztywniejsze - błąd nie przekraczał 5 imp gdy próbowałem przesunać oś ręcznie. Okazało się, żę ustawienia PIDa wymagają regulacji, zmniejszyłem P i D o połowę i układ zaczął pracować jeszcze lepiej. Błąd podczas ruchu jest dwa razy mniejszy niż na L298 i silnik pracuje dużo płynniej i ciszej.

Napotkałem jednak na problem z zakłóceniami na wejściach przy zależności, że im większe napięcie zasilające silnik to większe zakłócenia - logiczne. Okazało się, że silnik generuje takie zakłócenia, że napięcie indukowane w przewodach od enkodera wyzwala niechciane przerwania. Po założeniu dławika ferrytowego na przewody nastąpiła diametralna poprawa jednak nie jest to jeszcze idealnie.
Biały krążek ferrytowy na zdjęciu poniżej.
Obrazek
Widać, że mści się robienie układu na pająka, ale na robienie płytki na każdą wersję nie ma czasu.

Jakie są inne sposoby filtracji wejścia?
Może powinienem dać jakieś kondensatory (np. 1nF?)? na wejścia uP.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO