Arduino Mega 2560 mit Adafruit Motor Shield

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Arduino Mega 2560 mit Adafruit Motor Shield

      Hallo,
      habe mir von MH-Electronics ein Motorshield gekauft.
      Hat jemand damit Erfahrung gesammelt?
      Wenn ja interessiert mich die Beschaltung der Pins.
      Konkrete Fragen dazu:
      - Welche Pins benötige ich für 2 DC-Motoren?
      - ev. kurzes Testprogramm (Bascom) wäre für den Start hilfreich

      Vielen Dank für Hilfe im Voraus !

      Christoph
      Files
      • IMG_0702.JPG

        (340.01 kB, downloaded 13 times, last: )
    • Hab das Teil wieder zurückgegeben. Die Programmierung ist aus meiner Sicht mit Bascom zu aufwendig und kompliziert.
      Besser und einfacher dagegen ist das ARDUINO Motor Shield R3 von Pollin (Art.Nr. 94-810225).

      Technische Daten:
      • Betriebsspannung 5...12 V
      • Motor-Treiber L298P (steuert zwei DC-Motoren oder einen Schrittmotor)
      • max. Strom 2 A pro Kanal oder 4 A Gesamtstrom (!)
      • Messkanal 1.65 V/A
      • Freilauf-, Stopp- und Brems-Funktionen
      Trotzdem noch einmal Danke für die schnellen Antworten!

      MfG
    • Christoph wrote:

      Hab das Teil wieder zurückgegeben. Die Programmierung ist aus meiner Sicht mit Bascom zu aufwendig und kompliziert.
      Das ist schade, liegt aber mitnichten an Bascom.
      Was hat sich seit deinem letzten Post geändert?
      Dort hast du doch geschrieben:

      Christoph wrote:

      Mit der Bascomprogrammierung komme ich schon zurecht.
      und die Motoren laufen doch schon?
    • Ja, die Motoren liefen. Hab den Code nicht aufgeschrieben und das Motor Shield wieder eingepackt. Sorry....
      Die Hersteller von Motor-Shields stellen Bibliotheken zur Verfügung, um die angeschlossenen Motoren anzusprechen.
      Auch hier wird die Adafruit Library genutzt. Diese kann ich aber nicht so ohne Weiteres auf Bascom adaptieren.
      Habe hier aber etwas gefunden, dass weiterhelfen könnte: playground.arduino.cc/Main/AdafruitMotorShield

      Ich werde mich nun mehr um diesen Shield kümmern: Arduino Motor Shield R3 mit L298
      Ich denke, das Teil ist einfacher zu programmieren.

      Sobald hier alles ok ist poste ich den Code. Versprochen !
    • Hallo zusammen,

      ich muss das alte Thema nochmal aufgreifen. Ich bin auch gerade dabei, mit einem Adruino Uno und dem Adafruit Motor Shield mittels Bascom zu arbeiten. Leider klappt das bei mir überhaupt nicht. Ich muss gestehen, dass ich auch noch nicht genau verstanden habe, wie das Shild angesteuert wird. Normale PWM Motoransteuerungen über H Brücken habe ich schon gemacht. Das ist alles kein Problem. Bei diesem shield ist es ja wohl so, das zu den normalen PWM Befehlen auch noch das Schieberegister richtig ansteuert werden muss. Ich stehe da echt auf dem Schlauch. :( Kann mir jemand einen Tipp geben ? Hat vielleicht schon mal jemand erfolgreich damit gearbeitet ?

      Bin für jeden Tipp dankbar !
    • Ich würde mit einem Blick ins Datenblatt vom L293 beginnen. Da findet man solche Bilder
      images.app.goo.gl/8TDcBFuhDAY3xgso6
      Auf der Grundlage kann man die notwendigen Pegel an den Eingängen festlegen, die man für seinen Motorbetrieb braucht. Diese Pegel müssen durch das Schieberegister geliefert werden. Wie man das macht, wurde hier schon mal beschrieben.
      Was willst du jetzt konkret machen? Stepper dran, oder normale dc-Motoren?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Vielen Dank ! :)

      Im Endeffekt möcht ich mittels Arduino einen PWM Regler für 2 Motoren bauen. Ein ADC wird abgefragt. Dort hängt ein Poti. Dieser wandelt den Wert in eine PWM um und ein Motor wird angesteuert. Das ganze eben 2 x. Das Impolen des Motor kann ich auch erstmal einfach via Kippschalter machen. Ich möchte also einfach einen DC Motor ansteuern.
    • Dann brauchst du ja erstmal nur einen L293. Abhängig wie du deine Motoren anschließt (zwischen +Motorversorgung und L293, oder zwischen L293 und gnd) benötigst du entsprechende Pegel an den Eingängen des L293. Bei der letztgenannten Variante brauchst du am entsprechenden Eingang einen high-Pegel, es soll ja Strom aus dem L293 heraus durch den Motor zu gnd fließen. Diese Pegel musst du durch shiftout in den 74xx595 rein schieben. Ist das gemacht, brauchst du nur noch die pwm erzeugen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Naja, 2 Motore und jeweils unabhängige Geschwindigkeit durch verschiedene pwm. Da könntest du Ic1 verwenden und die Motore an 1Y bzw 4Y jeweils gegen gnd anschließen. Für die pwm verwendest du dann timer2 (wenn die Bezeichnungen auch zu den richtigen pins führen). Den 74xx595 musst du so zuschiften, dass an den pins 1A bzw 4A ein high-Pegel anliegt, das heißt die Ausgänge M1A und M2A müssen high sein.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Ich habe das Problem, dass ich nicht verstehe, wie dieses Shift Register funktioniert. Wie bekomme ich es hin, dass an den pins 1A und 4A ein High Pegel anliegt. Zum Schalten des Register sind wohl 4 Eingänge nötig, um das Ganze richtig zu schalten - siehe hier ( PDF ) ti.com/lit/ds/symlink/sn74hc165.pdf . Am Arduino sind das wohl die Pins 4 ( DIR_CLK) , 7 (DIR_EN), 8 ( DIR_SER ) und 12 (DIR_LATCH)
    • Ich kann ja mal ein Beispiel probieren. Sag' mer mal, ich will einen DC-Motor in der Richtung umschaltbar haben und drehzahlgeregelt. Ich müsste den dann so anschließen, wie im folgenden Bildchen auf der linken Seite
      L293.gif
      Damit er sich überhaupt dreht, müssen die beiden Endstufen '1' und '2' aktiviert, enabled, werden, also am Pin1 muß high anliegen. Wenn ich hier eine PWM anlege, werden die Endstufen eben nur zeitweise aktiv, das heißt beim Motor, er dreht langsamer. Damit macht man die Drehzahleinstellung.
      Damit er sich in eine Richtung dreht, muß der Strom aus '1' heraus, durch den Motor durch und durch '2' an gnd geführt werden. Also Pin2 =1, Pin7=0.
      Für die andere Drehrichtung Pin2=0 und Pin7=1.
      Jetzt ein Blick auf das Schaltbild vom shield
      mshieldv12schem.png
      Pin1 vom IC1 geht an pwm2b, das ist ein PWM-Ausgang von timer2 und zwar Kanal2, prima.
      Pin2 ist mit M1A bezeichnet und führt zum 595er an dessen Pin QC.
      Pin7 ist mit M1B bezeichnet und führt zu Pin QD.
      Also, für die Richtung 'Hüh' muss QC=1 und QD=0 sein, für Richtung 'Hot' QC=0, QD=1 (Statt Hüh und Hot kann man auch vor, zurück, oder hin und her oder...sagen, das sind also keine kryptischen Abkürzungen)
      Ok, jetzt muss ich den 74xx595 so laden, dass diese gewünschen Pegel an den Ausgängen anliegen. Dazu gibt es den Befehl shiftout
      shiftout.PNG
      ich schreibe den Befehl mal mit den pin-Namen vom 595er, dann schaut es so aus
      shiftout DIR_SER, DIR_CLK, var, 3
      Die 3 deshalb, weil ich das bit7 der Variablen var am Ausgang QA haben will und var.0 am Ausgang QH. Schon bin ich bei der Variablen var, die bits dieser Variablen legen also die Pegel der Endstufen fest.
      Für die Richtung 'Hüh' muss var.5=1 und var.4=0 sein, für Richtung 'Hot' var.5=0 und var.4=1 sein.
      Ha, da gibt es noch den pin DIR_EN am 595er, der ist praktisch der Hauptschalter für den 595er, der muss mit einem output-pin auf =0 gezogen werden.

      Das bedeutet, es müssen die pins, die für DIR_SER, DIR_CLK, DIR_EN und DIR_LATCH als output eingestellt werden, dann braucht es noch eine Variable zb. dim steuerbyte as byte
      dann wäre der code für die Richtung Hüh

      BASCOM Source Code

      1. steuerbyte.5=1
      2. steuerbyte.4=0
      3. DIR_EN=0
      4. shiftout DIR_SER, DIR_CLK, steuerbyte, 3
      5. DIR_LATCH=1
      6. DIR_LATCH=0
      Mit der Flanke, die mit DIR_LATCH=1/0 erzeugt wird, werden die Ausgänge des 595er aktualisiert und jetzt sollte QC=1 und QD=0 sein. Wird jetzt mit PWM2b eine PWM angelegt oder dieser pin=1 gesetzt, dann sollte sich auch der Motor in Richtung Hüh drehen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      The post was edited 2 times, last by tschoeatsch ().