Forum: Mikrocontroller und Digitale Elektronik Schrittmotor direkt über µC ansteuern


von Michael (Gast)


Lesenswert?

Hallo,

ich möchte gerne einen bipolaren Schrittmotor direkt mit einem µC 
ansteuern.
Meine Überlegung ist den Motor der einen Wicklungswiderstand von 16 Ohm 
hat, direkt an die µC Ports zu schalten. Der Strom durch die Wicklung 
sollte mindestens 15mA betragen. Das bedeutet, dass bei einer Spannung 
von 5V ein Reihenwiderstand von 330 Ohm nötig wäre. Mit 270 Ohm und den 
16 Ohm der Wicklung komme ich auf einen Strom von ca. 17mA. Wenn ich 
dann die Ports so schalte, dass die beiden Wicklungen abwechselnd von 
diesem Strom durchflossen werden müsste es doch funktionieren. Oder 
mache ich da einen Denkfehler?

von juppi (Gast)


Lesenswert?

...wenn sich der Schrittmotor bei dem I  bewegt?!

von MagIO (Gast)


Lesenswert?

Willst Du nur den Motor drehen lassen, oder auch was damit bewegen? 
15mA@5V sind nur 50mW und der größte Teil davon wird im 330Ohm bzw. 270 
Ohm Widerstand umgesetzt. P=I^2*R

Abgesehen davon ist es sicher nicht empfehlenswert die Port-Pins direkt 
an die Motor-Wicklungen anzuschließen. Beim Umpolen werden die 
Motor-Wicklungen eine Induktions-Spannung erzeugen, die höher ist, als 
die 5V. Normalerweise leitet man diese über eine Freilaufdiode ab.

von Meister Hans (Gast)


Lesenswert?

Ja, der Motor dreht sich bei dem Strom, funktioniert sogar bei 10mA. 
Aber das mit der Freilaufdiode gibt mir jetzt zu denken. Wenn ich an 
jedem Port zwei Dioden jeweils gegen GND und VCC anbringe müsste es aber 
funktionieren???

von Wilhelm F. (Gast)


Lesenswert?

Michael schrieb:

>ich möchte gerne einen bipolaren Schrittmotor direkt mit einem
>µC ansteuern.

Na ja, so ganz direkt wird es nicht gehen. Ich selbst, experimentierte 
vor ein paar Jahren mal mit dem integrierten Schrittmotortreiber TCA3727 
von Siemens. Macht Voll- und Halbschritte, wird vom µC einfach nur über 
Bitmuster angesteuert. Als Zusatzbauteile waren nur 2 Lastwiderstände 
als Stromsensoren erforderlich. Zum Experimentieren und Programmieren, 
war das alles erfreulich einfach.

von juppi (Gast)


Lesenswert?

..hast du einen Doppelnamen?

Was ist das für ein Motor?

von Michael (Gast)


Lesenswert?

Ach, mein Bruder ärgert mich wieder.

Das ist ein kleiner Schrittmotor aus einem Cd-Rom Laufwerk.

von Drachenbändiger (Gast)


Lesenswert?

Wenn es klein sein soll, setze ich gerne den A3901 (2 H-Brücken) ein: 
http://www.allegromicro.com/en/Products/Part_Numbers/3901/3901.pdf

von Michael (Gast)


Lesenswert?

Super IC. Aber wo bekomme ich den her?

von Drachenbändiger (Gast)


Lesenswert?

Michael schrieb:
> ... Aber wo bekomme ich den her?

Schick mir mal 'ne mail:  f  h s {AT} i  e  e e {punkt} o r  g

von Drachenbändiger (Gast)


Lesenswert?

PS: Ich hab' meine von Farnell.

von Jo T. (Gast)


Lesenswert?

Hi, hier ist der richtige Titel, jetzt hoffe ich auf eine  Lösung.
In nem anderen Thread hatte ich ja angekündigt, ein Mini-Stepper direkt 
an den tiny45 anzuschließen.
Habe ich nun getan, nur mit je 20 Ohm um die Spannung auf etwa 1.5 V zu 
bringen.
Wicklungswiderstand war etwa 20, mit Zu- und Ableitung zu den Pins also 
60 Ohm, ergibt 25 mA.
Nach ca.10 Halbschritten ohne ExtraLast war Schluss, aber nach Pause 
lief es wieder etwas, aber immer weniger, also tiny jetzt defekt.Hätte 
mich anders auch gewundert, immerhin hat es gezuckt.
Stefanus erwähnte R+C, wie muss die Beschaltung aussehen ?
Gern berichte ich dann über die Ergebnisse.
Das Ansteuerprogramm, Halbschritte, kann mit Led in Pb 0,1,2,3 
beobachtet werden.
;step.asm
;avrdude -P /dev/ttyUSB0 -c stk500v2 -p t45 -Uflash:w:step.hex:i
.include "tn45def.inc"
.def   A      = r16
.def   B      = r17
.def   C      = r18
.def   i48      = r19
        rjmp Anfang
;        .org 0x0003
;        rjmp TIM0_OVF    ;Timer0 Overflow
Anfang:
    ldi i48,48

      ldi ZH,high(data*2)

      ldi ZL,low(data*2)

loop:
  lpm C,Z+

  cpi C,0
   breq loop-1
  out ddrb, C
  lpm C,Z+

  or C,i48
  out portb, C
  ldi  A,20
  rcall pause
  ldi A,0
  out ddrb, A
  ldi  A,250
  rcall pause
  rcall pause
  rcall pause
   rcall pause
  rjmp loop
pause:

 ldi   r24,A

   ldi   r25,250
innen:                ;innere Schleife

    sbiw r24,1

    sbis portb,4
  rjmp +2
  sbi portb,4
  rjmp +1
  cbi portb,4
  brne  innen

  cbi portb,4
  ;  sbic pinb,inP

 brne  innen

 ret               ; Ende Pause

data:
.db 15, 10, 12, 8, 15, 9, 3, 1, 15, 5, 12, 4, 15, 6, 3, 2, 0, 0
; Ende, habe einige, hoffentlich entbehrliche Zeilen entfernt. Leider 
weiß ich nicht die richtge Formatierung.
Gruß vom (kühlen) Thüringerwald

von Jo T. (Gast)


Lesenswert?

Der µC ist doch nicht totzukriegen.
Mit kürzerem Impuls (ldi A,8 statt vorher 20) lief es wieder mehrere 
Runden.
In meinem Listing sind noch einige alte Zeilen einer Tastenabfrage (von 
sbis bis cbi).
Das vorgeschlagene RC-Glied ist wohl ein Schnubber, wie ich inzwischen 
gelesen habe.
Selbst beim TLE4202 schon eingesetzt, wieso hatte ich das vergessen. 
Alzheimer ?
Nach'm Frühstück wird der Lötkolben angeheizt.
Ob sich die 8 zusätzlichen Teile lohnen ?
5 A4988 f.10 € sind schon auf dem Weg.
Guten Morgen

von Stefan F. (Gast)


Lesenswert?

Ich hatte in einem anderen Thread einen Snubber vorgeschlagen. Das war 
aber auch ein anderer Anwendungsfall, der nicht hierzu passt.

Wenn du einen Snubber verwendest, werden Impulse entstehen, die über 5V 
hinaus gehen bzw. unter 0 Volt gehen. Das verträgt kein Mikrocontroller.

Hier sind 4 Freilaufdioden sinnvoller, entsprechend diesem Schaltbild:
http://talkingelectronics.com/projects/MOSFET/images/PushPullMotor.gif

Zwar befinden sich im Mikrocontroller bereits Dioden, die sind aber 
nicht ausreichend belastbar.

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.