Mit hilfe eines X Y Schreiber und einem Arduino Grafiken zeichnen lassen.

Hallo,

wir haben ein Schulprojekt und zwar soll ein Arduino so programmiert werden, daß er den X Y Schreiber dazu bringen kann Grafiken zu zeichnen. Es reicht bereits ein Smiley! Die Achsen des X Y Schreibers reagieren auf Spannung und der Arduino soll die Spannung so ausgeben, dass der Schreiber diese Grafiken zeichnen kann. Uns wurde gesagt, daß wir dazu ein PWM einbauen sollen mit einer konstanten Spannung von 5 V. Wir kommen derzeit nicht weiter und ich hoffe wir bekommen gute Hilfe von euch!

Ich bedanke mich im Vorraus!

Ihr wollt also 2 analoge Spannungen generieren damit der Stift des y-x plotters ein Smiley zeichnet.

Ihr könnt PWM nehmen, das ist aber einen getaktete 5V Spannung dessen Mittelwert zwischen 0 und 5V liegt. Mit einem RC Glied (Widerstand zwischen Arduino Ausgang und Plotter Eingang und Kondenstor zwischen Plotter Eingang und masse) kann die Spannung geglättet werden und somit eine Gleichspannung werden. Der Wert des RC Gliedes und die Geschwindigkeit der PWM Änderung müßt Ihr experimentell herausfinden. Beginnt mal mit 100kOhm und 1µF.

In Alternative könnt Ihr einen DAC benutzen zB mcp4822.

Außer den 2 Spannungen werdet Ihr auch ein signal brauchen um den Stift zu heben.

Grüße Uwe

Smiley wird schwierig. Hat der XY-Schreiber einen Pen up/down Eingang?

Mit analogWrite() kann man ein Signal ausgeben, das mit einem RC-Filter geglättet eine Spannung zwischen 0V und der Versorgungsspannung ergibt. Der Schreiber sollte also jeweils auf die Versorgungsspannung des Arduino (5V?) eingestellt werden. Ggf. muß die PWM Frequenz erhöht werden, wenn der Schreiber zittert. Das ganze zweimal, für den X und den Y Eingang. Ggf. muß auch der Bereich für den Duty-Cycle des PWM Signals geändert werden, wenn die 256 Schritte von analogWrite() zu wenig sind.

Zum Zeichnen einer Linie muß man beide Ausgänge von der Anfangsposition/spannung bis zu einer Endposition laufen lassen. Dazu können die Bresenham Algorithmen verwendet werden (siehe Wikipedia). Nach jeder Ausgabe neuer Spannungswerte ggf. etwas warten, bis sich die Spannung nach dem RC Glied stabilisiert hat, und der Schreiber die Bewegung ausgeführt hat.

uwefed: Der Wert des RC Gliedes und die Geschwindigkeit der PWM Änderung müßt Ihr experimentell herausfinden. Beginnt mal mit 100kOhm und 1µF.

Es gibt auch Möglichkeiten das vorher zu berechnen. Das habe ich mal durch Zufall entdeckt:

Low Pass Filter Designer: http://sim.okawa-denshi.jp/en/CRlowkeisan.htm

und die Simulation, mit der Möglichkeit eigene Werte zu verwenden: http://sim.okawa-denshi.jp/en/PWMtool.php

Damit ist es möglich die Anstiegsgeschwindigkeit und den Rest-Ripple der Spannung zu ermitteln.

Gruß, Katsu

benni73: wir haben ein Schulprojekt ...

Um welche Klasse geht es (6. oder 7. nehme ich an)? Was macht Ihr gerade in Mathe? Hantiert Ihr schon mit Sinus, Cosinus, einem „Einheitskreis“ und mit rechtwinkligen Dreiecken?

Was Ihr machen sollt, ist nicht sonderlich schwierig.

Gruß

Gregor

Ich würde hier auch eher DA-Wandler nehmen

Um Kreise und Linien zu zeichnen gibt es wie gesagt fertige Algorithmen. Vom Bresenham gibt es auch Abwandlungen für Kreise. Dann muss man nur die Koordinaten entsprechend auf die realen Ausgangswerte umsetzen

gregorss: Was Ihr machen sollt, ist nicht sonderlich schwierig.

Ist vielleicht kein Monsterprojekt ;) aber wo ist das denn nicht schwierig? Ein Linearmotor, der Spannung in Auslenkung umwandelt, hat evtl. eine ziemlich geringe Eingangsimpedanz. Da is nichts mit Kondensator und Widerstand als RC-Glied. Vemermutlich kann man den überhaupt nicht mit dem Arduino direkt betreiben. Dazu die ganzen Berechnung, wie man die beiden Achsen parallel steuern kann ... Für 6./7.-Klasse halte ich das nicht nur für schwierig, sondern ohne Trigonometrie und so für praktisch gar nicht machbar. Wenn ich nichts einfaches übersehe, ist das eher ein größeres Oberstufeninformatikprojekt (das einige recht gut meistern werden und andere mit aller verfügbaren Hilfe hoffnungslos scheitern ...). Bisschen einfacher wird es natürlich, wenn man alle Schrägen und runden Linien approximiert und dadurch x und y unabhängig nacheinander steuern kann.

