Arduino Schaltung am PC entwickeln ...

Taktfrequenz des Arduino ist 490Hz. Das ist besser als bei vielen Autos, aber nicht perfekt was das Problem mit der Sakkadensuppression betrifft. Das ist halt die Kröte die ich schlucken muss. (Ist es ein Prädikat besser als Volkswagen zu sein?)

Betreffend Bus, es müssen Komponenten im einstelligen Euro-Bereich sein. Die Industrie- und KFZ-Komponenten bewegen sich im dreistelligen Bereich, das ist in der "Fahrradbranche" unverkäuflich. 1 Meter 16-polige Steuerleitung/ Flachbandkabel liegt nämlich ebenfalls im einstelligen Bereich. Und dann muss es noch Idiotensicher sein, weil ich das programmieren will.
Das Flachbandkabel ist attaktiv, weil Idiotensicher. Es sagt ja niemand, dass man nicht trotzdem einen Unterverteiler baut, der den vollständigen Anschluss (Plus, Minus, Signal) aller Lampen in der Nähe erlaubt, bzw. die KSQs beinhaltet.

Das EMV Problem sehe ich nicht so dramatisch, weil die PWM Taktfrequenz niedrig ist und die Ströme gering. Ich schicke ja nur das Steuersignal auf den langen Weg, und nicht den wesentlich höheren Strom für das betreiben der jeweiligen LED. Und hey, sind nicht bald alle Karossen aus Carbon. Das schirmt hervorragend. Ich glaube die KSQs hätten auch ein Problem mit langen Leitungen. Ich sehe eher umgekehrt, dass die Signale von einer Leitung auf die nächste Übersprechen. Und was passiert wenn man hupt wäre noch spannend. Weil die Hupe ist die grösste Sauerei von allen.
 
Wie sieht das eigentlich im Auto aus?
Läuft die Elektrik dort mitlerweile auch über eine BUS-System?
Aktuell ist CAN-Bus der standard.

Dann gibt es noch FlexRay, ein sehr deterministischer Bus mit festen Sende-Zeiten für die einzelnen Nachrichten in einem festen Raster + möglichkeit für dynamische Segmente.
FlexRay ist aber ziemlich kompliziert und nicht so trivial aufzusetzen wie CAN-Bus, wo man einfach mal ein paar CAN-Nachrichten rausschicken kann ;)

Ganz akutell kommt jetzt auch verbreitet Ethernet, hauptsächlich weil die Datenmengen so groß werden, dass ein Bus-System (alle bekommen alle Nachrichten) nicht mehr funktioniert.
Da scheint sich SOME/IP (https://de.wikipedia.org/wiki/Scalable_Service-Oriented_Middleware_over_IP) durchzusetzen und als Hardware BroadR-Reach (2-Draht Ethernet, da man ja keine dicken Kabel im Auto verteilen will ;) ) https://de.wikipedia.org/wiki/BroadR-Reach
==> Alles in allem sehr spannend aktuell, aber auch oft... wie sagt man so gerne ... "eine Herausforderung" :D


Fürs Velomobil würde ich aber aktuell wirklich CAN-Bus empfehlen. Der ist ziemlich robust, verhältnismäßig einfach und ein Aufwändiges Bordnetz mit großen Datenmengen ist ja auch nicht notwendig.
 
Klasse Sache. Ich sehe noch zwei Punkte, die bedacht werden sollten:
1.) Die Steuerung über einen einzigen "Mini-Joystick" mag elegant sein, erzeugt aber einen gravierenden Single Point of Failure. Ich bin da immer eher der Freund der Trennung unterschiedlicher Funktionen.
2.) Das Ganze muss dann idealerweise wasser- und salzstaubdicht vergossen werden. Ansonsten endet es nach kurzer Zeit wie mein (ansonsten hervorragender) WattsUp.
 
Da kommt später ein Düsenjäger-Joystick. Der ist wasserdicht und unkaputtbar. Und kostet mehr als der ganze Rest.
Über Kondenswasser mach ich mir ernsthaft Sorgen. Vermutlich muss ich mit Platinenlack nachbessern, weil Vergiessen und Steckverbinder beisst sich.
[DOUBLEPOST=1521868881][/DOUBLEPOST]
Welche Hardware nehm ich da? Wie bring ich das dem Arduino bei?
Die Datenmenge ist winzig und es kommt nicht auf jede Milisekunde an. Und ich hab nicht vor PWM über Bus zu betreiben. Ich würde eigentlich das einfachste und billigste nehmen wollen.
 
