Witam,
Mam układ silniczka prądu stałego, który może się obracać w prawo lub w lewo.
Steruje nim odpowiednimi stanami na nóżkach procesora. Na ośce silnika jest tarcza z ząbkami sprzężona z transoptorem, który to jest podpięty do procka (przez przerzutnik schmitta) dzięki czemu mogę liczyć impulsy w trakcie działania i w ten sposób go pozycjonować.
Potrzebuję zaimplementować obsługę takiego układu w ten sposób abym mógł mu mówić "otwórz się na 10 impulsów(od zera)" "otwórz się na 5 impulsów" itp.
Tyle słowem wstępu. Potrzebuję teraz koncepcje jak to zrealizować.
Tak na prawdę już mam to zrobione i działa fajnie....tyle że czasami się "rozjeżdża" tj. np. punkt zero już nie jest zerem, tylko zatrzymuje się troszkę przed.
Obecne rozwiązanie:
1. Kalibracja.
Program kalibruje silnik, czyli znajduje punkt zero całkowicie się zamykając, aż trafi na blokadę mechaniczną (taka krańcówka).
2. Działanie - OTWIERANIE
program dostaje "ustaw się na 10 impulsów", ma w pamięci że aktualnie jest na 0 impulsie - zostaje obliczana różnica.
diff = aktPos - zadanaPos;
dostaję diff = -10 czyli tyle impulsów ma przejechać od aktualnej pozycji aby ustawić się na 10 impulsie. Włączam silnik w odpowiednią stronę (bazując na znaku diffa, - to otwieranie, + to zamykanie) i jeśli dostane impuls z transoptora dodaje do diff'a +1. I tak kręcę silnikiem aż diff będzie ZERO.
3. Działanie - ZAMYKANIE
Uznajmy ze jestem na 10 impulsie. Dostaje "otwórz się na 5 impulsów". Znowu obliczam diffa
diff = aktPos - zadanaPos
dostaje diff = 5, znowu sprawdzam znak, jest dodatni więc trzeba zamykać. Włączam silnik, odejmuje od diffa 1 jak dostane impuls i tak kręce aż diff będzie ZERO.
Generalnie taki sposób działania wymyśliłem, ale nie chce mi to działać perfekcyjnie i juz po kilkunastu minutach ciągłego otwierania i zamykania się rozkalibrowywuje.
Oglądałem na oscylku sygnał impulsów, jest ładny, zrobiłem filtr zakłóceń impulsów - nie pomogło. I nie mam już pomysłów.
Piszę bo może ktoś robił już coś podobnego i zna jakieś pułapki o których nie pomyślałem.
Mam układ silniczka prądu stałego, który może się obracać w prawo lub w lewo.
Steruje nim odpowiednimi stanami na nóżkach procesora. Na ośce silnika jest tarcza z ząbkami sprzężona z transoptorem, który to jest podpięty do procka (przez przerzutnik schmitta) dzięki czemu mogę liczyć impulsy w trakcie działania i w ten sposób go pozycjonować.
Potrzebuję zaimplementować obsługę takiego układu w ten sposób abym mógł mu mówić "otwórz się na 10 impulsów(od zera)" "otwórz się na 5 impulsów" itp.
Tyle słowem wstępu. Potrzebuję teraz koncepcje jak to zrealizować.
Tak na prawdę już mam to zrobione i działa fajnie....tyle że czasami się "rozjeżdża" tj. np. punkt zero już nie jest zerem, tylko zatrzymuje się troszkę przed.
Obecne rozwiązanie:
1. Kalibracja.
Program kalibruje silnik, czyli znajduje punkt zero całkowicie się zamykając, aż trafi na blokadę mechaniczną (taka krańcówka).
2. Działanie - OTWIERANIE
program dostaje "ustaw się na 10 impulsów", ma w pamięci że aktualnie jest na 0 impulsie - zostaje obliczana różnica.
diff = aktPos - zadanaPos;
dostaję diff = -10 czyli tyle impulsów ma przejechać od aktualnej pozycji aby ustawić się na 10 impulsie. Włączam silnik w odpowiednią stronę (bazując na znaku diffa, - to otwieranie, + to zamykanie) i jeśli dostane impuls z transoptora dodaje do diff'a +1. I tak kręcę silnikiem aż diff będzie ZERO.
3. Działanie - ZAMYKANIE
Uznajmy ze jestem na 10 impulsie. Dostaje "otwórz się na 5 impulsów". Znowu obliczam diffa
diff = aktPos - zadanaPos
dostaje diff = 5, znowu sprawdzam znak, jest dodatni więc trzeba zamykać. Włączam silnik, odejmuje od diffa 1 jak dostane impuls i tak kręce aż diff będzie ZERO.
Generalnie taki sposób działania wymyśliłem, ale nie chce mi to działać perfekcyjnie i juz po kilkunastu minutach ciągłego otwierania i zamykania się rozkalibrowywuje.
Oglądałem na oscylku sygnał impulsów, jest ładny, zrobiłem filtr zakłóceń impulsów - nie pomogło. I nie mam już pomysłów.
Piszę bo może ktoś robił już coś podobnego i zna jakieś pułapki o których nie pomyślałem.
