CAN-Bus Daten aus dem E-Bike auslesen. #1

CANopen ist ein Kommunikationsprotokoll, das häufig in industriellen Anwendungen eingesetzt wird, um Geräte und Steuerungssysteme miteinander zu vernetzen. Es basiert auf dem Controller Area Network (CAN) und definiert eine Reihe von Standards für die Kommunikation zwischen Geräten. CANopen ist sehr flexibel und kann für eine Vielzahl von Anwendungen verwendet werden, darunter auch für E-Bikes.

E-Bikes sind Fahrräder, die von einem Elektromotor angetrieben werden. Der Elektromotor wird von einer Batterie gespeist, die in der Regel am Fahrradrahmen montiert ist. E-Bikes haben in den letzten Jahren stark an Popularität gewonnen, da sie eine umweltfreundliche und kosteneffiziente Möglichkeit bieten, längere Strecken zu fahren oder schwieriges Gelände zu bewältigen.

In einigen E-Bikes wird CANopen zur Steuerung des Motors und anderer Systeme verwendet. Dabei werden Informationen zwischen dem Steuergerät des E-Bikes und dem Motor ausgetauscht, um eine effiziente und reibungslose Fahrt zu gewährleisten. CANopen bietet eine zuverlässige und robuste Methode zur Steuerung von E-Bikes und ist bei vielen Herstellern beliebt.

In diesem Beitrag möchte ich auf den CANopen Bus meines Stromers zugreifen und die Daten auslesen. Dies werde ich mit einem ESP32 WROOM machen.

ESP32 WROOM ist ein Modul, das von Espressif Systems hergestellt wird und auf dem ESP32-Chip basiert. Der ESP32-Chip ist ein leistungsstarker Mikrocontroller mit integriertem WLAN- und Bluetooth-Modul. Das ESP32 WROOM-Modul enthält alle Komponenten, die zur Verwendung des ESP32-Chips erforderlich sind, einschließlich des Prozessors, des WLAN- und Bluetooth-Moduls, des Flash-Speichers und der Antenne.

Das ESP32 WROOM-Modul ist eine beliebte Wahl für Entwickler, die IoT-Projekte erstellen möchten. Das Modul ist sehr kompakt und kann einfach in Geräte integriert werden. Es unterstützt eine Vielzahl von Netzwerkprotokollen und bietet eine hohe Datendurchsatzrate. Ausserdem ist es energieeffizient und kann daher in batteriebetriebenen Geräten eingesetzt werden.

Das ESP32 WROOM-Modul ist auch sehr einfach zu programmieren. Es wird von der Arduino-IDE unterstützt und es gibt eine Vielzahl von Libraries und Beispielprojekten, die auf der Espressif-Website verfügbar sind. Durch die Verwendung des ESP32 WROOM-Moduls können Entwickler schnell und einfach drahtlose IoT-Geräte erstellen, ohne sich um die Details der WLAN- und Bluetooth-Kommunikation kümmern zu müssen.

Anbinden des ESP32 mit einem CAN-Controller an den CANopen.

Zunächst benötige ich einen CAN-Controller und einen CAN-Transceiver, um eine Verbindung zum CANopen-Netzwerk herzustellen. Der CAN-Controller ist normalerweise in den meisten Mikrocontrollern wie dem ESP32 enthalten. Der CAN-Transceiver ist ein Bauteil, das die Signale des CAN-Controllers in CAN-Signale umwandelt, die mit dem CANopen-Netzwerk kommunizieren können.

SCHEMA BILD

Um CANopen auf dem ESP32 zu verwenden, benötige ich eine CAN-Bibliothek, die die CAN-Kommunikation abstrahiert und vereinfacht. Es gibt verschiedene Bibliotheken, die Sie verwenden können, z. B. die "Arduino CAN" Bibliothek. Sie können auch eine CANopen-Bibliothek verwenden, um eine höhere Ebene der Abstraktion zu erreichen.

Etwas mehr Info über den ESP32 WROOM

Der ESP32 verfügt über zwei Kerne (Core 0 und Core 1), die unabhängig voneinander arbeiten und parallel ausgeführt werden können. Um den ESP32 WROOM mit beiden Kernen zu verwenden, muss ich die Code-Logik aufteilen und auf beiden Kernen ausführen. Hier ist ein Beispielcode, wie beide Kerne des ESP32 WROOM verwendet werden:

