[Atmega8][C] Program sterujący silnikiem

Rozmowy na temat układów elektronicznych sterowania obrabiarek CNC
Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 7873
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

#11

Post napisał: tuxcnc » 24 mar 2013, 11:06

ursus_arctos pisze:Tux jak zwykle musi odpowiedzieć tak, żeby obrazić maksymalną liczbę osób w otoczeniu :P
Po prostu nie lubię się bawić w dyplomację.
Kilku kolegów z forum z wielkim hukiem ogłaszało początek prac nad nowym, cudownym sterownikiem i wielka cisza ...
Nie pomogła ogromna wiedza i zastosowanie procesorów przy których Atmega to liczydło.
I nic dziwnego, bo wielkie firmy się na tym wykładają.

Autor wątku jakieś tam pojęcie ma, więc jest milion innych projektów które mają sens, niech sobie jakiś wybierze.
Budowa sterownika silnika krokowego to głupota, strata czasu i pieniędzy.

.



Tagi:


Autor tematu
KonradM
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 4
Posty: 4
Rejestracja: 21 mar 2013, 19:15
Lokalizacja: Kraków

#12

Post napisał: KonradM » 24 mar 2013, 13:36

tuxcnc, masz racje ALE ja nie chce budować sterownika cudownego o Bóg wie jakich możliwościach ma być w miarę prosto EDUKACYJNIE, nie jestem elektronikiem na co dzień zajmuje sie programowaniem i to niestety nie niskopoziomowym a takim w którym juz zanikło pojęcie bitów :) Niektóre moje pytania mogą być bezsensu lub trywialne, musicie mi wybaczyć ale jeszcze raz coś wrzucę.

Trochę zmieniłem założenia, ma być jeszcze prościej. Praca w pełnym kroku przy nie za wysokich prędkościach.

"zredukowany program" z zaleceniami osób wczesniej :)

http://pastebin.com/NsAYSxy1

Kod: Zaznacz cały

/*
 *	Impulsy kroków odbierane na INT0 :: 4
 *	Kierunek obrotów zależny od PD0 :: 2
 */ 

#include <avr/io.h> 
#include <avr/interrupt.h> 

#define F_CPU 1000000

volatile uint8_t licznik = 0; 
volatile uint8_t kroki[4]; 

int main(void) { 
	DDRD = 0x00; 
	DDRC = 0x0f; 
	
	PORTC = 0x00; 
		
	MCUCR |= (1<<ISC01) | (1<<ISC00) ; // INT0 reaguje na zbocze narastajace
	GICR |= 1 << INT0; // włączenie INT0
	
	kroki[0] = 0b1010; // 0xA
	kroki[1] = 0b0110; // 0x6
	kroki[2] = 0b0101; // 0x5
	kroki[3] = 0b1001; // 0x9
	
	sei(); // włączenie przerwań
	
    while(1) { 
		
    } 
} 

ISR(INT0_vect) { // obsługa przerwania INT0
	
		PORTC = 0x00; // krótkie wyłączenie wszystkich t.
		
		
		if( PIND & 0x01 ) { 
			licznik = licznik < 3 ? licznik+1 : 0; 
		} else { 
			licznik = licznik > 0 ? licznik-1 : 3; 
		} 
		
		PORTC = kroki[licznik]; 
} 



Schemat

Obrazek

Jakieś falsztady
link

Awatar użytkownika

ursus_arctos
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 2083
Rejestracja: 11 cze 2011, 18:29
Lokalizacja: Warszawa / Lublin

#13

Post napisał: ursus_arctos » 24 mar 2013, 15:54

Praca w pełnym kroku przy nie za wysokich prędkościach.
Przy jakich? Przy nominalnym napięciu silnika, które nie wiadomo skąd weźmiesz i które zależy od konkretnego modelu?
Jakiś sposób ograniczania prądu MUSI być, inaczej jest to zupełnie bezsensowna robota.

Awatar użytkownika

grg12
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 3
Posty: 1670
Rejestracja: 03 sty 2007, 14:27
Lokalizacja: Wiedeń

#14

Post napisał: grg12 » 25 mar 2013, 09:54

Już lepiej - z silniczkami dedykowanymi na 12V ograniczającymi prąd rezystancją uzwojenia powinno działać. Tylko że to spory przerost formy nad treścią (tranzystory na 12A do sterowanai silnikiem na 0.5A).
Ale traktując to jako projekt dydaktyczny - domyślam się że symulowałeś to na pspice - popatrz sobie jak wygląda prąd na linii zasilania - coś mi się wydaje że w chwili przełączenia bedzie tam spora szpilka - pojemność wejściowea IRF9530 to 500p, IIRF530 600p - razem 1100p ładujesz je przez rezystor 4k7 - stałą czasowa 5.17us (po uwzględniniu efektu Millera będzie jeszcze gorzej) - co oznacza że podczas przełączania gałęzi przez kilka us oba tranzystory przewodza... MOSFETy w tym zastosowaniu należy sterować "twardo", ze źrudła o małej rezystancji.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika CNC”