To mój pierwszy post na forum, więc przede wszystkim witam wszystkich serdecznie!
Piszę tutaj, ponieważ potrzebuję pomocy w zrozumieniu błędu rozumowania lub pomocy w usunięciu błędu w programowaniu.
Mam zakupiony zestaw ATB 1.05a. Do wyprowadzeń MOT1 i MOT2 podłączyłem silnik skokowy zakupiony w tym sklepie:
botland.com.pl/pl/silniki-krokowe/3607-silnik-krokowy-jk42hs34-0404-200-krokowobr-12v-04a-025nm.html
200 impulsów na obrót, 0.25 Nm, napięcie znamionowe 12 VDC.
Układ taktowany rezonatorem kwarcowym 11.059200 MHz
Do pinów portu D kontrolera podłączyłem wejścia układu L293D, odpowiednio:
M1_1A -> PD5
M1_2A -> PD4
M2_3A -> PD7
M2_4A -> PD6
Docelowo ma to być napęd przekładni 1x9 z regulowaną prędkością obrotową. Przekładnia jest tak zaprojektowana, że przy odpowiednich wartościach rejestru OCR0 na wyjściu osiąga interesujące mnie prędkości obrotowe.
Problem polega na tym, że cała przekładnia wydaje się nieźle pracować, bez większego oporu da się palcami całą przekładnią obracać. Ale kiedy silnik ją napędza wystarczy przyłożyć delikatne obciążenie (także do pierwszego koła zębatego) i silnik utyka. Zastosowałem sterowanie dwufazowe, pełnokrokowe. Próbowałem również przed utykiem podnosić napięcie na zasilaczu regulowanym. Jest to dla mnie bardzo dziwne, ponieważ moment trzymający tego silnika wynosi 2.6kg*cm - co (jak dobrze rozumiem) oznacza, że na ramieniu o promieniu 1cm jest w stanie urzymać 2.6kg w spoczynku. To absolutnie się nie zgadza. W związku z tym chciałem prosić forumowiczów o pomoc w znalezieniu błędu w kodzie, bo pracuję nad tym już od jakiegoś czasu i nie dostrzegam.
Poniżej załączam kod programu.
Będę bardzo wdzięczny za wszelką pomoc.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.