RAMPA na ARDUINO

Dyskusje na temat silników krokowych i sterowników silników krokowych.
Awatar użytkownika

Autor tematu
markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 64
Posty: 3975
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

#21

Post napisał: markcomp77 » 13 kwie 2012, 13:24

jarekk pisze: 100kHz
to jest max puls.. jak rozumiem co 10us przerwanie?

to chyba tyle pociągnie i atmega8 (lub te nowe)? dla jedej osi

a może zastosować dwa przerwania czasowe?

1) szybki wątek - 1MHz (1us) do generowania impulsów... czyli z dokładności do 1us

2)wolniejszy wątek - 100KHz... lub mniej, gdzie będzie podejmowana decycja o zmianach prędkości (trochę to jak w linuxcnc)


SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm


jarekk
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 21
Posty: 1701
Rejestracja: 17 mar 2006, 08:57
Lokalizacja: Gdańsk

#22

Post napisał: jarekk » 13 kwie 2012, 13:36

markcomp77 pisze:to jest max puls.. jak rozumiem co 10us przerwanie?
Tak. Do tego sprzętowo wyzwalam zegar który generuje zbocze opadające sygnału 'step'

Po co używać Atmegi jak za prawie tę samę cenę można mieć Cortexa ? ( choć można jak ktoś lubi ). Do wszystkiego dochodzi obsługa krańcówek ( u mnie na osobnym przerwaniu 1ms).

Zakładając sposób Linuxcnc to by się dało ( choć nie w ATmega) uzyć sprzętowych timerów do generacji kroków ( np. STM32 z Cortexem M3 lub M4 - mają bardzo zaawansowane timery)
Tyle że to jest zabawa w przeliczanie 'w locie' - jeżeli będę potrzebował więcej niż 100kHz to dodam FPGA i mój algorytm ( oryginalnie planowany do FPGA) będzie chodził w zasadzie bez istotnych ograniczeń prędkości.

Awatar użytkownika

Autor tematu
markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 64
Posty: 3975
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

#23

Post napisał: markcomp77 » 13 kwie 2012, 13:55

zaczyna mi się klarować...
idea z Arduino - to poto aby dało się fajnie bawić, bez wysiłku...
a z zegarem można trochę zejść

zastanawiam się ile przerwań zegarowych na raz... ale ze 2 by się przydały, aby elegancko to ułożyć

czy atmega8 ma możliwość wyzwalania 2 przerwań czasowych na raz?
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm


jarekk
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 21
Posty: 1701
Rejestracja: 17 mar 2006, 08:57
Lokalizacja: Gdańsk

#24

Post napisał: jarekk » 13 kwie 2012, 14:12

markcomp77 pisze: czy atmega8 ma możliwość wyzwalania 2 przerwań czasowych na raz?
Raczej tak, ale ustawią się w kolejce według priorytetów. Wydaje mi się że też trzeba by włączać ponownie przerwania w tym niskopriorytetowym aby nie zakłócać pracy generatora impulsów.

Awatar użytkownika

Autor tematu
markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 64
Posty: 3975
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

#25

Post napisał: markcomp77 » 13 kwie 2012, 14:49

STEP-IRQ -- to szybsze przerwanie 1MHz - do kształtowania STEP ma najwyższy priorytet (może NMI)

SPEED-IRQ -- to drugie przerwanie (decydujące o prędkości) ma mieć niższy priorytet - być przerywalnym przez wątek STEP-IRQ...
to przerwanie decyduje o prędkości chwilowej na podstawie zadanej rampy (i jej kształtu)
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm


jarekk
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 21
Posty: 1701
Rejestracja: 17 mar 2006, 08:57
Lokalizacja: Gdańsk

#26

Post napisał: jarekk » 13 kwie 2012, 15:06

Generalnie - jak najbardziej.

Niestety trzeba przebrnąć przez parę uciążliwych szczegółów implementacyjnych - związanych głównie z synchronizacją.

Awatar użytkownika

Autor tematu
markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 64
Posty: 3975
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

#27

Post napisał: markcomp77 » 13 kwie 2012, 15:20

jarekk pisze:Niestety trzeba przebrnąć przez parę uciążliwych szczegółów implementacyjnych - związanych głównie z synchronizacją.
dla jednej osi - zapewne można zastosować uproszczenia nie akceptowalne przy kontroli ruch w wielu osiach równocześnie...

Obrazek
i nieco więcej na temat:
http://people.mech.kuleuven.be/~bruynin ... n-api.html

to będzie plan realizacyjny...

plan będzie statyczny:

1. odcinek przyśpieszenie
2. odcinek stalej prędkości
3. odcinek hamowanie
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm


Leoo
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 10
Posty: 4017
Rejestracja: 15 lis 2006, 22:01
Lokalizacja: Tarnobrzeg

#28

Post napisał: Leoo » 13 kwie 2012, 17:31

markcomp77 pisze:zastanawiam się ile przerwań zegarowych na raz... ale ze 2 by się przydały, aby elegancko to ułożyć
Procesory jednordzeniowe nie mogą obsługiwać jednocześnie więcej niż 1 przerwania.
markcomp77 pisze:czy atmega8 ma możliwość wyzwalania 2 przerwań czasowych na raz?
Można wyzwolić wszystkie przerwania na raz (choć będzie trudno) jednak wykonane zostaną kolejno, zgodnie z priorytetem.

Jeśli chodzi o priorytety: najważniejszym jest generowanie impulsu STEP, więc najwyższy priorytet powinien otrzymać timer.

W kwestii ARDUINO uważam, że to podobna proteza jak BASIC STAMP Microchipa. Kolejny kompilator, kolejna płytka do kupienia.

Awatar użytkownika

Autor tematu
markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 64
Posty: 3975
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

#29

Post napisał: markcomp77 » 13 kwie 2012, 18:51

Leoo pisze:W kwestii ARDUINO uważam, że to podobna proteza jak BASIC STAMP Microchipa. Kolejny kompilator, kolejna płytka do kupienia.
nie warto zniechęcać do arduino -- ono już się obroniło ;)
osobiście odbieram tę ideę jako udaną... i pozwalającą na szybkie opracowywanie wielu aplikacji
bardzo dużo materiałów edukacyjnych, przykładów... dostępność środowiska rozwojowego na: linux, win32, mac... i otwartość źródeł --- to są argumenty za!

zresztą - to nie jest wątek w celu obrony Arduino...

wybór Arduino jako platformy rozwojowej to wina kolegi Pitsa - nich On się tłumaczy.. On jest głównym winnym ;)
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm

Awatar użytkownika

Yogi_
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 16
Posty: 759
Rejestracja: 13 sty 2010, 08:07
Lokalizacja: Braniewo

#30

Post napisał: Yogi_ » 13 kwie 2012, 19:07

Witam :-)
Ciekawie się rozwija :-)
I tak się zastanawiam czy rampa liczona częścią całego czasu przejazdu to dobrze?
Czy nie lepiej liczyć rampę w stosunku do masy poruszanej? Rampa dla max_speed (tej samej) będzie różna dla tras 1000 i 100 mm. Jakiś arkusz czy coś. W granicznych przypadkach trasa będzie się składała tylko z kawałków ramp.
Pozdrawiam
Krzysiek

ODPOWIEDZ Poprzedni tematNastępny temat

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