Forum: Mikrocontroller und Digitale Elektronik Farbverlauf für Encoder


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tobias K. (tobey08)


Angehängte Dateien:

Lesenswert?

Ich brauche ein Bild/Grafik für einen Encoder Eigenbau.

Wer könnte mir sowas machen, oder hat eine Idee womit man das machen 
kann?

Ich habe es schon mit Photoshop probiert, aber damit kann man minimal 
nur 1% schritte angeben. Des weiteren habe ich es mit CSS probiert, doch 
das ist auch nicht richtig (ungleichmässige Farbverläufe).

von Thomas F. (igel)


Lesenswert?


von Tobias K. (tobey08)


Lesenswert?

Eigentlich ist es nicht wirklich ein encoder, da keine codierung 
verwendet wird. Aber ich kann anhand der Helligkeit genau sagen wo ich 
bin (im jeweiligen Abschnitt).

von Sascha S. (dec)


Lesenswert?

Hallo,

das kannst du dir die Wertematrix doch selbst berechnen, dann kannst du 
die Auflösung und Abstufung selbst definieren.
F(x,y,n) = 0,5*cos(2n*arctan(y/x))+0,5 mit x,y Achskoordinaten und n 
Anzahl Verläufe.

Grüße
Sascha

von Tobias K. (tobey08)


Lesenswert?

Du meinst mit dem Program? Welches dann?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Du könntest ein kleines Programm schreiben, das das Muster als PNG mit 
16-Bit-Graustufen ausgibt. Damit haben die Grauwerte eine sehr feine 
Abstufung von nur 15 ppm.

Aber wie geht es danach weiter? Falls du das Muster ausdrucken möchtest, 
wird der Druckertreiber und der Drucker selber die ganze Mühe wieder 
zunichte machen, da dieser keine echten Grautöne drucken kann.

Aber warum willst du überhaupt ein Graustufenmuster verwenden? Dadurch, 
dass das optische Abtastsystem nicht punktgenau, sondern flächig 
abtastet, bekommst du auch mit einem schwarzweißen Streifenmuster an den 
Flanken einen sich kontinuierlich ändernden Signalpegel, den du zur 
Ermittlung von Positionszwischenwerten nutzen kannst. Du musst dazu nur 
die Sender- und die Empfängerblende breit genug machen.

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

Wenn das ein nur Ring wäre, die Helligkeitsmodulation sinusförmig und 
zwei Abtaster eine viertel Periode versetzt, hätte man einen Drehencoder 
mit  (analogem) sin/cos-Signal.

von Paul B. (paule201)


Lesenswert?

AS5600 + diametraler Magnet?

Preiswert, robust, absolute Werte mit 12bit, berührungslos. Wir kennen 
ja das Problem nicht genauer, aber eventuell passt es ja. Die 
mechanische Integration könnte halt je nach Aufbau schwierig werden, der 
Magnet muss zentrisch über dem IC sitzen.

von Klaus H. (hildek)


Lesenswert?

Tobias K. schrieb:
> Du meinst mit dem Program? Welches dann?

Selber schreiben, aber am Einfachsten ist das BMP-Format, evtl. noch 
GIF. Die sind unkomprimiert.
Hier gibt es ein paar Infos dazu: 
https://nicolashollmann.de/de/blog/writing-bmp-files/

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

>AS5600
https://www.mouser.de/new/ams-osram/ams-as5600-potuino-arduino-shield/
https://www.mouser.de/datasheet/2/588/AS5600_AB-POT_UG000378_1-00-1513605.pdf
allerdings 51,32 €

Es gibt auch immer noch rein mechanische sin/cos-Potis, aaaber der 
Preis!

Wie wäre ein digitaler Encoder und eine Sinustabelle mit DAC?

: Bearbeitet durch User
von Tobias K. (tobey08)


Lesenswert?

Ingo W. schrieb:
> Wenn das ein nur Ring wäre, die Helligkeitsmodulation sinusförmig und
> zwei Abtaster eine viertel Periode versetzt, hätte man einen Drehencoder
> mit  (analogem) sin/cos-Signal.

Das war auch so der Plan. Aber ich überlege gerade, wie es mit dem 
Timing wird, wenn der ADC noch rödeln muss.

von Tobias K. (tobey08)


Lesenswert?

Paul B. schrieb:
> AS5600 + diametraler Magnet?
>
> Preiswert, robust, absolute Werte mit 12bit, berührungslos. Wir kennen
> ja das Problem nicht genauer, aber eventuell passt es ja. Die
> mechanische Integration könnte halt je nach Aufbau schwierig werden, der
> Magnet muss zentrisch über dem IC sitzen.

Das wär auch eine interessante Lösung. Leider kann ich diese nicht 
implementieren.

von Tobias K. (tobey08)


Angehängte Dateien:

Lesenswert?

Habe mal einen Linearservo mit ähnlichen Prinzip gebaut...

von He. (Gast)


Lesenswert?

Ingo W. schrieb:
> Wenn das ein nur Ring wäre, die Helligkeitsmodulation sinusförmig und
> zwei Abtaster eine viertel Periode versetzt, hätte man einen Drehencoder
> mit  (analogem) sin/cos-Signal.

Wird so etwas in der Industrie verwendet?
Ich kann mir vorstellen, dass das etwas störanfällig ist.

von Thomas F. (igel)


Lesenswert?

Tobias K. schrieb:
> Aber ich kann anhand der Helligkeit genau sagen wo ich
> bin

Ahso, du brauchst tatsächlich die Graustufen. Das habe ich wohl am 
Anfang missverstanden.

Aber wenn du tatsächlich eine Grafik mit 32-Bit Graustufen ( so viel 
bietet GIMP an) hinbekommst zweifle ich wie Yalu stark daran dass du 
diese auch auf Papier bringst.
Und dann muss der Grauwert erst wieder über einen optischen Sensor und 
ADC eingelesen werden. Mein Gefühl saht mir dass da am Ende auch nur 
realistisch 100 Zwischenstufen rauskommen werden.

Die haben das wohl irgendwie geschafft:
https://www.quantumdev.com/incremental-encoder-output/

Noch mehr Theorie:
https://mdpi-res.com/d_attachment/applsci/applsci-10-01766/article_deploy/applsci-10-01766.pdf?version=1583328011

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tobias K. schrieb:
> einen Encoder Eigenbau.
Was versprichst du dir von einem Eigenbau? Sind dir käufliche Lösungen 
zu teuer oder zu groß oder lösen sie zu schlecht auf?

Warum reicht für dein Problem micht ein handelsüblicher Resolver:
- 
https://www.digikey.de/de/articles/how-to-precisely-determine-motor-angular-position-and-velocity-with-a-resolver

Würde die damit erreichbare Auflösung von 20 Winkelsekunden (ergo 1/180° 
bzw. eine 64000-tausendstel Umdrehung) für deine Anforderungen reichen?

Tobias K. schrieb:
> Paul B. schrieb:
>> AS5600 + diametraler Magnet?
> Leider kann ich diese nicht implementieren.
Woran klemmt es denn?

Tobias K. schrieb:
> Aber ich kann anhand der Helligkeit genau sagen wo ich bin
Mir fallen bei optischen Bauteilen auf Anhieb einige Effekte ein, die 
das schöne, einfache Gedankenmodell der analogen stufenlosen Abtastung 
schnell unheimlich komplex werden lassen. Unterschiedlich schnelle 
Alterung der beiden Kanäle und Verschmutzung sind die naheliegendsten.

Thomas F. schrieb:
> Die haben das wohl irgendwie geschafft:
> https://www.quantumdev.com/incremental-encoder-output/
Die haben "einfach" viel technisches KnowHow und viele 
Ingenieursmannjahre Erfahrung und können dann solche feinmechanischen 
Wunderwerke bauen, wie sie dort beschrieben sind:
- https://www.quantumdev.com/resource-library/rotary-encoder-basics/
- 
https://www.quantumdev.com/resource-library/incremental-encoder-basics/

Und mit solchen Schlitzscheiben erreichen sie dann Auflösungen bis zu 
20k Schritten pro Umdrehung, die entweder als Quadraturpulse ausgegeben 
oder in absolute sin/cos-Signale umgewandelt werden.

: Bearbeitet durch Moderator
von Thorsten S. (thosch)


Lesenswert?

Harald E. schrieb:
> Ingo W. schrieb:
>> Wenn das ein nur Ring wäre, die Helligkeitsmodulation sinusförmig und
>> zwei Abtaster eine viertel Periode versetzt, hätte man einen Drehencoder
>> mit  (analogem) sin/cos-Signal.
>
> Wird so etwas in der Industrie verwendet?
> Ich kann mir vorstellen, dass das etwas störanfällig ist.

Klar wird sowas in der Industrie verwendet!
Optische Inkrementalencoder der Etablierten Hersteller arbeiten meist 
genau so.
Das ist extrem störunanfällig und die Präzision ist so hoch, daß die 
Auflösung von z.B. 4000 sin/cos Verläufe pro Umdrehung so eines Encoders 
nach Abtastung mit ADCs noch in einem FPGA um einen Faktor von z.B 500. 
hochinterpolierbar ist. Der Interpolator liefert dann ein digitales 
Quadratursignal wie aus einem digitalen Quadratur-Encoder mit der 
500-fachen Auflösung (im Beispiel hier 2 Mio Striche/Umdrehung).
Das FPGA wird wegen der hohen Geschwindigkeit benötigt, schon bei sehr 
gemächlicher Drehzahl kommen hohe Frequenzen heraus...
Bei sehr langsamen Drehzahlen (z.B im einstelligen U/min Bereich) oder 
geringerer Auflösung kann das auch ein μC in Software.

So ein Interpolator erfordert allerdings einigen Aufwand, z.B. eine 
(selbstlernende) positionsabhängige Offset- und Amplitudenkorrektur, 
damit die interpolierte Auflösung konsistent ist.

Ich würde daher bei geringerer Auflösung als etwa 1000 Striche pro 
Umdrehung immer einen rein digitalen Encoder bevorzugen.

Die Quadraturauswertung erfolgt im Encoder ab einer bestimmten 
Strichzahl wegen der dann nicht mehr sinnvoll realisierbaren geringen 
Abmessungen der Sensoren mit einem Hilfsgitter mit der (n-1)/n -fachen 
Strichweite der Codescheibe, woraus sich dann ein Aliasmuster mit der 
n-fachen Breite ergibt, welches leicht zu erfassen ist.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Harald E. schrieb:
> Wird so etwas in der Industrie verwendet?

Encoder mit Sin/Cos-Ausgängen gibt es schon lange. Allerdings arbeiten
sie m.W. nicht mit Graustufen, sondern mit ganz normalen Strichscheiben,
wie sie auch bei Encodern mit digitalen Ausgängen verwendet werden. Für
die Generierung des Sin/Cos-Signals wird der "Weichzeichnereffekt"
genutzt, der dadurch entsteht, dass der abtastende Lichtstrahl nur
endlich stark fokussiert wird, so wie ich das schon oben versucht habe
zu erläutern:

Yalu X. schrieb:
> Dadurch, dass das optische Abtastsystem nicht punktgenau, sondern
> flächig abtastet, bekommst du auch mit einem schwarzweißen
> Streifenmuster an den Flanken einen sich kontinuierlich ändernden
> Signalpegel, den du zur Ermittlung von Positionszwischenwerten nutzen
> kannst. Du musst dazu nur die Sender- und die Empfängerblende breit
> genug machen.

Man muss sich natürlich darüber im Klaren sein, dass damit zwar die
Auflösung fast beliebig verbessert werden kann, der Erhöhung der
Genauigkeit sind aber durch Herstellungstoleranzen, Nichtlinearitäten
usw. Grenzen gesetzt.

Lothar M. schrieb:
> Tobias K. schrieb:
>> Aber ich kann anhand der Helligkeit genau sagen wo ich bin
> Mir fallen bei optischen Bauteilen auf Anhieb einige Effekte ein, die
> das schöne, einfache Gedankenmodell der analogen stufenlosen Abtastung
> schnell unheimlich komplex werden lassen. Unterschiedlich schnelle
> Alterung der beiden Kanäle und Verschmutzung sind die naheliegendsten.

Beides lässt sich erfassen und kompensieren, während der Encoder bewegt
wird.

von Tobias K. (tobey08)


Lesenswert?

Thomas F. schrieb:
> Aber wenn du tatsächlich eine Grafik mit 32-Bit Graustufen ( so viel
> bietet GIMP an) hinbekommst zweifle ich wie Yalu stark daran dass du
> diese auch auf Papier bringst.
Papier ist keine Option. Kann leicht verfärben, und saugt alles möglich 
an betriebsstoffen auf.

> Mein Gefühl saht mir dass da am Ende auch nur
> realistisch 100 Zwischenstufen rauskommen werden.
Das wären 0,6 Elektrische Rotation. Mehr als genug würde ich sagen.


> Die haben das wohl irgendwie geschafft:
> https://www.quantumdev.com/incremental-encoder-output/
Optisch?

von Tobias K. (tobey08)


Lesenswert?

Lothar M. schrieb:
> Was versprichst du dir von einem Eigenbau? Sind dir käufliche Lösungen
> zu teuer oder zu groß oder lösen sie zu schlecht auf?
Motor soll nachgerüstet werden. Habe nur so 5x10mm Platz für den Sensor 
am Ring.

Lothar M. schrieb:
> Mir fallen bei optischen Bauteilen auf Anhieb einige Effekte ein, die
> das schöne, einfache Gedankenmodell der analogen stufenlosen Abtastung
> schnell unheimlich komplex werden lassen. Unterschiedlich schnelle
> Alterung der beiden Kanäle und Verschmutzung sind die naheliegendsten.
Normal wird hier nichts schmutzig.

von Tobias K. (tobey08)


Lesenswert?

Yalu X. schrieb:
> wird der Druckertreiber und der Drucker selber die ganze Mühe wieder
> zunichte machen, da dieser keine echten Grautöne drucken kann.

Ich brauch keine echten Grautöne.

Yalu X. schrieb:
> bekommst du auch mit einem schwarzweißen Streifenmuster an den
> Flanken einen sich kontinuierlich ändernden Signalpegel,

Aber mit meinem Kontinuierlichen Verlauf brauche ich keine Blende. So 
eine Blende dranzumachen klingt zwar einfach, aber der Teufel steckt im 
Detail.

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

Tobias K. schrieb:
> Yalu X. schrieb:
>> wird der Druckertreiber und der Drucker selber die ganze Mühe wieder
>> zunichte machen, da dieser keine echten Grautöne drucken kann.
>
> Ich brauch keine echten Grautöne.

Was dann? Geditherte Grautöne? Dann hängt der Erfolg des Ganzen aber
stark vom Dithering-Algorithmus im Druckertreiber bzw. Drucker und vom
Durchmesser eines einzelnen, ausgedruckten Pixels ab, der bei den
meisten Druckern größer ist als es dem Rastermaß entspricht.

> Yalu X. schrieb:
>> bekommst du auch mit einem schwarzweißen Streifenmuster an den
>> Flanken einen sich kontinuierlich ändernden Signalpegel,
>
> Aber mit meinem Kontinuierlichen Verlauf brauche ich keine Blende.

Irgendwie musst du ja den Erfassungsbereich des Sensors begrenzen.
Natürlich kannst du auf die Blende verzichten und den Bereich
stattdessen durch den Öffnungswinkel von Sender und Empfänger begrenzen
lassen. Diese Begrenzung ist dann aber nicht so sauber definiert wie mit
einer Blende und verringert damit die Genauigkeit der ermittelten
Winkelposition. Wenn dir die Genauigkeit nicht so wichtig ist, kannst du
die Blende auch bei der von mir vorgeschlagenen digitalen Strichscheibe
(mit analoger Abtastung) weglassen, solange die Strichbreite ungefähr
dem Erfassungsbereich entspricht.

Welche Genauigkeit und Auflösung strebst du überhaupt an? Das Muster in
einem Eröffnungsbeitrag hat 21 Perioden, und Graustufen von 1% waren dir
zu grob. Also erhoffst du dir wohl eine Auflösung von deutlich mehr als
21·100=2100 Winkelschritten pro Umdrehung, was schon recht sportlich
ist, vor allem dann, wenn auch die Genauigkeit in dieser Größenordnung
liegen soll.

Ich würde ein einfaches Strichmuster in der maximalen Auflösung, die der
Drucker hergibt, nehmen und dieses ganz klassisch rein digital abtasten.
Damit wird vermutlich nicht nur die Auflösung, sondern vor allem auch
die Genauigkeit deutlich besser sein als mit den Graustufen.

Trotzdem habe ich mal spaßeshalber meinen Vorschlag von oben umgesetzt
und ein Muster mit 21 Sinusperioden und 16-Bit-Graustufen generiert (s.
Anhang).

von Tobias K. (tobey08)


Lesenswert?

Yalu X. schrieb:
> *So einiges*

So über die einzelnen Pixel mache ich mir keine Gedanken, da diese für 
den Sensor uninteressant sind. Der ist ja eigentlich ziemlich 
farbenblind und sieht glaube auch nicht so gut ;-)

Ich bin mir noch nicht ganz sicher, wie ich genau die Aufteilung mache. 
Es könnte auch weniger Teilung werden.

Ich habe auch einen Denkfehler gehabt, in dem nämlich eine Sinusfunktion 
nicht so ganz Linear ist...

Deine Grafik sieht viel besser aus als meine.
Kannst du mir die mal mit einem Dreieckverlauf generieren in 21, 14 und 
7 Perioden? Und bitte bis zur Mitte?

Wär echt nett ;-)

Hast du das Video vom Linearservo gesehen? Der hat ganz gut 
funktioniert.

: Bearbeitet durch User
von Tobias K. (tobey08)


Angehängte Dateien:

Lesenswert?

Interessant:
Ich sehe bei den generierten Verlauf (lolline.jpg), auf einem Bildschirm 
eine "linie", aber auf den anderen nicht.

Zudem gibt es Artefakte (auch linien) in meinem generierten Bmp Bild. 
Woher kommen die?

Hat jemand grad mal die Formel/den Code griffbereit, wie ich x und y zum 
Kreis biegen kann?

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

Tobias K. schrieb:
> So über die einzelnen Pixel mache ich mir keine Gedanken, da diese für
> den Sensor uninteressant sind. Der ist ja eigentlich ziemlich
> farbenblind und sieht glaube auch nicht so gut ;-)

Ist die reale Pixelgröße größer als das Rastermaß, wird auch ein dunkles
Grau als schwarz dargestellt, so dass der Sensor nicht zwischen den
beiden unterscheiden kann. Auch für andere Grauwerte entstehen dadurch
Nichtlinearitäten, die zudem von dem verwendeten Dithering-Verfahren
abhängen.

> Deine Grafik sieht viel besser aus als meine.

Wie erkennst du das? In der PNG-Grafik sind zwar die Grauwerte um den
Faktor 256 höher aufgelöst, da aber ein gewöhnlicher Bildschirm aber nur
8 Bit Grauwertauflösung hat, kann er diese Verbesserung gar nicht
wiedergeben. Wenn man überhaupt einen Unterschied erkennt, liegt das an
der verlustbehafteten Komprimierung deines JPEG-Bilds.

> Kannst du mir die mal mit einem Dreieckverlauf generieren in 21, 14 und
> 7 Perioden? Und bitte bis zur Mitte?
>
> Wär echt nett ;-)

Weil du's bist :)

Den Python-Code zur Generierung habe ich ebenfalls angehängt.

> Hast du das Video vom Linearservo gesehen? Der hat ganz gut
> funktioniert.

Ja, darin kann aber nicht erkennen, wie genau die Positionserfassung
ist. Wenn du den Graustufenverlauf nach Gefühl mit einem Bleistift
aufgemalt hättest, hätte das bei flüchtigem Betrachtung sicher einen
ähnlich guten Eindruck gemacht.

Du solltest für verschiedene Positionen mit einer Schieblehre o.ä. den
realen Verfahrweg messen und das Ergebnis mit dem jeweils vorgegebenen
Sollwert vergleichen. Ich bin mir ziemlich sicher, dass die Genauigkeit
nicht besser als 1mm ist. Für diese Genauigkeit braucht es auch keine
Grauwertauflösung von besser als 1%, geschweige denn von mehr als 8 Bit.

Tobias K. schrieb:
> Interessant:
> Ich sehe bei den generierten Verlauf (lolline.jpg), auf einem Bildschirm
> eine "linie", aber auf den anderen nicht.

Fehler in Hardware, Software oder Bedienung. Dein erstes Bild am Anfang
des Threads hat auch schon solche komischen Linien. Ich dachte, das
seien Hilfslinien, die du bei der Erstellung mit Photoshop absichtlich
eingezeichnet hast.

: Bearbeitet durch Moderator
von Tobias K. (tobey08)


Lesenswert?

Yalu X. schrieb:
>> Deine Grafik sieht viel besser aus als meine.
>
> Wie erkennst du das?

Ich zoome mal rein, und erkenne Artefakte. Habe da eine gif datei.
Deine Dateien als JPG abgespeichert sind auch einwandfrei für meinen 
Anspruch.

Yalu X. schrieb:
> Weil du's bist :)

Danke.

Yalu X. schrieb:
> Ja, darin kann aber nicht erkennen, wie genau die Positionserfassung
> ist.

Stimmt, leider habe ich das nicht mehr um es zu prüfen.

Yalu X. schrieb:
> Ich bin mir ziemlich sicher, dass die Genauigkeit
> nicht besser als 1mm ist.

Ich bin mir ziemlich sicher dass es genauer als 1 mm ist. Halber 
Millimeter könnt schon drin sein.

Yalu X. schrieb:
> Ich dachte, das
> seien Hilfslinien, die du bei der Erstellung mit Photoshop absichtlich
> eingezeichnet hast.

Ja das ist richtig. Die im ersten Beitrag zeigen Unsymetrische 
verteilungen auf. Weiter unten sieht man, dass es einen Sprung gibts im 
Verlauf.
Mein Text hätte lauten müssen:
"Ich sehe bei den generierten Verlauf (lolline.jpg), auf einem 
Bildschirm
einen Sprung im Verlauf (grüne Linie), aber auf den anderen Bildschirm 
nicht."

: Bearbeitet durch User
Beitrag #7360659 wurde vom Autor gelöscht.
von Tobias K. (tobey08)


Lesenswert?

Yalu X. schrieb:
> Den Python-Code zur Generierung habe ich ebenfalls angehängt.

Woher ist der code? Sieht aus wie von einem Tutorial.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Tobias K. schrieb:
> Woher ist der code?

Den habe ich extra für dich eingetippt.

Lass dich nicht durch die englischen Symbolnamen und Kommentare 
verwirren. Das Englisch habe ich mir irgendwann mal angewöhnt, weil die 
von mir entwickelte Software oft von Leuten verwendet oder 
weiterentwickelt wird, die der deutschen Sprache nicht mächtig sind.

von Tobias K. (tobey08)


Lesenswert?

Yalu X. schrieb:
> Den habe ich extra für dich eingetippt.

Ich fühle mich geehrt ;-)

Ich muss dir vielmals danken. Du bist einer der wenigen, der hier 
anderen auch wirklich hilft.

Kannst du mir noch auf die Sprünge helfen, was die "2*" und 0.5 (Zeile 9 
u. 16) für einen Hintergrund haben?

: Bearbeitet durch User
von Paul B. (paule201)


Lesenswert?


von Yalu X. (yalu) (Moderator)


Lesenswert?

Tobias K. schrieb:
> Kannst du mir noch auf die Sprünge helfen, was die "2*" und 0.5 (Zeile 9
> u. 16) für einen Hintergrund haben?

Die Waveform-Funktionen bekommen in mapping() Argumente von 0 (Anfang
der Periode) bis 1 (Ende der Periode) übergeben. Als Funktionswert ein
Wert von 0 bis 1 erwartet, der in mappings mit 0xffff multipliziert
wird, um damit den vollen Wertebereich der 16-Bit-Graustufen
auszuschöpfen.

Die Dreiecksfunktion ist somit durch die Punkte (0,0), (½,1) und (1,0)
definiert, dazwischen wird linear interpoliert:
1
          (½,1)
2
3
           / \
4
          /   \
5
         /     \
6
        /       \
7
       /         \
8
      /           \
9
     ⬤             ⬤
10
   (0,0)         (1,0)

Damit füllt sie sowohl in x- als auch in y-Richtung den Wertebereich von
0 bis 1 vollständig aus. Die verwendete Funktionsgleichung dafür lautet

Alternativ hätte man auch

nehmen können.

: Bearbeitet durch Moderator
von Tobias K. (tobey08)


Lesenswert?

Danke für die Erklärung.

Ich werde das dann mal auf einer ausgedienten Festplatte probieren.

Ich würde schätzen, dass ich auf eine Genauigkeit von knapp unter 1° 
komme, auf einem Durchmesser von 35mm. Was schätzt du? Gedruckt wird es 
mit einem Stylus D78. Und den Sensor werde ich mir irgendwie 
zusammenbasteln vorerst.

von Tobias K. (tobey08)


Angehängte Dateien:

Lesenswert?

So... erste Tests beendet. Ich muss sagen ich habe mit ziemlich 
verschätzt mit der Auflösung.

Es gab einige Dinge und Erkenntnisse:
- Mein Drucker ist kagge
- Farben gemischt hat er gleichmäßiger gedrückt, aber der Verlauf ist 
dann nicht dreiecksförmig. Der dunkle Bereich ist breit aber hat kaum 
einen Verlauf (grüne Striche in "Bunt taugt *.jpg) im Vergleich zu 
schwarz (unten - rote Striche).
- Mit der LED auf dem Board funktioniert es sehr schlecht. Ich vermute 
hier starke Reflektionen von der Papieroberfläche.
- Wenn man die Scheibe auch nur leicht gedrückt hat, ohne diese zu 
drehen, dann gab es starke schwankungen im Signal.
- Ein Licht von nahezu 90° hat erstaunlich signifikant bessere 
Ergebnisse erziehlt. Im Bild "Licht ist alles.jpg" sieht man am Anfang 
das Signal von der LED auf der Platine, und danach mit dem Licht von der 
Seite.

Die Auflösung ist EPIC: ca. 90 Schritte pro Grad. Das aber bisher nur in 
begrenzten Bereichen (siehe "epic resolution.jpg"). Hier brauche ich nur 
einen Drucker,
der das auf die Reihe bekommt. Bzw. muss man evtl. noch was an den 
Verlaufsmuster anpassen. Auch ein guter Druck von einem anderen Drucker 
hat im schwarzen und weißen Bereich eher einen Sinusfärmigen Verlauf.

Ich frage mich nun, wie ich am besten vorgehe, um das ganze Minutengenau 
zu drehen, damit ich die Genauigkeit testen bzw. verbessern kann.

von Thomas F. (igel)


Lesenswert?

Tobias K. schrieb:
> Ich frage mich nun, wie ich am besten vorgehe, um das ganze Minutengenau
> zu drehen, damit ich die Genauigkeit testen bzw. verbessern kann.

Mit einem richtigen Encoder?
https://de.aliexpress.com/item/1005001632749007.html

> Ich würde schätzen, dass ich auf eine Genauigkeit von knapp unter 1°
> komme, auf einem Durchmesser von 35mm.

Mit obigem Encoder-5000 hätte man 20000 Flankenwechsel pro Umdrehung bei 
40mm Durchmesser....

Aber probiere ruhig mal weiter. Das Ergebnis interessiert mich, 
insbesondere die absolute Genauigkeit.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tobias K. schrieb:
> Ich frage mich nun, wie ich am besten vorgehe, um das ganze Minutengenau
> zu drehen, damit ich die Genauigkeit testen bzw. verbessern kann.
Du musst es nicht minutengenau drehen, sondern wie gesagt lediglich die 
eingestellte Drehung minutengenau auswerten können.

Also brauchst du zum Ausmessen einfach nur einen Drehgeber bzw. 
Resolver, der die eingestellte Position hinreichend genau und 
reproduzierbar erfassen kann. die gibts an jeder Ecke. Die kosten halt 
ihr Geld.

> Ein Licht von nahezu 90° hat erstaunlich signifikant bessere Ergebnisse
> erziehlt. Im Bild "Licht ist alles.jpg" sieht man am Anfang das Signal
> von der LED auf der Platine, und danach mit dem Licht von der Seite.
Dann probiers doch mal mit Licht durch das Papier. Nicht ganz zufällig 
machen das die handelsüblichen Encoder ja ebenfalls auf diese Art. Nur 
eben mit mechnisch bearbeiteten Geberscheiben. Ätzen ist halt vermutlich 
einfach zuverlässiger und langzeitstabiler als Drucken.

von Tobias K. (tobey08)


Lesenswert?

Thomas F. schrieb:
> Mit einem richtigen Encoder?

Lothar M. schrieb:
> Du musst es nicht minutengenau drehen, sondern wie gesagt lediglich die
> eingestellte Drehung minutengenau auswerten können.

Ich habe mich falsch ausgedrückt. Ich meinte eigentich, dass ich es nur 
um ein paar Minuten pro Sekunde drehen lassen will. Dann sehe ich wie 
die Flanken aussehen und kann auch Messungen vornehmen.

Durch das Papier leuchten habe ich schonmal gemacht (siehe oben das 
Video vom "Linearservo"). Nur hier ist das keine Option. Ich kann weder 
durchleuchten, noch einen Drehgeber auf die Achse stecken.

von He. (Gast)


Lesenswert?

Thorsten S. schrieb:
> o ein Interpolator erfordert allerdings einigen Aufwand, z.B. eine
> (selbstlernende) positionsabhängige Offset- und Amplitudenkorrektur,
> damit die interpolierte Auflösung konsistent ist.

Auf so etwas wollte ich hinaus. Die analogen Printstufen sind ja kaum 
sinnvoll zu reproduzieren, kann ich mir denken. Ja ist jeder Dekoder in 
der Produktion anders. Bzw es braucht einen aufwändigen Prozess.

Yalu X. schrieb:
> Encoder mit Sin/Cos-Ausgängen gibt es schon lange. Allerdings arbeiten
> sie m.W. nicht mit Graustufen, sondern mit ganz normalen Strichscheiben,
Ja klar, die benutzen wir auch. Ich habe nur keine Erfahrung mit den 
o.g. gedruckten Sinusfunktionen.


> Für die Generierung des Sin/Cos-Signals wird der "Weichzeichnereffekt"
> genutzt, der dadurch entsteht, dass der abtastende Lichtstrahl nur
> endlich stark fokussiert wird,
Wir benutzen klassische Encoder-Scheiben, bestimmen die Position mit 
allerlei Fehlerkorrekturen aufs Mü genau und geben dann einen Sin-Cos 
aus, wo benötigt. Die meisten Anwendungen brauchen aber einen digitalen 
Ausgang, weil der am Ende in die Regelung geht.

Die digitalen Encoderscheiben sind einfach besser interpretierbar und 
lassen sich nicht von Alterung der Laser-LEDs oder der Scheibe 
beeindrucken.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tobias K. schrieb:
> Ich meinte eigentich, dass ich es nur um ein paar Minuten pro Sekunde
> drehen lassen will.
> Dann sehe ich wie die Flanken aussehen und kann auch Messungen vornehmen.
Ja, siehst du, das meinte ich: wie willst du garantieren, dass der 
"DRehmechnismus" nicht unrund läuft? Fazit: du musst gleichjzeitig und 
parallel dazu den Rundlauf messen.

> Dann sehe ich wie die Flanken aussehen und kann auch Messungen vornehmen.
Mir kommt da in den Sinn, dass der, der nur (s)einen Hammer kennt, damit 
letztlich auch die Schraube ins Holz drischt.

Wenn du einen entsprechend genauen fertigen Drehgeber nimmst, der bei 
jeder Winkelsekunde (oder noch feiner) einen Impuls ausgibt, mit dem du 
dann deinen ADC triggerst und dessen Wandlungswert in eine Datei 
schreibst, dann kannst du hinterher eine Kurve darstellen, die völlig 
unabhängig von jeder Geschwindigkeitsschwankung ist. Du darfst die 
Scheibe nur nicht so schnell drehen, dass der ADC nicht mehr hinterher 
kommt.

von Tobias K. (tobey08)


Lesenswert?

Lothar M. schrieb:
> wie willst du garantieren, dass der
> "DRehmechnismus" nicht unrund läuft?

Mir kam die Idee, dass ich das mit einem Luftstrom machen könnte. Kann 
man fein einstellen, und selbst ein pulsierender Luftstrom - oder wenn 
es ein Übergang zwischen luftschaufeln gibt - würde die Trägheit der 
Scheibe glätten.

So ein teuerer Drehgeber ist keine Option hier.

von Tobias K. (tobey08)


Lesenswert?

Und ich wunder mich, warum der Kurvenverlauf im dunklen Bereich nicht 
proportional ist zum Druck:
Zum einen Kann der Drucker kein perfektes Schwarz, und zum anderen ist 
es wieder die Physik: 
https://www.allaboutcircuits.com/technical-articles/understanding-photovoltaic-and-photoconductive-modes-of-photodiode-operation/

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Tobias K. schrieb:
> Wer könnte mir sowas machen, oder hat eine Idee womit man das machen
> kann?
Mit Photoshop im HDR-Modus, einem guten Drucker eines Printservices 
einer Druckerei mit Übergabe als 16 Bit TIFF.

Die Vorlage ist eher weniger anspruchsvoll. Dein Problem ist der 
Ausdruck. Mit eigenem Drucker hast du ein Offset-Problem mit doppelten 
Sinn. Der Sinus wird nicht perfekt um die Nullinie liegen und das 
Schwarzweiss wird für manche Graustufen gedithert. Das sollte also 
perfekt gedruckt werden und gezielt genutzt werden, also ein 
Schwarz-Weissmuster verwenden, welches durch die optische Unschärfe als 
Graustufe abgebildet wird.

Da muss man sich aber fragen, wie hoch die Auflösung werden kann und 
wieviele LEDs denn beteiligt sein sollen. Durch die Ungenauigkeiten wird 
man keine absoluten Werte verarbeiten können, sondern einen Sinus hinein 
modulieren. Das erfordert aber einige Punkte. Wenn man die LEDs so 
anordnet, dass mit 4 Punkten ein kompletter Sinus mit je 90° 
eingeschlossen wird, lässt sich der DC Anteil weginterpretieren. Nach 
Abzug des Offsets, einen Sinus-Fit anlegen.

Beitrag #7398968 wurde vom Autor gelöscht.
von Tobias K. (tobey08)


Angehängte Dateien:

Lesenswert?

Habe wieder etwas dran gearbeitet:

Mittels Polynomischer Regression habe ich nun das signal mehr oder 
weniger gut in ein dreiecksignal umgewandelt, das direkt proportional 
zum Drehwinkel ist. Das Problem ist, dass der Druck zwar Linear in 
Graustufen umgewandelt ist, aber der Drucker das nicht linear hinbekommt 
bzw. die Diode am Ende das nicht linear weiter gibt. Auch das Papier ist 
keine perfekt gleichmäßig weiße Fläche. So dass es Abweichungen zwischen 
den Einzelnen Verläufen gibt (Punkt C).

Die Kurven zeigen einen Sensor, wobei die Werte bei den Extremwerten 
(Punkt B) nicht verwendet werden können. Hier muss noch ein zweiter 
Sensor verwendet werden, der 180° phasenversetzt ist.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Yalu X. schrieb:
> Diese Begrenzung ist dann aber nicht so sauber definiert wie mit
> einer Blende und verringert damit die Genauigkeit der ermittelten
> Winkelposition.

Das kommt auf das Signal/Rausch-Verhältnis an.

von Tobias K. (tobey08)


Lesenswert?

Es gibt neues zum Projekt:

Es wurde ja vorgeschlagen, den Sensor mit Balken zu machen. Da es aber 
auf reflektion beruht, und sehr wenig platz ist, ist das ganze nur mit 
erheblichen Resource zu bewerkstelligen.

Der Druck ist nach großes Problem (siehe den Druckbogen, der im Video 
darunter liegt). Ein weiteres Problem ist auch, den Druck auf der Achse 
konzentrisch zu befestigen, ebenso wie die Streifenblende. Hier geht es 
um Zehntel. Das Muster sollte im Video so aussehen wie im Ursprungspost.

Es wird wohl darauf hinauslaufen, die Auflösung zu verringern, oder 
meine ursprünglich angedachte Methode weiter zu entwickeln.

Video ist auf Youtube:
https://www.youtube.com/watch?v=8J2-8np2bp8

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Tobias K. schrieb:
> Video ist auf Youtube:
> https://www.youtube.com/watch?v=8J2-8np2bp8

Die beiden Scheiben sind nicht richtig zentriert.

von Tobias K. (tobey08)


Lesenswert?

Rainer W. schrieb:
> Die beiden Scheiben sind nicht richtig zentriert.

Ja, das ist aber auch genau das Problem was ich versucht habe zu 
erklären.

Ich habe jetzt etwas herausgefunden!
Wenn man die Balken auf einem Spiegelnden untergrund druckt, braucht man 
keine Strichblende. Die Auflösung ist das zwar noch nicht so wie ich es 
gern hätte, aber das ist wieder ein Schritt in die richtige Richtung.

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.