Powiedzmy że mam już oscyloskop, hmm... Karta dźwiękowa i program Scope.
Coś tam pokazuje, ale nie wiem co MA pokazywać przy prawidłowej pracy.
Znaleziono 9 wyników
Wróć do „TMC 239 sterowanie ISP”
- 17 mar 2006, 10:18
- Forum: Elektronika CNC
- Temat: TMC 239 sterowanie ISP
- Odpowiedzi: 18
- Odsłony: 3646
- 16 mar 2006, 14:19
- Forum: Elektronika CNC
- Temat: TMC 239 sterowanie ISP
- Odpowiedzi: 18
- Odsłony: 3646
Wykonałem pomiary wg. twojego opisu
Wygląda to tak.
INA | 2V | 2V | 0 | 0
INB | 0 | 0 | 2V | 2V
SDI | VCC | GND | GND | VCC
SCN | GND | VCC | VCC | GND
RA 80mV| nn | nn | 0mV Na rezystorach pomiarowych/nn-brak pomiaru
RB 40mV| nn | nn | 50mV
TAK NIE NIE TAK Silnik trzymał
Pol. -/+/+/- +/-/-/+ 0/0/0/0 -/+/+/- uzwojenia A in /out/ B in /out
Co można z tego wg Was wnioskować ? Co jeszcze i gdzie sprawdzać ?
Wygląda to tak.
INA | 2V | 2V | 0 | 0
INB | 0 | 0 | 2V | 2V
SDI | VCC | GND | GND | VCC
SCN | GND | VCC | VCC | GND
RA 80mV| nn | nn | 0mV Na rezystorach pomiarowych/nn-brak pomiaru
RB 40mV| nn | nn | 50mV
TAK NIE NIE TAK Silnik trzymał
Pol. -/+/+/- +/-/-/+ 0/0/0/0 -/+/+/- uzwojenia A in /out/ B in /out
Co można z tego wg Was wnioskować ? Co jeszcze i gdzie sprawdzać ?
- 16 mar 2006, 09:07
- Forum: Elektronika CNC
- Temat: TMC 239 sterowanie ISP
- Odpowiedzi: 18
- Odsłony: 3646
- 16 mar 2006, 08:31
- Forum: Elektronika CNC
- Temat: TMC 239 sterowanie ISP
- Odpowiedzi: 18
- Odsłony: 3646
- 14 mar 2006, 14:27
- Forum: Elektronika CNC
- Temat: TMC 239 sterowanie ISP
- Odpowiedzi: 18
- Odsłony: 3646
- 14 mar 2006, 10:20
- Forum: Elektronika CNC
- Temat: TMC 239 sterowanie ISP
- Odpowiedzi: 18
- Odsłony: 3646
W SPI sprawdziłeś ustawienie fazy i polaryzacji sygnału zegarowego?
Nie sprawdzałem, a możesz mi to przybliżyć, nie za bardzo wiem o co chodzi.
...MDA i MDB to dłuższa opowieść...
Właśnie sprawdzam / przeglądam.
[ Dodano: 2006-03-14, 10:58 ]
Jak to jest z tym PHA, PHB ? Co one dokładnie powodują ?
Rozumiem to tak, że podanie na PHA jedynki spowoduje załączenie górnej pary tranzystorów mostka A, czyli jak się to ma do przepływu prądu przez uzwojenia, jakoś nie mogę tego za bardzo zrozumieć, a to podstawa sensu uruchomienia tego sterownika.
[ Dodano: 2006-03-14, 13:59 ]
Program wygląda tak jak poniżej, sekwencja jest według tabeli z tematu TMC239.
int main(void)
{
DDRB=_BV(0)|_BV(1)|_BV(2);
PORTB=_BV(PB0);
SPCR=_BV(MSTR)|_BV(SPR0)|_BV(SPE)|_BV(CPHA)|_BV(CPOL);
unsigned char odp;
for(;;)
{
portb0_l;
SPDR=0b00000000;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b10011110;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00000101;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b10110100;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00000111;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b10000011;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00001101;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b00010111;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00000000;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b11011111;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00000101;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b11110101;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00000111;//7
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b11000010;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00001101;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b01010110;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
}
}
Mimo to silnik się nie obraca, czuć drgania, i trzyma dość mocno ale w jednej pozycji.
dołączam też schemat z Eagla.
Nie sprawdzałem, a możesz mi to przybliżyć, nie za bardzo wiem o co chodzi.
...MDA i MDB to dłuższa opowieść...
Właśnie sprawdzam / przeglądam.
[ Dodano: 2006-03-14, 10:58 ]
Jak to jest z tym PHA, PHB ? Co one dokładnie powodują ?
Rozumiem to tak, że podanie na PHA jedynki spowoduje załączenie górnej pary tranzystorów mostka A, czyli jak się to ma do przepływu prądu przez uzwojenia, jakoś nie mogę tego za bardzo zrozumieć, a to podstawa sensu uruchomienia tego sterownika.
[ Dodano: 2006-03-14, 13:59 ]
Program wygląda tak jak poniżej, sekwencja jest według tabeli z tematu TMC239.
int main(void)
{
DDRB=_BV(0)|_BV(1)|_BV(2);
PORTB=_BV(PB0);
SPCR=_BV(MSTR)|_BV(SPR0)|_BV(SPE)|_BV(CPHA)|_BV(CPOL);
unsigned char odp;
for(;;)
{
portb0_l;
SPDR=0b00000000;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b10011110;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00000101;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b10110100;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00000111;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b10000011;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00001101;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b00010111;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00000000;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b11011111;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00000101;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b11110101;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00000111;//7
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b11000010;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
portb0_l;
SPDR=0b00001101;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
SPDR=0b01010110;
while(!(SPSR|(1<<SPIF)));
odp=SPDR;
portb0_h;
opoznienie;
}
}
Mimo to silnik się nie obraca, czuć drgania, i trzyma dość mocno ale w jednej pozycji.
dołączam też schemat z Eagla.
- 14 mar 2006, 08:49
- Forum: Elektronika CNC
- Temat: TMC 239 sterowanie ISP
- Odpowiedzi: 18
- Odsłony: 3646
- 13 mar 2006, 21:04
- Forum: Elektronika CNC
- Temat: TMC 239 sterowanie ISP
- Odpowiedzi: 18
- Odsłony: 3646
Program jest w C, korzystam ze sprzętowego ISPa wysyłam najpierw część starszą uzupełnioną od lewej zerami a potem drugibajt.
Czyli 0b00001111,0b10111110 na przykład.
Pierwsze 4 zera powinny być przez tmc239 ignorowane.
Jak wyglądają bajty ?
11 10 9 8 7 6 5 4 3 2 1 0 Nr bitu
1 0 0 0 0 0 1 1 1 1 1 0
1 0 0 1 1 0 1 1 1 1 1 0
1 0 1 1 0 0 1 1 1 1 0 0
1 1 0 0 0 0 1 1 1 0 1 0
1 1 0 1 1 0 1 1 0 1 1 0
1 1 1 0 1 0 1 1 0 0 0 0
1 1 1 1 0 0 1 0 1 1 0 0
1 1 1 1 1 0 1 0 0 1 1 0
1 1 1 1 1 0 1 0 0 0 0 0
1 1 1 1 1 0 1 0 0 1 1 1
1 1 1 1 0 0 1 0 1 1 0 1
1 1 1 0 1 0 1 1 0 0 0 1
1 1 0 1 1 0 1 1 0 1 1 1
1 1 0 0 0 0 1 1 1 0 1 1
1 0 1 1 0 0 1 1 1 1 0 1
1 0 0 1 1 0 1 1 1 1 1 1
1 0 0 0 0 0 1 1 1 1 1 1
1 0 0 1 1 1 1 1 1 1 1 1
1 0 1 1 0 1 1 1 1 1 0 1
1 1 0 0 0 1 1 1 1 0 1 1
1 1 0 1 1 1 1 1 0 1 1 1
1 1 1 0 1 1 1 1 0 0 0 1
1 1 1 1 0 1 1 0 1 1 0 1
1 1 1 1 1 1 1 0 0 1 1 1
1 1 1 1 1 1 1 0 0 0 0 1
1 1 1 1 1 1 1 0 0 1 1 0
1 1 1 1 0 1 1 0 1 1 0 0
1 1 1 0 1 1 1 1 0 0 0 0
1 1 0 1 1 1 1 1 0 1 1 0
1 1 0 0 0 1 1 1 1 0 1 0
1 0 1 1 0 1 1 1 1 1 0 0
1 0 0 1 1 1 1 1 1 1 1 0
Czyli 0b00001111,0b10111110 na przykład.
Pierwsze 4 zera powinny być przez tmc239 ignorowane.
Jak wyglądają bajty ?
11 10 9 8 7 6 5 4 3 2 1 0 Nr bitu
1 0 0 0 0 0 1 1 1 1 1 0
1 0 0 1 1 0 1 1 1 1 1 0
1 0 1 1 0 0 1 1 1 1 0 0
1 1 0 0 0 0 1 1 1 0 1 0
1 1 0 1 1 0 1 1 0 1 1 0
1 1 1 0 1 0 1 1 0 0 0 0
1 1 1 1 0 0 1 0 1 1 0 0
1 1 1 1 1 0 1 0 0 1 1 0
1 1 1 1 1 0 1 0 0 0 0 0
1 1 1 1 1 0 1 0 0 1 1 1
1 1 1 1 0 0 1 0 1 1 0 1
1 1 1 0 1 0 1 1 0 0 0 1
1 1 0 1 1 0 1 1 0 1 1 1
1 1 0 0 0 0 1 1 1 0 1 1
1 0 1 1 0 0 1 1 1 1 0 1
1 0 0 1 1 0 1 1 1 1 1 1
1 0 0 0 0 0 1 1 1 1 1 1
1 0 0 1 1 1 1 1 1 1 1 1
1 0 1 1 0 1 1 1 1 1 0 1
1 1 0 0 0 1 1 1 1 0 1 1
1 1 0 1 1 1 1 1 0 1 1 1
1 1 1 0 1 1 1 1 0 0 0 1
1 1 1 1 0 1 1 0 1 1 0 1
1 1 1 1 1 1 1 0 0 1 1 1
1 1 1 1 1 1 1 0 0 0 0 1
1 1 1 1 1 1 1 0 0 1 1 0
1 1 1 1 0 1 1 0 1 1 0 0
1 1 1 0 1 1 1 1 0 0 0 0
1 1 0 1 1 1 1 1 0 1 1 0
1 1 0 0 0 1 1 1 1 0 1 0
1 0 1 1 0 1 1 1 1 1 0 0
1 0 0 1 1 1 1 1 1 1 1 0
- 13 mar 2006, 20:10
- Forum: Elektronika CNC
- Temat: TMC 239 sterowanie ISP
- Odpowiedzi: 18
- Odsłony: 3646
TMC 239 sterowanie ISP
Witam.
Skonstruowałem sterownik silnika krokowego oparty o TMC 239, korzystając z noty aplikacyjnej producenta i schematu o zwiękrzonej mocy.
Ale nie w tym rzecz.
Problem polega na tym, że wysyłam do układu polecenia z procesora AVR AtMega128, a silnik zachowuje się jakby miał czkawkę, nie obraca się tylko przeskakuje po różnych trudnych do określenia pozycjach.
Wobec tego moje pytanie:
» Jak powinna wyglądać transmisja z procesora do tego układu tak by kręcić silnikiem półkrokami ? [na przykład, choć niekoniecznie]
» Z jaką prędkością można przesyłać dane do układu, CPU prauje na 8MHz
Widziałem plik przygotowany przez Markompa gdzieś w innym wątku z podziałem 1/8 ale gdy wysyłam te sekwencje to dzieje się właśnie to co opisałem wcześniej, chociaż wydaje mi się iż błędu tam nie ma.
Skonstruowałem sterownik silnika krokowego oparty o TMC 239, korzystając z noty aplikacyjnej producenta i schematu o zwiękrzonej mocy.
Ale nie w tym rzecz.
Problem polega na tym, że wysyłam do układu polecenia z procesora AVR AtMega128, a silnik zachowuje się jakby miał czkawkę, nie obraca się tylko przeskakuje po różnych trudnych do określenia pozycjach.
Wobec tego moje pytanie:
» Jak powinna wyglądać transmisja z procesora do tego układu tak by kręcić silnikiem półkrokami ? [na przykład, choć niekoniecznie]
» Z jaką prędkością można przesyłać dane do układu, CPU prauje na 8MHz
Widziałem plik przygotowany przez Markompa gdzieś w innym wątku z podziałem 1/8 ale gdy wysyłam te sekwencje to dzieje się właśnie to co opisałem wcześniej, chociaż wydaje mi się iż błędu tam nie ma.