Jak sterować silnikami za pomocą krok/kierunek???
-
Autor tematu - Specjalista poziom 1 (min. 100)
- Posty w temacie: 5
- Posty: 205
- Rejestracja: 01 paź 2008, 20:47
- Lokalizacja: Wielkopolska
Jak sterować silnikami za pomocą krok/kierunek???
Witam. Spędziłem cały wieczór i nie znalazłem odpowiedzi. Szukam funkcji (najlepiej w Delphi) (pomijamy problemy z przerywaniem z win xp)
Prosił bym o kawałek kodu który by mi sterował silnikiem, LPT podpięte na płytce SSk-MB1, sterownik md4052, sterownik ustawiony na 2000 kroków na obrót.
Jak napisać aby obrócić silnik np. 400 kroków w lewo i prawo. (albo cały obrót przy takim mikrokroku) Najlepiej w delphi (łącznie z otwarciem portu itd.) Jak opanować te sygnały krok i kierunek
Będę wdzięczny za pomoc.
Prosił bym o kawałek kodu który by mi sterował silnikiem, LPT podpięte na płytce SSk-MB1, sterownik md4052, sterownik ustawiony na 2000 kroków na obrót.
Jak napisać aby obrócić silnik np. 400 kroków w lewo i prawo. (albo cały obrót przy takim mikrokroku) Najlepiej w delphi (łącznie z otwarciem portu itd.) Jak opanować te sygnały krok i kierunek
Będę wdzięczny za pomoc.
Tagi:
-
- Czytelnik forum poziom 2 (min. 20)
- Posty w temacie: 2
- Posty: 27
- Rejestracja: 12 sie 2004, 03:51
- Lokalizacja: krakĂłw
hmm xD
no wiec
zalozmy ze mamy funkcje outport(char adres, char data);
nooo mniej wiecej cos nw te klocki. Ogolnie nic skomplikowanego. Mam nadzieje ze Ci to pomoze.
no wiec

