-         

Ergebnis 1 bis 7 von 7

Thema: 3 Schrittmotoren mittels Atmega8 ansteuern

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    08.08.2004
    Ort
    Offenburg
    Alter
    35
    Beiträge
    13

    3 Schrittmotoren mittels Atmega8 ansteuern

    Anzeige

    Hi zusammen!

    Ich möchte für meinen Roboter ERNIE das Auge bauen und benutze hierfür die 18xZoom Optik eines alten Camcorders.

    Auf dieser Optik befinden sich 3 Schrittmotoren. Ich denke sie sind bipolar, da sie jeweils 4 Anschlüsse haben.

    Ich möchte die Motoren zunächst zum Testen mit meiner myAVR Platine bestückt mit einem Atmega8 betreiben.

    Die Schrittmotoren sind recht klein und müssten eine Betriebsspannung von 5V haben.

    Reicht hierfür die folgende Schaltung aus (pro Motor einmal)



    oder muss ich diese Variante verwenden:




    Ich freue mich auf eure Antworten!
    Danke und Gruß
    Houdini

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.06.2005
    Alter
    28
    Beiträge
    364
    Die erste Schaltung mit dem L293 ist wesentlich kleiner als die L297-L298-Kombination, und ist auch für kleinere Motoren ausgelegt (I max).
    Doch der wesentliche Unterschied ist die Ansteuerung! Die erste Schaltung benötigt eine Software-Schwittmotorsteuerung, während die zweite Schaltung lediglich noch einen Takt für einen Schritt und einen Pegel für die Richtung.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    08.08.2004
    Ort
    Offenburg
    Alter
    35
    Beiträge
    13
    Hi!

    Danke womb@t!

    Ich habe mal einen passenden Schaltplan erstellt. Passt das so?!



    Danke und Gruß
    Houdini

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Beiträge
    1.607
    Schaut richtig aus - wenn ich nur Splan 1 mit dem Vergleiche

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    08.08.2004
    Ort
    Offenburg
    Alter
    35
    Beiträge
    13
    Hi!

    Ich habe die oben gezeigte Schaltung nun aufgebaut und getestet:

    Das Ergebnis seht ihr hier.



    Derzeit habe ich den Atmega8 wie folgt programmiert:

    Code:
    $crystal = 3686411
    $regfile = "m8def.dat"
    Config Portc = Output
    Config Portd = Input
    Portd = &H0C
    
    Dim Tmp As Byte
    Dim Tmp2 As Byte
    Tmp = 1
    Tmp2 = 1
    Do
     If Pind.2 = 0 Then
          Portc.0 = 1
          Portc.1 = 0
          Portc.2 = 1
          Portc.3 = 0
          Waitms 5
          Portc.0 = 1
          Portc.1 = 0
          Portc.2 = 0
          Portc.3 = 1
          Waitms 5
          Portc.0 = 0
          Portc.1 = 1
          Portc.2 = 0
          Portc.3 = 1
          Waitms 5
          Portc.0 = 0
          Portc.1 = 1
          Portc.2 = 1
          Portc.3 = 0
          Waitms 5
     Elseif Pind.3 = 0 Then
          Portc.0 = 0
          Portc.1 = 1
          Portc.2 = 1
          Portc.3 = 0
          Waitms 5
          Portc.0 = 0
          Portc.1 = 1
          Portc.2 = 0
          Portc.3 = 1
          Waitms 5
          Portc.0 = 1
          Portc.1 = 0
          Portc.2 = 0
          Portc.3 = 1
          Waitms 5
          Portc.0 = 1
          Portc.1 = 0
          Portc.2 = 1
          Portc.3 = 0
          Waitms 5
     Else
    ' keine Taste ist gedrückt LED zurücksetzten
      Tmp = 1
      Tmp2 = 1
      Portc = 0
     End If
    Loop
    End

    Lässt sich dies noch schöner/kürzer machen?

    Wie kann ich die Geschwindigkeit, die derzeit per "Waitms 5" geregelt ist anhand eines Potis regeln?

    Danke und Gruß
    Houdini

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    47
    Beiträge
    2.556
    Wie kann ich die Geschwindigkeit, die derzeit per "Waitms 5" geregelt ist anhand eines Potis regeln?
    ...einfach eine Variable als veränderbaren Zeitwert einsetzen und sich diesen Wert durch einlesen eines Analogportes / Poti / Umrechnung generieren.
    Danke an Alle, die uns bei der erfolgreichen 1.000€-Aktion der IngDiba unterstützt haben! | https://www.hackerspace-bremen.de | http://www.pixelklecks.de |

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.08.2006
    Ort
    Budapest
    Alter
    30
    Beiträge
    563
    Ich würde noch als Optimierung die 4bits vom PORTD auf den verbleibenden jeweils 2Bits bei PORTB u. PORTC umsetzen. Man muss zwar ein bisschen mit den Bits jonglieren, wäre aber machbar, und dann hattest noch einen ganzen Port frei.
    Wenn natürlich andere Überlegungen für diese Verteilung sprechen (wie zB Spezialfunktionen der Pins), dann hab ich nichts gesagt :-D

    Statt waitms könnte man einen Timer benutzen, und 3 Wartevariablen für die 3 Motoren, und aus dem Takt, was der eine Timer erstellt (interruptbasiert), die Wartezeiten ausrechnen. Damit wäre dann noch für andere Dinge Rechenzeit übrig.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •