Auftrag für einen Controller

Hallo! Ich weiß nicht, ob ich hier in der richtigen Kategorie bin, daher bitte ggf. um Weiterleitung.
Ich bin Musiker und suche jemanden, der Erfahrung hat, schon Auftragssachen gemacht hat und einen kleinen Controller für meine Software bauen kann. Ich selbst habe leider keine Kenntnisse in Elektronik und Arduino.
Der Controller soll hauptsächlich aus einem hochwertigen Absolute Encoder mit mind. 100 Schritten bestehen (kein Incremental Encoder), den ich unendlich drehen kann, und der bei jeder Rotation die genaue Position des Drehreglers als serielles Signal ausgibt, das man z.B. in Arduino IDE im Serial Monitor ablesen kann. HID Befehle brauche ich nicht.
Dazu eventuell noch ein kleines Display, auf das ich Werte bzw. Strings schicken kann. Das Gehäuse soll bequem in einer Hand gehalten werden und der Drehregler dann mit der anderen Hand bedient werden können.
Danke für Eure Hilfe.

Wo ist das Datenblatt zu dem Encoder den du verwenden möchtest?

Auftragsarbeiten werden hier in Jobs and Paid Consultancy (englisch) gern entgegen genommen.
Die erste Frage ist die nach dem Budget.

Gruß Tommy

Das könntest du evtl. ändern.

@Whandall Ich habe momentan noch keinen konkreten Encoder, weil ich auch nicht weiß, welcher gut passen würde. Wie gesagt, die Auflösung sollte mind. 100 Schritte sein, außerdem sollte er keine Rastung haben und sich endlos drehen lassen. Auf den Encoder soll dann auch Drehknopf von ca. 5 cm Durchmesser montiert werden mit einer Delle, sodass er mit einem Finger drehbar wäre. Generell fände ich es gut, wenn die Person, die das zusammenbaut und programmiert, auch alle Bauteile selbst auswählt, weil ich da keine sinnvollen Vorschläge machen kann.

@Tommy56 Danke. Ich werde dann dort schreiben, wenn ich hier niemand finde. Wollte erstmal bei der deutschsprachigen Community anfragen... Bzgl. Budget: Der Controller soll sehr zuverlässig funktionieren und "bühnentauglich" sein. Andererseits so günstig wie eben möglich. Ich brauche keinen super-auflösenden 300 Euro Encoder mit 1000 Schritten. Ich werde aber soviel zahlen, wieviel eben notwendig ist...

Viel zu unkonkret.

Das wird aber eine teure Recherche, wenn das der Programmierer tun soll.

Viel Glück bei dem Projekt, für mich ist das nichts.

Bei einer Auftragsarbeit kommst du mit 300€ nicht weit. Da nimmst du besser die 1000 Schritte in Kauf und gut ist.
Aber vielleicht hat ja jemand was ähnliches, das OK für dich ist, schonmal gebastelt und baut es dir zuliebe nochmal nach.

Diese Benutzung der Arduino Suchfunktion war kostenfrei. :upside_down_face:

@Whandall Danke, den habe ich auch schon gesehen. Ich kenne mich aber nicht aus und mich machte der Preis stutzig, weil die meisten absoluten Encoder, die ich gesehen habe, mindestens einen zweistelligen Betrag kosten.
Bitte habt Verständnis dafür, dass ich als jemand, der sich mit den Details nicht genau auskennt, nicht genau angeben kann, aus welchen exakten Bauteilen und welcher Hersteller der Controller genau bestehen soll. Wenn ich das könnte, dann würde ich den Controller ja vielleicht auch selbst zusammenbauen können... Stattdessen habe ich, denke ich, fürs Erste ziemlich genau beschrieben, was der Controller eben machen soll. Weitere Details können wir ja sehr gerne persönlich besprechen, falls sich hier jemand herablässt, einem ahnungslosen Musiker zu helfen. :grin:

@michael_x Die 300 Euro bezogen sich auf den Encoder alleine und nicht auf die Gesamtkosten der Auftragsarbeit.

Aber nicht neugierig genug, um dir einen davon zu besorgen?

Du meinst sicher "bei jeder Änderung der Stellung"?
(Ich würde da noch "oder einmal in der Sekunde" hinzufügen,
vielleicht mit einer Markierung, dass sich nichts geändert hat.)

Und ich würde es an deiner Stelle wirklich selbst versuchen.

  • setup: Serial geeignet konfigurieren
  • alle Pins (8 Encoder ~, 1 Taster?~) auf INPUT_PULLUP konfigurieren
  • alle Pins lesen und merken
  • loop: alle Pins lesen
  • bei Änderung in Position umrechnen (Tabelle?)
  • ermittelte Position printen
  • neue Zustände merken

Ist jetzt nicht so anspruchsvoll.

Dem ich mich anschliesse.
Aber ich kenn auch diejenigen auf der Bühne.
Die Ansprüche sind anders :wink:

Da kommen halt gerne Sonderwünsche hinzu, die man hätte erahnen müssen.

Das Jog-Dial könnte man 3D drucken, oder sich in China fräsen lassen.