zalozmy ze mamy funkcje outport(char adres, char data);
Kod: Zaznacz cały
static char adres = 0x378
void krec(int ilosc, bool kierunek)
{
bool state = true;
int data1 = 0; /// 00000000
int data2 = 1; /// dla 8 bitowego portu to bedzie chyba 2 pin 00000010
int kier;
if(kierunek)
kier = 1 /// dla 8 bitowego portu: 00000001
/// jesli kierunek prawy (umownie - nie czepiac sie)
else if(!kierunek)
kier = 0 /// dla 8 bitowego portu: 00000000 jesli kierunek lewy
for(int i = 0 ; i < ilosc)
{
if(state){
outport(adres, (char)(kier+data1) );
state = false;
}
if(!state){
outport(aders, (char)(kier+data2) );
state = true;
}
}
}
-
- Lider FORUM (min. 2000)
- Posty w temacie: 4
- Posty: 4017
- Rejestracja: 15 lis 2006, 22:01
- Lokalizacja: Tarnobrzeg
Funkcja "krec" jest odrobinę za krótka.
Tu nie chodzi o zwykłe wygenerowanie impulsów. Silnik nie może nagle wykonać 400 kroków na pełnej prędkości bo zgubi krok. Musi się rozpędzać a przed zatrzymaniem hamować tzn. porusza się po określonej rampie.
Funkcja musi czytać zmienną globalną określającą przyśpieszenie i częstotliwość maksymalną.
To jest problem.
Może Kolega określić z jaką prędkością będą generowane impulsy?
Tu nie chodzi o zwykłe wygenerowanie impulsów. Silnik nie może nagle wykonać 400 kroków na pełnej prędkości bo zgubi krok. Musi się rozpędzać a przed zatrzymaniem hamować tzn. porusza się po określonej rampie.
Funkcja musi czytać zmienną globalną określającą przyśpieszenie i częstotliwość maksymalną.
To jest problem.
Może Kolega określić z jaką prędkością będą generowane impulsy?
-
Autor tematu - Specjalista poziom 1 (min. 100)
- Posty w temacie: 5
- Posty: 205
- Rejestracja: 01 paź 2008, 20:47
- Lokalizacja: Wielkopolska
Dziękuje za odpowiedzi. Kod na pewno spróbuje wykorzystać.
Leoo masz jakiś pomysł jak zrobić rozpędzanie i hamowanie silnikiem??? trzeba zastosować jakieś opóźnienie w pętli czy jak???
Chciałbym zastosować krokówki (pewnie będa mocniejsze na m880) do napędu takich małych taśmociągów do sortowania, życie trzeba sobie ułatwiać, dlatego się zastanawiam czy idzie zrobić tak aby np.
1)krańćówka 1 zostaje wciśnięta
2)wtedy silnik obraca sie o jeden obrót
3)po jakimś czasie krancówka zostaje zwolniona (silnik nadal stoi)
4)krancówka zostaje wciśnieta
5)i silnik znów jeden obrót itd....
to by było by idealne rozwiązanie.
Jak badać czy krańcówka jest wciśnięta czy nie???
jak to zrealizować za pomocą płytki SSk-MB1 lub podobnej???
Leoo masz jakiś pomysł jak zrobić rozpędzanie i hamowanie silnikiem??? trzeba zastosować jakieś opóźnienie w pętli czy jak???
Chciałbym zastosować krokówki (pewnie będa mocniejsze na m880) do napędu takich małych taśmociągów do sortowania, życie trzeba sobie ułatwiać, dlatego się zastanawiam czy idzie zrobić tak aby np.
1)krańćówka 1 zostaje wciśnięta
2)wtedy silnik obraca sie o jeden obrót
3)po jakimś czasie krancówka zostaje zwolniona (silnik nadal stoi)
4)krancówka zostaje wciśnieta
5)i silnik znów jeden obrót itd....
to by było by idealne rozwiązanie.
Jak badać czy krańcówka jest wciśnięta czy nie???
jak to zrealizować za pomocą płytki SSk-MB1 lub podobnej???
-
- Lider FORUM (min. 2000)
- Posty w temacie: 4
- Posty: 4017
- Rejestracja: 15 lis 2006, 22:01
- Lokalizacja: Tarnobrzeg
Silnik krokowy nie jest przeznaczony do napędu taśmociągów ze względu na niewielką sprawność ale czasem jest "wygodniejszy".
Pisanie softu na PC do sterowania STEP/DIR jest trudne. W tym jednak wypadku nie widzę takiej konieczności. Jest program TURBOCNC, który praktycznie można uruchomić z dyskietki pod DOS na przestarzałym PC. Na dodatek jest to soft obsługujący maszyny CNC. Wystarczy napisać kawałek kodu G, który w pętli będzie realizował określone zadanie.
Oczywiście można zainwestować w sterownik PLC i uniezależnić się od PC ale przynajmniej na czas sprawdzenia działania maszyny warto ściągnąć TURBOCNC.
Pisanie softu na PC do sterowania STEP/DIR jest trudne. W tym jednak wypadku nie widzę takiej konieczności. Jest program TURBOCNC, który praktycznie można uruchomić z dyskietki pod DOS na przestarzałym PC. Na dodatek jest to soft obsługujący maszyny CNC. Wystarczy napisać kawałek kodu G, który w pętli będzie realizował określone zadanie.
Oczywiście można zainwestować w sterownik PLC i uniezależnić się od PC ale przynajmniej na czas sprawdzenia działania maszyny warto ściągnąć TURBOCNC.
-
Autor tematu - Specjalista poziom 1 (min. 100)
- Posty w temacie: 5
- Posty: 205
- Rejestracja: 01 paź 2008, 20:47
- Lokalizacja: Wielkopolska
Wiem ze silniczek ma małą sprawność,ale mi wystarczają, sprawdzałem już na machu silniczek 3,1Nm już dawał radę, a jak bym włożył 4,5Nm to już wogóle bajka by była. Sterować programem jak mach czy wpomniany turbocnc da się, tylko czy można ustawić aby dany kod był wykonywany w zależności od krańcówki ?? (czy jest wciśnięta czy nie)??Leoo pisze:Silnik krokowy nie jest przeznaczony do napędu taśmociągów ze względu na niewielką sprawność ale czasem jest "wygodniejszy".
Pisanie softu na PC do sterowania STEP/DIR jest trudne. W tym jednak wypadku nie widzę takiej konieczności. Jest program TURBOCNC, który praktycznie można uruchomić z dyskietki pod DOS na przestarzałym PC. Na dodatek jest to soft obsługujący maszyny CNC. Wystarczy napisać kawałek kodu G, który w pętli będzie realizował określone zadanie.
Oczywiście można zainwestować w sterownik PLC i uniezależnić się od PC ale przynajmniej na czas sprawdzenia działania maszyny warto ściągnąć TURBOCNC.
czytałem Trochę o dostępie do LPT, są jakieś sterowniki do obsługi na niższym przerywaniu czy coś. Coś bym kombinował aby nie gubił kroków. Poza tym zgubienie kroku czy dwóch na taśmociągu nie będzie jakoś strasznie odczuwalne bo załączał by się dopiero przy wciśnięciu krańcówki....
O PLC też myślałem, ale taśmociągu nie używam stale, tylko sezonowo czasami, dlatego lepszym rozwiązaniem by było sterowanie na cnc, bo sterownik bym odpinał od maszyny i wpinał tam (nie używał bym 2 maszyn jednocześnie). Jedyne co by zostało w maszynie to 3 silniki które nie są jakoś strasznie drogie. Dobry sterownik wiadomo ze kosztuje trochę.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 4
- Posty: 4017
- Rejestracja: 15 lis 2006, 22:01
- Lokalizacja: Tarnobrzeg
Czyli sterujemy jednym silnikiem za pomocą jednej krańcówki?ambrosius pisze:1)krańćówka 1 zostaje wciśnięta
2)wtedy silnik obraca sie o jeden obrót
3)po jakimś czasie krancówka zostaje zwolniona (silnik nadal stoi)
4)krancówka zostaje wciśnieta
5)i silnik znów jeden obrót itd....
Programy sterujące muszą sprawdzać stan wejść LPT, choćby w celu ustalenia pozycji Home czy limit za pomocą krańcówek. W jednym z wątków opisana była metoda obsługi głowicy obrotowej z użyciem makr w Mach z zastosowaniem zewnętrznego enkodera na 3 bitach.