Mały, prosty sterownik krokowca pod AVR

Rozmowy na temat układów elektronicznych sterowania obrabiarek CNC

tomcat65
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 20
Posty: 1236
Rejestracja: 15 lis 2009, 02:46
Lokalizacja: Olsztyn
Kontakt:

Re: Mały, prosty sterownik krokowca pod AVR

#51

Post napisał: tomcat65 » 13 sty 2020, 00:12

Żeby nie ciągnąć już off topa:
-Mam mieszane uczucia co do tej potęgi C++. Biblioteki może i są bardziej uniwersalne, ale w efekcie prawie zawsze generują znacznie dłuższy kod wynikowy.
TOP67 pisze:W trybie CTC udało się uzyskać 8 MHz

W procku zawarta jest pętla PLL, która umożliwia zwiększenie częstotliwości do 32 i 64 MHz. Można nią zasilać timery ( rdzenia nie ).
Przydaje się do pomiarów b. krótkich sygnałów na zewnętrznych przerwaniach. Tylko nie pamiętam, czy można tak szybkie sygnały wyprowadzić na piny.



Awatar użytkownika

TOP67
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 27
Posty: 2224
Rejestracja: 17 wrz 2018, 10:47
Lokalizacja: Wrocław
Kontakt:

Re: Mały, prosty sterownik krokowca pod AVR

#52

Post napisał: TOP67 » 13 sty 2020, 00:24

W tym temacie prędkość nie jest krytyczna, problemem jest zatrzymanie przerwań przez inne procesy. Przejście na sterowanie silnika timerem CTC rozwiąże problem. Z tego co do tej pory napisał autor, nie ma potrzeby liczenia kroków, ważne jest tylko utrzymanie prędkości.

Ale dzięki temu dowiedziałem się o trybie CTC.


Avalyah
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 22
Posty: 2350
Rejestracja: 29 lis 2015, 00:38
Lokalizacja: Bielsko-Biała

Re: Mały, prosty sterownik krokowca pod AVR

#53

Post napisał: Avalyah » 13 sty 2020, 00:36

tomcat65 pisze:Biblioteki może i są bardziej uniwersalne, ale w efekcie prawie zawsze generują znacznie dłuższy kod wynikowy.

Biblioteki bibliotekami, i do C są. Mi chodzi o możliwość używania klas, co jest szczególnie użyteczne w przypadku robienia interfejsów np. na ekranach LCD.


tomcat65
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 20
Posty: 1236
Rejestracja: 15 lis 2009, 02:46
Lokalizacja: Olsztyn
Kontakt:

Re: Mały, prosty sterownik krokowca pod AVR

#54

Post napisał: tomcat65 » 13 sty 2020, 02:24

tomcat65 pisze:W procku zawarta jest pętla PLL

Sorry, błąd, nie w tym procku (328), jest w 32U4, np. Arduino Leonardo. I nie można tej "szybkości" wyrzucić na piny.
TOP67 pisze:dzięki temu dowiedziałem się o trybie CTC.

To najbardziej użyteczny ( poza PWM ) tryb timerów. Dlatego sugeruję jego użycie. Wiem, że nie chodzi o prędkość, tylko stałość sygnału.
Nawet gdyby była konieczność regulacji prędkości, to też jest możliwa bez zakłócania ciągłości pracy.
Avalyah pisze:Mi chodzi o możliwość używania klas, co jest szczególnie użyteczne w przypadku robienia interfejsów np. na ekranach LCD.

Temat wyświetlaczy traktuję "po macoszemu" :) , żadne z moich "urządzeń" nie wymagało takowego, co najwyżej 7seg LED.
Ale fakt, jak się robi tego dużo ..


Autor tematu
oprawcafotografii
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 21
Posty: 6105
Rejestracja: 29 kwie 2009, 10:11
Lokalizacja: Kraków / Jaworzno / Kopanka

Re: Mały, prosty sterownik krokowca pod AVR

#55

Post napisał: oprawcafotografii » 13 sty 2020, 19:19

Jestem ;)

Ja jestem początkującym programistą więc nie liczcie, że wszystko zrozumiem ;)

Znalazłem "noInterrupts()" przynajmniej w bibliotece OneWire czyli np. termometrów.
Raczej nie napiszę własnej biblioteki, żeby to obejść... Sprawdzę w wolnej chwili czy
nie można tego po prostu usunąć... Tak czy owak będę raczej pisał mały soft na A328
żeby zajmował się wyłącznie krokowcem - mam pomysły na kilka różnych zastosowań
więc przyda się...