ElCaron: Ist vielleicht kein Monsterprojekt ;) aber wo ist das denn nicht schwierig?

An den einfachen Stellen.

Dass man das nicht mit einem RC-Glied erledigen kann, ist neu für mich.

Gruß

Gregor

Der Schreiber wird per Spannung gesteuert ist oben zu lesen, offenbar im Bereich 0 Volt bis 5 Volt. Also braucht's 2 Ausgangskanäle.

Die Berechnungen für einen Kreis sind m.E. tatsächlich nicht so schwierig, da helfen die üblichen Quellen.

Aus PWM eine Gleichspannung per R/C Glied zu machen funktioniert natürlich, um den Kreis nicht allzu faltig zu machen muss man langsam anfahren und langsam die Werte ändern. Geht auch.

Alles in allem also kein Monsterprojekt denke ich. Man muss sich an die Zeitkonstanten rantasten, da können wir wenig Hilfestellung geben.

gregorss: Dass man das nicht mit einem RC-Glied erledigen kann, ist neu für mich.

Das funktioniert IMHO nur, wenn der angesteuerte Part eine hohe Eingangsimpedanz hat. Die Idee an einem RC Glied zur Spannungsglättung ist ja, dass der Kondensator die Spannung puffert und der Widerstand verhindert, dass zuviel Strom ab- oder zufließt. Du kannst Dir vorstellen, dass ein echter Verbraucher im off cycle des PWM-Signals aber den Kondensator sofort leersaugt. Sauber funktioniert das also nur, wenn der einzige Punkt, über den Strom fließt, der Widerstand des RC-Gliedes ist. Zumindest näherungsweise.

Wenn der OP Pech hat, ist das aber ein Magnet und eine Spule - quasi wie ein Lautsprecher, nur dass eben nicht die Membran hin- und herbewegt wird, sondern der Schreiber. So wurden früher die Schreib-/Leseköpfe in den ersten, riesigen Festplatten bewegt. Da geht natürlich ganz erheblich Strom durch. Das könnte man regeln, indem man einen Puffer hinter das RC-Glied schaltet, der eine hohe Eingangs- aber eine niedrige Ausgangsimpedanz hat, so dass er bei der angelegten Spannung am Ausgang auch wirklich Strom liefern kann, ohne dass der Cap leergesaugt wird. Was da für ein Teil benötigt wird, hängt aber davon ab, was da für ein Motor dranhängt. Wenn es gegen relevante Motorströme geht und etwas Kraft dahinter hängt, dann reicht als Puffer auch der 0815 Opamp nicht mehr. Deswegen meine ich, dass das durchaus "schwer" (d.h., für jemanden, der sich mit sowas nicht ausgekennt, am Ende muss man natürlich nur die Richtigen Teile wählen) sein könnte. Übrigens würde natürlich ein DA-Wandler auch an so einem Motor schalten, die sind üblicherweise jetzt auch nicht gerade auf Leistung gebaut. Deswegen hat man ja im Audiobereich auch Verstärkerstufen.

ElCaron: Das funktioniert IMHO nur, wenn ...

Vielen Dank für die Info!

Gruß

Gregor

ElCaron: Ist vielleicht kein Monsterprojekt ;) aber wo ist das denn nicht schwierig? Ein Linearmotor, der Spannung in Auslenkung umwandelt, hat evtl. eine ziemlich geringe Eingangsimpedanz.

Ein Plotter wird mit Spannung gesteuert und hat deswegen einen höheren Eingngswiderstand als ein Motor. Grüße Uwe

ElCaron: Wenn der OP Pech hat, ist das aber ein Magnet und eine Spule - quasi wie ein Lautsprecher, nur dass eben nicht die Membran hin- und herbewegt wird, sondern der Schreiber. So wurden früher die Schreib-/Leseköpfe in den ersten, riesigen Festplatten bewegt. Da geht natürlich ganz erheblich Strom durch. Das könnte man regeln, indem man einen Puffer hinter das RC-Glied schaltet, der eine hohe Eingangs- aber eine niedrige Ausgangsimpedanz hat, so dass er bei der angelegten Spannung am Ausgang auch wirklich Strom liefern kann, ohne dass der Cap leergesaugt wird. Was da für ein Teil benötigt wird, hängt aber davon ab, was da für ein Motor dranhängt. Wenn es gegen relevante Motorströme geht und etwas Kraft dahinter hängt, dann reicht als Puffer auch der 0815 Opamp nicht mehr. Deswegen meine ich, dass das durchaus "schwer" (d.h., für jemanden, der sich mit sowas nicht ausgekennt, am Ende muss man natürlich nur die Richtigen Teile wählen) sein könnte. Übrigens würde natürlich ein DA-Wandler auch an so einem Motor schalten, die sind üblicherweise jetzt auch nicht gerade auf Leistung gebaut. Deswegen hat man ja im Audiobereich auch Verstärkerstufen.

