AC motor

Avatar
laci7722
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2006. november 29. szerda, 7:00

AC motor

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

Helló!
AC motort szeretnék vezérelni Attiny2313-al. 1-3 fázis. Frekvencia válltó ill. servo vezérlő érdekelne. Kapcs. rajz és progira lenne szükségem.
Köszi a segitséget.
Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

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

Nem szeretnélek cukkolni, de akkor mi az, amit te teszel a fejlesztéshez? :D
Avatar
laci7722
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2006. november 29. szerda, 7:00

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

Segitek az esetleges hibák feltárásában... :D
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

AC motor nem jó, mert a fázisváltó a nagyáramok birodalma...
Léptető ill szervó kapcsán lehet valami.

Mi az adott?
Mire kell? mekkora terhelést kell tudni? AC v. szervó hány voltos?
Mi az amit nem tudsz összehozni? (rajz v. programrészlettel elölrébb lennénk....) Vagy legalább a körvonalazódott rész. Pláne hogy a Tinyvel nem az igazi ez (kicsi hozzá).


U.i.: Itt a fórumon azért a probléma általában úgy vetődik fel, hogy:
a, Itt van ez+ez a rajz. Megépítettem, sztem ez a hiba benne
b, itt a rajz, a szoftverben ez a kódrészlet nem tetszik. valakinak van vmi ötlete?
c, Itt ez az oldal: http://valami.oldal és tovább fejleszteném. arra gondoltam, hogy és így valósítanám meg. Hol van benne buktató? szerintem ... rész lehetne jobb....

U.i.2: Google kidobott valamit ebben a témakörben, ami nem követhető?


U.i.3.: meg ne csináljuk?:)
Avatar
gerry
Chipgyilok
Hozzászólások: 252
Csatlakozott: 2005. október 11. kedd, 6:00

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

:):):):):):) Szegényt jól leráztad kedves Robi!

Ennyi erővel én is feltehettem volna a kérdést, hogy építenél e nekem egy cnc elektronikát nyátervel szoftverrel.

De ehelyett nekiláttam bogarásztam a müködési elvtől egészen a mehanikai elképzelésig és amikor nem boldogultam, na akkor kérdezősködtem és kérdezni is fogok, mert még naon amatőr szinten vok a programozással :) . De már a nyákot ültetem be. (saját tervezés)

Sajna nem repül az ember szájába a sültgalamb, vagyis igen jó pízért bár mi kapható.

Na csak ennyit akartam
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Na jó, nem akartam lerázni... :oops: Bocsánat.
Csak a feladat definíciója volt nagyon tág....


Pláne hogy most tervezgetek én is CNC vezérlést. És még ott tartok, hogy hogyan is néz ki egy léptetőmotor... Meg a vezérlési alapok hogyan jönnek elő.
Az elmozdulás mérése macerás, azaz a buktató az egészben.
- léptetőmotor nem lép:) - honnan tudom?
- tengelyelfordulást kell nézni - optikai enkóder aranyáras
- abszolút vagy relatív pozíciót kell tudni....

Mondjuk még csak nagyfloppy léptetőmotorral kísérletezem. Igaz a processzor nem direktben hajtja meg, hanem I2C buszon át. PC oldalról meg USB vagy Ethernetháló! Mondjuk ez utóbbiak vannak többé-kevésbé készen.


Amúgy ha kellően sok idővel bírsz és tőkével, naná hogy bevállalom a komplett nyákterv + építési leírást... :P

De azért ha már van elképzelés, van ÖTLET, akkor gyerünk. Összedugjuk a fejünket és néhány füsttelen chip és biztosíték árán, de meglesz a program....

Léptetőmotor kezelése ami mentén elindultam, hogy ne csak "káráljak":

Alapok:
http://www.tigoe.net/pcomp/code/archive ... 0245.shtml
Rajz+Bascom minta:
http://www.active-robots.com/products/m ... pper.shtml

Uni- és Bipolár meghajtás, plusz film+Bascom!
http://members.home.nl/bzijlstra/hardwa ... tepper.htm

Unipolár és ami mentén elindultam/ok/:
http://home.wxs.nl/~meurs274/stepper_motor_driver.htm
Avatar
doncarlos
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2007. október 14. vasárnap, 6:00

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

hello!

