Étape 3: Ajouter un Arduino au mélange
J’avais besoin d’une sorte de moyen de reconnaître quand j’appuie sur le bouton sur la tondeuse de mauvaises herbes et envoyer un PWM de full throttle... le truc c’est qu’il a mise en œuvre ou l’ESC peut griller. Je l’ai fait à l’aide d’un Arduino Pro Mini mais un nano ferait l’affaire. Vous devriez être en mesure d’obtenir un pour moins de $10 en ligne.
Ensuite, j’ai câblé le pouls de l’ESC à le pin0 analogique et acheminé la puissance de l’ESC à la broche d’alimentation de carte Arduino... et bien sûr de se connecter au sol aussi bien.
Je pense que la plupart du temps tous les débroussailleuses ont un commutateur à l’intérieur de la détente en série avec la batterie et le moteur en bas. J’ai court-circuité la borne en haut de la batterie, puisque je vais ne plus utiliser il. En conséquence, les deux fils qui seraient à l’origine brancher dans le moteur fonctionnent comme ma connexion/gâchette. Cela a été soudé entre la puissance de l’Arduino et le pin2 numérique. J’ai câblé une résistance k 10 au sol puis au commutateur numérique broche 2 comme illustré dans cet exemple consignes ici.
L’astuce est le code, le code doit rampe vers le haut le moteur. Ici, c’est sous forme brute :
#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, INPUT); servo.attach(servoPin); digitalWrite(ledPin, LOW); servo.writeMicroseconds(servoPwm); delay (7000); // wait for ESC to startup } void loop() { switchState = digitalRead(switchPin); if (switchState == HIGH && servoPwm == 1500) { digitalWrite(ledPin, HIGH); 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; } if (switchState == LOW) { servoPwm = 1500; servo.writeMicroseconds(servoPwm); digitalWrite(ledPin, LOW); } delay(100); // waits for the servo to get there }