Forum: Mikrocontroller und Digitale Elektronik Vref von Stepper Treiber Drv8834 mittels Arduino steuern


von Peter (jes834)


Lesenswert?

Hallo zusammen,

Ich habe bin relativ neu in der Elektronik und habe nun ein Problem bei 
dem ich leider nicht weiter komme.

Verwendete Hardware:
1. Stepper Motor Nema8 (denke ist egal welcher genau)
2. Pololu Low Voltage Treiber Drv 8834 
(https://www.pololu.com/product/2134)
3. Arduino Nano 33 Iot (Strom kommt vom USB Kabel, vom Laptop)
4. Netzteil 7,5V ; 2A (Motor power supply)

Grundsätzlicher Aufbau:
Grundsätzlich ist der Aufbau der Gleiche wie auf der Pololu Produktseite 
unter "Minimal Wiring diagram" nur ist M0 und M1 noch auf Masse.
Bis dahin funktioniert auch alles wie es soll.

Die Einstellung wie viel Strom der Stepper im Peak bekommt wird bei 
diesem Treiber über ein Poti eingestellt, durch welches eine 
Referenzspannung festgelegt wird (zwischen 0 und 2V).
https://www.pololu.com/file/0J616/drv8834-low-voltage-stepper-motor-driver-schematic-diagram.pdf
In dieser schematic ist das R1 (links unten, verbunden mit VrefO, AVref, 
BVref und Gnd)
Ich möchte diese Einstellung aber gerne Dynamisch über meinen Arduino 
Steuern können.
Dazu habe ich das Poti ausgelötete und und den Pin A2 (Das ist ein 
Analoger Ausgang 0-2V) des Nano mit dem Pad verbunden, welches mit AVref 
und Bvref verbunden war.
Jetzt kann ich über ein kleines Programm unterschiedlich viel Spannung 
auf die beiden A/Bvref Eingänge geben.

Das "funktioniert" auch so ein bisschen, allerdings halt nur ein 
bisschen...

1:
Stelle ich nun ungefähr 0,5V am Pin A2 ein messe ich an den Spulen des 
Motors 0,22 Ampere maximal. Zum vergleich wenn ich 0,5V über das Poti 
eingestellt hatte habe ich 0,33 Ampere gemessen. Diesen unterschied 
spürt man natürlich auch deutlich an der Kraft des Motors.

2:
Die Spannung die ich an Vref messe ist nicht Konstant. Genauer:

Arduino hat Strom(usb) und Motor power supply vom Netzt getrennt: Vref = 
0,5

Arduino hat Strom(usb) und Motor power supply angeschlossen: Vref = 1,2 
V

Arduino hat Strom(usb) und Motor dreht sich: Vref = 1,3 V


Die Spannung an Vref steigt also deutlich:

Ich muss zugeben das ich hier mit meinem Wissen leider nicht mehr weiter 
komme und wollte euch daher fragen ob mir jemand weiterhelfen kann.
Ich möchte auch anmerken das ich nicht nach einer Musterlösung suche 
sondern ich würde zunächst gerne Verstehen was hier überhaupt Falsch 
läuft, also was ist mein Denkfehler und dann natürlich wo ich mit der 
Lösung ansetzen kann.

Vielen dank schonmal,
Grüße Hannes

von Walter T. (nicolas)


Lesenswert?

Wie glättest Du denn die PWM?

von Wolfgang (Gast)


Lesenswert?

Johannes S. schrieb:
> Dazu habe ich das Poti ausgelötete und und den Pin A2 (Das ist ein
> Analoger Ausgang 0-2V) des Nano mit dem Pad verbunden, welches mit AVref
> und Bvref verbunden war.

Der ATmega328 auf einem Arduino Nano hat keinen Analogausgang. Der kann 
nur digitale Signale ausgeben.

Wenn du das PWM-Signal eines Arduino Nano zur Steuerung verwenden 
willst, brauchst du einen Tiefpass zwischen digitalem Ausgang des µC und 
Analogeingangen für AVREF bzw. BVREF.

von Peter (jes834)


Lesenswert?

erstmal vielen Dank für die wirklich schnelle Antwort :).

Ich glätte bisher das Signal nicht da ich davon ausgegangen bin, dass es 
ein echter Analoger Output ist.

Steht zumindest auf dieser Seite:
https://www.arduino.cc/reference/de/language/functions/analog-io/analogwrite/