sehe ich auch so oder ich übersehe was.

Was mich vom Anforderer noch interessieren würde, was dahinter steckt vom Anwender eine Absolut-Eingabe auf einem Drehknopf zu erwarten und warum z.B. ein incremental-Geber ausscheidet. Den kann man ja auch von 0-255 softwaremäßig drehen lassen.
Außer einem Anfangszustand nach Stromein (das man aber auch über EEPROM lösen könnte) fällt mir da nichts ein.

Das hätte ich auch gern erfahren von einem Anwender, der offensichtlich den Unterschied kennt. Ich fände inkrementell eigentlich besser: Interessiert mich, in welcher Stellung das Ding beim letzten Mal ausgeschaltet wurde oder wie es sich aus Versehen beim Auf-/Abbau verstellt hat, wenn man es dem Knopf eh nicht ansehen kann?
Oder will ich beim Einschalten lieber von einer festen Grundstellung ausgehen.?

Wenn das deine Software ist, über die du dich mit dem Controller-Programmierer ja noch qualifiziert abstimmen musst, sollte dir das Arduino-Programmieren eigentlich prinzipiell möglich sein.

Die Haupt-Aufgabe ist sowieso die bühnentaugliche Mechanik, die ich an @overtone's Stelle eher nicht einem unbekannten Arduino-Software-Bastler überlassen würde. Dass der den Encoder selbst aussuchen soll, leuchtet mir zwar ein, widerspricht aber der absoluten Vorgabe.

"Was bedeutet "jede Rotation" 1x 360 Grad oder
weil du mindestens 100 Schrite pro Umdrehung willst

360 Grad / 100 = 3.6 Grad
Alle 3.6 Grad = Encoder hat einen "Teilstrich" weiter gedreht und dann jeweils einmal auf serielle Schnittstelle die Gradzahl ausgeben?

Serielle Schnittstelle meint wirklich RS232? oder RS422? oder RS485 ?
Welche Spannungen sollen da ausgegeben werden?
3.3V
5.0V
-12/+12V?

Display auf das man Werte (Zahlenwerte?) oder Strings Wie viele Zeichen lang sollen die Strings sein?

Die Idee per Software die ausgegebenen Zahlenwerte eines Incrementalgebers von 0 bis 100 oder 0 bis 200 oder was du eben möchtest finde ich super.
Der Inkrementalgeber erzeugt einen Impuls und die Software zählt eins hoch oder eins runter
wenn die Zahl bei 200 ankommt zurücksetzen auf 0 wenn die Zahl beim runterzählen bei 0 ankommt auf 200 setzen.

vgs

Tja, da wäre es jetzt gut gewesen, zu zeigen wie der Code aussieht, denn wer mit:

zu kämpfen hat, hat einfach blockierend programmiert.
Vermutlich reicht schon ein delay und alles ist hin.
Selbst wenn kein delay drin ist, kann man sich ein Bein stellen.(*)
Aber das kann man lösen.
Das ist reine Logik.

(*)Kann ich beweisen weil genau aktuell das passiert ist - mit einem Encoder...https://forum.arduino.cc/t/serielle-datenstring-vom-computer-im-adruino-mega-einlesen-und-aufteilen/664626/578

Der Meinung bin ich auch:

Wenn der Arduino nichts anderes zu tun hat als Encoderpulse zu zählen und ein paar Byte über die serielle Schnittstelle auszugeben dann kann man das softwaretechnisch über Interrupt-gesteuertes Zählen der Impulse 100% zuverlässig zählen.

An ist zwei Stellen aber verdammt wichtig, das du overtone die Funktion sehr präzise beschreibst:

verstehe ich das richtig. Auf dem Rad an dem du drehst ist eine Vertiefung und diese Vertiefung wird auch als Anzeige "oben" benutzt?
Das heisst immer dann wenn diese Vertiefung auf dem Rad "vom Körper weg" oder "nach oben" zeigt dann soll Positionszahl 0 ausgegeben werden?

Welche Auflösung soll der Drehgeber haben?
Das heißt wie viele verschiedenen Zahlenwerte auf 360 Grad möchtest du haben ?
Bei einem inkrementalgeber mit 24 impulsen heißt das die Zahl ändert sich jeweils um 1 wenn du 15 Grad gedreht hast.

Wie viel Grad Drehung am Controller-Rad soll den ausgegebenen Zahlenwert um 1 erhöhen / vermindern?

Reicht das alle 15 Grad? Oder muss die Auflösung höher sein?

Als Absolutencoder könnte man auch den AS5600 nehmen.

Achtung!

Der verwendete Magnet muss ein speziell

radial

magnetisierter Magnet sein.
"normale" Magneten sind alle axial magnetisiert. Damit funktioniert der encoder nicht!

Hier gibt es ein Entwicklungskit Platine
https://de.rs-online.com/web/p/entwicklungstools-sensorik/2006339/

und hier so eine Art Komplett-Set mit Drehknopf und Magnet

https://de.rs-online.com/web/p/entwicklungstools-sensorik/2006340/

vgs