mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Drehgeber mit "Gangschaltung" = Beschleunigung


Autor: Rudi D. (rulixa)
Datum:
Angehängte Dateien:

Bewertung
-2 lesenswert
nicht lesenswert
Für den Code des Drehgebers, der sehr gut funktioniert:
Beitrag "Hilfe zu Drehencoder-Auswertung nach Wiki"
Referenz auch von "Beschleunigung":
Beitrag "Dynamische "Beschleunigung" bei Encoder-Eingabe"

Der Thread ist schon sehr alt.

Möchte gerne die händische Stepgröße für die Frequenzwahl 
automatisieren.
Deshalb die Referenzen. µC ist t2313 bzw 4413 in Assembler.

Plan: Dreht man schnell, z.B. 6 Pulse soll das Frequenzincrement in den 
"nächsten Gang" schalten. Warum kann man s.o. lesen.

Der DDS geht von 1 Hz bis 31 MHz, deshalb Stepgrößen von
1, 10 , 100, 1000, 5000, 9K, 10K, 100K, 1M,  unter anderen wegen des 
MW-Rasters.
Die Stepgröße soll sich aber nach einer praktikablen Zeit wieder 
reduzieren.
Jeweils um eine Stepgröße. So kann es sein, dass es 9 "Gänge" braucht 
bis man wieder auf 1 Hz landet. Z.B. also 9 * 0,3 sec.

Anbei die Schaltung. Funktionen siehe näheres im Radiomuseum.org.
https://www.radiomuseum.org/forum/gemeinschaftsprojekt_dds_heimsenderlein.html
Den Code will ich nicht veröffentlichen um chin. Nachbauten zu 
vermeiden.

Es wird Timer 0 für den Drehgeber-Interrupt verwendet.
Timer 1 wäre an sich noch frei für das z.B. 300 ms Rückkehrtiming.
Es kann aber auch der PC-RX Eingang entfallen, wenn das mit Timer 1 
nicht gelingen sollte und ein ext. Impuls dort angelegt werden könnte.

Für Anregungen wäre ich dankbar. Bin noch nicht sicher, ob für das 
"hinaufschalten" nicht noch ein Timer nötig sein wird, oder ich warte 
ein wenig, bis ein Drehimpuls ausgeführt wird. Aber dann wäre das 
Display wohl träge?

Autor: Jörg K. (joergk)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
Rudi D. schrieb:
> Den Code will ich nicht veröffentlichen um chin. Nachbauten zu
> vermeiden.

Und was haben wir dann davon?

Jörg

Autor: rulixa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es geht ja nur um rauf und runterschalten. Das ist dann für alle 
verwendbar.

Autor: Falk B. (falk)
Datum:

Bewertung
7 lesenswert
nicht lesenswert
@Rudi D. (rulixa)

>Möchte gerne die händische Stepgröße für die Frequenzwahl

Das hieß früher (tm) Schrittweite.

>automatisieren.
>Deshalb die Referenzen. µC ist t2313 bzw 4413 in Assembler.

Jaja, Hardcore at it's best.

>Der DDS geht von 1 Hz bis 31 MHz, deshalb Stepgrößen von
>1, 10 , 100, 1000, 5000, 9K, 10K, 100K, 1M,  unter anderen wegen des
>MW-Rasters.

Klar.

>Die Stepgröße soll sich aber nach einer praktikablen Zeit wieder
>reduzieren.

Auch klar.

>Anbei die Schaltung.

Na vielen Dank auch! Hast du dir DIESEN Schaltplan mal selber 
angeschaut!
Siehe Bildformate!!!

>Funktionen siehe näheres im Radiomuseum.org.
>https://www.radiomuseum.org/forum/gemeinschaftspro...
>Den Code will ich nicht veröffentlichen um chin. Nachbauten zu
>vermeiden.

Die Chinesen sagen.

Den Meister kopieren ehrt den Meister.

Und selbst wenn sie dich kopieren, wo liegt das Problem? Hast du vor, 
mit dem Verkauf dieser Schaltung reich zu werden?

>Es wird Timer 0 für den Drehgeber-Interrupt verwendet.
>Timer 1 wäre an sich noch frei für das z.B. 300 ms Rückkehrtiming.

Dazu braucht es keinen 2. Timer, das kann man LOCKER mit einem Timer und 
minimalem Hirnschmalz abdecken. Naja, in ASM ist es etwas aufwändiger 
;-)

>Es kann aber auch der PC-RX Eingang entfallen, wenn das mit Timer 1
>nicht gelingen sollte und ein ext. Impuls dort angelegt werden könnte.

Mein Gott, was für ein Drama.

>Für Anregungen wäre ich dankbar.

Versuch's erstmal mit lesbaren Schaltplänen.
Dann setzt dich mit deiner Chinakopieparanoia auseinander und sieh ein, 
daß die so oder so unbegründet ist.
Und denk mal über den Sinn und Zweck eines derartigen Beitrags OHNE 
Quelltext nach . . .

> Bin noch nicht sicher, ob für das
>"hinaufschalten" nicht noch ein Timer nötig sein wird,

Nö, das kann man spielend in Software mit einem Timer machen.

> oder ich warte
>ein wenig, bis ein Drehimpuls ausgeführt wird. Aber dann wäre das
>Display wohl träge?

Was hat ein Display mit einem beschleunigten Drehgeber zu tun? So gut 
wie gar nichts, denn die Anzeige auf einem LCD ist sinnvollerweise 
maximal vom Drehgeber entkoppelt. Sprich, egal wie wild gedreht wird, 
die Anzeige wird je nach Anwendung nur mit 2-10 Hz aufgefrischt.

Beitrag #5458949 wurde von einem Moderator gelöscht.
Autor: Rudi D. (rulixa)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Danke für die z.T. ironischen Bemerkungen.
Die helfen mir nicht weiter.

Der komplette Code bringt auch nichts, da Display, Fixkomma, 
Wobbelfunktion, Offsetfrequenz, etc. nichts mit dem Problem der 
automatisierten Schrittweitenumschaltung zu tun hat.

Habe gerade gelesen, dass Hannes Lux, von dem ich die Drehgeber SW 
verwendet habe nicht mehr unter uns weilt.

Bei mir reagiert das Display sofort auf jeden Drehimpuls. Dein letzter 
Satz könnte mir weiterhelfen.

Vielleicht hat jemand das Problem schon gelöst.

Beitrag #5458961 wurde von einem Moderator gelöscht.
Autor: Falk B. (falk)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
@Rudi D. (rulixa)

>Danke für die z.T. ironischen Bemerkungen.
>Die helfen mir nicht weiter.

Tja, Pech gehabt, wenn du nicht mal daraus ein paar Denkanstöße ableiten 
kannst.

>Der komplette Code bringt auch nichts, da Display, Fixkomma,
>Wobbelfunktion, Offsetfrequenz, etc. nichts mit dem Problem der
>automatisierten Schrittweitenumschaltung zu tun hat.

Dann schreib ein stark vereinfachtes Programm, das nur die 
Drehgeberbeschleunigung und Anzeige enthält.

>Habe gerade gelesen,

Wo denn?

> dass Hannes Lux, von dem ich die Drehgeber SW
>verwendet habe nicht mehr unter uns weilt.

>Bei mir reagiert das Display sofort auf jeden Drehimpuls.

Was schon mal nicht sinnvoll ist.

> Dein letzter Satz könnte mir weiterhelfen.

Na immerhin.

>Vielleicht hat jemand das Problem schon gelöst.

Sicher. Aber das ist doch DEINE Diskussion, bei der DU DEINE Lösung der 
Welt vorstellen willst.

Autor: Rudi Rüssler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rudi D. schrieb im Beitrag #5458961:
> Rudi Rüssler schrieb im Beitrag #5458949:
>> ...wenn man Vollblut-Elektroniker an den PC lässt UND sie auch noch
>> meinen uC Programmieren zu müssen.
>> $FACEPALM
>
> Und hilft mir das weiter? Bleib sachlich!

Na dann spendier ne ordentliche Runde HAM Spirit !
Nix da mit Closed Source welche mit FoRUMshilfe enststehen soll...

