DriveCell ist ein kleines, aber leistungsstarkes Gerät, mit dem Sie Motoren, Aktuatoren und Hochleistungs-LED-Leuchten für Ihre Heimwerkerprojekte ganz einfach steuern können. DriveCell macht die Steuerung dieser Komponenten einfach, selbst wenn Sie keine Erfahrung mit Programmierung oder Elektronik haben.
In diesem Tutorial erklären wir:
Was ist DriveCell?
Stellen Sie sich vor, Sie möchten einen kleinen Roboter bauen und die Geschwindigkeit und Richtung seines Motors steuern. Dies kann für Anfänger komplex sein und erfordert normalerweise sperrige Module. DriveCell vereinfacht diesen Prozess, weil:
Wie funktioniert DriveCell?
DriveCell verwendet einen integrierten DRV8837-H-Brückenchip zur Steuerung des Stromflusses durch die Ausgangspins, der durch den Zustand der Eingangspins gesteuert wird:
Der DRV8837-Chip verfügt über Überstromschutz, Unterspannungssperre und thermische Abschaltungsfunktionen und gewährleistet so einen sicheren Betrieb.
Erste Schritte mit DriveCell
Bevor Sie DriveCell verwenden können, müssen Sie es einrichten und mit Ihrem Projekt verbinden. Hier ist eine einfache Anleitung für den Einstieg:
1. Init()
Zuerst benötigen wir einen grundlegenden Setup-Code, damit Sie loslegen können:
#include <DriveCell.h> // This line includes the DriveCell library
DriveCell myDriveCell(IN1, IN2); // Replace IN1 and IN2 with your specific pins
void setup() {
myDriveCell.Init(); // Initializes the DriveCell
}
Dieser Code weist die DriveCell an, zu starten und sich für die Steuerung Ihres Motors oder Aktuators vorzubereiten. Die Init-Funktion stellt sicher, dass alle erforderlichen Peripheriegeräte konfiguriert sind.
2. Puls (bool Richtung, uint8_t ms_Dauer)
Dieser Befehl sendet einen kurzen Stromstoß mit einer bestimmten Polarität, um den Aktuator schnell mit Strom zu versorgen und wieder auszuschalten.
myDriveCell.Pulse(true, 10); // Short burst for 10 milliseconds
3. Buzz (uint16_t us_buzz)
Dadurch vibriert der Aktuator wie ein Summer. Dies eignet sich hervorragend zum Erzeugen von Feedback-Tönen.
myDriveCell.Buzz(100); // Creates a 100us buzzing sound
4. Ton()
Diese Funktion spielt einen Standardton ab, indem sie den Aktuator mit verschiedenen gespeicherten Frequenzen vibrieren lässt.
myDriveCell.Tone(); // Plays varying tones
5. Umschalten (uint8_t power_percent)
Diese Funktion schaltet einfach die Richtung bei voller Leistung von 100 % um, was nützlich sein kann, um die Drehrichtung eines Bürstenmotors umzukehren oder einfache Schlagbewegungen zu erzeugen.
myDriveCell.Toggle(); // Switches direction
Mithilfe der CodeCell oder eines anderen ESP32-Mikrocontrollers können Sie auch den Arbeitszyklus „power_percent“ anpassen. Bei magnetischen Aktuatoren steuert „power_percent“ die magnetische Stärke, während es bei Bürstenmotoren die Geschwindigkeit anpasst.
6. Ausführen (bool glatt, uint8_t Leistungsprozentsatz, uint16_t Flip-Geschwindigkeit_ms)
Mithilfe der CodeCell oder eines anderen ESP32-Mikrocontrollers können Sie mit dieser Funktion alle „flip_speed_ms“ die Polarität eines Aktuators umkehren oder einen Motor umkehren, und zwar im Arbeitszyklus „power_percent“. Wenn Sie „smooth“ auf 1 setzen, wird die Bewegung geglättet, was ideal ist, wenn Sie FlatFlap oder CoilPad mit langsamen Bewegungen (weniger als 2 Hz) antreiben.
myDriveCell.Run(true, 50, 1000); // Smooth drive at 50% power every 1000 ms
Bei anderen Arduino-Geräten bewirkt dieser Befehl, dass der Motor/Aktuator seine Richtung (vorwärts und rückwärts) bei voller Geschwindigkeit ändert. Beispiel:
myDriveCell.Run(500); // Motor changes direction every 500 milliseconds
7. Antrieb (bool Richtung, uint8_t Leistung_Prozent)
Mithilfe der CodeCell oder eines anderen ESP32-Mikrocontrollers können Sie mit dieser Funktion die Geschwindigkeit und Richtung Ihres Motors steuern. Sie können den Motor vorwärts oder rückwärts laufen lassen und die Geschwindigkeit einstellen.
myDriveCell.Drive(true, 75); // Moves forward at 75% power
Beispiele:
Indem Sie eine dieser Funktionen in einer Schleife verwenden, können Sie die gewünschte Sequenz für Ihren Motor, Aktuator oder Ihre Hochleistungs-LEDs erstellen. Hier ist ein Beispiel, in dem wir zwei Gleichstrommotoren initialisieren und sie mit unterschiedlichen Geschwindigkeiten antreiben:
#include <DriveCell.h>
#define IN1_pin1 2
#define IN1_pin2 3
#define IN2_pin1 5
#define IN2_pin2 6
DriveCell Motor1(IN1_pin1, IN1_pin2);
DriveCell Motor2(IN2_pin1, IN2_pin2);
uint8_t mode = 0;
uint8_t speed_percentage = 0;
void setup() {
Motor1.Init();
Motor2.Init();
speed_percentage = 80; /* Motor auf 80 % Leistung einstellen */
}
void schleife() {
Verzögerung (3000);
Modus++;
Schalter (Modus) {
Fall 1:
/* Vorwärts gehen */
Motor1.Antrieb(1, Geschwindigkeitsprozentsatz);
Motor2.Drive(1, Geschwindigkeitsprozentsatz);
brechen;
Fall 2:
/* Rückwärts bewegen */
Motor1.Drive(0, Geschwindigkeitsprozentsatz);
Motor2.Drive(0, Geschwindigkeitsprozentsatz);
brechen;
Fall 3:
/* Biegen Sie links ab */
Motor1.Antrieb(1, Geschwindigkeitsprozentsatz);
Motor2.Drive(0, Geschwindigkeitsprozentsatz);
brechen;
Fall 4:
/* Biegen Sie rechts ab */
Motor1.Drive(0, Geschwindigkeitsprozentsatz);
Motor2.Drive(1, Geschwindigkeitsprozentsatz);
brechen;
Fall 5:
/* Schalte beide Motoren aus */
Motor1.Antrieb(1, 0);
Motor2.Antrieb(1, 0);
wenn (Geschwindigkeitsprozentsatz < 95) {
speed_percentage += 5; /* Geschwindigkeit erhöhen */
} anders {
speed_percentage = 50; /* Auf 50 % Leistung zurücksetzen */
}
Modus = 0;
brechen;
}
}
Im nächsten Beispiel verwenden wir den Näherungssensor von CodeCell , um die Motoren zu aktivieren. Dieser Sensor fungiert als Gestenschalter und wird aktiviert, wenn sich eine Hand im Umkreis von 5 cm befindet.
#include <CodeCell.h>
#include <DriveCell.h>
#define IN1_pin1 2
#define IN1_pin2 3
#define IN2_pin1 5
#define IN2_pin2 6
CodeCell myCodeCell;
DriveCell Motor1(IN1_pin1, IN1_pin2);
DriveCell Motor2(IN2_pin1, IN2_pin2);
uint8_t speed_percentage = 0;
bool on_flag = 0;
void setup() {
Serial.begin(115200); /* Set Serial baud rate to 115200. Ensure Tools/USB_CDC_On_Boot is enabled if using Serial. */
myCodeCell.Init(LIGHT); /*Initializes Light Sensing*/
Motor1.Init();
Motor2.Init();
speed_percentage = 100;
}
void loop() {
if (myCodeCell.Run()) {
/*Runs every 100ms - Put your code here*/
if (myCodeCell.Light_ProximityRead() > 3000) {
/*Wenn ein Tippen erkannt wird, leuchtet die LED 1 Sekunde lang gelb*/
myCodeCell.LED(0XA0, 0x60, 0x00U);
Motor1.Antrieb(0, 0);
Motor2.Antrieb(0, 0);
Verzögerung (1000);
ein_Flagge = !ein_Flagge;
}
wenn (on_flag) {
/*Vorwärts gehen*/
Motor1.Antrieb(1, Geschwindigkeitsprozentsatz);
Motor2.Drive(1, Geschwindigkeitsprozentsatz);
} anders {
Motor1.Antrieb(0, 0);
Motor2.Antrieb(0, 0);
}
}
}
Wenn Sie weitere Fragen zur DriveCell haben, senden Sie uns einfach eine E-Mail und wir helfen Ihnen gerne weiter!
Erfahren Sie als Erster von neuen Projekten und sichern Sie sich spannende Angebote!
© 2024 Microbots.