Léptetőmotor vezérlés
Most jobban átnéztem a programodat!
Mondhatom televan hibákkal!
Ha:
Mondhatom televan hibákkal!
Ha:
Kód: Egész kijelölése
Irany Alias Portb.5
Akkor:
If Irany = 0 Then Gosub Csokkenes
If Irany = 1 Then Gosub Novekedes
Legyen!
Csokkenes
Temp = Jelenposition - 1
Temp1 = Temp Mod 8
Select Case Temp1 <-Ez itt minek???
Jled = 1
Waitms 100
Gosub Lepked
Return
Novekedes
Temp = Jelenposition + 1
Temp1 = Temp Mod Temp1 8
Selec Case Temp1 <-Ez itt minek???
Bled = 1
Waitms 100
Gosub Lepked
Return
:roll:
szia
egy cnc masinát szeretnék összerakni x.y.z tengely-el
ugye a step jel határozza meg hogy kell-e lépni
a dir jel mondja meg a lépés irányát
eddig egyszerűnek is tűnhet
de irányváltáskor arra is figyelni kell hogy ne elölről lépjen
hanem a jelenlegi pozícióból visszafelé, máskülönben össze vissza ugrálna.
nos ez utóbbi megírása okoz nagyobb problémát.
próbáltam Marvin után menni ,de ő enkóderel lépked
nem step-dir jelekkel.
hát itt tartok...
egy cnc masinát szeretnék összerakni x.y.z tengely-el
ugye a step jel határozza meg hogy kell-e lépni
a dir jel mondja meg a lépés irányát
eddig egyszerűnek is tűnhet
de irányváltáskor arra is figyelni kell hogy ne elölről lépjen
hanem a jelenlegi pozícióból visszafelé, máskülönben össze vissza ugrálna.
nos ez utóbbi megírása okoz nagyobb problémát.
próbáltam Marvin után menni ,de ő enkóderel lépked
nem step-dir jelekkel.
hát itt tartok...
A hozzászólást 1 alkalommal szerkesztették, utoljára dzoli 2009. január 25. vasárnap, 12:48-kor.
Kezdetnek mondjuk ennyit javítanák:
Kód: Egész kijelölése
Dim Ap As Word 'alap pozició
Dim Temp1 As Word
Dim Temp As Word
Dim Jp As Word 'jelenpozició
Ap = 1
Temp1 = 1 ’Adunk kezdőértéket
Temp = 1
Do
If Irany = 0 And Lepes = 1 Then Gosub Csokkenes
If Irany = 1 And Lepes = 1 Then Gosub Novekedes
Loop
Csokkenes
Temp = Temp - 1
If Temp < 1 then Temp = 8 End if ’Figyeljük a ciklus túllépést
Temp1 = Temp Mod 8
Gosub Lepked
Waitms 100
Ap = Ap - 1 'Mi legyen ha AP kisebb mint 1 Lesz?
Return
Novekedes
Temp = Temp + 1
If Temp > 8 then Temp = 1 End if ’Figyeljük a ciklus túllépést
Temp1 = Temp Mod 8
Gosub Lepked
Waitms 100
Ap = Ap + 1 'Mikor van végállás?
Return
Lepked
Select Case Temp1
Case 1
Portb.4 = 1
Portb.3 = 0
Portb.2 = 0
Portd.5 = 0
Case 2
Portb.4 = 1
Portb.3 = 1
Portb.2 = 0
Portd.5 = 0
Case 3
Portb.4 = 0
Portb.3 = 1
Portb.2 = 0
Portd.5 = 0
Case 4
Portb.4 = 0
Portb.3 = 1
Portb.2 = 1
Portd.5 = 0
Case 5
Portb.4 = 0
Portb.3 = 0
Portb.2 = 1
Portd.5 = 0
Case 6
Portb.4 = 0
Portb.3 = 0
Portb.2 = 1
Portd.5 = 1
Case 7
Portb.4 = 0
Portb.3 = 0
Portb.2 = 0
Portd.5 = 1
Case 8
Portb.4 = 1
Portb.3 = 0
Portb.2 = 0
Portd.5 = 1
End Select
Return
alakul.....
most így néz ki az error file
most így néz ki az error file
Kód: Egész kijelölése
Error : 1 Line : 66 Unknown statement [CSOKKENES] , in File : L:\CNC\CNC.BAS
Error : 242 Line : 68 Source variable does not match the target variable [ 0|8 END IF] , in File : L:\CNC\CNC.BAS
Én is csinálta Tiny 13 al egy vezérlőt és jól müxik.
Bár fel kell érte áldozni a kontrollert !
programozás után le kell tiltani a reset lábat, illetve utolsó fuse bit írásként
Persze rögtön hibát jelez a Bascom de ez csak a visszaellenörzés sikertelensége miatt teszi!(nincs reset láb!!)
Bár fel kell érte áldozni a kontrollert !
programozás után le kell tiltani a reset lábat, illetve utolsó fuse bit írásként
Persze rögtön hibát jelez a Bascom de ez csak a visszaellenörzés sikertelensége miatt teszi!(nincs reset láb!!)
Kód: Egész kijelölése
$regfile = "ATtiny13.dat"
$crystal = 9600000
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Input
Config Portb.5 = Input
Dim A As Byte
A = 1
Figyel:
Portb.4 = 1
Portb.5 = 1
If Pinb.4 = 0 Then
If Pinb.5 = 0 Then Gosub Fel Else Gosub Le
End If
Goto Figyel
Fel:
A = A * 2
If A > 8 Then A = 1
Portb = A
Waitus 10
Return
Le:
A = A / 2
If A < 1 Then A = 8
Portb = A
Waitus 10
Return
Kefeur
Nekem nem fért bele a programod az ATtiny13-ba!
De nem is feszegettem!
Inkább átírtam így fél lépés is van benne!
Most ez az elmélet!
A valóságban az induló motor tehetetlensége miatt. Az első lépés után nagyobb Wait szükséges!
Utána kevesebb, hogy elérjük a lehető legnagyobb fordulatszámot.
Irányváltáskor ez még tovább bonyolódik!
Vagyis kísérletezni kel, hogy ne legyen lépésvesztés a tehetetlenség miatt!
Vagy figyelni kel, hogy megtörtént e valóságosan a lépés?
De nem is feszegettem!
Inkább átírtam így fél lépés is van benne!
Kód: Egész kijelölése
' Irta: kapu48
'$sim
' $regfile = "ATtiny13.dat"
$regfile = "m8def.dat"
$crystal = 9600000
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Input
Config Portb.5 = Input
Dim Sztep(8) As Byte , N As Byte , Sztep_n As Word , Vege As Word
Sztep(1) = 1 '1000
Sztep(2) = 3 '1100
Sztep(3) = 2 '0100
Sztep(4) = 6 '0110
Sztep(5) = 4 '0010
Sztep(6) = 12 '0011
Sztep(7) = 8 '0001
Sztep(8) = 9 '1001
N = 1 'Indulás kezdő helyzetből!
Sztep_n = 1
Vege = 4000 'Pálya vége
Do
Portb.4 = 1 ' Ha teszel külsö felhuzo elenállást, ez nem kel!
Portb.5 = 1
Waitms 100
If Pinb.4 = 0 Then
If Pinb.5 = 0 Then
Incr Sztep_n
If Sztep_n > Vege Then Goto Hiba
Incr N
If N > 8 Then
N = 1
End If
Else
Decr Sztep_n
If Sztep_n < 1 Then Goto Hiba
Decr N
If N < 1 Then
N = 8
End If
End If
Portb = Sztep(n)
Print "N= " ; N ; " Port= " ; Sztep(n) ; " Helyzet: " ; Sztep_n
End If
Loop
Hiba:
Portb = 0 'Motor feszültség mentesitése
Print "Utközés történt!"
Nop
End
A valóságban az induló motor tehetetlensége miatt. Az első lépés után nagyobb Wait szükséges!
Utána kevesebb, hogy elérjük a lehető legnagyobb fordulatszámot.
Irányváltáskor ez még tovább bonyolódik!
Vagyis kísérletezni kel, hogy ne legyen lépésvesztés a tehetetlenség miatt!
Vagy figyelni kel, hogy megtörtént e valóságosan a lépés?
Sziasztok!
Látom forog a fórumban a kód amit az enkóderes vezérléshez izzadtam össze Róbert segítségével. Ez jó.
Keresnék egy programozásban jártas személyt aki a meglévő kódomat átírja, akár egy kis tiszteletdíjért. Jelenleg van egy enkóderes vezérlésem ami működik is de sokáig pihent, gondoltam előveszem újra.
Amire szükség van az egy fő program INT megszakítással.
Laikusként leírom mire van szükségem:
Az enkóder áll, tehát nem akarom hogy forogjon a motor akkor egy szoftveres pwm-mel a motor tartófeszültsége lecsökkenjen kb 2V-ra. Tápfeszültséget így akár 12V-ra is fel tudom tekerni, így erősebb lesz a motor. (PWM azért kell mert már 6 V tartófeszültségtől is túlságosan izzad a motor). Amikor elkezdem tekerni az enkódert akkor forogjon a motor abba az irányba amibe tekerem az enkódert. Amikor megáll az enkóder menjen a szoftveres PWM. Tupírozni lehet: az enkóder sebességét figyelve 2 sebességi fokozat is lehet. Ha tekerem gyorsan az enkódert a motor max sebességgel forog, mivel nem egy versenymotor. Amikor az enkódert lassan egyet-egyet léptetem akkor a motor is 1-1 lépjen. Mivel a hardverre még nem szereltem rá így a motorsebességek változhatnak. pl egy lépés az enkóderen 4 lépés lehet a motoron.
Látom forog a fórumban a kód amit az enkóderes vezérléshez izzadtam össze Róbert segítségével. Ez jó.
Keresnék egy programozásban jártas személyt aki a meglévő kódomat átírja, akár egy kis tiszteletdíjért. Jelenleg van egy enkóderes vezérlésem ami működik is de sokáig pihent, gondoltam előveszem újra.
Amire szükség van az egy fő program INT megszakítással.
Laikusként leírom mire van szükségem:
Az enkóder áll, tehát nem akarom hogy forogjon a motor akkor egy szoftveres pwm-mel a motor tartófeszültsége lecsökkenjen kb 2V-ra. Tápfeszültséget így akár 12V-ra is fel tudom tekerni, így erősebb lesz a motor. (PWM azért kell mert már 6 V tartófeszültségtől is túlságosan izzad a motor). Amikor elkezdem tekerni az enkódert akkor forogjon a motor abba az irányba amibe tekerem az enkódert. Amikor megáll az enkóder menjen a szoftveres PWM. Tupírozni lehet: az enkóder sebességét figyelve 2 sebességi fokozat is lehet. Ha tekerem gyorsan az enkódert a motor max sebességgel forog, mivel nem egy versenymotor. Amikor az enkódert lassan egyet-egyet léptetem akkor a motor is 1-1 lépjen. Mivel a hardverre még nem szereltem rá így a motorsebességek változhatnak. pl egy lépés az enkóderen 4 lépés lehet a motoron.
Üdv!
Ahhoz, hogy valamit hozzá szóljunk a témához többet kellene tudnunk róla!
Milyen a proci, milyen a hardver kiépítése, mi hova van kötve?
Hogyan lehet monitorozni, van HW-s RS232?
Milyen az enkóder tulajdonsága, menyire prelez mikor áll be stabilan?
Mikor milyen jeleket ad ki? Motor feszültség állítást milyen áramkörrel oldod meg?
Menyi várakozási idő kel 2 lépés között?
Ezt az egészet mire akarod használni
Ahhoz, hogy valamit hozzá szóljunk a témához többet kellene tudnunk róla!
Milyen a proci, milyen a hardver kiépítése, mi hova van kötve?
Hogyan lehet monitorozni, van HW-s RS232?
Milyen az enkóder tulajdonsága, menyire prelez mikor áll be stabilan?
Mikor milyen jeleket ad ki? Motor feszültség állítást milyen áramkörrel oldod meg?
Menyi várakozási idő kel 2 lépés között?
Ezt az egészet mire akarod használni
Ki tudja, hogy M88, M644 prociknál miért nem fogadja el a Bascom GIFR 64 utasítást?
Kód: Egész kijelölése
Getencoder:
Waitms Debouncetime
If Cha = 0 Then
If Chb = 0 Then Incr Encounter Else Decr Encounter
End If
Gifr = 64
Return