Hallo Forum,
ich habe vor einiger Zeit angefangen, mich mit der C-Programmierung als Hobby zu beschäftigen. Bisher läuft auch alles gut. Im Moment bräuchte ich aber einen grundsätzlichen Tipp, um mein nächstes Projekt richtig zu konzipieren:
Ich plane ein Gerät, worin sich 2 Schrittmotoren befinden. Diese werden via Arduino/Teensy (o.ä.) mit der AccelStepper Lib angesteuert. D.h. STEP & DIR Signale werden über je einen Output-Pin an die Stepper-Endstufe übertragen (max. 40Khz). Netzteil/Stepper & Endstufe/µC befinden sich im "Haupt"-Gehäuse. Soweit so gut und noch unproblematisch.
Ich möchte das Ganze an einer ca. 2-3 Meter langen Kabelfernbedienung steuern, und Parameter (wie Drehrichtung/Geschwindigkeit etc.) auf einem Grafik-Display darstellen. Ich versuche mal, Fotos der dafür gedruckten Gehäuse anzuhängen.
Displays mit ST7735 oder ILI9341 habe ich bei anderen Projekten schon erfolgreich an´s Laufen gebracht.
Nun ist mein erster Versuch das Display "einfach" über ein 3m Kabel (12x0,14 qmm) anzusteuern erst mal schief gegangen. Das heißt, es war nur ein weißer Bildschirm zu sehen. Vielleicht aber auch ein Verkabelungs-/Kontaktproblem...
Daher meine Frage an die Schwarmintelligenz hier Bin ich da überhaupt auf dem richtigen Weg (mit einem 3m Kabel), oder ist das schon per se nicht möglich eines der oben genannten Displays an einem so langen Kabel zu betreiben?
Ich würde spontan zu einer weiteren MCU in der Fernbedienung greifen und die Kommunikation dann über Serial und eine geschirmte Schaltleitung laufen lassen. Die Steuersignale für ein "dummes" Display dürften über die Entfernung zu störanfällig sein. I2C geht ohne Expander sowieso nicht so weit und auch bei SPI habe ich starke Zweifel.
Die Betriebsumgebung ist ein normaler Haushalt.
Was ggf. noch erwähnenswert ist:
Einer der beiden Schrittmotoren wird nicht dauerhaft in einer Richtung laufen. Dessen Bewegung wird über Zahnriemen auf einen Linearschlitten übertragen, und eine Vorwärts/Rückwärts Bewegung (ca. 0,5-3x/Sec) erzeugen. Mit Beschleuniguns-/Bremsrampen vor den Umkehrpunkten.
Zur Sicherheit (z.B. Schrittverluste) habe ich einen TOF-Sensor vorgesehen, der bei jedem Richtungswechsel den Abstand des Schlittens zur Grundposition misst.
Das ist zwar noch keine Raketenwissenschaft, aber etwas rechenintensiver als eine rein geschwindigkeitsbasierte Antriebssteuerung. Zudem soll es mit der Zeit Bewegungsprogramme/Profile geben, die via Menü auf dem Display auswählbar sind. Ebenso die Möglichkeit, im Betrieb 1-2 Parameter (Geschwindigkeit) zu ändern.
Daher würde ich gerne die komplette Ablaufsteuerung inkl. auslesen des Sensors, erzeugen der Taktsignale usw. im Gerät belassen, und lediglich/max. die Ansteuerung des Displays & Abfrage der Taster in die Kabelfernbedienung auslagern.
Gibt es da fertige/dafür vorgesehene Kommunikations-Module o.ä.?
Eventuell kann das ein Nextion Enhanced Display leisten. Das kommuniziert über UART - man kann also z.B. einen RS485-Adapter mit Auto-Halfduplex daran hängen - und hat 8 GPIOs, über die Du die Tasten ansteuern könntest. Nebenbei ist das natürlich ein Touchscreen mit lokaler Steuerung, da geht einiges dann auch über virtuelle Bildschirmtasten. Da viel Logik im Display laufen kann, entlastet das u.U. die Haupt-MCU.
Wie ich she ist es ein SPI Display dann wurde ich einen Nano nehmen und I2C mit Extender sprechen lassen.
Jedoch braucht man zwei, ein am Sender, zweiter am steuer Einheit. Bin der Meinung I2C ist einfacher als Canbus oder Modbus zu machen
Danke euch...
An " Eventuell kann das ein Nextion Enhanced Display leisten. Das kommuniziert über UART..."
hatte ich auch schon gedacht, nur noch Null-Komma Erfahrung damit. Ich habe hier auch ein 3,5" Nextion Enhanced herumliegen, bin aber bisher nicht dazu gekommen mich mit dem Editor etc. zu beschäftigen. Evt. geht das mit einem > vernünftigen Kabel auch schon direkt. Für RX/TX jeweils 2 gemeinsam geschirmte Adern gleichzeitig verwenden. Dann sind das auf 3m max. ein paar pF. Und bei einem 4x2x0,22qmm Kabel bleiben 11mm Außen-Durchmesser (was erträglich ist) noch 4&Schirm Adern für Strom & 1x "Not-Aus" (= Interrupt).
Meinst du damit
"ich einen Nano nehmen und I2C mit Extender sprechen lassen." einen Nano im Display-Gehäuse zur Ansteuerung des Display und Abfrage (Weitergabe) der Taster?
BTW: Ist der bzw. gibt es I2C Extender mit symmetrischer Signalführung?
Das is nix.
Was willst Du mit so einem massivem Kabel? Ich versteh dann #4 nicht mehr.
Im Übrigen ist Schirm, Schirm, weil Schirm Schirm ist. Da ist nix mit benutzen...
Du hast 6 Tasten - wenn Die auf den IO des Nextion gehen, hast Du nur 4 Drähte, die über Kabel runter gehen auf Dein Teil. 5V/Gnd/Rx/Tx - fertig.
ABER!
Wenn ich lese:
Dann kommt jedes Alarmzeichen hoch.
Ein Not-Aus ist etwas andres als ein einfacher Stop.
Da gehört eine Direktleitung abseits des Arduino und als Öffner ran.
Vielleicht solltest doch mal erklären was das wird, damit Missverständnisse vermieden werden.
Ja - aber braucht dann mehr als 2 Drähte - PCA9600 - keine galvanische Trennung...
Unter welchem Punkt wird das gemeint? Störungssicherheit dann JA Jedoch nach benutzter Leitung.
Ich verwende den P82B715, sehr einfache Beschaltung, es ist möglich mit Unterschiedlichen Spannungen arbeiten usw. 30m mit CAT5 als rolle keine Probleme (getestet )
Das Datenblatt ist die neue Version ohne erhöhter Spannung auf der Leitung = Kabel P82B715 (I2C Externder).pdf (147.2 KB)
Ja nur der PCA9600 ist eher für Kurzstrecken = 2m sonst nix mit 1Mhz, und zweiter Nachteil nur in SO8 Ausführung oder TSSOP8 == Hühnerfutter.
Den P82B96 wollte ich auch mal nehmen bis ich den P82B715 in DIP8 gefunden habe
Stimmt.
Aber die Frage ist, wieviel tatsächlicher Platz wirklich vorhanden ist...
Ich seh schon, das es auf ein Eigendesign rausläuft.... Da geht dann auch gleich mit Bestückung.
Die 2mtr würde ich nicht als absolut gesetzt sehen.. Wir sind (bis jetzt) im Haushalt - Ja, 400Khz sind ja auch ausreichend.
Auf dem Bild ist noch ein zweites Gehäuse. Das ist ggf. für ein kleineres Display (1,8" - was es von Nextion nicht gibt, daher die ganzen Überlegungen) & ein Joystick als HID angedacht.
Die Gehäuse sind Prototypen und nicht endgültig (steht auch nirgends)
Den Alarm kannst du wieder ausschalten. Mach aus dem "Not-Aus" ein "Schnell-Stop" der die Bremsrampe(n) umgeht. Das sowas eine gesonderte/reservierte Leitung benötigt, weiß ich und hab ich oben geschrieben
(Ein extra Gehäuse & zweites Kabel wohl sicher nicht. Sonst wären ja die "echten" Not-Aus-Schalter z.B. in Fernbedienungen von Kränen/Bühnen usw. völlig sinnlos). Das Thema ist zudem nicht vorrangig.
Und das ich 8 GPIOs an einem Nextion habe, ist mir durchaus bekannt. Außerdem wurde es ja oben schon erwähnt. Bleibt also:
Wie RX/TX von dem Nextion sicher über 3m Kabel zu übertragen?
Wo bei muss ich sagen das bei dem Test mit dem CAT5 Kabel damals nur LCD2004 + BME280 dran waren, meine Schätzung nicht mehr als 100KHz, bei Mikrocontroller Forum wurde auch davon ausgegangen.
reicht doch auch.
Bei einem HMI reicht doch die Übertragung eines int und Du kannst zigtausende vorgefertigte Dinge ausgeben.
Wenn Werte ausgegeben werden, sind das ein int und ein weiteres oder ein int und ein float, notfalls ein int und ein String
Ich sehe das mit dem HMI als sichere Variante mit wenig Aufwand und wenig Draht. Auch bei 100K.
Das Teil sieht auf den ersten Blick gut aus. Wenn´s da nichts gibt, was ohne aufwändige MCU Ansteuerung
-- also mit eigener Takt/Sync. Leitung
auskommt, muss ich mir das mal im Detail durchdenken (wg. Platz etc.)
Ich finde nirgends BAUD/Taktraten dazu. Gibt´s da Angaben?