Hallo Helmut,
danke für die Info. Das ist ja erschreckend.
Man könnte die 2-Kanal-PWM einfach durch direktes Bit-Knipsen erzeugen. So lange es über 20kHz liegt, darfs dann ja auch mit weniger Bit sein.
Viele Grüße
Wolfgang
Geändert von Rumgucker (18.11.2019 um 20:00 Uhr)
Hallo,
ich stell mir das kleine high-speed-Schleifchen zum Beispiel so vor:
Man müsste nachrechnen, ob die Schleife in 50 us durchgelaufen ist. Ggfls. den vom Compiler verzapften Assembler-Code von Hand optimieren. Oder sich eben mit 128 oder gar nur 64 Durchläufen begnügen und sich statt "20 kHz" PWM-Frequenz auch mit "15 kHz" (~ 65 us) anfreunden.Code:wrk_a = pwm_a + 1; wrk_b = pwm_b + 1; zyklen = 0; gpio |= _BV(OUT_A) | _BV(OUT_B); do { if(!--wrk_a) gpio.OUT_A = FALSE; /* high->low wechsel */ if(!--wrk_b) gpio.OUT_B = FALSE; } while(--zyklen);
pwm_a und pwm_b kommen aus einer dda-schleife mit sinus/cosinus-lookup. Dazu finde ich bestimmt auch noch Software-Schnipsel. Man kann die Schleife aus einer ISR heraus mit neuen pmw_a/pwm_b-Werten füttern.
Wers lautlos will, muss halt gefühlvoller kommutieren.
DC-Motoren sind keine Alternative. Denn auch bei denen wird Spulenstromfluss schlagartig umgeschaltet, was zu allerlei Motor-Tönchen führt.
Für lautlosen Betrieb geeignet wären mit 50Hz betriebene Wechselspannungsmotoren. Bei denen kann aber die Drehrichtungsumkehr problematisch sein. Und im Anfahrmoment tönen die auch.
Und natürlich können die internen Windungen und Bleche mit 100Hz schwingen. Aber das ist immer so. Wenn die Drähte schwabbeln, wird jeder Motor Geräusche machen.
Der leiseste Motor ist in meinen Augen ein mit Sinus/Cosinus betriebener Schrittmotor.
Viele Grüße
Wolfgang
Geändert von Rumgucker (19.11.2019 um 05:37 Uhr)
Wäre es nicht einfacher, ein Drivermodul einzusetzen, das Microstepping unterstützt?
A4988 oder DRV8825 zum Beispiel oder wenns noch höherer Auflösung bedarf ein TMC21XX/22XX oder ähnliches. Das sollte die Geräuschentwicklung ohne großen Aufwand schon mal deutlich senken.
Geändert von Gnom67 (19.11.2019 um 05:37 Uhr)
Hallo Gnom67,
ja. Natürlich ist es einfacher, fix-fertige China-Platinen zu kaufen. Aber macht das auch glücklich?
Wenns unbedingt hardware sein soll, dann könnte man sich auch mit einem Quad-OPV einen Quadratur-Oszillator basteln und dessen sin/cos-Ausgänge mit den übrigen zwei OPV zur HF-PWM wandeln. Also ne kleine kost-fast-gar-nichts-Lochrasterplatine zwischen Arduino und ULN2003.
Aber Software finde ich eleganter. Die kostet nur Gehirnschmalz. Zumal der Arduino doch eh nur 99,9% der Zeit rumpennt, wenn ich highmans Projekt richtig verstanden hab. Warum nicht mal einen Arduino bis an die Grenzen ausnutzen?
Wer rastet, der rostet. Wer von seinen Chips nicht dauernd das Siliziumoxyd abkratzen will, der muss den Dingerchen auch schon mal was abfordern. Dafür wurden sie ja gebaut.
Software-defined highspeed-PWM mit dda und lookup-Tabellen. Äußerlich eine harmlose Deko, die alle zwei Minuten die Drehrichtung einer Spindel umstellt. Aber innerlich ein Feuerwerk aus highend-Stuff.
Das ist die Lizenz zum Stolzsein....
Viele Grüße
Wolgang
Vielleicht sollte highman erst einmal sagen, wie er den Stepper ansteuert.
Und allgemein zu Steppern. Sie werden über den Strom gesteuert, nicht über die Spannung. Und wer meint, das ist ja doch quasi das Gleiche, vergisst einmal das induktive Verhalten der Spulen und die Gegen-EMK, wenn der Motor dreht. Mit einer simplen Spannungssteuerung sind Drehmoment und maximal erreichbare Steprate eher suboptimal. Und wer bei seinen Experimenten unbefriedigende Ergebnisse dafür aber durchgebrannte Stepper und Treiber produziert hat, greift dann doch zu fertigen Lösungen. Insbesondere, wenn der Stepper nur Mittel zum Zweck ist, wie bei 3D-Druckern und CNC Maschinen.
Die heute üblichen Chips wie A4988 oder DRV8825 realisieren diese Stromsteuerung und bieten im Mikroschrittbetrieb auch eine sinusähnliche Steuerung des Stroms. Die Fa. Trinamic preist ihre Controler als besonders leise an. Aber bevor nicht bekannt ist, wie der Treiber von highman aufgebaut ist, kann man über die Lösung seines Problems nur spekulieren.
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Hallo Klebwax,
highmans Motor ist ein unipolarer 50 Ohm spannungsgesteuerter Schrittmotor, der für den Betrieb an 5V spezifiziert wurde. Highman nannte die Motortype. Er ist zusammen mit einem ULN2003-Treiber bei Arduino-Fans bekannt.
Typ: "28BYJ-48"
Rated voltage : 5VDC
Number of Phase 4
Speed Variation Ratio 1/64
Stride Angle 5.625° /64
Frequency 100Hz
DC resistance 50Ω±7%(25℃)
Idle In-traction Frequency > 600Hz
Idle Out-traction Frequency > 1000Hz
In-traction Torque >34.3mN.m(120Hz)
Self-positioning Torque >34.3mN.m
Friction torque 600-1200 gf.cm
Pull in torque 300 gf.cm
Insulated resistance >10MΩ(500V)
Insulated electricity power 600VAC/1mA/1s
Insulation grade A
Rise in Temperature <40K(120Hz)
Noise <35dB(120Hz,No load,10cm)
Model 28BYJ-48 – 5V
Die benötigten 100mAs werden also vermutlich auch bei highman von einem ULN2003 Darlington-Array getrieben.
Da der Motor unipolar ist, muss man ihn an hochwertigen Treibern bipolar durch Freilassung seiner Mittelanzapfungen verwenden. Dann hat er 100 Ohm, was eine Betriebsspannung der Treiber von 12V ergibt. Oder mehr, wenn die Regelung der Chips bei nur 100 mA Stromentnahme stabil bleibt.
Stromtreiber und highmans Motor passen nicht gut. Man muss zumindest genau die Datenblätter der Treiberchips prüfen. Ist 100mA noch innerhalb der Spezifikationen oder nicht?
Viele Grüße
Wolfgang
Geändert von Rumgucker (19.11.2019 um 13:02 Uhr)
Lesezeichen