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

Wróć do „Silnik krokowy, płynne obroty”
Ależ ja pisałem wcześniej że nic nie zmieniło się w zachowaniu silnika po sekwencji z datasheeta, więc nie wiem skąd ten zarzut?atom1477 pisze:Sterowany krokami dostosowanymi do niego, będzie robił zawsze takie same kroki.
Problem że ludzie próbują sterować takimi silnikami za pomocą tablic dostosowanych do zwykłych silników (z przesunięciem faz 90°) i wtedy wychodzą różnice w długości kroków co trzeba korygować.
A wystarczyło by sterować zgodnie z danymi z datasheeta i nie było by problemu.
Kod: Zaznacz cały
//ATmega8, kwarc wewn 8MHz
#include <avr/io.h>
#include <util/delay.h>
unsigned char stany[]={ 0b00000001,0b00000101,0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001};
//unsigned char stany_2[] = {0x9, 0x1, 0x7, 0x6, 0xE, 0x8};
unsigned char krok;
//=================== main =======================
int main(void)
{
DDRD=0x0F; //PD0 i PD1 -COIL1, PD2 i PD3-COIL2
krok=0;
while(1)
{
if(krok==8) krok=0;
PORTD = stany[krok];
_delay_ms(10);
krok++;
}
return 0;
}