Ich glaube, du hast noch nie einen XY-Schreiber gesehen, geschwege denn benutzt. Die Eingangsimpedanz (sehr hoch) und Einstellbarkeit der Spannungsempfindlichkeit ist vergleichbar mit Oszilloskopen. Ein XY-Schreiber wurde vor Urzeiten genutzt um Spannungsverläufe, die zu langsam für ein Oszilloskop sind, darzustellen und zu speichern. Sie wurden in den 80ern weitgehend von Speicheroszilloskopen oder Computermesssystemen abgelöst. Heute sind sie fast so museal wie Wählscheibentelefone oder Spulentonbandgeräte. Eine RC-Glättung ist durchführbar. Wegen der paar Megohm Eingangsimpedanz des Schreibers muss man wohl einen Widerstand parralel zum Eingang schalten. Die Werte von Widerstand und Kondensator würde ich experimentell ermitteln. Eine Alternative wäre ein Widerstandsnetzwerk: ein-r2r-4-bit-digital-analog-wandler-wird-aufgebaut oder ein DA-Wandler-IC.

Theseus: Ich glaube, du hast noch nie einen XY-Schreiber gesehen, geschwege denn benutzt.

Habe ich in der Tat nicht. Ich wusste ehrlich gesagt nichtmal, dass das ein definiertes Gerät ist. Ich hatte angenommen, dass das einfach ein IRGENDWIE aufgebauter Plotter ist, von dme wir bisher nichts wissen.

Du bist zu jung. Ich habe damit in meiner Schulzeit U-I Kurven von Dioden und LED (keine blauen, die gabs damals noch nicht) auf mm-Papier gezeichnet.

Grüße Uwe

Bitte verwirrt den armen Benni nicht mit Betrachtungen, die für sein Projekt nicht relevant sind. Was ein XY-Schreiber ist, hat Uwe ja bereits ausführlich dargelegt :-)

Die Ansteuerung eines Motors mit geglätteter PWM oder DAC ist ziemlich daneben, kostet nur Strom und Kühlkörper, wo man heute Motoren direkt mit PWM ansteuern kann. Zudem soll ein Motor typischerweise eine konstante Geschwindigkeit oder Position halten, dafür braucht man noch einen Regler, da bietet geglättete PWM keinerlei Vorteile.

Für die Dimensionierung des RC Filters kann man dem Linienschreiber einen Sprung von z.B. 0 auf 5V (analogWrite() von 0 auf 255) vorgeben, und den Stift nach 255ms abheben. Dann R oder C verkleinern, bis die gezeichnete Linie den Endpunkt erreicht. Dann wird ein Sprung um 1 Bit in 1ms ausgeführt, das sollte fürs Zeichnen ausreichen. R sollte allerdings nicht kleiner als 5V/20mA=250 Ohm werden, um den Arduino Ausgang nicht zu überlasten! Mit R=10k und C=10µF kommt man auf eine Zeitkonstante von 10k*10µ=100ms, also etwa 5*100=500ms Anstiegszeit. Das könnte gerade so ausreichen, wenn der Linienschreiber 1/2s von Anschlag zu Anschlag mitmacht.

Viel Spaß beim Ausprobieren :-)

DrDiettrich: ... da bietet geglättete PWM keinerlei Vorteile.

Was ebenfalls ziemlich irrelevant ist. Dass die Aufgabe mit PWM zu lösen ist, steht IIRC im ersten Posting.

Gruß

Gregor

DrDiettrich: Die Ansteuerung eines Motors mit geglätteter PWM oder DAC ist ziemlich daneben, kostet nur Strom und Kühlkörper, wo man heute Motoren direkt mit PWM ansteuern kann. Zudem soll ein Motor typischerweise eine konstante Geschwindigkeit oder Position halten, dafür braucht man noch einen Regler, da bietet geglättete PWM keinerlei Vorteile.

Ich würd Dir recht geben wenn es kein XY-Schreiber wäre sonder ein Selbstbauprojekt. Ein fertigers x-y Schreiber Gerät hat die Leistungselektronik für die Motoransteuerung bereits integriert und auch eine Rückkopplung um eine bestimmte Position je nach Eingangsspannung anzufahren und wird wie ein Oszyloskop angesteuert. Mit einer Spannung die kaum Leistung bringen muß.

Grüße Uwe

Mein Einwurf hat sich auf das vorhergehende Posting bezogen, über PWM im Allgemeinen. Zum Projekt der Absatz über die Dimensionierung des RC Filters.

uwefed: Du bist zu jung.

Vemrutlich. Blaugrün wurde so gerade um meine Einschulung erfunden. Ist aber nicht so, als hätte ich irgendwann mal in der Schule einen moderneren Ersatz für einen XY-Schreiber gesehen. Dafür gab's nen Latein-LK :roll_eyes: