problem ze sterowaniem bipolarnym silnikiem krokowym
-
Autor tematu - Nowy użytkownik, używaj wyszukiwarki
- Posty w temacie: 5
- Posty: 5
- Rejestracja: 22 paź 2008, 12:58
- Lokalizacja: Zabrze
problem ze sterowaniem bipolarnym silnikiem krokowym
witam serdecznie.
Mam problem ze sterowaniem bipolarnym silnikiem krokowym( 4 przewody)podlączonym do sterownika silników krokowych(schemat sterownika na zdjęciu). Sterowanie ma odbywac sie przy pomocy mikrokontrolera ATmega 8.Sterownik silnika krokowego posiada nastepujące wejścia:Enable,Dir,Clk,NC,+,-. Jakie sygnały mam dać na te wejscia by silnik zaczął sie kręcić?
ps.(ktos podpowiedział mi ze na wejscie Enable mam podać 1(właczenie) ,wejscie dir to zmiana obrotów 0- lewo,1-prawo,a na wejście CLK naprzemiennie 0 i 1(częstotliwosc podania wpłynie na predkość obracania silnika),na wejscie NC nic nie podaje.
NApisałem program na mikrokontroler który na te wejscia podaje takie wartosci ale to nic nie daje .silnik krokowy nie startuje.
Prosze o jakas podpowiedz[/img]
Mam problem ze sterowaniem bipolarnym silnikiem krokowym( 4 przewody)podlączonym do sterownika silników krokowych(schemat sterownika na zdjęciu). Sterowanie ma odbywac sie przy pomocy mikrokontrolera ATmega 8.Sterownik silnika krokowego posiada nastepujące wejścia:Enable,Dir,Clk,NC,+,-. Jakie sygnały mam dać na te wejscia by silnik zaczął sie kręcić?
ps.(ktos podpowiedział mi ze na wejscie Enable mam podać 1(właczenie) ,wejscie dir to zmiana obrotów 0- lewo,1-prawo,a na wejście CLK naprzemiennie 0 i 1(częstotliwosc podania wpłynie na predkość obracania silnika),na wejscie NC nic nie podaje.
NApisałem program na mikrokontroler który na te wejscia podaje takie wartosci ale to nic nie daje .silnik krokowy nie startuje.
Prosze o jakas podpowiedz[/img]
Tagi:
-
- Lider FORUM (min. 2000)
- Posty w temacie: 2
- Posty: 2560
- Rejestracja: 04 paź 2007, 01:32
- Lokalizacja: Kraków
- Kontakt:
tego typu sterownik jest opisany tu na forum. przeważnie tematem jest podawanie sygnałów dymnych z ktorejś z 3ch kości. ale mniejsza o to.
kolego, jak dobrze pamiętam przy logicznym zerze w programie atmega daje +5V na wyjście a przy 1 zwiera do masy. wydaję mi się że tu leży pies. L297 potrzebuje +5 na wysterowanie.
więc spróbuj odwrócić zera i jedynki w programie.
ps czy silnik "trzyma" po włączeniu całości jeżeli nie dajesz sygnału CLK?
kolego, jak dobrze pamiętam przy logicznym zerze w programie atmega daje +5V na wyjście a przy 1 zwiera do masy. wydaję mi się że tu leży pies. L297 potrzebuje +5 na wysterowanie.
więc spróbuj odwrócić zera i jedynki w programie.
ps czy silnik "trzyma" po włączeniu całości jeżeli nie dajesz sygnału CLK?
Nie otrzymasz koni wyścigowych krzyżując dwa osły
-
- Specjalista poziom 3 (min. 600)
- Posty w temacie: 1
- Posty: 741
- Rejestracja: 16 lip 2008, 15:07
- Lokalizacja: Polska, Augustow
Sprawdź najpierw czy sam sterownik(bez atmegi) reaguje, czyli jak kolega wyżej napisał czy sinik trzyma, czy robi kroki przy "ręcznym" taktowaniu, oraz czy reaguje na zmiany dir.
„Jeżeli nie znasz portu do którego płyniesz,
to żadne wiatry nie będą Ci sprzyjać”
Programowanie sterowników PLC Fatek, HMI Weintek, sterowniki maszyn CNC, Mach3;
to żadne wiatry nie będą Ci sprzyjać”
Programowanie sterowników PLC Fatek, HMI Weintek, sterowniki maszyn CNC, Mach3;
-
- Lider FORUM (min. 2000)
- Posty w temacie: 5
- Posty: 4017
- Rejestracja: 15 lis 2006, 22:01
- Lokalizacja: Tarnobrzeg
Wszystko się zgadza, tylko nie zapomnij połączyć masy procesora GND z wejściem X1-1 (minus).mgucio pisze:ktos podpowiedział mi ze na wejscie Enable mam podać 1(właczenie) ,wejscie dir to zmiana obrotów 0- lewo,1-prawo,a na wejście CLK naprzemiennie 0 i 1(częstotliwosc podania wpłynie na predkość obracania silnika),na wejscie NC nic nie podaje.
Jakim napięciem zasilany jest silnik?
-
Autor tematu - Nowy użytkownik, używaj wyszukiwarki
- Posty w temacie: 5
- Posty: 5
- Rejestracja: 22 paź 2008, 12:58
- Lokalizacja: Zabrze
Krzysiekgrab: po załączeniu sterownika bez atmegi silnik krokowy "trzyma" .przy poruszaniu kabli podłączonych np. do wejścia enable sterownika silnik zaczyna sie poruszac wiec mysle ze ze strownikiem jest wszystko wporządku
[ Dodano: 2009-12-03, 18:10 ]
leoo: silnik zasilany jest obecnie napięciem 19V;3,42 A (max do 46V-tak podał mi gosc od którego kupiłem ten silnik).Z tego co pamiętam silnik ten pobiera prą 2.5 A wiec chyba zasilacz jest dobrze dobrany.
[ Dodano: 2009-12-03, 18:10 ]
leoo: silnik zasilany jest obecnie napięciem 19V;3,42 A (max do 46V-tak podał mi gosc od którego kupiłem ten silnik).Z tego co pamiętam silnik ten pobiera prą 2.5 A wiec chyba zasilacz jest dobrze dobrany.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 5
- Posty: 4017
- Rejestracja: 15 lis 2006, 22:01
- Lokalizacja: Tarnobrzeg
Tu jest OK.mgucio pisze:silnik zasilany jest obecnie napięciem 19V;3,42 A
Jeśli soft napisany jest poprawnie, to jedyną przyczyną problemów pozostaje słaba wydajność prądowa portów procesora dla stanu logicznego H.
Proponuję do każdego wyjścia (DIR, CLK, EN) podłączyć opornik podciągający 1k do VCC.
Może Kolega opublikować schemat?
-
Autor tematu - Nowy użytkownik, używaj wyszukiwarki
- Posty w temacie: 5
- Posty: 5
- Rejestracja: 22 paź 2008, 12:58
- Lokalizacja: Zabrze
//programik do obrotow silnika
#include <avr/io.h> // dostęp do rejestrów
#define F_CPU 8000000UL // częstotliwość zegara w Hz
#define cbi(sfr, b) (sfr &= ~(1<<b)) // bit 0 na pin portu
#define sbi(sfr, b) (sfr |= (1<<b)) // bit 1 na pin portu
#include <util/delay.h>
void delay_ms(uint8_t ms)
{
while(ms)
{
_delay_ms(1);
ms--;
}
}
// Definicje funkcji
int main(void) // program główny
{
DDRA=0xFF; //wszystkie wyjścia PORT A
cbi(PORTC,0);// stan niski-wlączenie-enable
sbi(PORTA,4);// stan wysoki -obroty zgodnie z kierunkiem wskazówek zegara
while(1)
{ // podanie zmiany sygnałow z niskiego
//na wysoki wejscie CLK
cbi(PORTA,1);
_delay_ms(1);
sbi(PORTA,1);
_delay_ms(1);
}
}
Jest on dobrze napisany?
#include <avr/io.h> // dostęp do rejestrów
#define F_CPU 8000000UL // częstotliwość zegara w Hz
#define cbi(sfr, b) (sfr &= ~(1<<b)) // bit 0 na pin portu
#define sbi(sfr, b) (sfr |= (1<<b)) // bit 1 na pin portu
#include <util/delay.h>
void delay_ms(uint8_t ms)
{
while(ms)
{
_delay_ms(1);
ms--;
}
}
// Definicje funkcji
int main(void) // program główny
{
DDRA=0xFF; //wszystkie wyjścia PORT A
cbi(PORTC,0);// stan niski-wlączenie-enable
sbi(PORTA,4);// stan wysoki -obroty zgodnie z kierunkiem wskazówek zegara
while(1)
{ // podanie zmiany sygnałow z niskiego
//na wysoki wejscie CLK
cbi(PORTA,1);
_delay_ms(1);
sbi(PORTA,1);
_delay_ms(1);
}
}
Jest on dobrze napisany?