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 | ||
| ||
> > > > 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: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum