Weed trimmer motor ersättas med borstlösa RC lastbil motor och använder en Arduino kontroll ombord (3 / 4 steg)
Steg 3: Lägg till en Arduino till mixen
Jag behövde någon form av sätt att känna igen när jag trycker på knappen på gräs trimmer och skicka en PWM för full throttle... Tricket är att det har att ramp upp eller ESK kan bränna ut. Jag gjorde detta med en Arduino Pro Mini men en nano skulle göra susen. Du bör kunna få en för mindre än $10 online.
Nästa jag fast ESC puls till den analoga pin0 och dirigeras makt från ESK till Arduino styrelsen power stift... och naturligtvis ansluta marken också.
Jag tror för det mesta alla ogräs trimmare har en switch på inuti utlösaren i serie med batteriet och motor på botten. Jag kortsluten batteriet terminalen på toppen eftersom jag kommer inte längre att använda den. Som ett resultat fungerar de två kablarna som ursprungligen skulle kopplas till motorn som min switch/trigger anslutning. Detta var fastlödda mellan Arduino makt och digital pin2. Jag trådbundna en 10 k resistor till marken sedan till växeln på digital pin2 som visas i detta exempel instruktionerna här.
Tricket är koden, koden måste ramp upp motorn. Här är det i råformat:
#include < servo.h >< /servo.h >< Servo.h >
int switchState = 0;
int switchPin = 2;
int servoPin = 14.
int ledPin = 13. < servo.h >< /servo.h >
int servoPwm = 1500;
Servo servo;
void setup()
{
pinMode(servoPin,OUTPUT);
pinMode (switchPin, ingång);
servo.attach(servoPin);
digitalWrite (ledPin, låg);
servo.writeMicroseconds(servoPwm);
fördröjning (7000); vänta på ESC till start
}
void loop()
{
switchState = digitalRead(switchPin);
om (switchState == hög & & servoPwm == 1500)
{
digitalWrite (ledPin, hög);
servo.writeMicroseconds(1550);
Delay(100);
servo.writeMicroseconds(1600);
Delay(100);
servo.writeMicroseconds(1650);
Delay(100);
servo.writeMicroseconds(1700);
Delay(100);
servo.writeMicroseconds(1750);
Delay(100);
servo.writeMicroseconds(1800);
servoPwm = 1800;
}
om (switchState == låg)
{
servoPwm = 1500;
servo.writeMicroseconds(servoPwm);
digitalWrite (ledPin, låg);
}
Delay(100); väntar på servo att komma dit
}