Ich verwende einen Nano 33 Iot, der sollte, wenn ich die stern Semantik 
hier richtig verstehe, schon einen echten Analogen Ausgang haben oder 
verstehe ich das hier falsch ?

Trotzdem werde ich mich mal genauer mit dem Tiefpass befassen. Danke :)

von Wolfgang (Gast)


Lesenswert?

Johannes S. schrieb:
> Ich verwende einen Nano 33 Iot, der sollte, wenn ich die stern Semantik
> hier richtig verstehe, schon einen echten Analogen Ausgang haben oder
> verstehe ich das hier falsch ?

Tust du.

Da steht: "Nach Aufruf von analogWrite() generiert die Funktion eine 
stetige Rechteckwelle ...".
Eine Rechteckwelle ist keine Gleichspannung sondern ein digitales 
Signal.

von Timmo H. (masterfx)


Lesenswert?

Wolfgang schrieb:
> Eine Rechteckwelle ist keine Gleichspannung sondern ein digitales
> Signal.
Meist mit ~1 kHz. Glätten mit RC schadet sicherlich nicht

von Peter (jes834)


Lesenswert?

Hallo zusammen,

Also ich habe es heute leider nicht geschafft einen Passenden 
Kondensator für den Einbau eines Tiefpass Filters zu besorgen.

Allerdings hat der Arduino Nano 33 IOT doch einen richtigen Analogen 
Ausgang und zwar den Pin A0.
https://content.arduino.cc/assets/NANO33IoTV2.0_sch.pdf
Der Arduino Nano 33 Iot hat nämlich keine ATmega, wie der normale Nano, 
sondern einen SAMD21 Chip verbaut.
Verwende ich den Pin A0 funktioniert alles soweit.

Jetzt hätte ich zwar gerne noch den Tiefpass probiert und hier das 
Ergebnis geteilt, aber die Läden haben hier momentan leider noch zu.
Ich denke aber das ihr recht habt und die Regelung des Vref Pins, unter 
Verwendung eines Tiefpassfilters, auch mit Pin A2 möglich sein sollte.

Jedenfalls vielen Dank für eure Hilfe! und allen viel glück bei euren 
Projekten. :)

von Wolfgang (Gast)


Lesenswert?

Timmo H. schrieb:
> Wolfgang schrieb:
>> Eine Rechteckwelle ist keine Gleichspannung sondern ein digitales
>> Signal.
> Meist mit ~1 kHz. Glätten mit RC schadet sicherlich nicht

Was heit "meist"?
Bei einem standardmäßigen Arduino Nano 33 Iot werden es wohl 732 Hz 
sein.

von Wolfgang (Gast)


Lesenswert?

Johannes S. schrieb:
> Der Arduino Nano 33 Iot hat nämlich keine ATmega, wie der normale Nano,
> sondern einen SAMD21 Chip verbaut.
> Verwende ich den Pin A0 funktioniert alles soweit.

Wer ahnt, dass ein Arduino Nano 33 Iot auf einem ganz anderen Prozessor 
als der Arduino Nano basiert.
Bei Nutzung eines echten 10-Bit DAC kannst du dir den Kondensator 
natürlich sparen. Je nach Aufbau der Ausgangsstufe kann der dann sogar 
schädlich sein.
Nur um eine Referenzspannung für einen Schrittmotor zu erzeugen, ist der 
ADC viel zu schade. Da tut es einer der PWM-Ausgänge mit Tiefpass. Falls 
der DAC im SAMD21G18A sonst allerdings nicht genutzt wird, ist das egal.

von Jonas B. (jibi)


Lesenswert?

>Nur um eine Referenzspannung für einen Schrittmotor zu erzeugen, ist der
>ADC viel zu schade.

DAC, Wolfgang hat leichte Probleme ADC und DAC auseinander zu halten.

von Sebastian W. (wangnick)


Lesenswert?

Jonas B. schrieb:
> Probleme ADC und DAC auseinander zu halten

Das ist ja fast wie CUT und TUC ...

LG, Sebastian

von Wolfgang (Gast)


Lesenswert?

Jonas B. schrieb:
> DAC, Wolfgang hat leichte Probleme ADC und DAC auseinander zu halten.

Sorry, ich gelobe Besserung.
Zum Glück ist es nur ein Problem mit der "Ausgabe" und kein 
grundlegendes Verständnissproblem. ;-)

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.