
Cílem tohoto Arduino projektu je testování a kalibrace obousměrného regulátoru otáček (ESC) pomocí PWM signálu. Program simuluje sekvenci pohybů: dopředu, neutrální pozici a reverzní chod, což umožňuje ověřit správnou funkci ESC včetně přepínání směru otáčení motoru.
Tento skript je užitečný pro:
- Diagnostiku ESC – ověření, zda správně reaguje na PWM signály.
- Kalibraci reverzního režimu – některé ESC vyžadují specifickou sekvenci pro aktivaci zpětného chodu.
Možnosti využití:
- RC modely (auta, lodě, drony) Tento testovací skript pomáhá ověřit ESC před instalací do modelu, čímž se předejde poruchám během provozu.
- Výuka a demonstrace PWM řízení
Seznam součástek:
- Arduino Uno R3 – řídicí jednotka pro generování PWM signálu
- ESC Electronic Speed Controller
- BLCD motor – pro vizuální ověření směru a otáček
- Externí napájecí zdroj pro ESC – např. LiPo baterie nebo adaptér (ESC nelze napájet z Arduino)
- Propojovací vodiče – spojení mezi Arduino, ESC a případně motorem
- USB kabel – pro nahrání kódu do Arduino a jeho napájení
Schéma zapojení:
- ESC signálový vodič → pin D9 na Arduinu
- ESC napájení → připojeno k LiPo baterii (červený = +, černý = −)
- GND ESC → propojeno s GND Arduina (vyrovnání potenciálu)
- Motor → připojen k ESC
- Arduino → napájeno přes USB nebo externí 5V zdroj
- Serial monitor → pro výpis stavu (Forward, Neutral, Reverse)

Kód pro Arduino:
#include <Arduino.h>
#include <Servo.h>
Servo esc;
void setup() {
esc.attach(9); // Signálový pin ESC na D9
Serial.begin(9600);
// Start v neutrálu
esc.writeMicroseconds(1500);
Serial.println("Neutral (startup)");
delay(3000);
}
void loop() {
// Dopředu
esc.writeMicroseconds(2000);
Serial.println("Forward");
delay(3000);
// Neutrál
esc.writeMicroseconds(1500);
Serial.println("Neutral (pause before reverse)");
delay(1500);
// Reverz – první pokus
esc.writeMicroseconds(1000);
Serial.println("Reverse attempt 1");
delay(4500);
// Neutrál
esc.writeMicroseconds(1500);
Serial.println("Neutral (between reverse clicks)");
delay(500);
// Reverz – druhý pokus
esc.writeMicroseconds(1000);
Serial.println("Reverse attempt 2");
delay(4500);
// Neutrál
esc.writeMicroseconds(1500);
Serial.println("Neutral");
delay(3000);
}