Autor: Johnny B. (johnnyb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rudi D. schrieb:
> µC ist t2313 bzw 4413 in Assembler.

Ich verstehe nicht, wie man sich heutzutage noch Tage/Wochenlang mit so 
einem µC mit wenig Speicher und Peripherie herumquälen kann.
Müsste ich das machen, würde ich den kleinsten STM32 nehmen und die 
Firmware z.B. mittels FreeRTOS aufbauen. Da kannst Du Dir dann praktisch 
soviele unabhängige Threads und SW-Timer machen wie Du willst, bist 
schnell fertig und das ganze ist auch noch problemlos erweiterbar.
Von den Kosten her ist z.B. ein ATtiny84 etwa gleich teuer wie ein 
kleiner STM32F051.

Autor: m.n. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johnny B. schrieb:
> Von den Kosten her ist z.B. ein ATtiny84 etwa gleich teuer wie ein
> kleiner STM32F051.

Und den STM betreibst Du von 1,8 - 5,5 V?
Auch so, das brauchst Du nicht.

Rudi D. schrieb:
> 1, 10 , 100, 1000, 5000, 9K, 10K, 100K, 1M,  unter anderen wegen des
> MW-Rasters.

Diese Dynamik willst Du nicht haben; damit läßt sich kein Gerät 
bedienen!

Steht hier in der Codesammlung und ist in China weit verbreitet: 
Beitrag "Schrittmotor als Drehgeber mit Dynamik, AVR"

Autor: Rudi D. (rulixa)
Datum:
Angehängte Dateien:

Bewertung
-2 lesenswert
nicht lesenswert
>>Habe gerade gelesen,
>
> Wo denn?

Hier: http://www.hanneslux.de/  gleich am Beginn der Seite. Sehr schade 
und traurig.
>
>> dass Hannes Lux, von dem ich die Drehgeber SW
>>verwendet habe nicht mehr unter uns weilt.
>

> Sicher. Aber das ist doch DEINE Diskussion, bei der DU DEINE Lösung der
> Welt vorstellen willst.
Ich will nicht MEINE Lösung vorstellen, wenn jemand schon eine Lösung 
gefunden hat.
Der Welt will ich schon gar nichts vorstellen, sonst hätte ich ja den 
Code des DDS veröffentlicht. Ich will nur die Bedienung vereinfachen.

Im Bild ein sehr schöner Nachbau des Gerätes, das oft nachgebaut wurde. 
Die digitale Wobbelfunktion ist für Radiofreunde, neben der bis m=100% 
Modulation, gut zu gebrauchen. Der NF-Ausgang ist mit Durchheulfunktion 
ggfs. anwählbar ausgestattet.
Dann noch ein besseres Bild der Schaltung

Bis jetzt scheint niemand im Forum so was gelöst zu haben, jedenfalls 
nicht jene, die bis jetzt geantwortet haben.

Na gut, echte Unterstützung des schon gelösten Problems kriege ich eben 
nicht. Schade. Also noch mal dasselbe, obwohl unnötig, selbst lösen.

: Bearbeitet durch User
Autor: Erwin D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rudi D. schrieb:
> Bis jetzt scheint niemand im Forum so was gelöst zu haben
                    -------

Rudi D. schrieb:
> Na gut, echte Unterstützung des schon gelösten Problems kriege ich eben
                              ---------------------------
> nicht

Wie jetzt? Entscheidungen fallen manchmal schwer... ;-)

Autor: Der Andere (Gast)
Datum:

Bewertung
6 lesenswert
nicht lesenswert
Rudi D. schrieb:
> Vielleicht hat jemand das Problem schon gelöst.

Du willst also Code kopieren, hast aber ein Problem damit daß jemand 
anderes (die Chinesen) deinen Code kopieren könnten?

Das ist schon irgendwie dreist.

Autor: Tek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube so eine automatische Umschaltung der Schrittweite führt eher 
zu Frust beim bedienen. Wenn ich an einem Drehgeber drehe gehe ich 
eigentlich von einer konstanten Schrittweite aus, wenn die nun plötzlich 
umschalten würde fänd ich das verwirrend... vor allem wenn ich dann auch 
noch drauf warten müsste das sie wieder zurück schaltet um die letzten 
hz genau einzustellen.

Autor: Rudi D. (rulixa)
Datum:

Bewertung
-4 lesenswert
nicht lesenswert
Falsch gedacht. Wenn es eine Lösung gibt ist sie ja öffentlich hier im 
Forum.

Autor: georg (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Tek schrieb:
> wenn die nun plötzlich
> umschalten würde fänd ich das verwirrend...

Und bei deiner Maus verwirrt dich das nicht?

Georg

Autor: m.n. (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Rudi D. schrieb:
> Wenn es eine Lösung gibt ist sie ja öffentlich hier im
> Forum.

Lesen kannst Du?

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
4 lesenswert
nicht lesenswert
Also, ich verwende so eine Beschleunigung eigentlich überall, wo mehr 
als 10 Werte einzustellen sind. Und nach dem 2. oder 3. Drehen hat 
bisher jeder mitbekommen, dass der Geber bei schnellerem (nicht 
längerem!) Drehen den angezeigten Wert schneller ändert.

So kann ich z.B. die über 500 DMX-Adressen oder einen der 127 Midi-Werte 
recht locker und intuitiv ohne "Kurbeln" zielgenau einstellen.

Bei mir geht das so:
http://www.lothar-miller.de/s9y/archives/71-Drehgeberauswertung-mit-Beschleunigung.html

Autor: Rudi D. (rulixa)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Erwin D. schrieb:

>> Na gut, echte Unterstützung des schon gelösten Problems kriege ich eben
>> nicht
>
> Wie jetzt? Entscheidungen fallen manchmal schwer... ;-)

Hi Erwin erfindest du das Rad gerne NEU?
Was sinnvolles zu antworten wäre zielführender.

Autor: Rudi D. (rulixa)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
@Lothar

Vielen Dank, werde es genau studieren.
Endlich eine Gute Antwort.

Werde berichten!

Autor: Äxl (geloescht) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes ist tot! Scheisse...
Mein tiefempfundenes Beileid. Auch wenn es mir jetzt erst zu Ohren 
gekommen ist, so ist es aufrichtig und ernst gemeint. Ruhe in Frieden

Autor: Erwin D. (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Rudi D. schrieb:
> Erwin D. schrieb:
>
>>> Na gut, echte Unterstützung des schon gelösten Problems kriege ich eben
>>> nicht
>>
>> Wie jetzt? Entscheidungen fallen manchmal schwer... ;-)
>
> Hi Erwin erfindest du das Rad gerne NEU?
> Was sinnvolles zu antworten wäre zielführender.

Dich darauf hinzuweisen ist schon sinnvoll, daß du einerseits schreibst, 
daß bisher niemand das Problem gelöst hätte (was ja durchaus nicht so 
ist, Lösungen wurden schon viele im Forum vorgestellt) und andererseits 
sprichst du vom "schon gelösten Problem".
Die Entscheidung zwischen beiden Aussagen scheint dir schwer zu fallen.

Autor: Rudi D. (rulixa)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Rudi D. schrieb:
> @Lothar
>
> Vielen Dank, werde es genau studieren.
> Endlich eine Gute Antwort.
>
> Werde berichten!

Bei mir läuft der Interrupt auch mit ca 1 ms. Verwende eine LOT zur 
Auswertung der Richtung bzw nicht gedreht.
Auch die Abfrage, ob die neue Info schon abgeholt wurde, die ja bei Dir 
als inc/dec Info verwendet wird.

Eine Tabelle mit den Schrittweiten gibt es natürlich auch bei mir.
Werde die Lösung, basierend auf Deiner Lösung berichten.

An Alle: Weitere Info a la Lothar willkommen. Alle anderen bitte um 
Zurückhaltung um den Thread nicht unnötig zu verlängern.

Autor: Jobst Q. (joquis)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Ich würde keine Gänge festlegen, zwischen denen umgeschaltet wird, 
sondern es analog nach Geschwindigkeit inkrementieren/dekrementieren.

Also die Zeit seit dem vorherigen Impuls messen und eine Konstante durch 
diese Zeit dividieren.

Wert += richtung * (ZEITKONSTANTE / (zeitdifferenz + 1)+1);

So kann man mit der Drehgeschwindigkeit beliebig zwischen Fein- und 
Grobeinstellung variieren.

Autor: Rudi D. (rulixa)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Jobst Q. schrieb:
> Ich würde keine Gänge festlegen, zwischen denen umgeschaltet wird,
> sondern es analog nach Geschwindigkeit inkrementieren/dekrementieren.
>
> Also die Zeit seit dem vorherigen Impuls messen und eine Konstante durch
> diese Zeit dividieren.
>
> Wert += richtung * (ZEITKONSTANTE / (zeitdifferenz + 1)+1);
>
> So kann man mit der Drehgeschwindigkeit beliebig zwischen Fein- und
> Grobeinstellung variieren.

Danke. Ist ähnlich Lothar.
Das einzige, was noch zu bedenken ist, ist der Variationsbereich, da ich 
von 1 Hz bis 1 MHz Schrittweite einstellen will. Vielleicht mach ich's 
nicht additiv sondern multiplikativ, aber krumme Schrittweiten will ich 
auch nicht.
Vielleicht doch über eine LOT, wo nur gewünschtw Steigerungsschritte 
vorkommen. Das Integral über alle Ändeungen ist dann die aktuelle 
Schrittweite, die eh im Display bisher auch steht.

Es wird schön langsam. Man wird sich, wie Lothar schreibt gewöhnen 
müssen, da schnell oder langsam bzw normal schnell ein Zeitfenster 
vorgibt.

Autor: Der Andere (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Rudi D. schrieb:
> LOT

Du brauchst dafür kein Lot, es gibt da nichts zu löten

:-) Duck und weg

Autor: Falk B. (falk)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
@ Rudi D. (rulixa)

>Vielleicht doch über eine LOT,

Was ist bei dir ein LOT? Oder meinst du eher LUT?

Look Up Table?

Autor: Rudi D. (rulixa)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Falk B. schrieb:
> @ Rudi D. (rulixa)
>
>>Vielleicht doch über eine LOT,
>
> Was ist bei dir ein LOT? Oder meinst du eher LUT?
>
> Look Up Table?

ja, ein Tippfehler. Ist mir auch schon aufgefallen.

Autor: Rudi D. (rulixa)
Datum:
Angehängte Dateien:

Bewertung
-1 lesenswert
nicht lesenswert
Anbei die neue ISR für Encoder mit Beschleunigung in asm für AVR tiny.
Basis ist die ISR in C von Lothar.

Sie arbeitet mit einer LUT, da man Drehgeber mit 1 oder 2 Impulsen je 
Rastung verarbeiten kann.
Gray code der das leistet kenne ich nicht.

Damit bedanke ich mich bei Lothar, der mir geholfen hat und Jenen, die 
Hilfe angeboten haben. Sinnvolle Kommentare sind willkommen. Akismet, 
wie z.B. in Wordpress, hat dieses Forum leider nicht.

Die Tabs sind in der Formatierung im Forum leider nicht in Linie.

: Bearbeitet durch User
Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rudi D. (rulixa)

>encoder_accel.asm (3,93 KB, 9 Downloads) | Codeansicht

Glaubst du ernsthaft, daß dieses Fragment irgendwem nützt?
Wenn man sowas weitergeben will, sollte man wenigstens ein MINIMALES, 
VOLLLSTÄNDIGES Beispiel mitliefern. Eine ISR allein ist das mal sicher 
NICHT.

>Sie arbeitet mit einer LUT, da man Drehgeber mit 1 oder 2 Impulsen je
>Rastung verarbeiten kann.
>Gray code der das leistet kenne ich nicht.

Jaja, schön geschwätzt. Weißt du überhaupt, wovon du redest?

>Die Tabs sind in der Formatierung im Forum leider nicht in Linie.

Weil man auch TABs aus seinem Quelltext besser entfernt, zumindest dann, 
wenn man diesen hier im Forum anhängt. Das können die meisten Editoren 
auf Knopfdruck.

Autor: Rudi D. (rulixa)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Hi Falk
Danke für Deine sehr nützlichen Kommentare.

Du solltest Doch lesen wofür ich das Forum um Hilfe bat.

Lothar hat mir geholfen. Du nicht.
Lothars Fragment habe ich als AVR asm Fragment zurückgegeben.

Ich konnte mit einem Fragment etwas anfangen. Viele andere hoffe ich 
auch.

Autor: Jürgen S. (engineer) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das mit der Gangschaltung ist ein interessantes Thema. Ich habe jetzt 
nicht alles genau gelesen, aber nur soviel:

Da gibt es schon eine Reihe von unterschiedlichen Lösungen in der 
Industrie, da musst Du keine Angst haben, etwas auszuplaudern. Es kommt 
halt darauf an, wie viele Schaltung zu da hinein investieren möchtest.

Ich habe das so gelöst, dass die Beschleunigung und die Geschwindigkeit, 
die aus der Drehbewegung ermittelt werden, in diskrete Tiefpassfilter 
laufen und das aktuelle Ergebnis mit den Schritten multipliziert wird.

Damit ist das Verhalten kontinuierlich, es gibt keine Stufen und es ist 
vom Bediener leicht erlernbar. (und es wird ein Patent umgangen :-) )

Je länger, öfter und schneller jemand  "hektisch" am Encoder werkelt, 
desto mehr "mehr" wird hinzuaddiert. Sobald er langsamer wird, fällt der 
Multiplikator ab und es wird weniger "mehr" addiert. Es ist im Prinzip 
ein Epander (wie man in der Audiotechnik sagt) "zweiter Ordnung", wenn 
man das so nennen kann. Es ist allerdings einer mit unendlicher 
Verstärkung. Es gibt aber ein reales Limit infolge der 
Drehgeschwindigkeit.

Für deinen Bereich ist das aber wahrscheinlich noch zu fein. Du könntest 
daher noch eine Dimension hinzunehmen, also die Beschleunigung der 
Beschleunigung mit draufaddieren. Entscheidend ist, dass der Status der 
Geschwindigkeit eine Weile "gespeichert" bleibt, damit die 
unwillkürlichen Pausen zwischen zwei schnellen Bewegungen, die man 
ungewollte machen muss, überbrückt werden. Diese müssen ab einer 
gewissen Geschwindigkeit überlesen werden. Diese einfache Lösung ist im 
Bild dargestellt.

Du könntest bei jeder Vorwärtsdrehperiode, die mindestens 90% der 
Impulsdichte des vorherigen Pakets hat, den Multiplikator des Inkrements 
erhöhen und bei weniger, als 50% verringern.

Autor: Jürgen S. (engineer) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Zu dem Bild: Man kann den Werten noch einen TP hinzufügen, der eine 
Trägheit simuliert, dann kann die Regler träge machen und mit dem Finger 
vorwärts und rückwärts anschnippen, damit sie von selber rollen. Das ist 
insbesondere bei touch screens hilfreich. Hier ist das realisiert:

Die Drehgeber aus der MIDI-Konsole sind virtuell nachgebildet und haben 
eine "Masse". Gemäß der Fingerbewegung auf dem Schirm werden sie 
angeschubst und rollen vorwärts mit beschleunigter Interpretation. 
Zusätzlich können sie aus Informationen der realen Konsole gesteuert 
werden, deren Drehgeber wie oben angegeben ausgewertet werden. Hilfreich 
ist da ein diskretes Filter, das ab einer gewissen Geschwindigkeit 
überproportional ansteigt und ein Halteglied hat.

Für die o.b. Anwendung würde ich es so machen, dass das Halteglied im 
Wert nicht wesentlich abnimmt, also ein einmalig schnell angeworfener 
Regler sehr lange weiterblättert, bis der Encoder wieder angefasst wird. 
Man lernt das sehr schnell, wie man den zu bedienen hat. Ich brauche nur 
noch 3-4 Bewegungen um rasch alle Werte zwischen 0 und 8191 
einzustellen.

: Bearbeitet durch User
Autor: Rudi D. (rulixa)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
@Jürgen
Danke für die vielen Inputs.

Die Plattform von Dir dürfte erheblich über einem tiny 4313 liegen.

Was will ich, ist an sich im Theadstart schon gesagt:

Es gibt einen DDS von 1 Hz bis 31 MHz. Daneben hat er viele andere 
Funktionen, siehe Thread mit Link aufs radiomuseum.org.

So, wie mein Berater Lothar in einer Liste auf und ab geht, auch in 
größeren dynamisierten Schritten, will ich die Frequenz auch in größeren 
Schritten durcheilen können, was mit Hilfe des Forums nun vorliegt. Es 
hat eine Erweiterung zu Lothar gegeben, da die Schrittweite aus einer 
Tabelle entnommen wird, da die Schritte für den AD950 krumme Werte sind.
Es wird in 10er Schritten inc/decrementiert.

Was mir gefällt ist die "Masse", was zumindest sehr professionell 
aussieht.
Die Haltezeit wird sich noch herausstellen, auch was ist "schnell 
drehen".
Jetzt sind, fürs erste,  die Werte von Lothar übernommen.

Das was ich vom Forum als Input bekam, habe ich jedenfalls angepasst 
wieder zurückgegeben.

Vielen Dank.

Autor: Ronald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rudi,

schön das Du die Funktion dem "Heimsender" noch hinzugefügt hast, wir 
haben ja schon kurz über Mail miteinander gesprochen.
Ich denke irgendwann sehen (lesen) wir uns im Radiomuseum wieder! Ich 
habe meine Heimsenderchen wie schon gesagt auf PICs in C und mit dem 
9833/34/35 realisiert, ein AD9850 liegt hier auch noch ungenutzt rum, 
aber der Bausatz aus dem Radiomuseum hat ja nicht wenige Nachbauer! 
Deshalb DANKE!
Aktuell hänge ich (die Freizeit fehlt) noch an meinem Normenwandler, der 
auf STM32 realisiert ist und der dann über UKW, (W)LAN ein Radioprogramm 
empfängt und per SDR (also alles in Software auf dem Controller 
realisiert) in ein AM, SSB und FM Signal wandelt und von 0 bis 108 MHz 
aussenden kann. Das ist dann sicher ein interessantes Projekt für das 
Radiomuseum, dort sind sicher mehr "Radiologen" unterwegs als hier. 
Vielleicht findet sich dort noch ein Platinendesigner der das ganze als 
Bausatz weiterentwickelt.

Danke auch an Jürgen für die Ideen im Umgang mit Encodern. Meiner 
Meinung nach reicht eine Idee völlig aus um weiterzukommen, da muss es 
nicht einmal einen Code-Teil geben wie von Lothar oder Rudi eingefügt, 
man kann sich das alles leicht selbst codieren.

73 und 55

