Menü
Microbots
0
  • Lernen
  • Geschäft
    • Module & Technik
    • Maker-Packs
    • Werkzeuge und Ausrüstung
    • Robots & Displays
    • Alle Produkte
  • Gemeinschaft
    • Education
    • Software
  • Um
    • Unsere Geschichte
    • Kontakt
    • FAQs
  • Deutsch
  • Ihr Warenkorb ist leer
Microbots
  • Lernen
  • Geschäft
    • Module & Technik
    • Maker-Packs
    • Werkzeuge und Ausrüstung
    • Robots & Displays
    • Alle Produkte
  • Gemeinschaft
    • Education
    • Software
  • Um
    • Unsere Geschichte
    • Kontakt
    • FAQs
  • Sprache

  • 0 0

MotorCell

MotorCell - Pulsing a Spin

MotorCell - Pulsing a Spin

MotorCell isn't just for continuous motion - it can also be pulsed for a short bursts of movement. This is particularly useful for kinetic art projects, where controlled, rhythmic motion can create stunning visual effects. By pulsing the motor for a few milliseconds at a time, you can achieve coordinated spinning effects across multiple motors.

Why Pulse a Motor?

  • Kinetic Art Installations: Create timed, individual spins to form unique patterns and illusions.
  • Efficiency: Only running the motor when needed reduces power consumption.
  • Tactile Feedback: Short bursts of motion can simulate haptic feedback.

Pulsing Motor Example

This example demonstrates how to pulse six motors for 2000 milliseconds (2 seconds) each, creating a sequential spinning effect. The function Pulse(IN_pinX, pulse_ms) activates each motor for a set duration before moving to the next.

#include <MotorCell.h>

#define IN_pin1 1
#define IN_pin2 2
#define IN_pin3 3
#define IN_pin5 5
#define IN_pin6 6
#define IN_pin7 7

#define pulse_ms 2000

int motor_num = 0;

MotorCell myMotorCell(1,2,3);

void setup() {
}

void loop() {
  delay(100);
  motor_num++;
  switch (motor_num) {
    case 1:
       myMotorCell.Pulse(IN_pin1, pulse_ms); /* Pulse motor 1 for 2000ms */
      break;
    case 2:
       myMotorCell.Pulse(IN_pin2, pulse_ms); /* Pulse motor 2 for 2000ms */
      break;
    case 3:
       myMotorCell.Pulse(IN_pin3, pulse_ms); /* Pulse motor 3 for 2000ms */
      break;
    case 5:
       myMotorCell.Pulse(IN_pin5, pulse_ms); /* Pulse motor 5 for 2000ms */
      break;
    case 6:
       myMotorCell.Pulse(IN_pin6, pulse_ms); /* Pulse motor 6 for 2000ms */
      break;
    case 7:
       myMotorCell.Pulse(IN_pin7, pulse_ms); /* Pulse motor 7 for 2000ms */
      motor_num = 0; /* Reset the sequence */
      break;
  }
}

How This Works

  1. The motor_num variable tracks which motor is currently active.
  2. The loop increments motor_num and selects the corresponding motor.
  3. The function Pulse(IN_pinX, pulse_ms) is used to activate each motor for 2 seconds before moving to the next.
  4. The sequence resets, continuously looping the effect.

Expanding on the Effect

  • Modify Pulse Duration: Change pulse_ms to adjust the spin time of each motor.
  • Add More Motors: Expand the case structure to include additional motors.
  • Vary the Timing: Introduce random delays or different pulse durations for each motor.
  • Use Sensor Inputs: Trigger motor pulses based on sensor data for interactive installations. The CodeCell's proximity can make this super fun!

Ready to start experimenting? Grab a MotorCell today and check out the MotorCell GitHub Repository for more code examples and technical documentation!

Vollständigen Artikel anzeigen

MotorCell - Controlling High Speed RPM

MotorCell - Controlling High Speed RPM

MotorCell utilizes the BD67173NUX three-phase back-EMF controller with a sensorless drive system, allowing speed control via a PWM input signal duty cycle. The IN pin defaults to low, running the motor at full speed when pulled high (2.5V–5V). You can adjust the speed in 1,000 RPM increments via the duty cycle, or directly use the MotorCell library functions.