void core0Task(void *parameter) {
  // Code für Core 0
  while (true) {
    // Füge hier den Code für Core 0 hinzu
  }
}

void core1Task(void *parameter) {
  // Code für Core 1
  while (true) {
    // Füge hier den Code für Core 1 hinzu
  }
}

void setup() {
  // Initialisieren der seriellen Schnittstelle
  Serial.begin(115200);

  // Erstelle die Tasks für Core 0 und Core 1
  xTaskCreatePinnedToCore(core0Task, "Core 0 Task", 10000, NULL, 1, NULL, 0);
  xTaskCreatePinnedToCore(core1Task, "Core 1 Task", 10000, NULL, 1, NULL, 1);
}

void loop() {
  // Fügen hier Code hinzu, der nur auf dem Hauptprozessor ausgeführt werden soll
}

In diesem Beispielcode haben wir zwei separate Aufgaben (core0Task und core1Task) definiert und diese beiden Aufgaben werden auf den beiden Kernen des ESP32 WROOM ausgeführt. Die Funktion xTaskCreatePinnedToCore () erstellt eine Aufgabe auf einem bestimmten Kern und gibt den Task Handle zurück. Der letzte Parameter gibt den Kern an, auf dem die Aufgabe ausgeführt werden soll (0 für Core 0 und 1 für Core 1).

Es ist wichtig zu beachten, dass der Code, der im loop () -Block ausgeführt wird, nur auf dem Hauptprozessor (Core 0) ausgeführt wird. Daher sollten Sie in Ihrem Code sicherstellen, dass Sie die entsprechenden Funktionen und Variablen auf den richtigen Kern zuweisen, um sicherzustellen, dass Ihr Code auf beiden Kernen ordnungsgemäss ausgeführt wird.

Beide Kerne des ESP32 können gleichzeitig benutzt werden. Es gibt jedoch einige Einschränkungen, die man berücksichtigen sollte:

Insgesamt bietet die Verwendung beider Kerne des ESP32 viele Vorteile, insbesondere für Anwendungen, die gleichzeitig mehrere Aufgaben ausführen müssen. Wenn jedoch beide Kerne verwenden möchten, muss sichergestellt werden, dass die Code-Logik so optimiert ist, dass diese auf beiden Kernen effizient und synchronisiert ausgeführt wird, um optimale Leistung und Stabilität zu gewährleisten.

CAN Interface

Als erstes schauen wir uns das CAN Interface an. Ich benutze den SN65HVD230 ein CAN-Transceiver, 3,3 V, mit Standby-Modus.

Ein CAN-Transceiver ist ein elektronisches Bauteil, das zur Kommunikation über den Controller Area Network (CAN)-Bus verwendet wird. Der Transceiver wandelt die digitalen Signale des CAN-Controllers in das differenzielle Signalformat um, das über den CAN-Bus übertragen wird, und umgekehrt.

Die Standby-Modus-Funktion des CAN-Transceivers ermöglicht es dem Bauteil, in einen energieeffizienten Zustand zu wechseln, wenn es nicht aktiv ist, um Strom zu sparen. Wenn der Transceiver im Standby-Modus ist, wird seine Stromaufnahme reduziert, aber er kann schnell aktiviert werden, wenn Daten über den CAN-Bus übertragen werden müssen.

Es gibt verschiedene Hersteller, die CAN-Transceiver mit 3,3V Versorgungsspannung und Standby-Modus anbieten, darunter Texas Instruments, NXP Semiconductors und Infineon Technologies.

Die Definitionen der Pinbelegung

// CAN
#define PINIO_RX 17
#define PINIO_TX 16
#define CAN_MODE 33
// CAN mode - high speed mode
pinMode(CAN_MODE, OUTPUT);
digitalWrite(CAN_MODE, LOW);

Ich betreibe den CAN-Transceiver im High-Speed-Mode, daher digitalWrite to low. R14 wird mit 0Ω bestückt.

ESD Protection bezieht sich auf den Schutz von elektronischen Bauteilen und Geräten vor elektrostatischer Entladung (ESD). ESD ist eine plötzliche und unkontrollierbare Entladung von statischer Elektrizität, die durch Reibung oder Kontakt zwischen verschiedenen Materialien verursacht wird. Wenn diese Entladung auf ein elektronisches Bauteil trifft, kann es beschädigt werden oder sogar komplett ausfallen.

