Léptetőmotor vezérlés

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Ú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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

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

Hozzászólás Szerző: szovhoz »

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

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: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

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

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
[
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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Bascom verziószám?
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Másold be/küldd át, tedd fel a file cserebere részbe. Meglesem.
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

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: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

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: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

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: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

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?
Válasz küldése