Доброго времени суток ...
Имеется механизм от стрелки спидометра ПБ , какой не известно да и не важно.
Задумка использовать с датчиком (куплен ПО настроено и отлажено) оборотов , для просчёта и вывода скорости.
Проблема : Механизм по сути шаговый двигатель с двумя катушками и ограничением ушла поворота , куплена плата (контроллером язык не повернёться назвать) но всё же управления шаговыми двигателями, запустить получилось крутить также получилось паралельно тестирова две библиотеки от Гайвера и <AccelStepper.h> обе работають. однако проблема мотор при повышении скорости производит поворот после возвращаеться на 0 положение , если в этот момент подать сигнал скорости мотор улетает в - и упераясь в огранечитель трещит после пытаюсь вернуться на 0 уходит на положительное значение и считает его за 0. что можно с этим сделать?
а также время от времени сам по себе 0 позици сдвигаеться . в общем код сырой у меня лапки и вообще это первый мой проект. Буду благодарен за любые подсказки . добавлю код + фото похожего моторчика.
Имеется механизм от стрелки спидометра ПБ , какой не известно да и не важно.
Задумка использовать с датчиком (куплен ПО настроено и отлажено) оборотов , для просчёта и вывода скорости.
Проблема : Механизм по сути шаговый двигатель с двумя катушками и ограничением ушла поворота , куплена плата (контроллером язык не повернёться назвать) но всё же управления шаговыми двигателями, запустить получилось крутить также получилось паралельно тестирова две библиотеки от Гайвера и <AccelStepper.h> обе работають. однако проблема мотор при повышении скорости производит поворот после возвращаеться на 0 положение , если в этот момент подать сигнал скорости мотор улетает в - и упераясь в огранечитель трещит после пытаюсь вернуться на 0 уходит на положительное значение и считает его за 0. что можно с этим сделать?
а также время от времени сам по себе 0 позици сдвигаеться . в общем код сырой у меня лапки и вообще это первый мой проект. Буду благодарен за любые подсказки . добавлю код + фото похожего моторчика.
C++:
#include <AccelStepper.h>
AccelStepper mystepper(4, 5,3 ,4 ,6 );
unsigned long lastturn, time_press; //переменные хранения времени
float SPEED; //переменная хранения скорости в виде десятичной дроби
float w_length=0.1; //длина окружности колеса в метрах
float obor;
const int samplePin = SPEED;
void setup() {
mystepper.setMaxSpeed(5000);
mystepper.setAcceleration(5000);
attachInterrupt(0,sens,RISING); //подключить прерывание на 2 пин при повышении сигнала
Serial.begin(9200);
}
void sens() {
SPEED=w_length/((float)(millis()-lastturn)/1000)*3.6; //расчет скорости, км/ч
lastturn=millis(); //запомнить время последнего оборота
poz=mystepper.currentPosition();
}
void loop() {
if ((SPEED)<1){
mystepper.setAcceleration(50000);
}
if ((SPEED)>1){
mystepper.setAcceleration(500);
}
Serial.print(SPEED);
if ((millis()-lastturn)>2000){ //если сигнала нет больше 2 секунды
SPEED=0; //считаем что SPEED 0
mystepper.moveTo(0);
mystepper.run();
}
if ((SPEED)>1){
mystepper.moveTo(SPEED);
mystepper.run();
}
if ((millis()-lastturn)>1000){
mystepper.moveTo(0);
mystepper.run();
} }