Um ESD-Schäden zu vermeiden, werden verschiedene Schutzmechanismen eingesetzt. Dazu gehören beispielsweise die Verwendung von ESD-sicheren Verpackungen beim Transport von elektronischen Bauteilen, die Verwendung von ESD-Schutzmatten auf Arbeitsplätzen und die Integration von ESD-Schutzmassnahmen in elektronische Schaltungen.

ESD-Schutz in elektronischen Schaltungen kann durch die Verwendung von speziellen Schutzbauteilen wie Varistoren, Dioden oder Transient Voltage Suppressor (TVS)-Bauteilen erreicht werden. Diese Bauteile schützen die empfindlichen elektronischen Komponenten, indem sie überschüssige ESD-Energie ableiten und ableiten, bevor sie das Bauteil erreichen.

Insgesamt ist ESD-Schutz ein wichtiger Faktor bei der Entwicklung von Elektronikprodukten, da ESD-Schäden zu hohen Kosten für die Reparatur oder den Austausch von elektronischen Bauteilen führen können.

ESP32 WROOM 32U

Der ESP32 WROOM 32U ist ein Typ von Mikrocontroller-Modul, das auf dem ESP32-Chip basiert. Der ESP32-Chip ist ein äusserst leistungsfähiger und vielseitiger Chip, der für drahtlose Anwendungen konzipiert ist. Der Chip verfügt über zwei leistungsstarke 32-Bit-CPU-Kerne, die mit bis zu 240 MHz getaktet werden können, sowie integrierte Wi-Fi- und Bluetooth-Funktionalität.

Das ESP32 WROOM 32U-Modul wurde von Espressif Systems entwickelt und ist eine der beliebtesten Entwicklerplattformen für IoT- und Embedded-Systeme. Das Modul bietet eine Vielzahl von Funktionen, darunter WiFi 802.11 b/g/n/e/i, Bluetooth v4.2 BR/EDR und BLE, sowie zahlreiche analoge und digitale Ein- und Ausgänge.

Das ESP32 WROOM 32U-Modul ist ideal für die Entwicklung von IoT-Anwendungen, intelligenten Haushaltsgeräten, Wearables und anderen drahtlosen Anwendungen geeignet. Es ist einfach zu programmieren und unterstützt eine Vielzahl von Programmiersprachen und Entwicklungsplattformen wie Arduino IDE, MicroPython und ESP-IDF. Also ideal für dieses kleine Projekt. KLEIN..? ... wird sich zeigen.

USB Interface

Der CP2102N-QFP24 ist ein USB-to-UART-Bridge-Controller von Silicon Labs, der eine schnelle und einfache Integration von USB in eine Vielzahl von Anwendungen ermöglicht. Der Controller wird in einem 24-Pin-QFP-Gehäuse geliefert und bietet eine Vielzahl von Funktionen und Konfigurationsmöglichkeiten.

Der CP2102N-QFP24 unterstützt USB 2.0 Full-Speed-Übertragungsraten von bis zu 12 MBit/s und bietet eine UART-Datenrate von bis zu 3 MBit/s. Der Controller verfügt über eine Vielzahl von Konfigurationsmöglichkeiten, einschließlich der Unterstützung von verschiedenen Datenbits, Paritätsbits und Stop-Bits. Der CP2102N-QFP24 kann auch als USB-basierter Debugging-Port für die Fehlersuche und das Debugging von Anwendungen verwendet werden.

Das Modul ist besonders nützlich für die Entwicklung von Embedded-Systemen und anderen Anwendungen, bei denen eine schnelle und einfache USB-Konnektivität erforderlich ist. Es ist einfach zu integrieren und unterstützt eine Vielzahl von Betriebssystemen, einschliesslich Windows, Linux und Mac OS X.

Zusätzlich verfügt der CP2102N-QFP24 über einen eingebauten USB-Spannungsregler und erfordert keine externen Komponenten, was die Schaltungskomplexität reduziert und die Systemkosten senkt. Der Controller ist auch RoHS-konform und entspricht den Anforderungen der europäischen REACH-Verordnung.

USB-C Interface

Der CH340C ist ein USB-zu-UART-Bridge-Controller, der von Jiangsu QinHeng Ltd. entwickelt wurde. Der Controller ist eine kosteneffektive Lösung, um eine UART-Schnittstelle über USB anzubinden und ist besonders beliebt in der DIY- und Maker-Community.

