0
0
:
0
0
:
0
0
:
0
0
Celebrate 11 Years with Anycubic: Capture Your 3D Printing Moments.
Makeronline
2026-09-06 14:29:05
69
3
Report
DIY RC Dyno Roller – Arduino Nano Geschwindigkeitsteststand
@3DOle_529025
Message
Follow
Recommended printing method
Description

RC Rollenprüfstand – Arduino Nano Speed Tester für RC Fahrzeuge

Ein selbst entwickelter Rollenprüfstand zur Geschwindigkeitsmessung von RC Autos.

Mit diesem Prüfstand lässt sich die Geschwindigkeit von RC Fahrzeugen einfach und reproduzierbar auf der Rolle messen. Die Drehzahl der Prüfrolle wird über einen inkrementellen Drehgeber mit 600 P/R (AB-Ausgang) erfasst und durch einen Arduino Nano ausgewertet. Die aktuelle Geschwindigkeit wird auf einem kompakten 1,3" OLED Display angezeigt.

Der Aufbau ist speziell für RC Modellbau entwickelt und eignet sich ideal zum Vergleichen von Fahrzeugen, Übersetzungen, Reifen oder Setup-Änderungen.

Die Messung erfolgt über die Drehzahl der Prüfrolle. Durch den bekannten Rollendurchmesser berechnet der Arduino die Geschwindigkeit in km/h. Inkrementelle Drehgeber dieser Bauart werden häufig zur Erfassung von Drehzahl, Winkel und Geschwindigkeit eingesetzt.


Funktionen

✅ Geschwindigkeitsmessung in km/h

✅ Echtzeit-Anzeige über 1,3" OLED Display

✅ Arduino Nano Steuerung

✅ Inkrementeller Drehgeber 600 P/R AB

✅ Kompakte Bauweise für RC Fahrzeuge

✅ Einfache Montage und Nachbau möglich

Benötigte Elektronik

  • Arduino Nano
  • 1,3" OLED Display (I2C)
  • Inkrementeller Drehgeber DC 5–24V / 600 P/R AB
  • Spannungsversorgung 5V

Verwendeter Drehgeber:

https://www.amazon.de/dp/B0DJ76RVTJ

Zusätzlich benötigte Bauteile

  • 1x 8 mm Welle 250mm lang
  • Wellenadapter (flexibel) 6mm auf 8mm
  • 3x Schrauben M3 x 10 mm
  • 4x Kugellager 608 passend zur 8 mm Welle

Druckempfehlung

  • Material: PLA / PETG
  • Layerhöhe: 0,2 mm
  • Wandlinien: 3–4
  • Füllung: 30 % oder mehr empfohlen
  • Mechanisch belastete Teile bevorzugt aus PETG drucken

Hintergrund

Der Prüfstand wurde entwickelt, um RC Fahrzeuge schnell und unkompliziert testen zu können. Gerade bei Wettbewerbsfahrzeugen sind kleine Änderungen an Motor, Übersetzung oder Reifen oft schwer einzuschätzen – mit diesem Aufbau bekommt man direkt messbare Ergebnisse.

Das Projekt ist komplett DIY und kann beliebig erweitert werden, z.B. um:

  • Maximalgeschwindigkeit
  • Beschleunigungsmessung
  • Datenlogging
  • Temperatur- und Spannungsmessung
  • PC/Tablet-Auswertung

Viel Spaß beim Nachbauen und Weiterentwickeln! 🏎️

 

Verkabelung

Encoder

Rot   -> 5V

Schwarz -> GND

Grün   -> D2

Weiß   -> frei

6,8kΩ PullUp  -> zwischen D2 und 5V

 

OLED SH1106

VCC -> 3,3V

GND -> GND

SDA -> A4

SCL -> A5

 

Arduino Code

 

/*

 RC Rollenprüfstand

 Arduino Nano

 SH1106 OLED 128x64 I2C

 Encoder:

 600 PPR

 Kanal A -> D2

 FALLING

 Rolle:

 60mm Durchmesser

*/


#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SH110X.h>


#define OLED_ADDR 0x3C


Adafruit_SH1106G display(

 128,

 64,

 &Wire

);

 

// Encoder

#define ENCODER_PIN 2

#define PPR 600

 

// Rolle

#define ROLLEN_DURCHMESSER_MM 60.0

 

volatile unsigned long impulse = 0;


unsigned long letzteMessung = 0;

 

float speedKmh = 0;

float rpm = 0;

float maxSpeed = 0;

 

 

// ----------------------

// Encoder Interrupt

// ----------------------

void encoderISR()

{

 impulse++;

}

 

 

// ----------------------

// Berechnung

// ----------------------

void berechneWerte()

{

 noInterrupts();

 unsigned long imp = impulse;

 impulse = 0;

 interrupts();

 

 float umdrehungen =

  (float)imp / PPR;

 

 float strecke =

  umdrehungen *

  PI *

  (ROLLEN_DURCHMESSER_MM / 1000.0);

 

 // Messzeit 100ms

 speedKmh =

  (strecke / 0.1)

  * 3.6;

 

 rpm =

  umdrehungen * 600.0;

}

 

 

// ----------------------

// OLED Anzeige

// ----------------------

void zeigeOLED()