Jakub
„Największym wrogiem wolności jest najedzony niewolnik.”

Awatar użytkownika

SylwekK
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 5
Posty: 60
Rejestracja: 13 maja 2019, 12:37

Re: Mały, prosty sterownik krokowca pod AVR

#56

Post napisał: SylwekK » 13 sty 2020, 19:51

Jaki to krokowiec (ile kroków pełnych na obrót) i na jakiej prędkości maksymalnej Ci zależy?

Awatar użytkownika

TOP67
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 27
Posty: 2224
Rejestracja: 17 wrz 2018, 10:47
Lokalizacja: Wrocław
Kontakt:

Re: Mały, prosty sterownik krokowca pod AVR

#57

Post napisał: TOP67 » 13 sty 2020, 20:07

Nie musisz tego obchodzić. Do wysyłania impulsów step na A4988 użyj timera CTC, a nie przerwań. To jest bardzo prosty mechanizm, którego nic nie przerywa.

Działa to w ten sposób:
Zegar procesora 16MHz przy każdym impulsie zwiększa o jeden zawartość trzech liczników (dwa 8 bitowe i jeden 16 bitowy). Każdy z nich ma też rejestr, do którego możesz wpisać dowolną wartość. Jeśli licznik osiągnie wartość równą tej z rejestru, to następuje jego wyzerowanie i liczy od nowa. Oprócz tego wywołuje to również zaprogramowaną czynność. Może to być wywołanie przerwania (tak właśnie działają przerwania timera), ale je można wyłączyć. Można też zmienić poziom na dedykowanym wyjściu. Wyjścia są na sztywno przypisane do każdego timera i nie można ich zmienić. Ale za to jest to realizowane sprzętowo, całkowicie poza programem. Nic tego nie jest w stanie zakłócić (poza celową zmianą parametrów timera). Tak dla porządku, jest jeszcze podzielnik, którym można zmniejszyć częstotliwość taktowania timera (jest kilka zdefiniowanych wartości).

Czyli uruchamiasz timer i już nic nie musisz robić. Po zadanym czasie możesz zmienić częstotliwość lub wyłączyć timer.

Timera0 nie należy ruszać, bo steruje on systemowymi funkcjami pomiaru czasu.
Timer 1 steruje wyjściem 9
Timer 2 steruje wyjściem 11

W trybach PWM każdy timer może sterować dwoma wyjściami niezależnie.

Dodane 3 minuty 29 sekundy:
Podaj jaką chcesz uzyskać częstotliwość, to napiszę Ci kod timera.


Autor tematu
oprawcafotografii
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 21
Posty: 6105
Rejestracja: 29 kwie 2009, 10:11
Lokalizacja: Kraków / Jaworzno / Kopanka

Re: Mały, prosty sterownik krokowca pod AVR

#58

Post napisał: oprawcafotografii » 14 sty 2020, 19:46

Krokowiec 200 kroków, sterownik mam ustawiony na 1/4 czyli 800 kroków na obrót.

Obroty użyteczne od około 5rpm do 50rpm czyli <> 666 impulsów /s max
Typowo <> 1200rph czyli okolo 266 kroków / s

Jakub
„Największym wrogiem wolności jest najedzony niewolnik.”

Awatar użytkownika

TOP67
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 27
Posty: 2224
Rejestracja: 17 wrz 2018, 10:47
Lokalizacja: Wrocław
Kontakt:

Re: Mały, prosty sterownik krokowca pod AVR

#59

Post napisał: TOP67 » 14 sty 2020, 20:05

Napisałem uniwersalną funkcję do wywoływania generatora na timerze1. Sygnał jest wyprowadzony na pin 9 lub 10 (wystarczy odkomentować odpowiednie linie).

Ukryta zawartość
To forum wymaga zarejestrowania i zalogowania się, aby zobaczyć ukrytą zawartość.


wywołanie: CTC_Timer1 (częstotliwość).
zakres: 0.12Hz do 8MHz. wywołanie z argumentem 0 wyłącza generator.
Ponieważ jest to licznik dyskretny, to częstotliwość jest zmieniana skokowo. Widać to zwłaszcza powyżej 100kHz. Dlatego funkcja zwraca rzeczywistą częstotliwość.


Avalyah
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 22
Posty: 2350
Rejestracja: 29 lis 2015, 00:38
Lokalizacja: Bielsko-Biała

Re: Mały, prosty sterownik krokowca pod AVR

#60

Post napisał: Avalyah » 14 sty 2020, 20:33

Bardzo ładnie napisana funkcja.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika CNC”