Léptetőmotor vezérlés

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 186
Csatlakozott: 2008. február 17. vasárnap, 7:00
Tartózkodási hely: Szuhakálló

HozzászólásSzerző: kefeur » 2008. augusztus 6. szerda, 20:55

Úgy hogy pwma nem ismeri , timer0 nál hibát jelez a pwm=8 ra
Hogy is van ez ?
Pwm0 a és b
Pwm1 a és b
Config Timer0 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
ez így nem jó!
Nem tudom hogy néz ki ez helyesen.

Enable Timer0
On Timer0
Enable Timer1
On Timer1
Start Timer0
Start Timer1


Pwm0a = 50
Pwm0b = 100
Pwm1b = 50
Pwm1a = 100
Ez van a folytatásban
[/u]

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9973
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. augusztus 7. csütörtök, 4:54

M48-as chipre van nálam írva, abból puska:

Kód: Egész kijelölése

'PWM
Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Pwm = 8 , Compare B Pwm = Clear Down
Config Timer2 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down


Lepteto_a Alias Pwm2b                                       'OC2B
Lepteto_b Alias Pwm1a                                       'OC1A
Lepteto_c Alias Pwm1b                                       'OC1B
Lepteto_d Alias Pwm2a                                       'OC2A
Lepteto_r Alias Pwm0b                                       'OC0B
Lepteto_f Alias Pwm0a                                       'OC0A


lepteto_a=0
lepteto_b=0
lepteto_c=0
lepteto_d=0
lepteto_e=0
lepteto_f=0

[/code]

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9973
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. augusztus 7. csütörtök, 4:55

A Timer0 confignál nem kell a pwm=8! A ténylegesen 8 bites....
A Timer1 esetén lehet pwm=8|9|10....

Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00
Kapcsolat:

HozzászólásSzerző: szovhoz » 2008. augusztus 7. csütörtök, 4:58

A léptetőmotor vezérlést én nem pwmel csináltam. hanem a pólusokat kapcsoltam meg felelős sorrendben és az közöttük lévő idővel állítottam a sebességet.

Kód: Egész kijelölése

$regfile = "AT26DEF.DAT"
$crystal = 280000
'
Config Portb = Output
Config Porta = Input
'

Dim T As byte

                                               '0 - 255
                                               '0 - 255
'
'*********************
' Sencing (Loop)
'*********************
'
Do
If Pina.2 = 0 And Pina.1 = 0 And Pina.0 = 0 Then Goto Motionstop       'válztozott
If Pina.2 = 0 And Pina.1 = 0 And Pina.0 = 1 Then T = 0      'változott
If Pina.2 = 0 And Pina.1 = 1 And Pina.0 = 0 Then T = 70
If Pina.2 = 0 And Pina.1 = 1 And Pina.0 = 1 Then T = 60
If Pina.2 = 1 And Pina.1 = 0 And Pina.0 = 0 Then T = 50
If Pina.2 = 1 And Pina.1 = 0 And Pina.0 = 1 Then T = 40
If Pina.2 = 1 And Pina.1 = 1 And Pina.0 = 0 Then T = 30
If Pina.2 = 1 And Pina.1 = 1 And Pina.0 = 1 Then T = 20
If Pina.3 = 1 Then Goto Revmode
'
Portb.0 = 1 : Portb.1 = 0 : Portb.2 = 0 : Portb.3 = 1
Waitms T
Portb.0 = 1 : Portb.1 = 1 : Portb.2 = 0 : Portb.3 = 0
Waitms T
Portb.0 = 0 : Portb.1 = 1 : Portb.2 = 1 : Portb.3 = 0
Waitms T
Portb.0 = 0 : Portb.1 = 0 : Portb.2 = 1 : Portb.3 = 1
Waitms T
Goto Motionstop
'
Revmode:

Portb.0 = 0 : Portb.1 = 0 : Portb.2 = 1 : Portb.3 = 1
Waitms T
Portb.0 = 0 : Portb.1 = 1 : Portb.2 = 1 : Portb.3 = 0
Waitms T
Portb.0 = 1 : Portb.1 = 1 : Portb.2 = 0 : Portb.3 = 0
Waitms T
Portb.0 = 1 : Portb.1 = 0 : Portb.2 = 0 : Portb.3 = 1
Waitms T

Motionstop:

Loop
End

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9973
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. augusztus 7. csütörtök, 8:26

A PWM a csúcsáram szabályzásra való.

A lépések közti idő a léptetés _sebességére_ hat.

Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 186
Csatlakozott: 2008. február 17. vasárnap, 7:00
Tartózkodási hely: Szuhakálló

HozzászólásSzerző: kefeur » 2008. augusztus 7. csütörtök, 20:24

