Разбирам, че се опитвате да задвижите линеен стъпков двигател по такъв начин, че крайното му изместване във времето да наподобява синусоида, но в момента получавате триъгълна вълна, което предполага равномерно движение напред и назад с постоянна скорост (и съответно постоянна стъпкова честота).
За да получите синусоидално изместване, трябва да модулирате скоростта на стъпките така, че да следва производната на синусоидата – т.е. косинусоиден профил на скоростта, което означава:
Бързи стъпки около средата на движението (когато синусоидата е стръмна)
По-бавни стъпки в крайните точки (където синусоидата е полегата)

Концепция:
Разделяте 1 синусоиден цикъл на N малки стъпки (напр. 350).
За всяка стъпка изчислявате моментното време за изчакване (delay) до следващата стъпка въз основа на производната на синусоида.
Използвате delayMicroseconds() или micros() за контрол на тайминга.
Примерен код (C++ / Arduino):
const int steps = 350;
const float amplitude = 1.0; // в мм или стъпки, зависи от нуждите
const int stepPin = 3;
const int dirPin = 4;
const float duration = 1.0; // seconds
void setup() {
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
}
void loop() {
digitalWrite(dirPin, HIGH); // напред
unsigned long startTime = micros();
for (int i = 0; i < steps; i++) {
float t = (float)i / steps; // 0 to 1
float sinPosition = sin(PI * t); // 0 -> π
float speedProfile = abs(cos(PI * t)); // derivative of sin
float normalizedDelay = 1.0 / (speedProfile + 0.01); // избегнете делене на 0
unsigned long delayTime = normalizedDelay * 300; // скалирайте до нужните µs
digitalWrite(stepPin, HIGH);
delayMicroseconds(2);
digitalWrite(stepPin, LOW);
delayMicroseconds(delayTime);
}
delay(100); // пауза
digitalWrite(dirPin, LOW); // назад
// Повторете същия цикъл за обратно движение
}

GRBL + Sine G-code генерация – можете да генерирате G-code път със синусоидална траектория и да използвате GRBL-контролер (или друг CNC firmware).
Python + Serial (за по-гъвкаво управление) – използвайте Python скрипт, който изчислява таймингите и изпраща команди през сериен порт към драйвера.
Микростъпково управление – използвайте драйвер с поддръжка на микростъпки (напр. 1/16, 1/32), което ще направи движението по-гладко и ще улесни доближаването до синусоида.

Ако желаете, мога да ви помогна да генерираме Excel / Python графика, която да показва:
Сравнение между триъгълна, синусоидална и "скоростно-модулирана" траектория.
Таблица със закъснения/тайминги за всяка стъпка.
Ако ми кажете:
С какъв контролер работите (Arduino, Raspberry Pi, PLC, и т.н.)
Какъв драйвер използвате (A4988, TMC2209 и т.н.)
мога да ви предложа конкретен пример за хардуера ви.
Искате ли да го направим с Python или с Arduino код според вашия случай?