Repository navigation
AVR-Ibus.public #6
Replies: 5 comments 1 reply
|
Hallo, sorry es ist nicht so easy, da es mit Fritzing erstellt wurde. Viele Grüße |
|
Versuch das, nicht alle Bauteile sind an der richtigen Position. Bei JLC sollte man aktivieren, dass ein Mitarbeiter die Position prüft.
|
|
Moin Harry,
vielen dank, ich werde es demnächst probieren und dir Bericht erstatten, ob
es erfolgreich war.
Gibt es eine Möglichkeit in dem AVR Ibus ein erweiterbares Skript in der
Oberfläche mit einzuarbeiten für die OEL-Temp + OEL-Druck ?
ich möchte mit es im BC anzeigen lassen. Zum Beispiel die
OEL-Temp anstatt der Außentemperatur und zum Beispiel den OEL-Druck für die
Rundenzeit oder der gleichen.
ich weiß das dies funktioniert mit einem einzelnen Arduino aber es wäre
sinnvoller ein gesamtes Build zu haben.
Falls du Ideen mit mir teilen möchtest, würde ich mich darüber freuen.
MfG Pascal
Am Mi., 20. Aug. 2025 um 23:48 Uhr schrieb harryberlin <
***@***.***>:
… Versuch das, nicht alle Bauteile sind an der richtigen Position.
AVR_IBus_RaspPi_V1.15_BOM_CPL_JLCSMT.xlsx
<https://github.com/user-attachments/files/21906983/AVR_IBus_RaspPi_V1.15_BOM_CPL_JLCSMT.xlsx>
Bei JLC sollte man aktivieren, dass ein Mitarbeiter die Position prüft.
image.png (view on web)
<https://github.com/user-attachments/assets/390beeb3-b8b0-4313-865d-74e13b3e4430>
—
Reply to this email directly, view it on GitHub
<#6 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BWDBF6JWQ46KMCY23I4TEWT3OTUJ7AVCNFSM6AAAAACEBUQRGSVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTIMJXGA3DSNQ>
.
You are receiving this because you authored the thread.Message ID:
***@***.***
com>
|
|
Moin.
Meine Idee dahinter ist mit einem Arduino eine Emulation von einem
Steuergerät.
BC-Emulation → Öltemp/Öldruck ins Kombiinstrument oder MID einspielen.
Radio/Navi-Emulation → Befehle wie Lautstärke, Titelanzeige, Lenkrad-Tasten
auswerten.
Daten-Gateway → OBD-Daten (z. B. Lambda, Ladedruck) auf den I-Bus spiegeln.
Logging / Diagnose → den Busverkehr mitschneiden und auf SD speichern.
Custom-Steuergerät → z. B. Zusatzwasserpumpe oder E-Lüfter nach Temperatur
steuern.
Ausgezeichnet wäre es, wenn die Anzeigen vom OEL-Druck und OEL- Temp im OEM
Boardmonitor angezeigt werden. Alternativ wäre es auch machbar die Anzeigen
mittels einer BC-Emulation im IKE anzeigen zulassen.
Zum Beispiel:
Update-Rate einstellbar in Millisekunden
Mittelwertfilter für ruhige Anzeige im BC
Auslesen von Öldruck (0–5 V) und Öltemperatur (NTC)
Senden als BC-Werte:
Öltemp → „Durchschnittsverbrauch“
Öldruck → „Ø-Geschwindigkeit“
…---
#include <Arduino.h>
#include "IBusBM.h" // https://github.com/tz1/IBusBM
IBusBM ibus(Serial1); // Nano R4: Serial1 für MCP2025
// ====== Pinbelegung ======
const int pinOilPressure = A0;
const int pinOilTemp = A1;
// ====== Kalibrierung ======
const float pressureMax = 10.0; // bar bei 5V Ausgang
const float adcMax = 1023.0; // 10-Bit ADC
const float vRef = 5.0; // ADC-Referenzspannung
const int ntcPullup = 10000; // 10k Pullup-Widerstand
const int ntcBValue = 3950; // B-Wert des NTC
const int ntcR25 = 10000; // Widerstand bei 25°C
// ====== Update-Rate ======
const unsigned long updateInterval = 300; // ms
unsigned long lastUpdate = 0;
// ====== Filter-Parameter ======
const int filterDepth = 5; // Anzahl Messungen im Mittelwert
float pressureBuffer[filterDepth] = {0};
float tempBuffer[filterDepth] = {0};
int bufferIndex = 0;
// ====== Hilfsfunktionen ======
float ntcToTempC(int adcValue) {
if (adcValue == 0) return -40; // Schutz gegen Division durch 0
float resistance = (adcMax / (float)adcValue - 1.0) * ntcPullup;
float tempK = 1.0 / (1.0 / (273.15 + 25.0) + (1.0 / ntcBValue) *
log(resistance / ntcR25));
return tempK - 273.15;
}
float average(float *buf, int size) {
float sum = 0;
for (int i = 0; i < size; i++) sum += buf[i];
return sum / size;
}
void setup() {
Serial1.begin(9600); // MCP2025 Kommunikation
ibus.begin();
}
void loop() {
if (millis() - lastUpdate >= updateInterval) {
lastUpdate = millis();
// Sensoren auslesen
int rawPress = analogRead(pinOilPressure);
int rawTemp = analogRead(pinOilTemp);
float oilPressure = (rawPress / adcMax) * pressureMax;
float oilTempC = ntcToTempC(rawTemp);
// In Buffer schreiben
pressureBuffer[bufferIndex] = oilPressure;
tempBuffer[bufferIndex] = oilTempC;
bufferIndex = (bufferIndex + 1) % filterDepth;
// Gefilterte Werte berechnen
float avgPressure = average(pressureBuffer, filterDepth);
float avgTemp = average(tempBuffer, filterDepth);
// Senden an BC
ibus.writeBCConsumption(avgTemp); // °C als Verbrauch
ibus.writeBCSpeed(avgPressure); // bar als Ø-Geschwindigkeit
}
}
---
Einstellung der Aktualisierungsrate
In der Zeile:
const unsigned long updateInterval = 300; // ms
stellst du z. B. ein:
1000 → 1 s Aktualisierung
300 → 0,3 s Aktualisierung
200 → schneller geht oft noch, aber BC kann flackern
MfG Andres Pascal
harryberlin ***@***.***> schrieb am Mo., 1. Sept. 2025, 22:17:
Meinst du, dass im OEM Bordmonitormenü andere Werte bei Außentemperatur
stehen oder im IKE Display?
Im Bordmonitor müste man den Wert immer wieder überschreiben, wenn er
aktualisiert wird, da man das nicht verhindern kann. Und Außerntemperatur
wird trotzdem davor stehen. Ggf. kann man das mit NavTweak in der Firmware
vom Navirechner ändern.
—
Reply to this email directly, view it on GitHub
<#6 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BWDBF6PEZDXPI3TZZVEHBO33QSSVPAVCNFSM6AAAAACEBUQRGSVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTIMRXHEZDANY>
.
You are receiving this because you authored the thread.Message ID:
***@***.***
com>
|
|
Ich möchte es dir nicht vermiesen, aber das funktioniert so nicht, wie du dir das vorstellst. Dein Code schaut nach ChatGPT aus. Zudem ist die Platine für den Raspberry so auch nicht wirklich die Richtige. |

Uh oh!
There was an error while loading. Please reload this page.
Hey Harry, ich habe eine Frage an dich. Ich möchte mir die Leiterplatine bestücken lassen. Die .BOM Datei finde ich, aber ich finde keine .CPL Datei. Könntest du, falls, vorhanden, mir die Datei zukommen lassen ?
MfG Pascal
All reactions