Zuletzt bearbeitet:
Für die paar Funktionalitäten in einem VM macht CAN-Bus keinen Sinn ... Diese Shields benötigt man eher, wenn man Arduino-Hardware im Auto betreiben will oder ähnliches. Eine simple RS232-Schnittstelle, die eh schon vorhanden ist, reicht völlig aus. Oder halt auch 1Wire.

Prinzipiell kann ja jeder bauen und nutzen wie er lustig ist, nur ist eine einfache Lösung im Hinblick auf Funktionsfähigkeit doch vorzuziehen.
 
Ich würde eigentlich das einfachste und billigste nehmen wollen.
am einfachsten und billigsten wäre wohl dieses hier. Die Teile lassen sich einzeln adressieren und geben PWM aus. ist halt kein 'Standard'-bus und es kann daher nix anderes als lauter gleichartige Chips (oder Arduinos die das gleiche Protokoll implementieren) an einem Bus sein.
 
Zuletzt bearbeitet:
Für die paar Funktionalitäten in einem VM macht CAN-Bus keinen Sinn .....
Prinzipiell kann ja jeder bauen und nutzen wie er lustig ist, nur ist eine einfache Lösung im Hinblick auf Funktionsfähigkeit doch vorzuziehen.
Ich sehe den Vorteil bei so einer Lösung im geringeren Verkabelungs aufwand: 2 Stromkabel und 1-2 Steuerleitngen machen es recht einfach.
Hat Rs232 nicht 9 Leitungen?
Dazu noch fertige Programm bibliotheken.
Dazu flexibele Erweiterbarkeit.

Bei dem von @Nobbi vorgeschlagener Lösung denke ich muss man die Kommunikation selber programmieren.
Und ich bin mir nicht im Klaren ob man alles darüber steuern kann, zb ne Hupe die 2-3A zieht.

Und wenns simpel sein soll dann wird alles hart verdrahtet und mit Flachstecker verbunden
Eben wie im Quest.
 
Und ich bin mir nicht im Klaren ob man alles darüber steuern kann, zb ne Hupe die 2-3A zieht.
da muss natürlich noch ne LeistungsStufe dazwischen. aber das wär bei jeder anderen Lösung genauso. mit einem PWM Ausgang kann man natürlich auch nur Ein/Aus schalten ohne die Zwischenstufen zu nutzen
 
Hat Rs232 nicht 9 Leitungen?
Dein 9-poliger Anschluss am längst vergessenen PC vielleicht ... :ROFLMAO:. RS232 benutzt nur TX/RX und GND (=Software-Handshake) und so gut wie jeder Mikrocomputer hat das eingebaut, d.h. gleichzeitig auch, dass es immer von Haus unterstützt wird. Demnach einfach & billig, genau das was @Gear7Lover haben will.
 
Welche Hardware nehm ich da? Wie bring ich das dem Arduino bei?

Ich hab einen Arduino + CAN Shield verwendet, um einen Bosch-Akku für meine E-Bike bastelleien zu verwenden.

auf dem CAN-Shield ist drauf:
Microchip MCP2515 CAN-Controller (Der "organisiert" das versenden / empfangen der Nachrichten) und
MCP2562 CAN-Transceiver (bringt die digitalen CAN-Nachrichten als analoge Pegel auf den Bus)

Bei nem Arduino Uno gibts dafür ein Can-Shield, den man einfach aufstecken kann. z.B. http://www.watterott.com/de/Arduino-CANdiy-Shield
Für meine kleiner Lösung habe ich aber einen Arduino Nano mit einem kleinen Shield verwendet.
https://www.ebay.de/itm/SPI-MCP2515...367517?hash=item2824fec25d:g:RgYAAOSwa~BYNf3o

Software kann man per google ganz gut finden. Bin nicht mehr sicher wo ich die Treiber her hatte.
Hier gibt's z.B. was: https://github.com/autowp/arduino-mcp2515

Da man ja Arduino viel mit Autos über CAN verbindet, gibt's auch super viel Tutorials und Videos.

Aber wie gesagt, ich habs für mich nur für den Bosch Akku verwendet.
siehe auch:
https://www.pedelecforum.de/forum/index.php?media/albums/bosch-battery-communicator.1061/