{

 display.clearDisplay();


 display.setTextColor(

  SH110X_WHITE

 );

 

 display.setTextSize(1);


 display.setCursor(0,0);

 display.print(

  "RC Rollenpruefstand"

 );

 

 display.setTextSize(3);


 display.setCursor(0,14);

 display.print(

  speedKmh,

  1

 );

 

 display.setTextSize(1);


 display.setCursor(92,28);

 display.print(

  "km/h"

 );

 

 display.setCursor(0,45);

 display.print(

  "RPM: "

 );


 display.print(

  rpm,

  0

 );

 

 display.setCursor(70,45);

 display.print(

  "MAX:"

 );


 display.print(

  maxSpeed,

  1

 );

 

 display.display();

}

 

 

// ----------------------

// Setup

// ----------------------

void setup()

{

 Serial.begin(115200);

 

 pinMode(

  ENCODER_PIN,

  INPUT_PULLUP

 );


 attachInterrupt(

  digitalPinToInterrupt(ENCODER_PIN),

  encoderISR,

  FALLING

 );

 

 display.begin(

  OLED_ADDR,

  true

 );


 display.clearDisplay();

 display.display();

 

 Serial.println(

  "RC Rollenpruefstand gestartet"

 );

}

 

 

// ----------------------

// Loop

// ----------------------

void loop()

{


 if(

  millis() - letzteMessung >= 100

 )

 {

  letzteMessung = millis();

 

  berechneWerte();

 

  if(

   speedKmh > maxSpeed

  )

  {

   maxSpeed = speedKmh;

  }

 

  zeigeOLED();

 

  Serial.print(

   "Speed: "

  );

  Serial.print(

   speedKmh,

   1

  );


  Serial.print(

   " km/h RPM: "

  );


  Serial.print(

   rpm,

   0

  );


  Serial.print(

   " MAX: "

  );


  Serial.println(

   maxSpeed,

   1

  );

 }

}

 

 

 

CODE FOR Mph only

 

/*

 RC Rollenprüfstand

 Arduino Nano

 SH1106 OLED 128x64 I2C

 Anzeige:

 - Geschwindigkeit (mph)

 - Rollen RPM

 - Maximalgeschwindigkeit

 Encoder:

 600 PPR

 Kanal A -> D2

 FALLING

 Rolle:

 60 mm Durchmesser

*/

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SH110X.h>

#define OLED_ADDR 0x3C

Adafruit_SH1106G display(128, 64, &Wire);

// Encoder

#define ENCODER_PIN 2

#define PPR 600

// Rolle

#define ROLLEN_DURCHMESSER_MM 60.0

volatile unsigned long impulse = 0;

unsigned long letzteMessung = 0;

float speedMph = 0.0;

float rpm = 0.0;

float maxSpeed = 0.0;


//------------------------------------------------

// Encoder Interrupt

//------------------------------------------------

void encoderISR()

{

 impulse++;

}


//------------------------------------------------

// Geschwindigkeit berechnen

//------------------------------------------------

void berechneWerte()

{

 noInterrupts();

 unsigned long imp = impulse;

 impulse = 0;

 interrupts();

 // Umdrehungen in 100 ms

 float umdrehungen = (float)imp / PPR;

 // Strecke in Metern

 float strecke =

   umdrehungen *

   PI *

   (ROLLEN_DURCHMESSER_MM / 1000.0);

 // Geschwindigkeit in m/s

 float speedMs = strecke / 0.1;

 // mph

 speedMph = speedMs * 2.236936;

 // Rollen-RPM

 rpm = umdrehungen * 600.0;

}


//------------------------------------------------

// OLED

//------------------------------------------------

void zeigeOLED()

{

 display.clearDisplay();

 display.setTextColor(SH110X_WHITE);

 display.setTextSize(1);

 display.setCursor(0, 0);

 display.print("RC Rollenpruefstand");

 display.setTextSize(3);

 display.setCursor(0, 14);

 display.print(speedMph, 1);

 display.setTextSize(1);

 display.setCursor(98, 28);

 display.print("mph");

 display.setCursor(0, 45);

 display.print("RPM:");

 display.print(rpm, 0);

 display.setCursor(70, 45);

 display.print("MAX:");

 display.print(maxSpeed, 1);

 display.display();

}


//------------------------------------------------

// Setup

//------------------------------------------------

void setup()

{

 Serial.begin(115200);

 pinMode(ENCODER_PIN, INPUT_PULLUP);

 attachInterrupt(

  digitalPinToInterrupt(ENCODER_PIN),

  encoderISR,

  FALLING);

 display.begin(OLED_ADDR, true);

 display.clearDisplay();

 display.display();

 Serial.println("RC Rollenpruefstand gestartet");

}


//------------------------------------------------

// Loop

//------------------------------------------------

void loop()

{

 if (millis() - letzteMessung >= 100)

 {

  letzteMessung = millis();

  berechneWerte();

  if (speedMph > maxSpeed)

  {

   maxSpeed = speedMph;

  }

  zeigeOLED();

  Serial.print("Speed: ");

  Serial.print(speedMph, 1);

  Serial.print(" mph RPM: ");

  Serial.print(rpm, 0);

  Serial.print(" MAX: ");

  Serial.println(maxSpeed, 1);

 }

}

Tags
rc dyno
dynometer
rc car
rc racing
License
Comments & Ratings
Emoji
Picture
( 0 / 5000 )
Here is empty
Remixes