Atmega162/Atmega32 BA6845FS

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

Autor tematu
karol75
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 7
Posty: 60
Rejestracja: 03 paź 2007, 13:13
Lokalizacja: Polska

Atmega162/Atmega32 BA6845FS

#1

Post napisał: karol75 » 17 gru 2016, 09:18

Mam problem z układem BA6845FS jest to sterownik silnika krokowego do 1A 12V
PDF BA5845FS

Zasilam go z napięcia 7,5V (napięcie nie zależne od silnika)
Podpięty jest do Atmega162(lub Atmega32)
Efekt jest taki że rzuca silnikiem, a jeżeli już załapie to kręci się albo przypadkowo albo w złą stronę.

Kod: Zaznacz cały

uint8_t step = 0;
#define MPort PORTC
#define IN11   2
#define IN21   1
#define IN12   3
#define IN22   4
...
void nextstep(uint8_t dir)
{
	if(step==0)
	{
		MPort &= ~((1<<IN11)|(1<<IN21));
	}
	if(step==1)
	{
		MPort &= ~((1<<IN11));
		MPort |= (1<<IN21);
	}
	if(step==2)
	{
		MPort |= (1<<IN11)|(1<<IN21);
	}
	if(step==3)
	{
		MPort |= (1<<IN11);
		MPort &= ~((1<<IN21));
	}
	step++;
	if(step>3)step=0;

}

int main (void)
{
	//Inicjacja Silnika
	DDRC  = ((1<<IN11)|(1<<IN21)|(1<<IN12)|(1<<IN22));
	MPort = (1<<IN11)|(1<<IN21)|(1<<IN12)|(1<<IN22);
	MPort |= (1<<IN12)|(1<<IN22);
...
}
Chodzi o sekwencję.
Jak prawidłowo powinno się nim sterować?



Awatar użytkownika

pitsa
Moderator
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 4695
Rejestracja: 13 wrz 2008, 22:40
Lokalizacja: PL,OP

Re: Atmega162/Atmega32 BA6845FS

#2

Post napisał: pitsa » 17 gru 2016, 22:04

karol75 pisze: Jak prawidłowo powinno się nim sterować?
Najpierw powoli - jak żółw &#8211; ociężale.
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ


Autor tematu
karol75
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 7
Posty: 60
Rejestracja: 03 paź 2007, 13:13
Lokalizacja: Polska

Re: Atmega162/Atmega32 BA6845FS

#3

Post napisał: karol75 » 19 gru 2016, 09:35

pitsa pisze:quote]
Najpierw powoli - jak żółw &#8211; ociężale.
:shock:
I teraz jako moderator oceń swój post i to co wnosi on do dyskusji.

Awatar użytkownika

pitsa
Moderator
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 4695
Rejestracja: 13 wrz 2008, 22:40
Lokalizacja: PL,OP

Re: Atmega162/Atmega32 BA6845FS

#4

Post napisał: pitsa » 19 gru 2016, 10:50

Napisałem ci, że brakuje w kodzie "najpierw powoli" między każdym krokiem.
Dołóż "spowolnienie" po każdym przeskoku zasilania i zobacz, że przestanie "rzucać".
Możesz też skorzystać z "accelstepper".
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ


Autor tematu
karol75
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 7
Posty: 60
Rejestracja: 03 paź 2007, 13:13
Lokalizacja: Polska

Re: Atmega162/Atmega32 BA6845FS

#5

Post napisał: karol75 » 19 gru 2016, 10:57

Może ja nie czytam między wierszami więc nie rozumiałem.
Spróbuję z opóźnieniami.
Problem w tym że jeżeli wstawię opóźnienia wtedy znacznie spowolni się prędkość obrotowa silnika.

Awatar użytkownika

pitsa
Moderator
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 4695
Rejestracja: 13 wrz 2008, 22:40
Lokalizacja: PL,OP

Re: Atmega162/Atmega32 BA6845FS

#6

Post napisał: pitsa » 19 gru 2016, 10:59

I o tym jest słowo "najpierw". Potem przyspieszasz jak lokomotywa. ;-)
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ


Autor tematu
karol75
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 7
Posty: 60
Rejestracja: 03 paź 2007, 13:13
Lokalizacja: Polska

Re: Atmega162/Atmega32 BA6845FS

#7

Post napisał: karol75 » 19 gru 2016, 18:40

Nie, nie tutaj był problem
zmieniłem sekwencję

void nextstep(uint8_t dir)
{
if(step==0)
{
MPort &= ~((1<<IN11)|(1<<IN21));
}
if(step==1)
{
MPort |= (1<<IN11);
MPort &= ~((1<<IN21));

}
if(step==2)
{
MPort |= (1<<IN11)|(1<<IN21);
}
if(step==3)
{
MPort &= ~((1<<IN11));
MPort |= (1<<IN21);
}
step++;
if(step>3)step=0;
//_delay_ms(10);
}
i działa akceptowalnie.
dziękuję za odpowiedzi


Autor tematu
karol75
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 7
Posty: 60
Rejestracja: 03 paź 2007, 13:13
Lokalizacja: Polska

#8

Post napisał: karol75 » 11 sty 2017, 19:55

Niestety to nie koniec moich zmagań
po zmianie czasów rozdzielających kroki silnika (inne operacje) zaczął znowu głupieć.


Doszedłem do wniosku że muszę dokładnie zbadać temat i to co ustaliłem:
Po lewej piny sterujące po prawej napięcia na wyjściu
po lewej stany logiczne, po prawej napięcia zmierzone na wyjściu bez podłączonego silnika.
IN OUT
11_______21_____12_____22_______________11_____21_____12_____22
--------------------------------------------------------------
_1_______1_______1_______1________________7_______0_______0_______5,5
_1_______0_______1_______1________________7_______7_______0_______5,5
_0_______0_______1_______1________________0_______7_______7_______0
_0_______1_______1_______1________________0_______0_______7_______0
_1_______1_______0_______1________________5_______0_______1_______5
_1_______0_______0_______1________________1_______7_______0_______0
_0_______0_______0_______1________________1_______7_______0_______1
_0_______1_______0_______1________________5_______0_______0_______3
_1_______1_______0_______0________________5_______3_______0_______3
_1_______0_______0_______0________________1_______1_______0_______0
_0_______0_______0_______0________________1_______1_______0_______0
_0_______1_______0_______0________________5_______3_______0_______3
_1_______1_______1_______0________________7_______5_______0_______5
_1_______0_______1_______0________________7_______3_______0_______5
_0_______0_______1_______0________________0_______0_______7_______0
_0_______1_______1_______0________________0_______1_______7_______0


Silnik podłączony jest do Wyprowadzeń OUT
cewki podłączone są
1 cewka OUT 11 i 12
2 cewka OUT 21 i 22

Awatar użytkownika

pitsa
Moderator
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 4695
Rejestracja: 13 wrz 2008, 22:40
Lokalizacja: PL,OP

#9

Post napisał: pitsa » 11 sty 2017, 21:00

karol75 pisze:po prawej napięcia zmierzone na wyjściu bez podłączonego silnika.
Zbadaj to jeszcze raz ale pod konkretnym obciążeniem na wyjściach.
Załóżmy, że coś koło 100ohm to lepsze obciążenie niż rezystancja wewnętrzna miernika.

4 oporniki:
OUT11-MGND1
OUT12-MGND1
OUT21-MGND2
OUT22-MGND2


jaki silnik krokowy do tego podłączasz?
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ


Autor tematu
karol75
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 7
Posty: 60
Rejestracja: 03 paź 2007, 13:13
Lokalizacja: Polska

#10

Post napisał: karol75 » 11 sty 2017, 23:09

Silnik - drukarka termiczna MLT288 i MLT388 mają ten sam silnik
W nocie określony jako
Motor(VH) 0.5 A MAX 0.3 A mean current VH=7.2V, 840PPS

Feeding pitch 0.125 mm Motor's 2 stepping span

Characteristics of the Stepping Motor
Table 4-1 General Characteristics of the Stepping Motor
Item______________________________Rating
Type______________________________Permanent magnet type
No. of phases_______________________4 phases
Driving system______________________Bipolar chopper driving
Excitation__________________________2-2
Winding resistance/phase______________18 Ω / phase
Rating voltage_______________________7.2 V
Driving current_______________________Approx. 0.5 A
Driving frequency_____________________To be determined by driving voltage

IN OUT
11_______21_____12_____22_______________11_____21_____12_____22
--------------------------------------------------------------
_1_______1_______1_______1________________7_______0_______0_______0
_1_______0_______1_______1________________7_______7_______0_______0
_0_______0_______1_______1________________0_______7_______7_______0
_0_______1_______1_______1________________0_______0_______7_______0
_1_______1_______0_______1________________7_______0_______0_______0
_1_______0_______0_______1________________7_______0_______0_______0
_0_______0_______0_______1________________7_______0_______7_______0
_0_______1_______0_______1________________0_______0_______7_______0
_1_______1_______0_______0________________0_______0_______0_______0
_1_______0_______0_______0________________0_______0_______0_______0
_0_______0_______0_______0________________0_______0_______0_______0
_0_______1_______0_______0________________0_______0_______0_______0
_1_______1_______1_______0________________0_______0_______0_______0
_1_______0_______1_______0________________0_______7_______0_______0
_0_______0_______1_______0________________0_______7_______0_______0
_0_______1_______1_______0________________0_______0_______0_______0



Wygląda na to że miałem uszkodzony scalak Brak wyjścia 22

Po wymianie

IN OUT
11_______21_____12_____22_______________11_____21_____12_____22
--------------------------------------------------------------
_1_______1_______1_______1________________7_______0_______0_______7
_1_______0_______1_______1________________7_______7_______0_______0
_0_______0_______1_______1________________0_______7_______7_______0
_0_______1_______1_______1________________0_______0_______7_______0
_1_______1_______0_______1________________0_______0_______7_______7

Uzyskałem pełny obrót

Po wymianie silnik szaleje.
Dzięki za pomoc.
Ostatnio zmieniony 11 sty 2017, 23:54 przez karol75, łącznie zmieniany 1 raz.

ODPOWIEDZ Poprzedni tematNastępny temat

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