RTV forum PL | NewsGroups PL

Jak poprawić algorytm choppera dla unipolarnego silnika krokowego z tranzystorami?

Algorytm choppera do silnika krokowego

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak poprawić algorytm choppera dla unipolarnego silnika krokowego z tranzystorami?

Sebastian Biały
Guest

Mon Nov 09, 2009 6:02 pm   



Witam.

Mam silnik unipolarny i 4 tranzystory sterowane poziomami logicznymi
oraz komparator od strony masy na rezestorze pomiarowym.

Chce uzyskac jakiś sensowny algorytm sterowania silnikiem krokowym.

Przekroczenie prądu w silniku sygnalizwoane jest przez komparator i
podawane na wejście INT procesora wywołujac przerwanie.

Algorytm teraz wygląda tak:

unsigned char zalaczone_cewki = 0;

void przerwanie_co_1_mikrosekunde( void )
{
port_silnikow = zalaczone_cewki
}

void przerwanie_przy_przekroczeniu_pradu( void )
{
port_silnikow = 0;
}

main(void)
{
while( 1 )
{
zalaczone_cewki = 0x01;
pauza_1ms();
zalaczone_cewki = 0x02;
pauza_1ms();
zalaczone_cewki = 0x04;
pauza_1ms();
zalaczone_cewki = 0x08;
pauza_1ms();
}
}

Problem w tym, że nie wiem czy to sensowny algorytm sterowania silnikiem
krokowym. Czy ktoś ma pomysł co mozna zmienić aby uzyskac sensowne
działanie? Co prawda to działa poprawnie, ale mam wrażenie, ze silnik
moze wyciągnąc więcej, tym bardziej że na scalonym sterowniku wyciąga
wyższe obroty. Co robie źle ?

Paweł
Guest

Mon Nov 09, 2009 8:25 pm   



S
Quote:
zalaczone_cewki = 0x01;
pauza_1ms();
zalaczone_cewki = 0x02;
pauza_1ms();
zalaczone_cewki = 0x04;
pauza_1ms();
zalaczone_cewki = 0x08;
pauza_1ms();

Czy przypadkiem sekwencja nie powinna wyglądać tak:
1001
0101
0110
1010

Paweł

Waldemar Krzok
Guest

Mon Nov 09, 2009 8:35 pm   



Paweł wrote:

Quote:
S
zalaczone_cewki = 0x01;
pauza_1ms();
zalaczone_cewki = 0x02;
pauza_1ms();
zalaczone_cewki = 0x04;
pauza_1ms();
zalaczone_cewki = 0x08;
pauza_1ms();

Czy przypadkiem sekwencja nie powinna wyglądać tak:
1001
0101
0110
1010

zalezy. Moze byc tez tak:
1, 3, 2, 6, 4, 12, 8, 9 albo
5, 3, 10, 6, 5, 12, 10, 9

Waldek

Zbych
Guest

Mon Nov 09, 2009 8:54 pm   



Sebastian Biały przemówił ludzkim głosem:

Quote:
Problem w tym, że nie wiem czy to sensowny algorytm sterowania silnikiem
krokowym. Czy ktoś ma pomysł co mozna zmienić aby uzyskac sensowne
działanie? Co prawda to działa poprawnie, ale mam wrażenie, ze silnik
moze wyciągnąc więcej, tym bardziej że na scalonym sterowniku wyciąga
wyższe obroty. Co robie źle ?

1. Po zmianie kroku przez pewien czas powinieneś ignorować sygnał
przekroczenia prądu.
2. Po przekroczeniu prądu i wyłączeniu drivera, powinieneś odczekać
trochę, zanim znowu włączysz driver (czas martwy). Jeśli w tym czasie
zmieniasz krok, to patrz punkt 1.

Wartości czasów musisz dobrać sam obserwując prąd na oscyloskopie i
"uciąg" silnika.

PS. to przerwanie co 1us trochę mnie rozbawiło. To przykład, czy na
serio tak masz?

Sebastian Biały
Guest

Mon Nov 09, 2009 10:24 pm   



Zbych wrote:
Quote:
1. Po zmianie kroku przez pewien czas powinieneś ignorować sygnał
przekroczenia prądu.
2. Po przekroczeniu prądu i wyłączeniu drivera, powinieneś odczekać
trochę, zanim znowu włączysz driver (czas martwy). Jeśli w tym czasie
zmieniasz krok, to patrz punkt 1.

Sprawdzę.

Quote:
Wartości czasów musisz dobrać sam obserwując prąd na oscyloskopie i
"uciąg" silnika.

To niefajnie. Głównie dlatego, że moge miec różne silniki. miałem
nadzieje, ze chooperowanie nie zalezy tak silnie od silnika.

Quote:
PS. to przerwanie co 1us trochę mnie rozbawiło. To przykład, czy na
serio tak masz?

Przykład. Chodziło mi o to ze kroki sa duzo wolniejsze od choppera.

Sebastian Biały
Guest

Mon Nov 09, 2009 10:26 pm   



Paweł wrote:
Quote:
Czy przypadkiem sekwencja nie powinna wyglądać tak:
1001
0101
0110
1010

To tylko przykład był. W rzeczywistości mam 8 kroków a nie 4. Nie ważne,
ważny jest sam chopper.

J.F.
Guest

Tue Nov 10, 2009 3:14 pm   



Użytkownik "Sebastian Biały" <heby@poczta.onet.pl>
Quote:
Zbych wrote:
PS. to przerwanie co 1us trochę mnie rozbawiło. To przykład, czy
na serio tak masz?
Przykład. Chodziło mi o to ze kroki sa duzo wolniejsze od
choppera.

Uf, a juz sie balem .. ze to mozliwe.
Chociaz w sumie .. czemu nie ?

J.

Jerry1111
Guest

Tue Nov 10, 2009 11:39 pm   



J.F. wrote:
Quote:
Użytkownik "Sebastian Biały" <heby@poczta.onet.pl
Zbych wrote:
PS. to przerwanie co 1us trochę mnie rozbawiło. To przykład, czy na
serio tak masz?
Przykład. Chodziło mi o to ze kroki sa duzo wolniejsze od choppera.

Uf, a juz sie balem .. ze to mozliwe.
Chociaz w sumie .. czemu nie ?

Zalezy ile u-krokow...

--
Jerry1111

elektroda NewsGroups Forum Index - Elektronika Polska - Jak poprawić algorytm choppera dla unipolarnego silnika krokowego z tranzystorami?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map