DMX gesteuerter Schrittmotor

Guten Morgen!

Bin neu in der Arduino Umgebung und kenne mich noch nicht so gut aus, hab aber schon (in meinen Augen) großes vor. Ich würde gerne ein paar Kinetic Balls (mal bei Google suchen) basteln. Hab da an 10 Stück gedacht, zu Beginn soll’s aber erstmal einer werden der gut funktioniert.
Aus Kostengründen würde ich am liebsten ein Arduino Nano nehmen. Hinzu kommt ein Nema 17 Schrittmotor, sowie der Treiber Chip A4988. Soweit so gut, hab da auch schon diverse Anleitungen gefunden mit Code, aber die beziehen sich alle rein auf den Code, also man hat keine Möglichkeit die Position des Schrittmotors mittels potentiometer zu bestimmen. Hab aber auch Videos gefunden, wo das eindeutig funktioniert hat. Es geht also.

Ich möchte nun aber nicht ein Potentiometer nehmen, sondern ein DMX Shield und dieses dann mit einem DMX Lichtpult ansteuern. Also wenn ich den Fader auf 100% hoch ziehe, soll der Motor beispielsweise 100 Umdrehungen im Uhrzeigersinn machen. Wenn ich ihn dann auf 50 runter ziehe, soll er 50 Umdrehungen gegen den Uhrzeigersinn machen.

Also klappt mein Vorhaben? Ist das auch alles mit einem Arduino Nano händelbar? Ist ein DMX Shield mit einem Potentiometer vergleichbar?

Danke im Voraus!! :slight_smile:

Kann ich nicht sagen. Nema17 sagt gar nichts über die elektrischen Daten des Motors aus und darum kann ich keine Aussagen treffen ob der Motor mit dem A4988 gut funktioniert.

Der Rest müßte so programmierbar sein wie Du Dir das vorstellst.

Grüße Uwe

Danke für die schnelle Antwort,

Also der Motor funktioniert auf jedenfall. Hat er zumindest bei jemand anderem.

Passt das auch alles an ein Arduino Nano? Hab bedenken, dass er zu wenig Pins hat?

Muuuuuuuux:
Also der Motor funktioniert auf jedenfall. Hat er zumindest bei jemand anderem.

Das lasse ich mal so im Raum stehen.

Passt das auch alles an ein Arduino Nano? Hab bedenken, dass er zu wenig Pins hat?

Der Schrittmotortreiber braucht 2 Pins und der DMX 3.
Ein Endschalter wäre nett und braucht noch einen Pin. Bleiben noch 14 pins und 2 analoge Eingänge.

Grüße Uwe

Was meinst du mit „das lasse ich mal so im Raum stehen“?
Glaubst du nicht, dass der funktioniert? Oder schlechte Erfahrungen gemacht?

Natürlich geht das!
Grundsätzlich ... ja ...

Aber da wir keine Ahnung haben ob dein Motor zum Treiber passt, wirst du keine konkrete ,auf deine Hardware angepasste, Antwort erhalten.

Muuuuuuuux:
....Hab aber auch Videos gefunden, wo das eindeutig funktioniert hat. Es geht also.

Und warum fragst du nicht die Autoren des Video ?
Die können dann sicher mehr sagen, als wir, mit den spärlichen Informationen.

Also hier mal ein paar specs zum Motor:
Marke: OSM
Stromart: Gleichstrom
Anschlussbelegung: 4 Draht zweipolig
Nennstrom pro Phase: 2A
Nennspannung: 12-24VDC
Wiedersagend pro Phase: 1.4 ohm
Vollschrittwinkel: 1.8 Grad (200 Schritte)
Haltemoment: 59Ncm

@HotSystems:
Die 2 besagten Videos sind 4 Jahre alt, von Chinesen und in den Kommentaren haben einige schon fragen gestellt, worauf der Interpret nicht geantwortet hat.

Nennstrom pro Phase: 2A
Nennspannung: 12-24VDC
Wiedersagend pro Phase: 1.4 ohm

Das passt nicht zusammen.

2A * 1.4 Ohm = 2,8V
Die Nennspannung des Motors ist also 2,8V

Die meinen damit die Spannung für den Treiber.
Dann ist dein Treiber richtig, und du kannst da mit 24V drauf gehen.

Ich würde allerdings die DRV8825 wählen.
Etwas leistungsfähiger.
Vertragen eine höhere Spannung, so könntest du deinen 2,8V Motor Treiber mit 36V betreiben.
(evtl. Decay Hack anwenden)

Ah okay, aber cool, dann Probier ich das mal aus! Danke dir!
Und wie sieht das mit dem DMX Shield aus? Wird das behandelt wie ein normaler Potentiometer? Kann mir das irgendwie nicht schlüssig machen.

Vieleicht solltest Du dich etwas in DMX einlesen.
DMX überträgt pro Kanal 1 Byte. Du kannst auch 2 Kanäle bündeln und hast so 16 bit Auflösung.

Grüße Uwe

Ja also mit DMX generell kenne ich mich ja aus, komme aus der Lichttechnik. Aber wie die Programmierung dahinter aussieht weiß ich leider nicht. Möchte aber unbedingt dieses Projekt durchziehen :‘D

Muuuuuuuux:
Und wie sieht das mit dem DMX Shield aus? Wird das behandelt wie ein normaler Potentiometer? Kann mir das irgendwie nicht schlüssig machen.

Die DMX-Shields, die ich kenne, sorgen (nur) für eine "Übersetzung" in die richtigen elektrischen Spezifikationen.
DMX basiert ja auf RS-485, verwendet wird ein symmetrisches Übertragungsverfahren, die differenziellen Pegel liegen zwischen +/- 1,5 und +/- 5 Volt.
Um alles andere muss sich der Arduino kümmern bzw. der Sketch den du schreibst.

Als erste Inspiration könnte vielleicht folgendes dienen:

http://playground.arduino.cc//DMX/DMXShield
http://playground.arduino.cc/Learning/DMX

sourceforge.net: Arduino asDMX Slave

Cool, danke @ucomm! Schau ich mir mal an!

Hab gerade gesehen, dass mein Netzteil nur 19V hat. Geht das trotzdem?

Muuuuuuuux:
Hab gerade gesehen, dass mein Netzteil nur 19V hat. Geht das trotzdem?

Wenn es dir reicht...
Probiere es aus.

Muuuuuuuux:
Also wenn ich den Fader auf 100% hoch ziehe, soll der Motor beispielsweise 100 Umdrehungen im Uhrzeigersinn machen. Wenn ich ihn dann auf 50 runter ziehe, soll er 50 Umdrehungen gegen den Uhrzeigersinn machen.

Da musst imho noch am Ablauf arbeiten, denn wenn der Stepper die 100 Umdrehungen gemacht hat, und der Fader immer noch auf 100 ist, wird der Stepper wieder 100 Umdrehungen machen.
Und änderst den Fader während den 100 Steps wieder auf 0, kommst an den 50 vorbei.

Diese Art der Bedienung mit einem 0-100 Fader und einer einmaligen Umdrehung bei Änderung stell ich mir aufwendig vor.

Lass mal das ganze DMX Gedöns weg - und versuch das mal nur mit einem Poti und einem einfachen Stepper Sketch.

Jo hab’s jetzt mal erstmal ohne DMX gemacht und mit nem stinknormalen Potentiometer.
Nutze die AccelStepper Library und es funktioniert eigentlich ganz gut.
Einziges Problem ist, dass wenn ich den Poti von 0 auf 100 drehe gibt er Gas, bremst dann runter und gibt dann nochmal Gas, bis er zum stehen kommt und den Wert erreicht hat. Als würde er die ganze Strecke irgendwie in zwei Abschnitten durchlaufen.

Kann das sein, dass das am Potentiometer liegt?

Muuuuuuuux:
Jo hab’s jetzt mal erstmal ohne DMX gemacht und mit nem stinknormalen Potentiometer.
Nutze die AccelStepper Library und es funktioniert eigentlich ganz gut.
Einziges Problem ist, dass wenn ich den Poti von 0 auf 100 drehe gibt er Gas, bremst dann runter und gibt dann nochmal Gas, bis er zum stehen kommt und den Wert erreicht hat. Als würde er die ganze Strecke irgendwie in zwei Abschnitten durchlaufen.

Kann das sein, dass das am Potentiometer liegt?

alles kann sein.

Du erwartest Dir wirklich einen Antwort ohne uns den Sketch zu zeigen?

Grüße Uwe

Oh, pardon… Hatte ihn kopiert, aber anscheinend nicht eingefügt :stuck_out_tongue:

// AccelStepper Setup
AccelStepper stepper(1, 2, 3);  // 1 = Nicht belegt
                                  // Nano Pin 2 connected to STEP pin of Easy Driver
                                  // Nano Pin 3 connected to DIR pin of Easy Driver

// Variables to store current, previous and move position
int val = 0;
int previous = 0;
int long newval = 0;    

void setup() {
  stepper.setMaxSpeed(8000);  // Set speed fast enough to follow pot rotation
  stepper.setAcceleration(20000);  //  High Acceleration to follow pot rotation  
}

void loop() {
  val = analogRead(A4);  //  Read Potentiometer current value
  if ((val > previous+15) || (val < previous-15)) {  // Check that a move of the pot is at least > or < than 6
    newval = map(val, 0, 1023, 0, 1600);  // Map value (1600 = 1 stepper shaft rotation)
    stepper.runToNewPosition(newval);  // Move stepper to new position
    previous = val;  // save current value into variable previous
  }
}

Kann das sein, dass das am Potentiometer liegt?

Nein, das liegt an deiner Programmierung.
Du bekommst, was du in Auftrag gegeben hast.