Én is éppen egy léptető motorral szórakozok. Az lenne a probléma hogy az óramuató járásával ellenkező irányba tök jól megy egyező irányba viszont nem folyamatos néha megakad meg furán viselkedik(csak remeg pl.) mi okozhatja ez? a kontroller egy epson nyomtató alaplapot hajt meg azon van a motorvezérlés is.

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

$regfile = "m16def.dat"
$crystal = 8000000


Config Porta = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
Config Lcdmode = Port

Initlcd

Cursor Off

Config Kbd = Portc

Dim Wa As Integer
Dim A As Byte
Config Portd = Output

Wa = 10

Do
A = Getkbd()

Select Case A
   Case 2 : Gosub Ora_egy
   Case 1 : Gosub Ora_ell
End Select

Loop

Ora_ell:

      Portd = 9
      Waitms Wa
      Portd = 0


      Portd = 3
      Waitms Wa
      Portd = 0


      Portd = 6
      Waitms Wa
      Portd = 0


      Portd = 12
      Waitms Wa
      Portd = 0


Return

Ora_egy:

      Portd = 12
      Waitms Wa
      Portd = 0


      Portd = 6
      Waitms Wa
      Portd = 0


      Portd = 3
      Waitms Wa
      Portd = 0


      Portd = 9
      Waitms Wa
      Portd = 0

Return
End
szerk: 3 mp-es késletetés esetén teljesen jól müködik? akkor pl 10-en mért nem? még 1 vmit szeretnék tudni, ezt a léptető motoros dolgot hogy lehet összehozni a pwm-el?

a válaszokat előre is köszi!
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

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

én a legelső projecteben jártas vók ac motoro több kilówatosat hajtunk és pwm jelel! tökéletesen persze az elektronika nem piskóta dolog!

régebben foglakoztunk léptető motorral és hát nem egyszerrű a remegés az hiba ami a progi ban van csak nem emléxem már rá de azt hiszem a freki okozza!


én úgy oldottam meg hogy a 4 polulú motornál mindíg egymás után kapcsolgattam a polusokat az időkkel játszva gyorsítottam vagy lassítottam!

és előre hátra is ment

ugyan ezt 8 polussal is eljátszottam elképesztő mekkora erő van benne igaz én elég drága motorokkal próbáltam játékgépekből szereltem ki ilyen pénzesekből!

itt a progim

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
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

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

szervo vezérlő hp motorhoz de c-ben írva!

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


/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.8e Evaluation
Automatic Program Generator
© Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 7/30/2006
Author  : Freeware, for evaluation and non-commercial use only
Company : 
Comments: 


Chip type           : ATmega128
Program type        : Application
Clock frequency     : 16.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 1024
*****************************************************/

#include <mega128.h>
#include <delay.h>

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=0 State4=T State3=T State2=T State1=T State0=T 
PORTB = 0b00000000;
DDRB  = 0b00100000;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTD=0x00;
DDRD=0x00;

// Port E initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTE=0x00;
DDRE=0x00;

// Port F initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTF=0x00;
DDRF=0x00;

// Port G initialization
// Func4=In Func3=In Func2=In Func1=In Func0=In 
// State4=T State3=T State2=T State1=T State0=T 
PORTG=0x00;
DDRG=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
ASSR=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 2000.000 kHz
// Mode: Ph. & fr. cor. PWM top=ICR1
// OC1A output: Non-Inv.
// OC1B output: Discon.
// OC1C output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
// Compare C Match Interrupt: Off
TCCR1A=0x80;
TCCR1B=0x12;
TCNT1H=0x00;
TCNT1L=0x00;

ICR1 = 20000;

OCR1A = 1000;

OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// Timer/Counter 3 initialization
// Clock source: System Clock
// Clock value: Timer 3 Stopped
// Mode: Normal top=FFFFh
// Noise Canceler: Off
// Input Capture on Falling Edge
// OC3A output: Discon.
// OC3B output: Discon.
// OC3C output: Discon.
// Timer 3 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
// Compare C Match Interrupt: Off
TCCR3A=0x00;
TCCR3B=0x00;
TCNT3H=0x00;
TCNT3L=0x00;
ICR3H=0x00;
ICR3L=0x00;
OCR3AH=0x00;
OCR3AL=0x00;
OCR3BH=0x00;
OCR3BL=0x00;
OCR3CH=0x00;
OCR3CL=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
// INT3: Off
// INT4: Off
// INT5: Off
// INT6: Off
// INT7: Off
EICRA=0x00;
EICRB=0x00;
EIMSK=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
ETIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

while (1)
      {
      // Place your code here
      OCR1A = 1000;
      delay_ms(6000);
      OCR1A = 2000;
      delay_ms(6000);
      
      };
}
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

A remegés a frekvencia miatt van. Ha a Wa értéket változtatod, akkor nem lesz jobb? Kell a mégneses mező kialakulásához idő, és a fesz elvételekor a mező összeomlásához is. Ha az idő rövid, akkor ez nem tud végbe menni.

Én egy NEMA34-es motorral játszottam (1.7 Nm-es), volt adatlap is hozzá (SH23-1.7)- Itt meg volt adva a fordulat/nyomaték görbe. A várakozást növelve volt csak stabil, 2 lépés közt be kellett rakni ~500 usec várakozást...

Érdemeseb az ún. fullstepet használni (ez 2 tekercset jelent egyszerre, mert erősebb a motor. Illetve a HalfStep is jó lehet, akkor a natív felbontás feleződik.

Kiindulásnak, alapötletnek:

http://www.atmel.com/dyn/resources/prod ... OC3045.PDF
http://www.atmel.com/dyn/resources/prod ... oc4214.pdf
http://www.atmel.com/dyn/resources/prod ... oc8017.pdf
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

PWM:

Kell 4! timer SW vagy HW alapon.
Az egyes tekercsekre amik egymás mellett vannak, más PWM-l adsz rá. Pl. a 255-t megosztod 2 tekercs közt. Ekkor a lépés arányosan, áll be a 2 közé.


Pl. az első lépésed a 9-eset jelenti, és ebből kell továbbmenned.
A tekercsek így a következő állapotban vannak:

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


A    B    C    D   
100 0   0   0
99  1   0   0 
98  2   0   0
.   .   .   .   
2   98  0   0
1   99  0   0
0   100 0   0
 
A pwm ereje 0-100ig van ábrázolva. Kérdés, hogy ennyire finom szabályzásnak van-e értelme.
Alapban a léptteőmotor 1,8 fokos, ez half-steppel 0,9 fokos lesz. Ezt osztod fel (ha a PWM 8 bites) 256 részre. Így a mitorod 0,0035 fokot fog tudni.
Viszont a PWM frekit ha tudod vidd fel 16 kHz fölé, mert különben amotor sípol, azaz fülre hallod.
A belső 8MHz RCről járatva, Prescale=1 timer esetén még hallatszik, így külső kvarcról/RCről kell járatni a "némításhoz".
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Szervovezérlés:

Ha a motor belül már tartalmazza a szervót, akkor a Bascomban ez egyszerűen kezelhető:

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

'-----------------------------------------------------------------------
'                         (c) 2001-2005 MCS Electronics
'                           servo.bas demonstrates the SERVO option
'-----------------------------------------------------------------------

'Servo's need a pulse in order to operate
'with the config statement CONFIG SERVOS we can specify how many servo's we
'will use and which port pins are used
'A maximum of 16 servos might be used
'The SERVO statements use one byte for an interrupt counter and the TIMER0
'This means that you can not use TIMER0 anymore
'The reload value specifies the interval of the timer in uS
'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
$regfile = "2313def.dat"

Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
'as an option you can use TIMER1
'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 , Timer = Timer1


'we use 2 servos with 10 uS resolution(steps)

'we must configure the port pins used to act as output
Config Portb = Output

'finally we must turn on the global interrupt
Enable Interrupts

'the servo() array is created automatic. You can used it to set the
'time the servo must be on
Servo(1) = 10                                               '10 times 10 = 100 uS on
'Servo(2) = 20                                               '20 times 10 = 200 uS on
Do
Loop

Dim I As Byte
Do
 For I = 0 To 100
   Servo(1) = I
   Waitms 1000
 Next

 For I = 100 To 0 Step -1
 '  Servo(1) = I
   Waitms 1000
 Next
Loop
Bascom/samples servo.bas
Nem próbáltam ki, nincs servomotorom itthon...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Kiraktam a file csere-bere részre. Stepper.zip néven.

Nagyon jó animáció!
Válasz küldése