Important Notes & Safety Information

  • Load: MotorCell is designed to drive small loads. The speed will decrease as the load/drag increases. The maximum spinning load is 12g at a radius of 18mm. For larger radius check the specifications for the full torque vs speed graph.
  • High-Speed Caution: Keep hands away from moving parts and wear protective eyewear.
  • OUT Pin Pull-Up Resistor: The MotorCell library automatically enables an internal pull-up on the OUT pin for speed readings. If using custum software, ensure the pull-up remains enabled or add an external one.
  • Stall Detection: If the motor is forced to stop, it enters a 5-second lock protection mode. This can be reset by setting the PWM input to 0% and back on, a process automatically handled by the MotorCell library’s Spin function.

Setting Up Your MotorCell 


Connecting Your MotorCell

  • IN: 10kHz-50kHz PWM input for speed control (or connect to VDD for full speed)
  • OUT: Speed frequency feedback (requires a pull-up resistor if not implemented through software)
  • FR: Optional direction control (connect to VDD, GND, or control with GPIO)
  • GND: Ground connection
  • VDD: Power input (2.5V–5V)

Installing the MotorCell Library 

To get started, install the MotorCell library from the Arduino Library Manager:

  1. Open the Arduino IDE.
  2. Navigate to Sketch > Include Library > Manage Libraries.
  3. Search for “MotorCell” and install it.

The library includes examples to help you quickly get started with MotorCell control.

Speed Control Example

We going to start with control the speed level using the Spin function. This function adjusts the motor’s speed to the desired percentage of its maximum capability and returns the current RPM value. This value is also automatically printed on the Serial Monitor, for easy debugging.  If the motor stalls, it will automatically attempt to restart.

#include <MotorCell.h>

#define IN_pin1 2
#define OUT_pin2 3
#define FR_pin2 1

MotorCell myMotorCell(IN_pin1, OUT_pin2, FR_pin2); /* Configure the MotorCell pins */

void setup() {
  Serial.begin(115200); /* Set up serial - Ensure Tools/USB_CDC_On_Boot is enabled */

  myMotorCell.Init(); /* Initialize the MotorCell */
}

void loop() {
  uint16_t MotorRPM = myMotorCell.Spin(25); /* Set speed to 25% of maximum speed */
}

⚠ Note: For this function we recommend using an ESP32 device like the CodeCell to avoid delays when reading the RPM

Reversing Motor Direction Example

This next example demonstrates how to reverse the motor’s direction every 5 seconds while running it at full speed. The MaxSpin function sets the motor to its maximum speed, while the ReverseSpin function changes its rotation direction. This alternates between clockwise and counterclockwise rotation with a 5-second delay between each direction change.

#include <MotorCell.h>

#define IN_pin1 2
#define OUT_pin2 3
#define FR_pin2 1

MotorCell myMotorCell(IN_pin1, OUT_pin2, FR_pin2); /* Configure the MotorCell pins */

void setup() {
  Serial.begin(115200); /* Set up serial - Ensure Tools/USB_CDC_On_Boot is enabled */

  myMotorCell.Init(); /* Initialize the MotorCell */
}

void loop() {
  myMotorCell.MaxSpin(); /* Set motor to maximum speed */
  myMotorCell.ReverseSpin(); /* Reverse the motor's rotation direction */
  delay(5000); /* Wait for 5 seconds */
  
  myMotorCell.MaxSpin(); /* Maintain maximum speed */
  myMotorCell.ReverseSpin(); /* Reverse direction again */
  delay(5000); /* Wait for another 5 seconds */
}

PID Speed Control Example

This final example implements a PID controller to regulate the motor speed to the desired RPM using the SpinPID function. The PID controller dynamically compensates for disturbances and load variations, ensuring smooth operation. If the motor stalls, the function will automatically restart it and notify you if the target speed cannot be reached. This is also automatically printed on the Serial Monitor, for easy debugging.

#include <MotorCell.h>

#define IN_pin1 2
#define OUT_pin2 3
#define FR_pin2 1

MotorCell myMotorCell(IN_pin1, OUT_pin2, FR_pin2); /* Configure the MotorCell pins */

