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 Florian - 17.06.2011 20:33)
Als Antwort auf Re: TMC 222 an Ministation von UlliS - 17.06.2011 13:47
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board, Pro-Bot128
> > > > 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
Hallo Ulli,

die hatte ich probiert. Hab auch die Basic Variante
ohne LCD probiert.

der Motor sollte funktionieren  - ich hab die Spulen
kurzgeschlossen - mit der erwarteten Reaktion.

 Hab einen anderen Motor angeschlossen. Wieder keine
Reaktion. Hab

das TMC222 Modul getauscht (hatte 2 bestellt) auch kein
Erfolg.

Hast Du noch eine Idee?


    Antwort schreiben


Antworten: