Silnik krokowy, płynne obroty

Dyskusje na temat silników krokowych i sterowników silników krokowych.

atom1477
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 7
Posty: 3274
Rejestracja: 21 kwie 2011, 10:58
Lokalizacja: ::

#21

Post napisał: atom1477 » 02 lut 2017, 22:09

Zarzut był do korzystania z kodów z internetu o których nic nie wiadomo.

Ilość faz oznacza ilość niezależnie sterowanych biegunów magnetycznych. Co prawie zawsze było równe ilości cewek. Ale że Chińczycy szukali oszczędności to wywalili jedną cewkę skoro bez niej silnik dalej i tak jako tako działał.

Silnikiem sterowałem i działał dość dobrze. Ale jednak było widać że to nie to co mogło by być.
Najważniejsze części w moim kodzie są takie:

Kod: Zaznacz cały

#define State0 (T1L_Off | T1H_On | T23L_On | T23H_Off | T4L_Off | T4H_On)
#define State1 (T1L_On | T1H_Off | T23L_On | T23H_Off | T4L_Off | T4H_On)
#define State2 (T1L_On | T1H_Off | T23L_Off | T23H_On | T4L_Off | T4H_On)
#define State3 (T1L_On | T1H_Off | T23L_Off | T23H_On | T4L_On | T4H_Off)
#define State4 (T1L_Off | T1H_On | T23L_Off | T23H_On | T4L_On | T4H_Off)
#define State5 (T1L_Off | T1H_On | T23L_On | T23H_Off | T4L_On | T4H_Off)

PROGMEM const uint8_t Krok[] = {State5, State4, State3, State2, State1, State0};
Gdzie T oznacza tranzystory. 1 2 3 i 4 numery wyprowadzeń silnika (i widać że wyprowadzenia 2 i 3 są połączone razem).
A L i H to dolne i górne tranzystory.
Czyli T1H_On oznacza że to włącza tranzystor górny do sterowania wyprowadzenia 1. Czyli że podaje VCC na wyprowadzenie 1.

Wcześniej sobie zadeklarowałem na których pinach jest jaki tranzystor:

Kod: Zaznacz cały

#define T1L_On (1 << 6)
#define T1L_Off 0
#define T23L_On (1 << 2)
#define T23L_Off 0
#define T4L_On (1 << 0)
#define T4L_Off 0
#define T1H_On 0
#define T1H_Off (1 << 7)
#define T23H_On 0
#define T23H_Off (1 << 5)
#define T4H_On 0
#define T4H_Off (1 << 1)
I jak widać T1H_On to 0.
Bo to był tranzystor PNP. Czyli żeby podać H na wyjście, to musiałem podawać L (masę) do sterowania tranzystora.

A gdzieś w Timerze po prostu wpisywałem na port odpowiednie stany:

Kod: Zaznacz cały

PORTD = pgm_read_byte(&(Krok[(Silnik % 6)]));
I jechałem krokami do przodu:

Kod: Zaznacz cały

Silnik++;
albo do tyłu:

Kod: Zaznacz cały

Silnik--;
Przerwanie miałem o częstotliwości 250Hz. Zmienna Silnik była 16 bitowa.



Tagi:


Autor tematu
slawek7
Czytelnik forum poziom 3 (min. 30)
Czytelnik forum poziom 3 (min. 30)
Posty w temacie: 10
Posty: 35
Rejestracja: 06 lut 2014, 07:52
Lokalizacja: szczecin

#22

Post napisał: slawek7 » 03 lut 2017, 04:26

Tak patrzę i chyba jest to ta sama sekwencja co u mnie a gówna różnica to ze sterujesz poprzez trwnzystora a ja bezpośrednio z wyprowadzeń uC.
u mnie silnik jak szybciej nim kręcę ładnie działaale wolno nie da rady.
PS. rozumiem chyba co miałeś na myśli. Ja stosowałem sterownik A4899 do silnika 3faz a on przewidziany jest do 3 faz a nie jako sterownik do 2faz.
dlatego mocniej drgal. :-(


atom1477
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 7
Posty: 3274
Rejestracja: 21 kwie 2011, 10:58
Lokalizacja: ::

#23

Post napisał: atom1477 » 03 lut 2017, 07:53

A4899 jest przystosowany do 2 faz.
A tutaj trzeba sterownik 3 fazowy.
W dodatku sekwencje nie mają nic do rzeczy bo A4899 nie pozwala ustawić własnych sekwencji. No chyba że pisząc o sekwencjach miałeś na myśli sterowanie bez użycia A4899.


Autor tematu
slawek7
Czytelnik forum poziom 3 (min. 30)
Czytelnik forum poziom 3 (min. 30)
Posty w temacie: 10
Posty: 35
Rejestracja: 06 lut 2014, 07:52
Lokalizacja: szczecin

#24

Post napisał: slawek7 » 03 lut 2017, 13:15

Miałem na myśli, że to czym ja steruję zgodnie z datasheetem jest takie samo jak to Twoje, tylko u mnie bezpośrednio do uC jest silnik podpięty.
Myślałem że mówisz o mnie, że coś bezmyślnie wklepałem i płaczę. Z drugiej strony może tak było :-)


atom1477
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 7
Posty: 3274
Rejestracja: 21 kwie 2011, 10:58
Lokalizacja: ::

#25

Post napisał: atom1477 » 03 lut 2017, 17:01

ATMega może trochę nie wyrabiać. Ma 20mA na wyjście, ale wtedy spadek na wyjściu jest już dość duży.


slawek77
Znawca tematu (min. 80)
Znawca tematu (min. 80)
Posty w temacie: 1
Posty: 93
Rejestracja: 10 sty 2016, 15:43
Lokalizacja: Chorzów

#26

Post napisał: slawek77 » 04 wrz 2017, 23:52

Witam przepraszam że tu zapytam ale nie ma chyba sensu zakładać nowego wątku.
Poszukuję silnika nema17 na podwójnym wale 400 kroków, czy orientuje się ktoś gdzie taki nabędę.
Dziękuję za pomoc.
Dodam że stary silnik ma 4 przewody i takiego poszukuję.
Pozdrawiam Sławek

ODPOWIEDZ Poprzedni tematNastępny temat

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