Forum: Mikrocontroller und Digitale Elektronik Nanotec Schrittmotor dreht nur in eine Richtung!!


von Henry P. (henrylexx)


Lesenswert?

Hallo,

ich habe folgenden Schrittmotor von Nanotec(bipolar):

http://de.nanotec.com/downloads/pdf/3333/ST4118S1404%20Layout1%20(1).pdf

dazu auch einen Treiber von Nanotec:
http://de.nanotec.com/schrittmotorsteuerung_smci35.html

http://de.nanotec.com/downloads/pdf/3864/Schrittmotor-Controller_092_SMCI35.pdf

nach einigen Programmier hickhacks läuft der Motor ziemlich gut... jetzt 
wollte ich Ihn auch einfach mal in die andere Richtung laufen lassen.
Ich habe dafür, vor der main while(1) den entsprechenden Ausgang auf 
high gesetzt... der Motor macht jetzt nur eine handvoll Schritte und 
bleibt dann stehen. Alle Pegel sind noch da. Takt, Enable und Richtung.

Ich hab dann einfach mal die Frequenz runter genommen und überprüft ob 
da vielleicht der hund steckt... von 10 Hz bis 190 Hz dreht der Motor 
danach ist er tot...
getauscht habe ich den Motor sowie die Treiberstufe doch das Problem ist 
immer noch !

Ich kann mir nicht vorstellen dass ich durch ein einfachen HIGH Pegel am 
Richtungseingang der Motor nicht mehr drehen will....


Könnt Ihr mir helfen ?

von Karl H. (kbuchegg)


Lesenswert?

Zeig mal dein Programm.

Wenn ich mal davon ausgehe, dass die Jungs bei Nanotec keine Trottel 
sind und es im Grunde trivial ist, einen Schrittmotor in die andere 
Richtung drehen zu lassen, kann das Problem nur noch in deinem Code 
sein.

von Henry P. (henrylexx)


Angehängte Dateien:

Lesenswert?

Ich benutze nen AVR32 UC3C, ich hoffe aber das der Quellcode 
ausreichende kommentiert ist um zu wissen was ich da machen...

Ich war schon kurz davor bei nanotec anzurufen... :S

alles was ich auskommentierte habe, ich raus gelöscht,

von Henry P. (henrylexx)


Lesenswert?

Wenn keine Lösung zu finden ist, würde ich trotzdem da anrufen...
Ich bin mir nicht zu schade meine unwissenheit preiszugeben...

von Uwe (Gast)


Lesenswert?

Enable Input mit Richtung Input Vertauscht ?

von Henry P. (henrylexx)


Lesenswert?

du meinst ?
1
AVR32_GPIO.port[2].ovrs  = 1 << AVR32_PIN_PC10;     //Richtungsänderung
1
AVR32_GPIO.port[2].ovrs = 1 << AVR32_PIN_PC29;      // Enable Motor

leider sind werte AVR_32_PIN_PC10/29 unterschiedlich

beim auskommentieren und nicht auskommentiere (der Richtungsänderung) 
habe ich jeweils die Pegel mit einem Messgerät nach gemessen... um zu 
überprüfen ob wirklich alles da ist wo es hingehört :S

von Frank (Gast)


Lesenswert?

Hallo Henry P
du musst Deiner SMCI35 erst ein mal sagen (über RS232 3,3V) welchen 
Motor Du angeschlossen hast, welchen Modus 1/1 1/2 1/4 Step ... bis 
Sinus, Absolute- oder Relative- Positionierung welche Ströme, welche 
Rampen, was er mit den digitalen Eingängen und Ausgängen machen soll.

All das kann man mit der Software NanoPro einstellen

http://de.nanotec.com/dyn_downloads_ind/220/NanoPro_BenutzerHB_V2-2_de.pdf

Frank

von Henry P. (henrylexx)


Lesenswert?

Hehe ja stimmt...

Ich hab damals die RS232 Konverter nicht mit bestellt... hab ich erst 
Freitag gemacht :(

Der Treiber wird bei Auslieferung im Takt-Richtungsmodus ausgliefert... 
so dass eine simple Ansteuerung mit einem uc möglich sein muss/sollte...
siehe Datenblatt rechte Seite Ein/Ausgänge (X4)
http://de.nanotec.com/downloads/pdf/3864/Schrittmotor-Controller_092_SMCI35.pdf

wenn ich das Problem gelöst habe werde ich es posten...
ich vermute, da karl heinz nicht weiter geantwortet hat, das problem 
nicht unbedingt im quellcode liegt...

für weiter tips bin ich aber offen...

von Karl H. (kbuchegg)


Lesenswert?

Henry P. schrieb:

> wenn ich das Problem gelöst habe werde ich es posten...
> ich vermute, da karl heinz nicht weiter geantwortet hat, das problem
> nicht unbedingt im quellcode liegt...

Mein Problem ist, dass ich mit AVR32 keine Erfahrung habe. In deinem 
Programm ist mir zuviel Zeugs, von dem ich nicht weiß, was er macht.

Ganz ehrlich?
Wenn ich an deiner Stelle wäre, hätte ich schon längst folgendes 
gemacht:
Ich hätte auf den µC erst mal gesch... und hätte mir ein Taktsignal 
besorgt. Entweder von zb einem 555 oder aber auch meinetwegen von einem 
µC.
Das schliess ich an und an die Enable bzw. Direction Pins der Steuerung 
kommen ganz banale Drähte, die ich wahlweise mit GND oder Vcc verbinde.
Und denn seh ich eh, ob die Steuerung den Motor treiben kann oder nicht.

Vorteil: Ich WEISS, dass es dann das Programm nicht sein kann, weil es 
kein Programm gibt. Der Steuerung ist es ja wurscht, wer da an den Pins 
wackelt.

von Henry P. (henrylexx)


Lesenswert?

Der Fehler lag wirklich nicht im Quellcode...

Der Tipp mit dem "analogen" Pegel setzen von Karl hat mich auf die 
richtige Fährt gebracht. Trotzdem konnte ich das Problem nicht selbst 
lösen, obwohl es ganz simpel und einfach ist... ich sag nur Grundlagen 
Elektrotechnik...

Ich hab meinen Betreuer dann um Hilfe gebeten (tut mir leid wenn ich 
euch erst zu Rate ziehe, ich will nicht immer wegen jeden kleinen scheiß 
zu  ihm rennen)... IHR seit meine stütze bisher und das sehr 
erfolgreich!!!!

Also zu dem Problem ich hab einfach keine Massen vom UC3C Board auf die 
Treiberleiste gezogen...
Das heißt: hatte die Richtung "LOW" Pegel hat der Treiber sich die Masse 
von dem Richtungsanschluss geholt, aber hat der PIN "HIGH" gab es keine 
Masse mehr und Treiber wusste nicht woran er sich orientieren soll...

also Fix die Masse angeschlossen und siehe da, er läuft ruhig und 
schnell in alle Richtungen!!

Unendlichen vielen Dank für eure Gedanken anstöße!

Ich weiß als Mechatronikstudent hätte ich drauf kommen sollen bzw. es 
sehen müssen aber manchmal sieht man den Wald vor lauter Bäumen nicht.



Problem gelöst  - Threat kann geschlossen werden

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.