void setup() {
  Serial.begin(115200); /* Set up serial - Ensure Tools/USB_CDC_On_Boot is enabled */

  myMotorCell.Init(); /* Initialize the MotorCell */
}

void loop() {
  uint16_t MotorRPM = myMotorCell.SpinPID(15000); /* Set target RPM to 15,000 using PID */
}

⚠ Note: The SpinPID() function uses a high-speed PWM timer, making it compatible only with CodeCell and ESP32-based devices.

Conclusion 

With the MotorCell library installed, you can easily control speed, direction, and monitor its RPM!

Ready to start experimenting? Grab a MotorCell today and check out the MotorCell GitHub Repository for more code examples and technical documentation!

 

Vollständigen Artikel anzeigen

MotorCell - Creating Press-Fit Parts

MotorCell - Creating Press-Fit Parts

MotorCell’s shaftless design keeps things slim and easy to integrate. The rotor is made from 3.3mm aluminum with knurling on its edge, allowing direct press-fit attachment to the rotor’s teeth for a secure connection.

Press-Fit Guidelines

For installing press-fit 3D-printed parts, we recommend an inner diameter of 16.4mm to 16.6mm, depending on your 3D printer’s tolerance. Once printed, simply press the part onto the rotor’s teeth to hold it in place.

If additional security is needed, superglue can be applied to the rotor’s teeth. Make sure the glue is only applied to the sides, and doesn't enter near the MotorCell's bearing.

Example Press-Fit Mounts

A variety of 3D-printed mounts can be found in the MotorCell GitHub repository: 👉 MotorCell 3D Mounts

Examples include:

  • Fan Mount – Attach a small fan blade and mount
  • Stirrer Mount – Convert MotorCell into a compact stirrer
  • Vibrating Mass – Create a vibration motor for haptic feedback
  • Kinetic Art Mount – Drive rotating visual art

Important Considerations

  • Motor Load Capacity: MotorCell is designed for small loads. The speed will decrease as the load increases. The maximum spinning load is 12g at a radius of 18mm. Refer to the specifications for a torque vs speed graph.
  • High-Speed Caution: MotorCell operates at high speeds. Keep hands away from moving parts and wear protective eyewear.
  • Disassembly: Handle with care when unbolting the shaft. The motor contains small, precision-machined parts that are easy to lose. Reassemble with a torque of 0.15 Nm.
  • Soldering: Be cautious when soldering, as the motor’s magnets may attract the soldering iron.

Conclusion

We aim to make integrating MotorCell into your projects as seamless as possible.

Ready to start experimenting? Grab a MotorCell today and check out the MotorCell GitHub Repository for more code examples and technical documentation!

Vollständigen Artikel anzeigen

Understanding MotorCell

Understanding MotorCell

 

When working on projects that require high-speed motion in a compact form factor, traditional brushless motors can be difficult to integrate due to their size and complexity. This is why MotorCell is unique as it combines the rotor, stator, and driver into a single, ultra-compact module.

In this post, we’ll explore the MotorCell’s design, driver functionality, and integration into your projects.

What is a MotorCell?

MotorCell is the smallest coreless high-speed PCB motor with planar PCB windings and built-in sensorless control, eliminating the need for extra sensors! By integrating everything into a single module, it provides a tiny and compact solution for makers and developers working on applications requiring high speed motor control.

Designed for low-torque, high-speed applications, MotorCell supports PWM-based speed control and works seamlessly with the MotorCell library, which includes prebuilt PID control for CodeCell and other ESP32-based devices.

How Does MotorCell Work?

It's PCB stator is made from a 6-layer FR4 board, that has 6 copper windings connected in a star-shape configuration. This makes the motor a 3-phase axial-flux brushless motor. These type of motors need to be powered with specific timings to generate a commutation waveform and rotate the magnetic rotor on top. 

This is why MotorCell also utilizes the BD67173NUX chip as its three-phase back-EMF controller, enabling a sensorless commutation, so no Hall sensors required. This driver allows speed adjustments via the input signal PWM duty cycle, with a resolution of around 1,000 RPM increments. The IN pin is by defaults low, running the motor at the maximum speed when pulled high (2.5V–5V).

If the motor is forced to stop, it enters a 5-second lock protection mode, which can be instantly resets when PWM is set to 0% and restarted - this is automatically managed by the MotorCell library’s Spin function.

Key Features

  • Ultra-Compact & Shaftless: With a 3.3mm thin aluminum rotor, the MotorCell allows direct press-fit attachment to the rotor’s teeth.
  • High-Speed Performance: Spins up to 30,000 RPM at no-load.
  • Durable & Lightweight: The rotor integrates four arc-magnets, an iron back-plate to enchance the magnetic field and a ceramic-hybrid ball bearings.
  • PCB Integration: The open PCB stator design enables integration into a PCB, allowing for better customization.
  • Sensorless Operation: Reduces components and size, making the setup easier.
  • PWM Speed Control & Feedback: Provides speed feedback through the OUT pin.

Important Notes

  • MotorCell is designed for light loads. Speed decreases with load. Maximum spinning load: 12g at a radius of 18mm.
  • High-Speed Caution: Keep hands away from moving parts and wear protective eyewear.
  • OUT Pin Pull-Up Resistor: The MotorCell library automatically enables an internal pull-up on the OUT pin. If using a different microcontroller, ensure the pull-up remains enabled or add an external one.
  • Disassembly & Handling: MotorCell has precision-machined parts that are super-tiny and easy to lose. If reassembling, it is recommended to torque the bolted-shaft to 0.15 Nm.
  • Soldering Precautions: The soldering iron may be attracted to the rotor’s magnets—handle with care.
  • Press-Fit 3D Printed Parts: Recommended inner diameter: 16.4mm–16.6mm, depending on 3D printer tolerances. Parts can be press-fit or secured with superglue.

Open Stator

We believe the exciting advantage of PCB motors lies in their ability to integrate seamlessly with electronics, eliminating the need for additional PCBs. That’s why we’ve made it simpler to incorporate the Stator directly into your custom PCB, thanks to its Open Source Design - available here.

However, building a high-speed rotor remains a complex challenge. To make things easier, you can purchase the rotor separately, allowing you to effortlessly add a PCB motor to your board for a more compact design while ensuring a reliable rotor configuration!

Setting Up Your MotorCell 

Connecting Your MotorCell

  • IN: 10kHz-50kHz PWM input for speed control (or connect to VDD for full speed)
  • OUT: Speed frequency feedback (requires a pull-up resistor if not implemented through software)
  • FR: Optional direction control (connect to VDD, GND, or control with GPIO)
  • GND: Ground connection
  • VDD: Power input (2.5V–5V)

Installing the MotorCell Library

To get started with Arduino:

  1. Open the Arduino IDE.
  2. Navigate to Sketch > Include Library > Manage Libraries.
  3. Search for “MotorCell” and install it.

Conclusion

With the MotorCell library installed, you can easily control speed, direction, and monitor its RPM, explained in more detail in our other tutorials.

Ready to start experimenting? Grab a MotorCell today and check out the MotorCell GitHub Repository for more code examples and technical documentation!


Vollständigen Artikel anzeigen

MotorCell Basics: Your First Steps

MotorCell-Grundlagen: Ihre ersten Schritte

MotorCell ist ein ultrakompakter, wellenloser PCB-Motor, der für Anwendungen mit hoher Geschwindigkeit und niedrigem Drehmoment entwickelt wurde. Mit seinem innovativen Pfannkuchendesign und den planaren PCB-Wicklungen ist MotorCell perfekt für Robotik, Kunstinstallationen und Heimwerkerprojekte geeignet. Dieser Motor vereinfacht die Integration durch sensorlose Steuerung mit PWM-Geschwindigkeitsanpassungen.

Vollständiges Video-Tutorial in Kürze verfügbar

In diesem Tutorial behandeln wir:

  • Was ist MotorCell und wie funktioniert es?
  • Einrichten Ihrer MotorCell
  • Erste Schritte mit der Arduino-Bibliothek
  • Beispielprojekte, um MotorCell zum Leben zu erwecken

Was ist MotorCell?