Der CH340C-Controller bietet eine Übertragungsrate von bis zu 2 Mbps und unterstützt verschiedene Datenbits, Paritätsbits und Stop-Bits. Er ist kompatibel mit USB 1.1 und USB 2.0 und unterstützt eine Vielzahl von Betriebssystemen, einschließlich Windows, Linux und Mac OS X.

Das Modul ist einfach zu integrieren und erfordert keine externen Komponenten, was die Schaltungskomplexität reduziert und die Systemkosten senkt. Der CH340C verfügt über eine Vielzahl von Konfigurationsmöglichkeiten, einschliesslich der Möglichkeit, die UART-Baudrate und die USB-Versorgungsspannung anzupassen.

Der CH340C ist ein beliebter USB-zu-UART-Bridge-Controller, der aufgrund seiner kosteneffektiven Lösung, einfacher Integration und umfangreicher Konfigurationsmöglichkeiten weit verbreitet ist.

Ich denke ich werde das USB-C Interface mit dem CH340C verwenden.

Power

TME1205S

Der TME1205S ist ein DC/DC-Spannungsregler, der von Traco Power hergestellt wird. Er ist ein Teil der TME-Serie von DC/DC-Wandlern und ist für die Wandlung von Eingangsspannungen von 9 bis 36 V DC in eine stabile Ausgangsspannung von 5 V DC ausgelegt.

Der TME1205S bietet eine maximale Ausgangsleistung von 1 W bei einer Effizienz von bis zu 82%. Der Regler verfügt über einen Weitbereichseingang und ist gegen Überlastung, Überspannung und Kurzschluss geschützt. Der TME1205S hat ein kompaktes SIP-4-Gehäuse und ist mit einer Grösse von nur 11,5 mm x 6,0 mm x 10,4 mm ideal für platzbeschränkte Anwendungen.

Der Regler verwendet eine festgelegte Schaltfrequenz und eine kontinuierliche Stromsteuerung, um eine stabile und präzise Ausgangsspannung zu erzeugen. Der TME1205S verfügt über eine interne Filterung, die eine saubere Ausgangsspannung ohne Störungen oder Rauschen gewährleistet.

Der TME1205S ist ein zuverlässiger und effizienter DC/DC-Spannungsregler, der für eine Vielzahl von Anwendungen geeignet ist, einschliesslich industrieller Steuerungen, Automatisierungssystemen, medizinischer Geräte und anderer Anwendungen, die eine präzise und stabile Stromversorgung erfordern.

AP2112

Der AP2112 ist ein Low-Dropout (LDO) Linear-Spannungsregler von Diodes Incorporated. Der Regler ist für die Wandlung von Eingangsspannungen von bis zu 16 V in eine stabile Ausgangsspannung von 1,2 V bis 15 V ausgelegt.

Der AP2112 verfügt über einen geringen Ruhestrom von typischerweise 125 µA, was ihn ideal für batteriebetriebene Anwendungen macht. Der Regler bietet auch einen hohen Laststrom von bis zu 600 mA und eine sehr geringe Drop-Out-Spannung von nur 250 mV bei 600 mA, was bedeutet, dass der Regler auch bei niedrigen Eingangsspannungen stabil bleibt.

Der AP2112 verfügt über verschiedene Schutzfunktionen wie Überstromschutz, Übertemperaturschutz und Kurzschlussschutz, um den Regler vor Beschädigungen und Störungen zu schützen. Der Regler ist in verschiedenen Gehäuseformen wie SOT-223, TO-252 und DFN2020-6 erhältlich, um eine einfache Integration in verschiedene Anwendungen zu ermöglichen.

Der AP2112 ist ein kosteneffektiver und zuverlässiger Linear-Spannungsregler, der in einer Vielzahl von Anwendungen eingesetzt wird, einschließlich tragbarer Geräte, medizinischer Geräte, industrieller Steuerungen und anderer Anwendungen, die eine präzise und stabile Stromversorgung erfordern.

So, das wäre es mit den Schematischen Informationen.

Weiter im nächsten Teil mit dem Layout und denn ersten Implementationen der Software.

Kommentare

Beliebte Posts aus diesem Blog

ST2S RENOVAZIO - Ein neues Leben nach 60.000 Kilometern

Pulverbeschichtung auf dem Grill

TDCM ST2-HM-01 Motorlager wechsel #1