Страница 1 из 1
Помогите построить алгоритм..
Добавлено: 13 апр 2020, 17:08
ssql
Приветствую!
Есть задача создать программу, которая будет управлять шаговым двигателем..
GIAAAgE0ieA-1920.jpg
Двигатель должен тягать
ть воздушную заслонку карбюратора на генераторе.
За основу взял алгоритм Калинникова Николая.
1.png
111.png
1111.png
Но программа работает не нормально.. Пропуски шагов и самопроизвольно меняет направление вращения.
На осциллографе. Это в протеусе, но на живом тоже самое..
11.png
А вот по такому алгоритму все пучком..
Код: Выделить всё
#define A 4
#define B 5
#define C 6
#define D 7
int delStep = 3;
void setup()
{
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
}
void loop()
{
for (int i = 0; i < 20; i++) rotateRH(); // вниз на 20мм (полушаг)
for (int i = 0; i < 20; i++) rotateLH(); // вверх на 20мм
stopStep(); // вырубаем обмотки
while (1); // закончили
}
// +++++ ОСНОВНЫЕ ФУНКЦИИ +++++
void stopStep() { // выключение двигателя
StepH(0, 0, 0, 0);
}
void rotateRH() // 48 шагов с полушагами по часовой стрелке = 1 оборота оси = 1 мм движения штока вверх
{
for (byte i = 0; i < 6; i++) {
StepH(1, 0, 1, 0);
StepH(0, 0, 1, 0);
StepH(0, 1, 1, 0);
StepH(0, 1, 0, 0);
StepH(0, 1, 0, 1);
StepH(0, 0, 0, 1);
StepH(1, 0, 0, 1);
StepH(1, 0, 0, 0);
}
}
void rotateLH() // 48 шагов с полушагами по часовой стрелке = 1 оборота оси = 1 мм движения штока вверх
{
for (byte i = 0; i < 6; i++) {
StepH(1, 0, 0, 1);
StepH(0, 0, 0, 1);
StepH(0, 1, 0, 1);
StepH(0, 1, 0, 0);
StepH(0, 1, 1, 0);
StepH(0, 0, 1, 0);
StepH(1, 0, 1, 0);
StepH(1, 0, 0, 0);
}
}
void StepH(boolean a, boolean b, boolean c, boolean d) // один шаг
{
digitalWrite(A, a);
digitalWrite(B, b);
digitalWrite(C, c);
digitalWrite(D, d);
delay(delStep / 2);
}
Подскажите, где ошибка..
Помогите построить алгоритм..
Добавлено: 13 апр 2020, 20:09
Ingwar
Ну для начала, прежде чем выбирать микросекунды в генераторе или таймерах, посмотрите
тут время выполнения команд в ардуино...
Помогите построить алгоритм..
Добавлено: 13 апр 2020, 21:42
ssql
Ingwar писал(а): 13 апр 2020, 20:09
У Николая все отрабатывает отменно... Плюс производится расчет пройденных шагов, и периодическая отправка по УАРТ..
Может я изначально пошел не по тому пути? Драйвер на основе L298N, иного пока, по известным причинам не достать.. Для данного мотора длина импульса нужна 3-4 мс, низкий уровень около 5мс.. Может кто присоветует другие варианты..
Задача, по показаниям 18В20 и оборотам дергать двигатель на какое то кол-во шагов, если много, то чуть обратно.. Наверное можно обозвать - автоподсос..
Помогите построить алгоритм..
Добавлено: 14 апр 2020, 13:35
ssql
av писал(а): 14 апр 2020, 01:00
[ref]ssql[/ref], вы поищите поиском здесь были темы по вашему драйверу L298. Там много всяких вариантов управления двигателем.
Спасибо! Посмотрел, но все ответы сводятся к смене L298 на драйвер степ дир, но сейчас конечно это не возможно....
Хотя по примеру (код) выше все работает без замечаний..
Пока что сделал из кода блок в флпроге, попытаюсь дотумкать как крутить в одну или другу сторону по значению на пине или переменной.. Может кто еще чего подскажет.. Лет много назад писал на вижуал бэйсик, сейчас конечно тяжеловато)) плюс язык другой..
Помогите построить алгоритм..
Добавлено: 14 апр 2020, 16:44
ssql
Пока входов нет. Есть только выходы на пины для управления мотором..
(CODE).ubi
Помогите построить алгоритм..
Добавлено: 14 апр 2020, 17:05
ssql
Спасибо

! А у меня с этим еще хуже