Die MotorCell erfindet das Motordesign neu, indem Rotor, Stator und Treiber in einer einzigen flachen Leiterplatte integriert werden. Diese einzigartige Struktur:

  • Reduziert die Größe auf nur wenige Millimeter Dicke.
  • Bietet Geschwindigkeitsregelung über PWM und auch Geschwindigkeitsfeedback.
  • Funktioniert ohne Sensor, was weniger Komponenten und eine einfachere Einrichtung bedeutet.
  • Vereinfacht die Integration mit Standard-Pitch-Pins.

MotorCell ist ideal für Anwendungen, die kleine, leichte und kompakte Motoren erfordern, wie etwa kleine Roboter, kinetische Kunst oder sogar tragbare Geräte.

Einrichten Ihres Motors

Führen Sie zunächst die folgenden Schritte aus:

  • Anschließen Ihrer MotorCell

Pins:

  • IN: Verbinden Sie sich mit VDD (für volle Geschwindigkeit) oder einem PWM-fähigen GPIO-Pin auf Ihrem Mikrocontroller, um die Motorgeschwindigkeit zu steuern.
  • OUT: Optional zum Lesen der Drehzahl der MotorCell – erfordert einen Pullup-Widerstand (interner Pullup wird automatisch von der MotorCell-Bibliothek konfiguriert)
  • FR: Optional zur Steuerung der Motorrichtung – Verbindung zu VDD, GND oder einem GPIO-Pin zum Vorwärts-/Rückwärtsschalten.
  • GND: Mit Erdungsstift verbinden.
  • VDD: An Versorgungspin 2,5V bis 5V anschließen
  • Installieren der MotorCell-Bibliothek

Öffnen Sie die Arduino IDE, gehen Sie zu Sketch > Include Library > Manage Libraries , suchen Sie nach „MotorCell“ und installieren Sie es. Fügen Sie es dann in Ihren Code ein und richten Sie Ihre Pins ein:

 #include "MotorCell.h"

 #define IN_PIN 2
 #define OUT_PIN 3
 #define FR_PIN 1

 MotorCell myMotorCell(IN_PIN, OUT_PIN, FR_PIN);

 void setup() {
 myMotorCell.Init(); // Initialize the MotorCell
 }

Funktionen der MotorCell-Bibliothek

Hier sind die Kernfunktionen der MotorCell-Bibliothek:

  • Init(): Bereitet die MotorCell für den Betrieb vor.
 myMotorCell.Init();
  • Spin(uint8_t speed_percent): Dreht den Motor mit einer bestimmten Geschwindigkeit (0–100 %).
 uint16_t rpm = myMotorCell.Spin(50); // Spin at 50% speed
  • SpinPID(uint16_t target_rpm): Behält eine Zieldrehzahl mithilfe der PID-Steuerung bei (erfordert ESP32/CodeCell).
 uint16_t rpm = myMotorCell.SpinPID(12000); // Maintain 12,000 RPM
  • ReverseSpin(): Kehrt die Laufrichtung des Motors um.
 myMotorCell.ReverseSpin();
  • Pulse(uint8_t p_pin, uint8_t ms_duration): Sendet einen kurzen Impuls für eine bestimmte Dauer (in Millisekunden) an den angegebenen Pin. Nützlich für schnelle Bewegungsausbrüche oder kurzzeitige Signale.

     myMotorCell.Pulse(FR_PIN, 50); // Sends a 50ms pulse to the FR_PIN
    
  • RPMRead(): Liest die aktuelle Drehzahl des Motors.
 uint16_t currentRPM = myMotorCell.RPMRead();
  • MaxSpin(): Lässt den Motor mit maximaler Geschwindigkeit drehen.
 myMotorCell.MaxSpin();

Beispielprojekt: Drehzahlüberwachung

Hier ist ein einfaches Projekt für den Einstieg:

 #include "MotorCell.h"

 #define IN_PIN 2
 #define OUT_PIN 3
 #define FR_PIN 4

 MotorCell myMotorCell(IN_PIN, OUT_PIN, FR_PIN);

 void setup() {
 Serial.begin(115200);
 myMotorCell.Init();
 }

 void loop() { 
uint16_t rpm = myMotorCell.Spin(50); // Mit 50 % Geschwindigkeit drehen
 }

Weitere Beispiele sind auf GitHub verfügbar. Wenn Sie jedoch Fragen zu MotorCell haben, können Sie sich gerne an uns wenden !

