Hallo liebe Forenmitglieder, mein Name ist Marcel und ich besuche zurzeit das berufliche Gymnasium. Vor einer Woche hat mein Techniklehrer Präsentationen verteilt, mit den Themen Motoren und Sensoren, die wir bis Donnerstag (01.11.2018) fertig haben sollen. Mir wurde das Thema Schrittmotor zugeteilt. Soweit so gut. In den Präsentationen sollen wir unseren Mitschülern den Schrittmotor näher bringen, ihnen zeigen wo, wofür man ihn braucht und den Aufbau erklären. Alles nicht so schlimm. Dann sagte der Lehrer, dass wir außerdem noch zeigen sollen, wie man einen Schrittmotor an einen Microcontroller anschließt und ein Programm in Assembler schreiben sollen, mit dem man den Schrittmotor antreibt. Da fängt das Übel auch schon an. Ich kann Assembler nicht mal ansatzweise. Wir hatten Assembler innerhalb von drer/vier Stunden durchgenommen und da mir Programmieren wirklich schwer fällt, habe ich nichts mitgenommen. Übers Wochende habe ich mich dann mal hingesetzt und habe gegoogelt, gegoogelt und nochmals gegoogelt aber habe kein Programmcode zum Antrieb gefunden. Ich habe mir dann etliche Videos auf YouTube angeschaut, Foren durchgelesen bin aber kein Stück weiter gekommen. Momentan bin ich dabei das Lehrbuch myAVR Lehrbuch Mikrocontroller-Programmierung von Dipl. Ing. Toralf Riedel und Dipl. Ing. Päd. Alexander Huwaldt zu lesen. Habe also nochmal komplett von vorne angefangen. Mittlerweile habe ich das Gefühl, dass ich es zeitlich auf keinen Fall mehr hinbekommen werde, da Technik leider nicht das einzige Fach in der Schule ist, für das man was machen muss. Meine Frage an euch ist also: Hat jemand von euch ein in Assembler geschriebenes Programm, dass einen Schrittmotor antreibt?? (Daten: -Mikrocontroller ist der ATmega8 -Programmiersprache: Assembler -Schrittmotor: S-SPSM-5V -> Technische Daten:(Treiber-Board): Betriebsspannung: 5V / IC: ULN2003A / Status-LED´s: 4 / 7 Steuereingänge (IN1-IN-7) / 7 Steuerausgänge (A-G) -> Technische Daten: (Motor 28BYJ-48): Betriebsspannung: 5V / Phasen: 4 / Schrittwinkel: 5,625 Grad / Gleichstromwiderstand: 50 Ohm / Drehmoment: >34,3 mNm Ich weiß dass das ziemlich viel verlangt ist und bestimmt auch für euch dreist klingt, aber es ist (leider) die Wahrheit und ich wäre sehr dankbar und glücklich, wenn mir jemand helfen könnte. MfG, Marcel.
Marcel Klein schrieb: > und ich wäre sehr > dankbar und glücklich, wenn mir jemand helfen könnte. hilft dir das wirklich wenn es einer für dich löst? (und wenn ja, wobei hilft es?) Marcel Klein schrieb: > Übers Wochende habe ich mich dann mal hingesetzt und habe gegoogelt, > gegoogelt und nochmals gegoogelt aber habe kein Programmcode zum Antrieb > gefunden unglaubwürdig, aber nun gut manchmal findet man wirklich was nicht, vielleicht kommt ja jemand mit der Lösung, ich befürchte nur es wird dir nicht helfen. Schrittmotor https://de.wikipedia.org/wiki/Schrittmotor ab und an auf Ports Spannung legen warten Spannung wegnehmen warten, sollte machbar sein
:
Bearbeitet durch User
Marcel Klein schrieb: > Vor einer Woche hat mein Techniklehrer Präsentationen verteilt, mit den > Themen Motoren und Sensoren, die wir bis Donnerstag (01.11.2018) fertig > haben sollen. Das wird spannend. > Meine Frage an euch ist also: > Hat jemand von euch ein in Assembler geschriebenes Programm, dass einen > Schrittmotor antreibt?? Wie ist denn der Schrittmotor angeschlossen? Und was hast du die letzte Woche schon hinbekommen? Wie würdest du denn den Schrittmotor in deiner Schaltung ansteuern? Kannst du die dafür nötigen Abläufe aufzeigen (das brauchst du sowieso für deine Präsentation, sonst fliegst du da SOFORT auf die Nase)? Dann kann man mal über das Programmieren nachdenken. > Übers Wochende habe ich mich dann mal hingesetzt und habe gegoogelt, > gegoogelt und nochmals gegoogelt aber habe kein Programmcode zum Antrieb > gefunden. Hast du schon mal die blinkende LED programmiert? Darin ist alles enthalten, was man für einen Schrittmotor auch braucht. Und dazu noch ein wenig BRAIN 1.0 um das zu erkennen.
:
Bearbeitet durch Moderator
In ein paar Tagen ist das nicht ohne fuer einen Anfaenger. Zumindest die Elektronik scheint ja vorhanden zu sein. Mach eine ganz einfache Ansteuerung, durchlaufe die vier Ausgabemuster und rufe dazwischen Warteschleifen auf. Der Motor dreht dann mit konstanter Geschwindigkeit in eine Richtung. Eine Warteschleife findest du hier im Assembler-Tutorial. Die Muster sehen in der Art aus: H L H L L H H L L H L H H L L H Das Programm ist dann soetwas in der Art: loop: call delay; //Warte ldi r20, 0b00001010; //Speicher Muster in Register out PortA, r20; //Setzte Ausgang PortA entsprechen Register call delay; ldi r20, 0b00000110; out PortA, r20; call delay; ldi r20, 0b00000101; out PortA, r20; call delay; ldi r20, 0b00001001; out PortA, r20; rjmp loop; Ports und Bits musst du natuerlich anpassen, Port auch noch initialisieren, also das Register DDRA setzen.
Marcel Klein schrieb: > (Daten: -Mikrocontroller ist der ATmega8 > -Programmiersprache: Assembler > -Schrittmotor: S-SPSM-5V > > -> Technische Daten:(Treiber-Board): Betriebsspannung: 5V / IC: ULN2003A > / Status-LED´s: 4 / 7 Steuereingänge (IN1-IN-7) / 7 Steuerausgänge (A-G) > > -> Technische Daten: (Motor 28BYJ-48): Betriebsspannung: 5V / Phasen: 4 > / Schrittwinkel: 5,625 Grad / Gleichstromwiderstand: 50 Ohm / > Drehmoment: >34,3 mNm Das ist genau die Hardware die Kuman so liefert: https://www.amazon.de/dp/B01IP7IOGQ/ Bei den größeren Kuman Sets ist da auch ein Arduino Dabei mit einem Atmega 328. Und da war auch immer eine CD mit drin mit Beispielcode, auch für den Schrittmotor. Guck mal auf die Kuman Seite, der Code ist zwar in C geschrieben. Aber der GCC kann auch Assembler Source ausgeben, soviel ich weiß.
Hier ist der Code in C. https://42bots.com/tutorials/28byj-48-stepper-motor-with-uln2003-driver-and-arduino-uno/ Entweder implementierst du es sinngemäß in Assembler. Oder du nimmst dir den GCC zur Hilfe und nimmst den Output Assemblercode.
Joachim B. schrieb: > hilft dir das wirklich wenn es einer für dich löst? (und wenn ja, wobei > hilft es?) Helfen würde es mir in der Hinsicht, dass ich was hätte, was funktioniert und ich meinen Mitschülern zeigen kann. Helfen in der Sicht es zu lernen nicht, das gebe ich zu. Lothar M. schrieb: > Wie ist denn der Schrittmotor angeschlossen? > Und was hast du die letzte Woche schon hinbekommen? Wie würdest du > denn den Schrittmotor in deiner Schaltung ansteuern? Kannst du die dafür > nötigen Abläufe aufzeigen (das brauchst du sowieso für deine > Präsentation, sonst fliegst du da SOFORT auf die Nase)? Dann kann man > mal über das Programmieren nachdenken. Hinbekommen habe ich nichts. Ich bin wirklich eine Null in Assembler. Ich muss, wie ich gerade dabei bin, komplett von vorne anfangen. Angeschlossen wird der Schrittmotor an das myAVR Board MK1 LPT Version 1.6 Lothar M. schrieb: > Hast du schon mal die blinkende LED programmiert? Darin ist alles > enthalten, was man für einen Schrittmotor auch braucht. Und dazu noch > ein wenig BRAIN 1.0 um das zu erkennen. Wir hatten das mal in der Schule mit dem Lehrer gemacht und das Programm habe ich auch noch, aber mir fehlt das BRAIN 1.0
Schonmal vielen Dank für die zahlreichen Antworten und die Hilfe.
Hier findest du einen handlich kleinen Assembler Kurs für AVR: http://stefanfrings.de/avr_workshop/index.html Das erklärt aber noch nicht die Ansteuerung eines Schrittmotors. Ich finde diese Aufgabe ziemlich gemein, denn das sind zwei Baustellen gleichzeitig.
Stefanus F. schrieb: > Das erklärt aber noch nicht die Ansteuerung eines Schrittmotors. Die kann man sich z.B. bei Nanotec angucken. Unter "Schrittmotor" den Typ wählen und los gehts https://de.nanotec.com/support/knowledge-base-pages/schrittmotor-animation/
Stefanus F. schrieb: > Ich > finde diese Aufgabe ziemlich gemein, denn das sind zwei Baustellen > gleichzeitig. na ja, eigentlich nicht schwer, ich skizzierte es ja hier: Joachim B. schrieb: > Schrittmotor > https://de.wikipedia.org/wiki/Schrittmotor > ab und an auf Ports Spannung legen warten Spannung wegnehmen warten, > sollte machbar sein und ein anderer schrieb ja ausführlicher: Mach schrieb: > loop: > call delay; //Warte > > ldi r20, 0b00001010; //Speicher Muster in Register > out PortA, r20; //Setzte Ausgang PortA entsprechen Register > > call delay; > > ldi r20, 0b00000110; > out PortA, r20; > > call delay; > > ldi r20, 0b00000101; > out PortA, r20; > > call delay; > > ldi r20, 0b00001001; > out PortA, r20; > > rjmp loop; > > Ports und Bits musst du natuerlich anpassen, Port auch noch > initialisieren, also das Register DDRA setzen. was genau dasselbe ist, ab da ist es doch nicht so schwer.
...und wenn er wiklich bis Do. fertig sein muß, ist dann der Vortrag am Freitag? Fände ich auch noch gemein... Gruß Rainer
Marcel Klein schrieb: > Übers Wochende habe ich mich dann mal hingesetzt und habe gegoogelt, > gegoogelt und nochmals gegoogelt aber habe kein Programmcode zum Antrieb > gefunden. Ich habe mir dann etliche Videos auf YouTube angeschaut, Foren > durchgelesen bin aber kein Stück weiter gekommen. Dann scheinst du nicht lernfähig und Abitur-Untauglich zu sein. Das ist ja auch der Nebeneffekt des Bildungssystems, nämlich die Spreu vom Samen zu trennen und wir sollen das hier nun korrigieren. Da musst du schon deinen Lehrer bemühen. Auf die Schnelle wird das kaum was werden, denn man muss sich mit Elektronik, Datentechnik, Motortechnik, Prozessorarchitektur und Assemblertechnik beschäftigen. Man kann schon einiges googlen, aber das kostet natürlich sehr viel Zeit. Ich würde gern mal wissen, was deinen Lehrer da geritten hat.
http://www.avr-asm-tutorial.net/avr_de/stepper/stepper.html hier ist ein Schrittmotortreiber in asm mit ULN2003 für einen Attiny13,
Fred F. schrieb: > http://www.avr-asm-tutorial.net/avr_de/stepper/stepper.html > hier ist ein Schrittmotortreiber in asm mit ULN2003 für einen Attiny13, Stefanus F. schrieb: > Hier findest du einen handlich kleinen Assembler Kurs für AVR: > http://stefanfrings.de/avr_workshop/index.html Ich denke, dass du mit diesen beiden Anleitungen zusammen genau das Richtige vorliegen hast. Falls du noch kein Assembler kannst, arbeite erstmal mein Tutorial durch. Das schöne dabei ist, dass du es prinzipiell mit jedem beliebigen AVR Mikrocontroller machen kannst und nur minimal Bauteile brauchst. Ein paar LED's und Taster lötet man notfalls aus einem Schrott-Gerät oder einer Lichterkette aus und als Lautsprecher tut's zur Not ein alter Kopfhörer. Nur bei den Register-Zugriffen must du aufpassen. Die Register und die Bits in den Registern sind nicht bei allen AVR Modellen sehr ähnlich. Wenn du ins Datenblatt schaust (und das solltest du unbedingt), wirst du die Unterschiede sofort sehen und die Beispielcodes entsprechend anpassen können. Von nun an kannst du gerne konkrete Fragen zu einzelnen Text-Passagen oder Codes stellen. Diese beiden Anleitungen zu einem Programm zu kombinieren, das musst du aber selbst machen. Ohne Erfahrung in der Programmierung dieser Mikrocontroller schätze ich einen Aufwand von 4 Wochen (Abends und an Wochenenden).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.