Skip to main content
.NETFramework4.8net8.0.NETStandard2.0

Core motion-control abstractions and helpers for linear and peristaltic pumps, gantries, etc.

Published
Aug 5, 2025
1y ago
Total Downloads
2.0K
2,009

Install

dotnet add package MotionControlBase --version 1.2.0
ProductVersions
.NET
net8.0
.NET Standard
netstandard2.0
Other
.NETFramework4.8

README

MotionControlBase

MotionControlBase is a .NET library providing core abstractions and helpers for motion control devices—such as linear actuators, gantries, peristaltic pumps, and syringe pumps—across multiple .NET targets (net8.0, net48, netstandard2.0).


Features

  • Interfaces for:

    • Linear movement (ILinearMovement, HGantry implementations)
    • Pump control (IPump, ISyringe)
    • Peristaltic pump (PeristalticPump)
    • Motor abstraction (IMotor, IStoppableMotor)
  • Unit conversion helpers (mm ↔ motor steps, µL ↔ steps)

  • Stop‑channel support with configurable modes

  • Motion profiling: acceleration, speed, deceleration, trapezoidal/triangular profiles

  • Cross‑platform: usable in .NET 8, .NET Framework 4.8, and .NET Standard 2.0


Installation

Install via NuGet:

dotnet add package MotionControlBase --version 1.1.0

Or via the Package Manager Console:

Install-Package MotionControlBase -Version 1.1.0

Quick Start

using Essy.LinearMovements;
using Essy.Motor;

// 1. Create your motor (IMotor or IStoppableMotor)
IStoppableMotor motor = new MyStepperMotor();

// 2. Instantiate a LinearMovement (e.g. gantry or slide)
var gantry = new HGantry(motorA: motor, motorB: motor, distancePerRotation: 5.0);

gantry.Powered = true;
gantry.SetPosition(0, 0);

gantry.MoveToPosition(x: 10, y: 20, acceleration: 50, speed: 100, deceleration: 50);

Console.WriteLine($"Current position: ({gantry.XPos:F2}, {gantry.YPos:F2}) mm");
using Essy.Pump;
using Essy.PeristalticPump;

IMotor pumpMotor = new MyPumpMotor();
var pump = new PeristalticPump(pumpMotor, volumePerRotation: 100.0);

pump.StartAspirating(volume: 200.0, speed: 50.0);
pump.WaitForPumpActionToComplete();
Console.WriteLine("Aspirated 200 µL");

API Overview

  • Essy.Motor

    • IMotor, IStoppableMotor interfaces
    • MotorStopChannel, MotorStopChannelMode, exceptions
  • Essy.LinearMovements

    • ILinearMovement, HGantry, LinearMovement
    • LinearStopChannel
  • Essy.Pump

    • IPump, ISyringe
  • Essy.PeristalticPump

    • PeristalticPump, PeristalticPumpException

For detailed API docs, see docs/ or IntelliSense.


Contributing

  1. Fork the repository on GitHub
  2. Create a feature branch: git checkout -b feat/my-feature
  3. Commit your changes: git commit -m "Add my feature"
  4. Push to your fork: git push origin feat/my-feature
  5. Open a Pull Request

Please follow the existing code style and include unit tests where applicable.


License

This project is licensed under the MIT License. See LICENSE for details.


Happy motion controlling!

Changes from Previous Version

No structural changes between v1.1.0 and v1.2.0.

Adoption Assessment

Assess this package against its supported frameworks, license, maintenance signals and dependency graph before making it a project standard.

Compatibility metadata lists 3 target frameworks; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.