Помогите построить алгоритм..
Добавлено: 14 апр 2020, 17:32
ssql
1 оборот=1мм, кол-во шагов на один оборот, как я понял =24
Помогите построить алгоритм..
Добавлено: 14 апр 2020, 19:52
ssql
4
Помогите построить алгоритм..
Добавлено: 15 апр 2020, 11:05
ssql
av писал(а): 15 апр 2020, 10:18
Спасибо за потраченное на меня время))
водяное охлаждение, рабочая температура до 95 градусов, 18В20 вполне..
планирую брать сигнал с катушки
типа этого
вход с катушки.png
Помогите построить алгоритм..
Добавлено: 15 апр 2020, 12:25
rw6cm
[ref]ssql[/ref],
что то не пойму, это электрогенератор?
Тогда о кокой регулировке по температуре речь?
обороты должны быть стабильно 3000об/м, а при превышении температуры аварийно выключаться.
Помогите построить алгоритм..
Добавлено: 15 апр 2020, 13:00
ssql
Электрогенератор 17 кВт.
ДВС видимо не может выдавать номинальную мощность без прогрева.. Изначально была штатная система на блочке электронном, залитым компаундом.. блок за 20 лет уже не работает..
пока шел прогрев генератор захлебывался и глох, заливая свечи..
Приходится стоять и держать заслонку, пока не прогреется хотя бы до 30-40 градусов..
Отправлено спустя 2 минуты 26 секунд:
с первички катушки зажигания..
да, скорее всего оптопара буде, это я для примера просто картинку вставил..
Температура скорее для полного открытия заслонки, а так основное регулирования заслонки по оборотам..
Таблица регулирования хз, надо будет по факту выставлять, например через блоки масштабирования.. Например до 0 град. - максимум, 0-20град. - 1300об/мин, 20-40град. - 1100об/мин, >40 полное открытие..
Обороты можно считывать не постоянно..
Мотор прогревается примерно за 15 минут, до того момента, когда можно отпускать заслонку..
Помогите построить алгоритм..
Добавлено: 15 апр 2020, 13:38
rw6cm
[ref]ssql[/ref],
может за это время поршневая износилась, потому и заливает?
Возможно карб (настроить/поменять на лучший)
Для автоматики нюансов очень много, (качество топлива, время сезона, погода, итд)
Помогите построить алгоритм..
Добавлено: 15 апр 2020, 14:02
ssql
Две заслонки, нижняя регулирует обороты в рабочем режиме, она работает от вакуума из приемного коллектора через какой то блок с кучей трубок, их дофига там, несколько трубок идут на какой то блок между ДВС и генератором(может вариатор или еще чего там).. Нижняя при запуске всегда приоткрыта.. При прогреве она остается в одном положении, регулировка начинается только на теплом моторе. Еще заметил, что пока мотор не прогрет сам генератор вращается с меньшими оборотами, чем ДВС. Верхняя работала от того блочка и встроенного в него моторчика, этот болк который помер..
В карбе особо ничего не настроишь.. Поршневая отличная, движок сам был новый, когда тот блочек работа, все было гуд.. .. Сам генератор хз откуда, достался много много лет назад с закрывшегося завода.. Там нет шильдиков, и рама вся заколхожена..
Помогите построить алгоритм..
Добавлено: 15 апр 2020, 14:39
rw6cm
ssql писал(а): 15 апр 2020, 14:02
нижняя регулирует обороты в рабочем режиме, она работает от вакуума из приемного коллектора
прям как у меня на тайоте спринтер (конца 70х) двигатель был. Все на трубочках как сердце с артериями.
Первое время было страшно капот открывать ))) потом разобрался что к чему. Верой и правдой 25лет отслужила.
Думаю если сильно захотеть все можно сделать, главное желание и терпение.
Чем смогу помогу, а пока Алексей инициативой горит )
Помогите построить алгоритм..
Добавлено: 15 апр 2020, 14:56
ssql
rw6cm писал(а): 15 апр 2020, 14:39
ssql писал(а): 15 апр 2020, 14:02
нижняя регулирует обороты в рабочем режиме, она работает от вакуума из приемного коллектора
прям как у меня на тайоте спринтер (конца 70х) двигатель был. Все на трубочках как сердце с артериями.
Первое время было страшно капот открывать ))) потом разобрался что к чему. Верой и правдой 25лет отслужила.
Думаю если сильно захотеть все можно сделать, главное желание и терпение.
Чем смогу помогу, а пока Алексей инициативой горит )
ДААА, вот техника была то... К тойоте тоже приятные чувства остались))
Помогите построить алгоритм..
Добавлено: 15 апр 2020, 15:24
ssql
av писал(а): 15 апр 2020, 15:20
Здорово, спасибо!! Допилим, доделаем!!