und mit ein bisschen Beschreibung aus einem Thread aus dem parallel-Forum:
https://www.pedelecforum.de/forum/index.php?threads/akku-anders-nutzen.22389/page-2#post-940724
[DOUBLEPOST=1521973062][/DOUBLEPOST]
RS232 benutzt nur TX/RX und GND
Demnach einfach & billig, genau das was @Gear7Lover haben will.
Wahrscheinlich ist das doch einfacher / besser als CAN für den Anwendungsfall.
 
Ja, vor allem ohne separate Hardware.
Wieso ohne spezielle HW?
Bei RS232 müsstest du doch irgendwas an Sende- und Empfangsbausteine haben um die Signale umzusetzen.

I2c hatte Kabellängeprobleme wenn ich das hier richtig in Erinnerung habe?!?
Der Bus wird ja auch recht häufig benutzt.

@marquee Danke für die Zusammenstellung, warum hast du eigentlich den CanBus verwendet nur um einen Motor anzusteuern?
Sieht irgend wie nach ProofOfConcept aus.
 
Sende- und Empfangsbausteine
Am Arduino nicht, der hat serielle Komunikation an Bord. Ich hab den "serial monitor" verwendet um mir Variablen am PC anzeigen zu lassen. Aber zyklisches Ausgeben von Daten bremst ihn extrem aus. Die Standardeinstellung ist auf 9600 bit/s. Das ist halt auch extrem lahm. Ich würde es dann mal ereignisgesteuert probieren.
[DOUBLEPOST=1522045585][/DOUBLEPOST]Sonst kann ich auch parallel Soll-Zustände übermitteln. Ich hab jede Menge freie digitale IOs.
 
Am Arduino nicht, der hat serielle Komunikation an Bord. Ich hab den "serial monitor" verwendet um mir Variablen am PC anzeigen zu lassen.
Ich sehe ich habe mich mit dem Arduino noch zu wenig beschäftigt!

Aber beim Verbrauche bräuchte man dann doch trotzdem einen Empfangsbaustein, oder?

Aber zyklisches Ausgeben von Daten bremst ihn extrem aus. Die Standardeinstellung ist auf 9600 bit/s. Das ist halt auch extrem lahm.
Aber das sind immerhin 1200 Zeichen/s, das sollte doch für die Kommunikation im VM reichen...

Tschö
René
 
Genau und das hebt die Zykluszeit über 200ms. Er kann ja nicht Daten senden und nebenher was anderes machen. Mono-Tasking, oder wie nennt man das. Das heisst der Programmablauf findet nur noch 5 mal pro Sekunde statt. Zum Vergleich die Einschaltdauer vom Blinker ist 333ms. Mit so langen Zykluszeiten funktioniert das Programm nicht mehr richtig, so wie ich das geschrieben hab, ohne Interrupts. Ob Du die Taste gedrückt hast oder nicht merkt er erst wieder wenn der Programmablauf den Eingang liest. Aber auch der Blinker blinkt nicht mehr regelmässig. 333ms +/-200ms sieht kacke aus.
 
Also, die Geschwindigkeit kann man problemlos hochschrauben falls erforderlich, dass ist nicht das Problem. Man muss aber die Programmierung auch so umsetzen, dass eine Interrupt gesteuerte Programmlogik möglich ist. Deshalb auch weiter oben der Hinweis, dass @Gear7Lover gleich vernünftig damit anfangen und sich auch mal andere Programme ansehen soll, wie das dort gelöst ist.

Aber beim Verbrauche bräuchte man dann doch trotzdem einen Empfangsbaustein, oder?
Klar, dafür nimmt man auch einen (kleinen) Arduino, der dann den Empfänger spielt und ggfs. ein paar FETs ansteuert, um bspw. die Hupe zu bedienen. Der Empfänger ist so ganz einfach zu implementieren und macht nichts anders, als an der RS232 Leitung zu horchen und ggfs. einen/mehrere Ausgänge zu schalten.
 
sich auch mal andere Programme ansehen
Das habe ich gemacht und den Verdacht, dass mit Kanonen auf Spatzen geschossen wird. Es wurde tiefer in die Trickkiste gegriffen als unbedingt notwendig.
Mein Programm ist ein Bandwurm mit fast ausschliesslich "if" Funktionen. Das durchschaut jeder, auch blutige Anfänger. Und das wichtigste: es funktioniert. Es funktioniert sogar ohne Interrupts. Was hilft mir als DAU ein Programm, bei dem ich 4 Wochen Lehrgang brauch um es lesen zu können.
 
Zurück
Oben Unten