Autor: Tobias N. (technick2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johnny B. schrieb:
> Ich verstehe nicht, wie man sich heutzutage noch Tage/Wochenlang mit so
> einem µC mit wenig Speicher und Peripherie herumquälen kann.
> Müsste ich das machen, würde ich den kleinsten STM32 nehmen und die
> Firmware z.B. mittels FreeRTOS aufbauen.
Eine Echtzeit-Software als BS für eine Anwendung im Bereich 
Drehknopfinterpretation?

Autor: georg (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Tech N. schrieb:
> Eine Echtzeit-Software als BS für eine Anwendung im Bereich
> Drehknopfinterpretation?

Natürlich - aber unbedingt mit Internet-Anschluss, und die letzte 
Stellung wird in der Cloud gespeichert.

Georg

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier findet Ihr Gedanken zu einem professionellen Drehgeber 
(Rohde&Schwarz-Patent) mit echter Schwungmasse und magnetischer Rastung:
Beitrag "Schwungrad-Drehknopf"
Beitrag "[S] haptisch hochwertiger Drehgeber"
Beitrag "Drehimpulsgeber"

Ich würde es so machen:
Knopf kurz drücken: Umschalten in Schrittweite-Selekt-Mode additiv
 nun durch Drehen die gewünschte Weite einstellen, dann nochmal drücken

Knopf lang drücken: Umschalten in Schrittweite-Selekt-Mode multiplikativ
 nun durch Drehen den gewünschten Faktor einstellen, dann nochmal 
drücken

Da man die Drehknöpfe mit Schwungmasse sowohl sehr schnell und weit als 
auch sehr genau bedienen kann, braucht man evtl. weniger Schrittweiten.

Autor: Jobst Q. (joquis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eProfi schrieb:
> Ich würde es so machen:
> Knopf kurz drücken: Umschalten in Schrittweite-Selekt-Mode additiv
>  nun durch Drehen die gewünschte Weite einstellen, dann nochmal drücken
>
> Knopf lang drücken: Umschalten in Schrittweite-Selekt-Mode multiplikativ
>  nun durch Drehen den gewünschten Faktor einstellen, dann nochmal
> drücken
>

Viel umständlicher geht es kaum noch.

> Da man die Drehknöpfe mit Schwungmasse sowohl sehr schnell und weit als
> auch sehr genau bedienen kann, braucht man evtl. weniger Schrittweiten.

Man braucht überhaupt keine festen Schrittweiten. Man kann voll analog 
die Schrittweite aus der Drehgeschwindigkeit bzw dem Impulsabstand 
berechnen. Schnelles Drehen = Große Schritte,  langsames Drehen = 
Feineinstellung, sowie alles dazwischen.

Beitrag "Re: Drehgeber mit "Gangschaltung" = Beschleunigung"

Ein Schrittmotor ist ideal dafür, die Stärke der magnetischen Rasterung 
kann über die Belastungswiderstände eingestellt werden.

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jobst Q. schrieb:
> Feineinstellung, sowie alles dazwischen.

Kommt halt auf den Einstellumfang an. 6 Dezimalstellen möchte ich so 
nicht einstellen. Da braucht es intelligente Beschleunigung. Hatte ich 
in dem gelinkten thread ja auch skizziert.

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Man braucht überhaupt keine festen Schrittweiten.
Respekt, du kannst hellsehen, was andere brauchen.

Additiv z.B. 9 kHz Kanalschrittweite wurde bereits mehrfach erwähnt.

Multiplikativ z.B. für Tonerzeugung Faktor 2^(1/12)=1,059463 
(Halbtonschritt). Das läuft auf eine logarithmische Skala hinaus.

Wenn ich etwas ausführlich erkläre, heißt das noch lange nicht, dass es 
kompliziert ist. Es werden zwei Szenarien (additiv und multiplikativ) 
beschrieben, von denen man zu gegebener Zeit nur nur eines braucht.

Ein Schrittmotor ist schon brauchbar, aber für das 
Röhrenradio-Schwungmassen-Gefühl braucht man dann eine relativ große 
Schwungscheibe.
Wer noch nicht an einem damaligen Radio oder einem R&S-Gerät gedreht 
hat, kann sich das Gefühl schwer vorstellen. Mit einem beherzten Dreh 
kommt man von einem Skalenende zum anderen. Trotz der Schwungmasse 
(sieht aus wie eine Beilagscheibe mit knapp dem Knopfdurchmesser) baut 
der R&S sehr klein.

Eine Dynamik mit einzubauen ist auch bei dieser Lösung von Vorteil.
Klar, wenn ich schnell drehe, will ich schnell weiterkommen.

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
3 lesenswert
nicht lesenswert
eProfi schrieb:
> Multiplikativ z.B. für Tonerzeugung Faktor 2^(1/12)=1,059463
> (Halbtonschritt). Das läuft auf eine logarithmische Skala hinaus.
Da muss man aber Parameter und Frequenz trennen. Tonhöhen werden 
durchaus mit Notennummern vorgegeben. Auch in Sub-Skalierung. Für ein 
Klavier in 1-Cent-Stimmung wären z.B. gut 8000 "lineare" Schritte nötig. 
Das wird intern umgerechnet. Das hat auch mit den Schrittweiten bei der 
Interpretation der Drehung nicht direkt etwas zu tun. Ich kann auch mit 
jedem Schritt des Gebers um einen gewissen Faktor multiplizieren, um ein 
solches Verhalten zu erreichen.

Was er ja haben will sind unterschiedliche Fortschritte bei gleicher 
Drehung, also im linearen Betrieb z.B. einmal eine Dezimalstelle und in 
einem anderen Modus 10. Das erfordert ein Umschalten in einen anderen 
"Gang".

Ich würde - wie ich das ausgeführt habe - das kontinuierlich ohne 
Sprünge machen - ähnlich einem Automatikgetriebe das mit 
Fliehkraftregler arbeitet.

Autor: c-hater (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Falk B. schrieb:

> Dazu braucht es keinen 2. Timer, das kann man LOCKER mit einem Timer und
> minimalem Hirnschmalz abdecken.

So ist es. Man muss einfach nur etwas mehr können, als geklauten Code zu 
kopieren, nämlich: programmieren.

> Naja, in ASM ist es etwas aufwändiger

Ach watt, das ist doch trivialste Grundschleimscheisse. Das ist mit der 
sicheren Beherrschung eines wirklich sehr kleinen Teils der 
AVR8-Assemblersprache machbar und erfordert keinerlei fortgeschrittene 
Asm-Programmiertricks.

Ich sehe da keinen Mehraufwand verglichen etwa mit einer Umsetzung in C. 
Ist eher einfacher. Ja, mag sein, dass der nötige Quelltext eine 
einstellige Zahl mehr Zeilen hat. Dafür sind die dann aber auch kürzer. 
Und man muss nicht drüber nachdenken, was wohl der Compiler daraus 
machen wird. Die machen einfach genau das, was sie machen sollen. Ganz 
direkt.

> Was hat ein Display mit einem beschleunigten Drehgeber zu tun? So gut
> wie gar nichts, denn die Anzeige auf einem LCD ist sinnvollerweise
> maximal vom Drehgeber entkoppelt. Sprich, egal wie wild gedreht wird,
> die Anzeige wird je nach Anwendung nur mit 2-10 Hz aufgefrischt.

So isses. Schneller als ein Mensch es ablesen kann, muss kein Display 
mit neuen Inhalten befüllt werden. Allenfalls kann es nötig sein, die 
alten in schnellerer Folge zu wiederholen. Das hat dann aber endgültig 
nix mehr mit dem Drehgeber zu tun.

Autor: Jobst Q. (joquis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen S. schrieb:
> Jobst Q. schrieb:
>> Feineinstellung, sowie alles dazwischen.
>
> Kommt halt auf den Einstellumfang an. 6 Dezimalstellen möchte ich so
> nicht einstellen. Da braucht es intelligente Beschleunigung. Hatte ich
> in dem gelinkten thread ja auch skizziert.

Wenn man einen sehr großen Bereich braucht,kann man die Schrittweite ja 
auch exponentiell aus der Geschwindigkeit berechnen.

Schrittweite = 1 << Geschwindigkeit;

Autor: Andreas F. (chefdesigner)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Warum nimmt man nicht einfach einen zweiten Knopf und stellt den Gang 
ein? Oder nimmt einen für die groben Änderungen und einen anderen für 
die kleinen?

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil man dann die ganze schöne Beschleunigungsmimik nicht bräuchte und 
es langweilig wäre :-)

Jobst Q. schrieb:
> Jürgen S. schrieb:
>> Jobst Q. schrieb:
>>> Feineinstellung, sowie alles dazwischen.
>>
>> Kommt halt auf den Einstellumfang an. 6 Dezimalstellen möchte ich so
>> nicht einstellen. Da braucht es intelligente Beschleunigung. Hatte ich
>> in dem gelinkten thread ja auch skizziert.
>
> Wenn man einen sehr großen Bereich braucht,kann man die Schrittweite ja
> auch exponentiell aus der Geschwindigkeit berechnen.
>
> Schrittweite = 1 << Geschwindigkeit;

So ähnlich mache ich es mit der Methode, wie weiter oben beschrieben. 
Nur glätte ich die Geschwindigkeit, damit ein gleichförmigeres Verhalten 
erzeugt wird und die Zwangspause, die man beim "Rückdrehen der Finger", 
die man einlegen muss, ohne sie zu wollen, keine Geschwindigkeit und 
damit keinen "Gang" verliert. Man muss da das Differenzial mit 
reinnehmen und das langsamer werden des Greifens der Person 
interpretieren, die ganz offensichtlich sieht, dass das Ergebnis sich 
dem Ziel annähert.

Beitrag #5514553 wurde vom Autor gelöscht.
Autor: Tobias N. (technick2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eProfi schrieb:
> Hier findet Ihr Gedanken zu einem professionellen Drehgeber
> (Rohde&Schwarz-Patent) mit echter Schwungmasse und magnetischer Rastung:

was man alles patentieren kann, wann man zuviel Geld in der Firma hat 
...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.