Köszi az infót.
Igen a pwm a motorok melegedését megelőzendő kell nekem
Van olyanom is ami nem pwm-es és jól működik CNC vezérlő programokkal
[code] $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
[
A hiba sajnos még nem oldódott meg a 2313-nál.

Bemásoltam a kódot és most azt mondja a Bascom:
Assignment error PWM0a
Erre a sorra hivatkozva :Pwm0a = 50 [/list]

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9973
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. augusztus 7. csütörtök, 22:05

Bascom verziószám?

Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 186
Csatlakozott: 2008. február 17. vasárnap, 7:00
Tartózkodási hely: Szuhakálló

HozzászólásSzerző: kefeur » 2008. augusztus 8. péntek, 20:24

Bascom ver: 1.11.9.1
Már többször is okozott nekem komoly fejtörést .
azt hiszem 1 szer te fordítottad le nekem az egyik progit mert hibákat írt.
Azt hiszem csere lesszz!

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9973
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. augusztus 9. szombat, 4:47

Másold be/küldd át, tedd fel a file cserebere részbe. Meglesem.

Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 186
Csatlakozott: 2008. február 17. vasárnap, 7:00
Tartózkodási hely: Szuhakálló

HozzászólásSzerző: kefeur » 2008. augusztus 9. szombat, 20:11

Be került a file cserebere oldalra 2313pwm néven.
Azt hiszem benne van minden ami kell.
Nagyon kíváncsian várom az eredményt.
A kód nem teljes még , lépésről lépésre szoktam életre kelteni a fő részeket.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9973
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. augusztus 10. vasárnap, 6:06

Típushiba :P.

Az elején a 90S2313 chipre hivatkoztál. Abban csak PWM1 (pwm1a) van...

Kód: Egész kijelölése

$regfile = "ATtiny2313.DAT"
'$regfile= "2313DEF.dat"   <- Ez a nem jó!
$crystal = 16000000
$baud = 19200

' Config Portb.1 = Input
' Config Portb.0 = Input
' Config Portd.2 = Input
' Config Portd.3 = Input

'Ezek sem minden esetben letszukseglet
 Config Portb.2 = Output
 Config Portb.3 = Output
 Config Portd.5 = Output
 Config Portb.4 = Output


 Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
 Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Pwm = 8 , Compare B Pwm = Clear Down

' Enable Timer0
' On Timer0
' Enable Timer1
' On Timer1
'Enable Interrupts
' Start Timer0
' Start Timer1

  Ki1 Alias Pwm0a
  Ki2 Alias Pwm0b
  Ki3 Alias Pwm1a
  Ki4 Alias Pwm1b
  Ki1 = 5
  Ki2 = 10
  Ki3 = 5
  Ki4 = 10


do
  ki1=ki1+20
  ki2=ki2+40
  ki3=ki3+62
  ki4=ki4+35
  waitms 250
loop



A kimenetekre tegyél LED-et :). Szépen látszik....

Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 186
Csatlakozott: 2008. február 17. vasárnap, 7:00
Tartózkodási hely: Szuhakálló

HozzászólásSzerző: kefeur » 2008. augusztus 10. vasárnap, 9:45

Az igen szépen megnéztem !
Ez az én figyelmetlenségem volt .
Köszi a segítséget.

Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 186
Csatlakozott: 2008. február 17. vasárnap, 7:00
Tartózkodási hely: Szuhakálló

HozzászólásSzerző: kefeur » 2008. augusztus 10. vasárnap, 14:26

Még valahogyan be kellene iktatni az analóg komparátort is ,csakhogy nem értem hogyan lehet a timer1 pwm is és ACI is .
8O
Illetve hogyan olvasom ki a komparátor kimenetét?
Ja megszakítás .
De nem írja a help hogyan hivatkozhatok rá.
Hol adhatom meg neki hogy ha billen akkor ide ugorj?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9973
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. augusztus 10. vasárnap, 14:30

Ugyanazon lábon 2 funkció nem lehet.

Komparátor átbillenéskor INTet generál.

Az INT kezelés alapja:
config compareparameterek = ....
On compareint hovaugrik
enable compareint
enable interrupts

do
nop
loop
end

Hovaugrik:
utasitasaok....
return

Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 186
Csatlakozott: 2008. február 17. vasárnap, 7:00
Tartózkodási hely: Szuhakálló

HozzászólásSzerző: kefeur » 2008. augusztus 10. vasárnap, 19:56

Szépen működik is !
Viszont nem tudom hogyan kell elnevezni a kimeneteket ha "
portb1 alias ki1
portb2 alias ki2
portb3 alias ki3
és
for i = 1 to 3
ki(i) =1
next i
Ugye erre azt mondja a fordító hogy assignment error
Ezt a dolgot hogyan lehet megoldani?


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég