PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Motor für Midiclock - Schrittmotor, AC- oder DC-Motor? Synchtonisation auf Zeitbasis



Cysign
31.12.2016, 17:13
Hallo zusammen,
ich hab schon seit längerem eine - naja, nennen wir es etwas 'alternative' - Idee für eine Midiclock.

Hauptaufgabe ist es, eine BPM-Frequenz einzustellen und diese an angeschlossene Synthesizer, Laptops und vonstige Midigeräte zu senden.
Soweit ist das ja auch nicht soooooo unüblich.
Der alternative Part ist eher, dass dazu noch eine Scheibe gedreht werden soll, die das Timing visualisiert.
Sagen wir eine Scheibe wie bei einem Schallplattenspieler, auf der senkrecht 4 Karten befestigt sind, die immer auf den Beat an einer Positionsmarkierung passieren sollen.

Ich zweifle schon länger, ob ich dies mit z.B. einem Arduino und einem Transistor zur PWM sauber genug hinbekomme.

Im Video "CYMATICS: Science Vs. Music - Nigel Stanford" (http://www.youtube.com/watch?v=Q3oItpVa9fs&t=1m30s) gibt es bei Minute 1:30 eine Aufnahme, wo ein Schallplattenspieler einige Spielkarten senkrecht montiert hat und diese beim Drehen das Mikrofon streifen.
Ähnlich stelle ich mir das für meine Midiclock vor, nur dass ich kein Mikrofon benötige und die Geschwindigkeit nicht von den Karten vorgegeben werden soll, sondern intern im µC erzeugt wird und der Aufbau sich so darauf einstellen soll, dass die Karten zur passenden Zeit den Marker passieren.

Macht hier ein Schrittmotor mehr Sinn oder ein Gleichstrommotor?

Ich hätte zwar noch 2-3 Schallplattenspielermotoren (230V) hier, jedoch habe ich mich bisher noch nicht in der Ansteuerung eines 230V Motors (Phasenanschnitt/Thyristor) genug befasst, um die Komplexität beurteilen zu können.

Wie würdet ihr den Antrieb eines solchen Aufbaus umsetzen?

RoboHolIC
01.01.2017, 13:02
Aus dem Bauch heraus würde ich einen Schrittmotor empfehlen, der ja wesensmäßig ein Synchronmotor ist. Dessen Ansteuer-Timing, also die Schrittpulse für die Treiberelektronik, lässt sich quasi beliebig genau realisieren.

Dieser Ansatz benötigt je nach Trägheitsmoment der Anzeigescheibe und Drehmoment des Motors eine Anlaufphase für Start und Tempowechsel.

Cysign
01.01.2017, 16:48
Ich hab mal davon gelesen, dass es ne Alternative zum A4988 gibt, die die Geräuschkulisse von Schrittmotoren enorm reduziert. Ansonsten hab ich bei nem Schrittmotor Bedenken hinsichtlich der Geräuschkulisse.

Siro
01.01.2017, 19:13
Hallo,
ich habe vor kurzem einen normalen Gleichstrommotor mit Bürsten auf exakte, regelbare Drehzahl gebracht.
Der ist so gut wie garnicht zu hören. Für die Regelung hat er auf der Achse einen optischen Impulsgeber.
Damit lässt sich ganz hervorragend die Geschwindigkeit steuern.
Die Zeiten zwischen 2 Impulsen wurden gemessen und dann die benötigte PWM für den Motor berechnet.
Für die Musik brauchst ja so um die 50-300 Umdrehungen, das war zufälligerwiese auch mein Regelbereich.
Kann ich nur empfehlen.
Ich habe einen recht grossen 24 Volt Motor verwendet.

Siro

Cysign
01.01.2017, 19:27
Ne, ich brauche ein Viertel von deinern RPM, also 12,5 bis 75rpm, weil ich 4 Karten darauf montieren möchte.
Auf welcher µC-Basis hast du das denn realisiert? Und wie rechenintensiv ist deine Zeitanpassung?

Im schlimmsten Fall nehm ich einfach zwei µCs. Einen für die BPM und einen, der nir den Motor synchronisiert.

Für nen optischen Impuls könnte ich mir auf der Drehmaschine eine kleine Aluscheibe fertigen, die dann außen bis auf eine Stelle schwarz angemalt wird und dann ne IR-Reflektions-Lichtschranke dran ;)
...und die Scheibe könnte ich natürlich auch gleihc mit einem Rimenantrieb für den Teller kombinieren...

oberallgeier
01.01.2017, 19:45
.. ich habe .. einen normalen Gleichstrommotor mit Bürsten auf exakte, regelbare Drehzahl gebracht ..Schon mehrfach angemerkt. Mein MiniD0 (https://www.youtube.com/watch?v=jgm9DhS7vS4) (ebenso wie mein Dottie (https://www.youtube.com/watch?v=sRNSIBpK8sQ)) laufen mit zwei alternierend + synchron getakteten Regelzyklen, 100 Hz, durch die über nen Motortreiber zwei sonst völlig getrennte Gleichstrommotoren (gehackte Servos mit Encoderscheibe auf der Motorwelle) betrieben werden. WENN Geradeausfahrt gewollt wird (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=427784&viewfull=1#post427784), fährt mein MiniD0 mit rund 1 mm Abweichung auf einen Meter - das finde ich einen hervorragenden Gleichlauf. Drehzahl ist dabei etwa 20 Upm bis 120 Upm.
Fazit: eine ziemlich exakte Drehzahl von Bürstenmotoren ist mit ner guten Regelung möglich.

Siro
01.01.2017, 19:48
Meine Scheibe ;) hatte 500 Impulse pro Umdrehung, das kann mann natürlich SEHR gut steuern.
Ich habe das mit einem LPC1768 gesteuert.
Das kannst Du aber mit einem kleinen 8-Bitter auch steuern.
Die haben meistens ja Timer und den lässt Du einfach auf einer recht hohen Frequenz laufen.
Wenn dein Impuls von der Scheibe kommt liesst Du den Zählerstand aus uns kannst darauf rückschliessen wie schnell der Motor dreht.
Entsprechend regelst Du dann die Pulsbreite nach.

- - - Aktualisiert - - -




#define MAX_PWM 1000
#deinfe MIN_PWM 0
#define REGULATION_TIME 10 /* 10 ms */


/* ----- wird kontinuierlich von Hauptprogramm aufgerufen */
void RPM_Regulation(S32 set_rpm)
{ static U32 time;
static S32 pwm_regel;
S32 Delta_RPM;
S32 Delta_PWM;

if (SystemTickCount < time) return;
time = SystemTickCount + REGULATION_TIME;

Delta_RPM = set_rpm - rpm; /* Sollwert - Istwert */

/* umrechnen in PWM ohne Floating Point, der Wert 20000 muss dem Motor entsprechend angepasst werden */
Delta_PWM = (Delta_RPM * 20000) / 65536; /* vereinfachte, schnelle Berechnugn >> 16 */

pwm_regel = pwm_regel + Delta_PWM; /* die Differenz aufaddieren */

/* PWM range check */
if (pwm_regel > MAX_PWM) pwm_regel = MAX_PWM; /* max value fuer PWM */
if (pwm_regel < MIN_PWM) pwm_regel = MIN_PWM; /* min value fuer PWM */

SetPWM(pwm_regel);
}



der Wert rpm wird im Interrupt berechnet

Cysign
01.01.2017, 21:22
Was hast du denn für ne Scheibe und Lichtschranke verwendet?
War die beim Motor schon dabei oder hast du da selbst was zusammen gewürfelt?

500 Impulse bekomm ich bei nem Selbstbau nicht hin :D
Aber ich denke mal, 8 Impulse pro Umdrehung dürfte ich mit meiner DIY-Reflektionslösung halbwegs präzise schaffen.
Da ich vermutlich eh eine Übersetzung nutzen muss, sollte das genau genug sein.

Siro
02.01.2017, 08:42
Ich habe einen Motor von Dunkermotoren
Typ GR63x55, den bekommt man mit und ohne Impulsgeber drauf.
Ein ziemlich "fettes" leider auch teures Teil.
Gib mal bei Google GR63x55 ein, dann bekommst Du gleich Bilder und Infos.

Übrigens habe ich bewust, wegen gewollter niedrigerer Drehzahl, eine 50 Volt Variante genommen und steuere ihn jedoch nur mit 24 Volt an.
Der hat bei mir keine Übersetzung, den hälts Du aber trotzdem nicht fest.

Cysign
02.01.2017, 08:52
Naja, so nen 120W-Boliden wollte ich für meine Spielerei nun nicht verbauen :D

Was befeuerst du denn damit?

Siro
02.01.2017, 10:06
Ich steuere damit eine Rollenpumpe um Flüssigkeit zu transportieren für den medizinischen Bereich.

Schau Dir mal diesen an:
http://www.exp-tech.de/emg30-getriebemotor-mit-drehgeber

Cysign
02.01.2017, 10:14
Danke für den Link, aber da das Ganze eher ein Low-Budget-Spaßprojekt werden soll, wäre der Motor teuer als der gesamte sonstige Aufbau ;)

Klebwax
02.01.2017, 17:16
Macht hier ein Schrittmotor mehr Sinn oder ein Gleichstrommotor?

Hier macht ein Schrittmotor viel mehr Sinn. Da es hier ja nur um eine Anzeige, ein mechanisches Display geht, tut es jeder kleine, z.B. aus einem 5,25" Floppylaufwerk oder einem Drucker oder Kopierer.

32306

Dazu noch einen Treiber für einsfuffzig (http://www.ebay.de/itm/5pcs-DRV8825-Schrittmotor-Driver-Modul-fur-RepRap-3D-Drucker-StepStick-TE562-/351806906131?hash=item51e9535f13:g:UP4AAOSw9NdXq3G z) und schon passt das.

MfG Klebwax

Cysign
03.01.2017, 02:55
A4988 und DRV8825 hab ich ausreichend im Regal ;)
Aber danke für den Link!

engineer
12.01.2017, 11:47
Ich würde keinen Schrittmotor nehmen, weil das gfs zu grob sein dürfte. Ich habe in meiner Workstation eine präzise MIDI-Clock drin, läuft mit 480 statt 96 ticks per beat und packt 375 bpm auf 0,01 genau :-) Wenn Ich das runterskaliere auf erträgliche Werte, brauchst Du eine zeitliche Auflösung von besser, als 500 Hz, wenn das genau sein soll. Ich würde auch eher zu einem analogen System mit Schwungscheibe raten, die kontinuierlich geregelt ist. Am Besten ein DC-Motor mit geglätteter OWM-Regelung, dann bekommt man per kapazitiver Ankopplung sowohl die PWM, als auch die Gegen-EMK des Motors mit und hat die Impulse. Man müsste halt vorher schauen, wieviele der liefert.