PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] routine für schrittmotor in c-basic gesucht.



28.11.2004, 22:18
nicht daß ich nicht in der lage wär,das ding nicht steuern zu können,aber
es is einfach zu langsam.

ich arbeite mit 3 ports

1 für enable
1 für r/l lauf
und 1 mal step

meine routine funktioniert eigentlich einwandfrei,bloß der motor dreht zu langsam.

meine bisherige sub sieht ungefähr so aus:

enable = 1
cw_ccw = 1
for x = 1 to 20
pulse step
(pause y)
next
enable = 0

dem byte y hab ich natürlich verschiedene werte zu gewiesen,
um zu experimentiert ,aber ohne erfolg.

das delay is drin,weil wenn ich ohne delay "pulse" verliert der motor schritte,und das ohne last.



dann hab ich noch ein weiters problem mit dem auslesen der ports
hab für 2 motoren jeweils 2 endschalter.
also 4,jeder belegt einen digitalport.
in etwa so:

define t1 port[10]
define t2 port[9]
...
..

in der anleitung zu c-control steht jetzt,
daß ein geöffneter taster eine logische 1 am zugewiesenen port liefert,und ein geschlossener taster eine logische 0.

wenn ich jetzt aber z.b.

if NOT t1 ...

abfrage,hab ich dasselbe resultat wie bei

if t1 ...

nämlich gar keins.

in der simulation funkts,aber nicht in der praxis.
es sei angemerkt,daß meine angehängte hardware DEFINITIV in ordnung ist.
nachdem ein port nur 0 oder 1 also true or false haben kann,muß ich ja wohl nicht mehr abragen

if t1 = 0 ....

oder?

für hilfe wär ich wie immer sehr dankbar.

greetz... Mr.G.

thille
04.12.2004, 17:44
Damit der Port als Eingag funktioniert muß er glaube ich disabled werden.

Gruß

Torsten

Sommer
04.12.2004, 18:38
Hi,

was für eine C-Control benutzt du? CBASIC 2.02 hat Programmierbare Pull Up´s die alte jedoch nicht die musst du noch mit etwa 1K --- 33K nach +5V ziehen!

Lass den Motor über eine Schrittmotor Tabelle laufen und nicht über Impulse!

By .... Ulli

eFFex
04.12.2004, 18:57
Ich denke mit ner Schrittmotortabelle kommmt man hier nciht weit, da scheinbar schon ein Motortreiber für SM verbaut ist der eben über die drei Leitungen CW/CCW (Richtung), Enable (an/aus) und Clock (Impulse) verfügt.
Meine Motoren werden direkt über den Timer des µC angepulsed, das funktioniert recht problemlos

05.12.2004, 14:37
ich verwende die c- control 1

das problem mit den "nicht invertieren" hab ich gelöst,jetzt gehts nur noch um den motor.

ich hab jetzt einen DC-Spannungswandler gebastelt und hab ca. 20 V zur verfügung (max 2 A)

aber mehr power hat der trotzdem nicht.
is sauschwach das ding.

und die geschwindigkeit läßt sich auch nicht regeln.
außer mit delays verzögern.
aber ich hätts gern schneller.

mit

pulse step

ohne delay springt der nur nervös herum.
also is der takt zu schnell,oder meine hardware zu langsam.
kann man den l297 höher takten als 50khz?

wenn ich mit dieser geswchwindigkeit mein TFT schwenke,bin ich eingeschlafen,bevor der film läuft.
der schrittmotor bekommt nämlich auch noch ein getriebe.
den motor hab ich aus einem drucker ausgeschlachtet,und weiß,daß er schneller geht,er hat den druckkopf gesteuert.
würde er nur so schnell laufen wie jetzt,würde der drucker für eine seite,etwa 3 tage benötigen.

HELP!!

Sommer
05.12.2004, 15:26
Hallo,

also ich hoffe nicht das du Ihn mit 50Khz ansteuerst da geht nicht recht viel *g*

Die Drehzahlen von schrittmotoren ligen so bis max. 200U/min. da ist er aber bereits sehr schwach.

100U/min sind meistens recht gut und er zieht noch was aber 50Khz ist die falsche Frequenz.

Ich würd das ganze schwenken über einen DC-Getriebemotor lösenund einen Istwertgeber (POTI) das geht wie ein Servo und funtzt!

MfG.

By... Ulli

RG
06.12.2004, 11:18
50khz Ausgangstakt mit C-Control ohne Assembler?

Ich hatte mal ein ähnliches Verhalten, aber da war eine Stepper-Phase schlecht kontaktiert...

RG

mr.g.
09.12.2004, 20:12
Also ich hab jetzt ein bissl experimentiert.

programmtechnisch hab ich jetzt das maximum rausgeholt.

wenns noch schneller soll,muß ich die hardware anpassen.

ich verwende die im tutorial vorgestellte schaltung mit den 297,298
hab den 22k widerstand rausgenommen und durch ein 10 k poti und 10k widerstand ersetzt,dachte,das würde den 297er schneller schalten lassen.
is aber nicht so.
außerdem hat der motor immer noch kein drehmoment.
das haltemoment is aber in ordnung.
mit 100 rpm wär ich schon zufrieden,aber im moment siehts eher nach einem zehntel davon aus.

was kann ich noch versuchen?

ich hab in meiner routine die delays rausgenommen,und durch einfache variablenzuweiseungen ersetzt,um die control zu beschäftigen,bis der motor den schritt ausgeführt hat.

das sieht jetzt ungefähr so aus:


for a = 1 to 50 (50 schritte)
pulse clock (no comment)
c = c
c = c
c = c (je mehr zuweisungen,desto länger die verzögerung)
.
.
.
next



aber schneller wurde das auch nicht wirklich.
zwar schon merklich,aber zu wenig.

what next?

mfg,mrg

09.12.2004, 20:22
nachdem ich mein tft in verschiedenen winkeln stoppen möchte(wg. z.b. sonnenlicht,oder blickwinkel optimal einzustellen,hab ich die schrittmotor variante gewählt. außerdem hab ich das alles schon aufgebaut,ich plane nicht mehr um. ich werde das schaffen,egal wielang es dauert. und SO schwer kanns ja auch nicht sein.

mrg

Sommer
10.12.2004, 08:14
Hi,

da schau dir das mal an, der hat das a mit einer C-Control gemacht.
Hab dieses Programm a mal auf Parsic umgewandelt und Proton+

http://www.wolfgang-back.com/PDF/Schrittmotor.pdf

Also jetzt musst es hinbringen.

By Ulli