Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: TMC 222 an Ministation Kategorie: Sonstige Hardware (von UlliS - 17.06.2011 13:47)
Als Antwort auf Re: TMC 222 an Ministation von Florian - 16.06.2011 18:57

> > > Hallo zusammen,
> > >
> > > hab die Ministation und am I2C Bus einen TMC222 Controller mit Schrittmotor hängen. Leider bewegt
> > > sich nichts.
> > >
> > > Hardware seitig:
> > >
> > > - Spannungsversorgung TMC 222 mit 15 V über Labornetzgerät
> > > - OA1/OA2 OB1/OB2 und U+ und GND sind angeschlossen
> > > - die rote LED auf dem Board leuchtet (Was bedeutet das Leuchten Fehler oder Spannungsversorgung?)
> > > - I2C Bus habe ich SDA/SCL +/ GND an der Ministation angeschlossen und über den 6 poligen Stecker
> > >   am TMC 222 gesteckt
> > > - Pullups sind meiner Meinung nach aktiviert JP1 & JP2 nach links gesteckt
> > >
> > > Software seitig:
> > >
> > > - Hab das Ministation Programm von dieser Homepage verwendet
> > > - mit Einstellung MEGA 32 kompiliert
> > > - Irun/Ihold auf 0xFF probeweise gesetzt um den Strom hochzusetzen
> > > - IDE ist die aktuellste
> > >
> > > Debug
> > >
> > > - die DATA Blöcke sind alle mit 193 (Dez) befüllt??
> > >
> > > Was mache ich falsch - kann mir jemand Tipps geben was noch zu untersuchen oder zu tun ist?
> > >
> > > Viele Grü�e
> > >
> > > Florian
> >
> > Hallo,
> >
> > hast Du die LCD Routinen entfern?
> > Wenn nein, diese bitte entfernen bei der Mini-Station.
> >
> > Grü�e Ulli
> Hallo Ulli,
>
> die LCD Routinen sind schon entfernt - hatte ich vergessen
> zu schreiben
>
> hier noch kurz das Programm - ist denke ich von Dir?
>
> //Variable Declaration
> word ACTPOS, TARGETPOS, SECPOS, COUNTER, PosAct;
> byte ACTPOSH, ACTPOSL, TARGETPOSH, TARGETPOSL, SECPOSH, SECPOSL, CONFIG;
> byte DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7, DATA8, COMMAND;
>
> //TMC222 General Call Adress
> #define TMC222 0xC0
>
> void main(void)
> {
>     //I²C-INIT
>     I2C_Init(I2C_100kHz); //I²C Bit Rate: 100 kHz
>
>
> //----------- POWER ON MESSAGE ------------------------
>     INIT_MOTOR();
>     RESET_POSITION();
>     S1REQUEST();
>     AbsDelay(2000);
>     S2REQUEST();
>
> //-----------------------------------------------------
> //                START  MAIN Loop
> //-----------------------------------------------------
> do
>  {
>     TARGETPOS = 0x2710;  //Dez. 10.000 Steps
>
> //---------------- RUN STEPPER ------------------------
>     if (PosAct == TARGETPOS)
>       {
>        TARGETPOS=0x00;
>       }
>       else TARGETPOS = TARGETPOS;
>
>     AbsDelay(2500);
>
>     GOTO_TARGET();
>     RESET_POSITION();
>     S1REQUEST();
>
> //---------- CHECK For TARGET REACHED -----------------
>     LP1:
>         S2REQUEST();
>                 if (PosAct != TARGETPOS) goto LP1;
>
>
>  } while (1);
> }
>
>
> //-----------------------------------------------------
> //              MOTOR PARAMETER SETTINGS
> //-----------------------------------------------------
> void INIT_MOTOR(void)
> {
>     I2C_Start();       //Show Datasheet To TMC222 Page 34 (6.8.9)
>     I2C_Write(TMC222);
>     I2C_Write(0x89);   //&H89 Sets Motor Parameters
>     I2C_Write(0xFF);   //N/A
>     I2C_Write(0xFF);   //N/A
>     I2C_Write(0xFF);   //Irun & Ihold | Bit0 To Bit3 = Ihold // Bit4 To Bit7 = Irun
>     I2C_Write(0x10);   //Vmax & Vmin  | Bit0 To Bit3 = Vmin // Bit4 To Bit7 = Vmax
>     I2C_Write(0x10);   //Status | 10 = right // 0 = left   // Bit0 To Bit3 = ACC // Bit4 = Shaft // Bit5 To Bit7 = SecPos
>     I2C_Write(0x00);   //SecurePos
>     I2C_Write(0xE);    //Step Mode | Bit2 To Bit3 = StepMode // Bit4 = AccShape
>     I2C_Stop();
> }
>
> //-----------------------------------------------------
> //                   RESET POSITION
> //-----------------------------------------------------
> void RESET_POSITION(void)
> {
>     COMMAND=0x86;
>     PUTCOMMAND();
> }
>
> //-----------------------------------------------------
> //                     HARD STOP
> //-----------------------------------------------------
> void HARD_STOP(void)
> {
>     COMMAND=0x84;
>     PUTCOMMAND();
> }
>
> //-----------------------------------------------------
> //             DRIVE To SECURE POSITION
> //-----------------------------------------------------
> void GOTO_SECURE(void)
> {
>     COMMAND=0x84;
>     PUTCOMMAND();
> }
>
> //-----------------------------------------------------
> //                 DRIVE To TARGET
> //-----------------------------------------------------
> void GOTO_TARGET(void)
> {
>     //high And low Byte (Hex div To 4Bit)
>     TARGETPOSH = TARGETPOS / 0x100;
>     TARGETPOSL = TARGETPOS %0x100;
>
>     I2C_Start();
>     I2C_Write(TMC222);
>     I2C_Write(0x8B);
>     I2C_Write(0xFF);
>     I2C_Write(0xFF);
>     I2C_Write(TARGETPOSH);
>     I2C_Write(TARGETPOSL);
>     I2C_Stop();
> }
>
> //-----------------------------------------------------
> //                 STATUS S1 REQUEST
> //-----------------------------------------------------
> void S1REQUEST(void)
> {
>     COMMAND=0x81;
>     GETSTAT();
> }
>
> //-----------------------------------------------------
> //                 STATUS S2 REQUEST
> //-----------------------------------------------------
> void S2REQUEST(void)
> {
>     COMMAND=0xFC;
>     GETSTAT();
>     ACTPOSH=DATA2;
>     ACTPOSL=DATA3;
> }
>
> //-----------------------------------------------------
> //                   READ STATUS
> //-----------------------------------------------------
> void GETSTAT(void)
> {
>     I2C_Start();
>     I2C_Write(TMC222);
>     I2C_Write(COMMAND);
>     I2C_Stop();
>
>     I2C_Start();
>     I2C_Write(TMC222+1);
>     DATA1 = I2C_Read_ACK();
>     DATA2 = I2C_Read_ACK();
>     DATA3 = I2C_Read_ACK();
>     DATA4 = I2C_Read_ACK();
>     DATA5 = I2C_Read_ACK();
>     DATA6 = I2C_Read_ACK();
>     DATA7 = I2C_Read_ACK();
>     DATA8 = I2C_Read_NACK();
>     I2C_Stop();
> }
>
> //-----------------------------------------------------
> //               SEND COMMAND To TMC222
> //-----------------------------------------------------
> void PUTCOMMAND(void)
> {
>     I2C_Start();
>     I2C_Write(TMC222);
>     I2C_Write(COMMAND);
>     I2C_Stop();
> }

Hallo,

hast du diese Version schon probiert?
http://ccpro.cc2net.de/Download/file.php?ID=4


Grü�e Ulli


    Antwort schreiben


Antworten:

Re: TMC 222 an Ministation (von Florian - 17.06.2011 20:33)