Заменить насосы на шаговые двигатели

Добрый день!
Необходимо в данном проекте заменить насосы на два шаговых мотора (на один драйвер или к каждом мотору драйвер, не принципиально). Возможно перестроить на arduino nano скажем, тоже не принципиально.
Суть: При достижении определённого pH два мотора одновременно включались на заданное время, один откачивает старый раствор, другой доливает новый, затем пауза и цикл повторяется, если pH завышен.
Насколько трудозатратна и возможна данная операция и сколько будет стоить?
Схему и скетч прикладываю
В скетче коррекция как вверх, так и вниз. Мне нужно только занижать pH, так как он только растёт постоянно.

#include <iarduino_I2C_pH.h>     // Подключаем библиотеку для работы с pH-метром I2C-flash.
#include <iarduino_4LED.h>       // Подключаем библиотеку для работы с индикатором 

iarduino_4LED dispLED(4,5);      // Объявляем объект для работы с функциями библиотеки iarduino_4LED, с указанием выводов дисплея ( CLK , DIO )
iarduino_I2C_pH pHsens;          // Создаём объект pH-метра (адрес на шине I2C не указываем поскольку устройство на шине одно)
#define pinPomp1 2               // Первый насос подключен к выводу 2
#define pinPomp2 3               // Второй насос подключен к выводу 3

/////////НАСТРОЙКИ//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const float dpH = 0.1;           // Значение отклонения pH, при котором показания будут считаться не изменившимися (искусственная погрешность для устранения мерцания сотых значений на дисплее)
const uint32_t portion = 400;    // Время подачи порции концентрата, мс
const uint32_t timeWait = 10000; // Время ожидания между подачами порции (время на размешивание раствора)
const float phUp = 6.5;          // Верхний уровень pH, после которого начнётся долив концентрата
const float phDown = 5.5;        // Нижний уровень pH, после которого начнётся долив концентрата
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

float midPh = 0.0;                                   // Установившееся показание кислотности
uint32_t timeLastPortion = 0;                        // Время последнего долива порции

void setup() {
 pinMode (pinPomp1, OUTPUT);                        // Пин насоса - выход
 pinMode (pinPomp2, OUTPUT);                        // Пин насоса - выход
 Serial.begin(9600);                                // Открываем последовательный порт передачи данных
 if (!pHsens.begin()) Serial.println("pH-метр не инициализирован. Проверьте подключение и I2C-адрес модуля");  // Иниируем работу с pH-метром, и, в случае, если не удалось выполнить подключение, выводим сообщение об ошибке 
 dispLED.begin();                                   // Инициируем работу с дисплеем
 dispLED.point(2, true);                            // Включаем точку
}

void loop() {
 float pH = pHsens.getPH();                         // Измерение pH
 Serial.println("pH: "+ (String)pH);                // Вывод значения pH в монитор порта
 if ((midPh < pH-dpH) || (midPh > pH+dpH)){         // Устранение малых колебаний значений
   midPh = pH;                                
   dispLED.print(midPh, 2);                         // Выводим показания pH на дисплей
 }

 if ((midPh > phUp) && (timeLastPortion + timeWait <= millis())) correctPh("down");      // pH завышен, нужно снизить
 else if ((midPh < phDown) && (timeLastPortion + timeWait <= millis())) correctPh("up"); // pH занижен, нужно повысить

 if (timeLastPortion + portion <= millis()) {       // Если прошло время подачи порции, выключаем все насосы
   digitalWrite(pinPomp1,LOW);          
   digitalWrite(pinPomp2,LOW);          
 }
}

void correctPh (String target){                      // Функция включения насосов
 timeLastPortion = millis();                        // Фиксируем время начала работы насоса
 if (target == "down") digitalWrite(pinPomp1,HIGH); // Включаем нужный насос в зависимости от переданной в функцию строки
 if (target == "up") digitalWrite(pinPomp2,HIGH);
}

На какие шаговые двигатели?

Nema 17

У насосов тоже моторы. Может и менять ничего не надо?

Хорошо бы указать точные модели всех комплектующих в схеме, а то гадать по мурзилке как-то неправильно.

С первого взгляда - 1:1 не сильно сложно. Если по ходу пьесы только не появятся доп. требования.

https://lesson.iarduino.ru/page/auto-correct-ph/#h3_5
Вот в этом магазине данный проект увидел.
Моторы которые в исходной схеме очень быстро выходят из строя(

Вроде нет.
Для примера:
В ёмкости 20 литров постепенно растёт pH. С исходного 6 и выше, вплоть до 9. Нужно, чтобы в данной ёмкости уровень pH не превышал 7,5. Достигло 7.5 включились оба насоса на заданное время, пауза, через скажем 10 минут снова замер и если pH выше 7,5 то опять включаются моторы. Отображение уровня pH либо на экране, либо через serial port в комп. Как удобнее и менее трудозатратнее.

как-то не вяжется с заявлением, что pH надо только понижать

Да, не правильно написал, не превышал 7.5. Прошу прощения

это не характеристика мотора, а лишь размер станины.

Нужны, как я уже писал, точные характеристики моторов или, например, требования по моменту и оборотам. От этого зависит тип драйверов…
Будут данные - тогда больше шансов кто-нибудь возьмется.

Ну, вот если все “скажем” и “допустим” решаете сами, то изменение кода с одного типа мотора на другой не сильно сложна.
Если Бормолеев не появится, то в воскресенье могу подправить.

1 лайк

Мотор

Такой или подобный с али

У меня похожая перистальтика несколько м3 азотной кислоты перекачала и ничо.

а почему вы считаете что такие моторы будут работать лучше?

pix.ajiuctop.3fx@gmail.com я могу, за… 5000