Witam - przepraszam za post pod postem.
Chciałbym wykorzystać Bartka kod z tego tematu
viewtopic.php?f=18&t=66 do posuwu automatycznego.
Posuw ręczny działa bardzo dobrze.
Do posuwu automatycznego potrzebne jest "sterowanie z enkodera wrzeciona" który w obecnej postaci wygląda tak:
$nocompile
Sub Rpm_odczyt
If Tce0_cnt <> Rpm_enkoder_tmp Then 'jesli zawartosc timera TCD0 jest różna od naszej zmiennej to
Rpm_enkoder_tmp = Tce0_cnt 'przepisz nową wartość z timera TCD0 do zmiennej enkoder_tmp
Rpm_enkoder_tmp_1 = Tce0_cnt / 4 ' four inpulses per one step of teh encoder so wee need only one
If Rpm_enkoder_tmp_1 <> Rpm_enkoder_tmp_2 Then 'Jeśli zmienna Enkoder_tmp_1 jest różna od zmiennej Enkoder_tmp_2
Rpm_enkoder_tmp_2 = Rpm_enkoder_tmp_1 'wstaw wartość zmiennej Enkoder_tmp_1 do zmiennej Enkoder_tmp_2
End If
End If
End Sub
Jest to kod który podał mi Paweł Pikczu działa bardzo dobrze wywoływany jest co 1 sekundę i wysyłany na lcd.
Na chwilę obecna mam zrobione przeliczanie posuwu który jest "zadawany" z wyświetlacza lcd do zmiennej
przeliczanie zmiennej wygląda tak:
Kroki_z_1mm = Silnik_z / Sruba_z
Kroki_z_tmp = Posuw_z * Kroki_z_1mm
Kroki_z = Kroki_z_tmp \ 1000
Zmienne Silnik_z oraz Sruba_z są w tej chwili wpisane na stałe na początku programu - docelowo maja być pobierane z wyświetlacza z menu konfiguracyjnego.
Przy założeniu że śruba ma skok 5mm/obr oraz silnik potrzebuje 1000 kroków/obr przy ustawionym posuwie 1mm do sterownika silnika musi być podane 200 impulsów na 1 obrót wrzeciona do synchronizacji rozpoczęcia posuwu automatycznego musi być wykorzystany sygnał index enkodera wrzeciona - nie wiem jak przerobić Bartka program aby sterował posuwem automatycznym.
Posuw chcę zmieniać w zakresie od 0,005mm/obr wrzeciona do 32mm/obr wrzeciona to było by podstawa do napisania podprogramu do ustawiania skoków gwintów.
pozdrawiam Jacek.