Vollständigen Artikel anzeigen

How does a PCB Motor work?

Wie funktioniert ein PCB-Motor?

Ein PCB-Motor ist eine innovative Lösung, die die Mechanik des Motors in die elektronischen Komponenten integriert und dabei die PCB selbst als Struktur des Motors nutzt.

Was ist ein PCB-Motor?

Ein PCB-Motor ist ein einzigartiger Motortyp, der die Kupferspuren auf einer Leiterplatte (PCB) nutzt, um ein Magnetfeld zu erzeugen, das den Motor antreibt. Dieses Konzept ist davon inspiriert, wie Funksysteme PCB-Spuren als Antennen verwenden. Dasselbe Prinzip wird angewendet, um ein Magnetfeld zu erzeugen, das stark genug ist, um einen Rotor zu drehen. Dieser Motortyp ist als bürstenloser Axialflussmotor bekannt, bei dem der PCB-Stator und der Rotor parallel ausgerichtet sind.

Entwurf und Aufbau eines PCB-Motors
Der erste Schritt bei der Entwicklung eines PCB-Motors ist die Entwicklung der PCB-Statorspulen. Bei herkömmlichen Motoren bestehen diese Spulen häufig aus Draht, der zu dichten, dreidimensionalen Formen gewickelt ist. Bei einem PCB-Motor werden die Spulen stattdessen als flache Spiralbahnen hergestellt, die auf die Schichten einer PCB gedruckt werden.

Eine der Herausforderungen dieser Planarmotoren besteht darin, genügend Windungen in den kleinen verfügbaren Raum zu bringen, um einen ausreichenden magnetischen Fluss zu erzeugen. Diese Spulen müssen in einer Stern- oder Dreieckkonfiguration verbunden werden, um ein dreiphasiges System zu erzeugen. In unserem 6-schlitzigen, sternkonfigurierten MotorCell- Design konnten wir die Spulen auf vier Schichten stapeln und zwei zusätzliche Schichten für den Controller nutzen, um das erforderliche Magnetfeld zum Drehen des Rotors zu erzeugen.

Im Laufe der Jahre haben wir auch gelernt, dass das Design des Rotors entscheidend für die Verbesserung der Motoreffizienz ist. Es ist wichtig, hochwertige Keramikkugellager zu verwenden und die Lager präzise auszurichten, um die optimale mechanische Lösung zu erreichen. Dies erfordert normalerweise Spezialwerkzeuge, daher bieten wir den Rotor der MotorCell auch einzeln an, sodass Sie ihn problemlos in Ihre benutzerdefinierte Leiterplatte integrieren können.

Synchronisierung im PCB-Motor erreichen
Einer der wichtigsten Aspekte beim Antrieb eines bürstenlosen Motors ist die Sicherstellung, dass der Rotor mit dem elektromagnetischen Feld des Stators synchronisiert bleibt. Bei herkömmlichen Motoren mit Bürsten wird die Synchronisation mechanisch durch die Bürsten selbst gesteuert. Bei einem dreiphasigen bürstenlosen Motor wie einem PCB-Motor ist jedoch eine sensorische Rückmeldung erforderlich, damit der Motor reibungslos läuft.

Die Gegen-EMK wird normalerweise als Rückkopplung verwendet, um die Motordrehzahl zu steuern. Die Gegen-EMK ist die Spannung, die vom rotierenden Motor selbst erzeugt wird und die gemessen werden kann, um die Rotordrehzahl zu bestimmen. Diese Informationen werden dann in die Steuerelektronik des Motors eingespeist und stellen sicher, dass die Statorspulen synchron mit der Rotorbewegung angetrieben werden. Bei der MotorCell wird all dies direkt vom integrierten Chip gehandhabt, was den Prozess vereinfacht.

PCB-Motorvisualisierung von Electromag Nodes
PCB-Motorvisualisierung von Electromag Nodes

Vollständigen Artikel anzeigen


Sozial

Github

  • Um
  • Software
  • Education
  • Kontakt
  • FAQs
  • Bedingungen
  • Rückerstattung-Politik
  • Datenschutzrichtlinie

Erfahren Sie als Erster von neuen Projekten und sichern Sie sich spannende Angebote!

© 2025 Microbots.