AT90S2313 a silnik krokowy

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
icky
Użytkownik
Posty: 146
Rejestracja: 29 sty 2006, 17:31
Lokalizacja: Kielce
Kontakt:

Post autor: icky » 02 sie 2006, 22:16

Config Portb = Output
Portb = &B00010001
Config Portd = &B1111100
Portd = &B0000111
Dim Czaspraca As Byte
Dim Czasstart As Byte
Czaspraca = 8
Czasstart = 12
Do

If Pind.0 = 0 Then Gosub Prawo:
If Pind.1 = 0 Then Gosub Lewo:
If Pind.0 = 1 And Pind.1 = 1 Then Czaspraca = 8

Loop
End

Lewo:
Rotate Portb , Left
Waitms Czaspraca
If Czaspraca > Czasstart Then Decr Czaspraca
Return

Prawo:
Rotate Portb , Right
Waitms Czaspraca
If Czaspraca > Czasstart Then Decr Czaspraca
Return
zmienna czaspraca odpowiada za obroty silnika; zmienna czasstart służy do jakotako płynnego startu silnika ale właściwie to nic nie daje... silnik podłączasz do kolejnych pinów portu b (obojętnie których ważne żeby kolejnych np 1 2 3 4 lub 3 4 5 6) silnik reaguje na zwarcie pinu d.0 lub d.1 (obroty w jedną lub drugą stronę) do masy [bo to program na avt3500 :P] ma taką wade że podczas spoczynku na jednym pinie silnika jest napięcie (może to być zaletą czasem) i trzeba uważać żeby nie spalić tranzystorów. można ją łatwo zlikwidować. kolejną wadą jest to że program używa całego portu b co również można zmienić.
------------------------

ja się bawię akurat całkiem sporym silnikiem od skanera, używam ul2003a (tj w skanerze) i już dwa kanały spaliłem :P mój silnik działał z miejsca (bez płynnego wchodzenia na obroty) przy czaspraca = 4

-----------------------

i ot przykładowy programik

Awatar użytkownika
vcd_a
-
Posty: 17
Rejestracja: 11 sie 2006, 21:23
Lokalizacja: Olsztyn
Kontakt:

Post autor: vcd_a » 12 sie 2006, 12:41

Witam, ja się też bawiłem silnikami krokowymi i też sterowałem nimi za pomocą uC oraz PC. Jeżeli o schemat to proszę bardzo: Obrazek

Co do sterowania za pomocą napisałem taki program pod AT90S2313, niestety nie jest on majstersztykiem programistycznym, ale działa ;]

Kod: Zaznacz cały

Config Portb = &B11111111
 Portb = &B11110000
 Config Portd = &B1111011
 Portd = &B1111011

 Dim A As Integer
 A = 10

 Do
 If Pind.2 = 1 Then
 Portb.0 = 1
 Waitms A
 Portb.1 = 0
 Waitms A
 Portb.2 = 0
 Waitms A
 Portb.3 = 1
 Waitms A
 Portb.0 = 0
 Waitms A
 Portb.1 = 1
 Waitms A
 Portb.2 = 0
 Waitms A
 Portb.3 = 1
 Waitms A
 Portb.0 = 0
 Waitms A
 Portb.1 = 1
 Waitms A
 Portb.2 = 1
 Waitms A
 Portb.3 = 0
 Waitms A
 Portb.0 = 1
 Waitms A
 Portb.1 = 0
 Waitms A
 Portb.2 = 1
 Waitms A
 Portb.3 = 0
 Waitms A

end if
 Loop
 End
Program steruje silnikiem tylko w jedną stronę, jeżeli chcielibyśmy sterować w drugą stronę wszystko trzeba puścić "od tyłu", a prędkością regulujemy zmianiając wartość zmiennej A, im mniejsza tym szybciej się silnik obraca, ale trzeba uważać, bo gdy A jest zbyt małe to wtedy silnik zaczyna "gubić kroki", pozdrawiam Krzysiek

Awatar użytkownika
Brzozza93
Użytkownik
Posty: 474
Rejestracja: 26 cze 2006, 17:35
Lokalizacja: Gdynia
Kontakt:

Post autor: Brzozza93 » 12 sie 2006, 20:24

tasza pisze:nie wiem z czego wynika wasza niechęć do samodzielnego szukania informacji...
W "guglu" można znależć wszystko, więc w takim układzie po co byłoby to forum?
:neutral:

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 12 sie 2006, 23:10

Brzozza93 pisze:W "guglu" można znależć wszystko, więc w takim układzie po co byłoby to forum?
po to aby wyjaśniać takie sprawy jak ta:
:arrow: https://forum.elportal.pl/viewtopic.php?p=18475#18475
nawet jeżeli się potem nie zobaczy słowa - dziękuje

tasza

ODPOWIEDZ