Strona 1 z 2
problem ze sterowaniem bipolarnym silnikiem krokowym
: 02 gru 2009, 19:54
autor: mgucio
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]

: 02 gru 2009, 22:47
autor: morswin
A prąd silnika ustawiony?
: 03 gru 2009, 08:18
autor: zacharius
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?
: 03 gru 2009, 10:00
autor: morswin
zacharius pisze:kolego, jak dobrze pamiętam przy logicznym zerze w programie atmega daje +5V na wyjście a przy 1 zwiera do masy.
Co tu Kolega opowiada w atmega jak i L297 jest standard TTL i logiczne 0 to potencjał masy a logiczna jedynka to +5V.
: 03 gru 2009, 10:24
autor: zacharius
aż zobaczę w domu i porobie fotki, byl jakiś tam kruczek.
BTW przeszukałem cały pdf na atmege 8 i ani słowa o TTL
: 03 gru 2009, 11:51
autor: krzysiekgrab
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.
: 03 gru 2009, 12:25
autor: Leoo
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.
Wszystko się zgadza, tylko nie zapomnij połączyć masy procesora GND z wejściem X1-1 (minus).
Jakim napięciem zasilany jest silnik?
: 03 gru 2009, 18:01
autor: mgucio
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.
: 03 gru 2009, 18:33
autor: Leoo
mgucio pisze:silnik zasilany jest obecnie napięciem 19V;3,42 A
Tu jest OK.
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?
: 03 gru 2009, 20:50
autor: mgucio
//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?