Мультизадача: тахометр + тензо (АЦП)_2
- Войдите на сайт для отправки комментариев
повторно даю. 1-й раз где-то затерялось...
Есть некий механизм. Нужно одновременно измерять частоту вращения привода и силы (в 2х направлениях) тензодатчиками. И передавать на комп, с записью в файл.
Пробую на Ардуино Мега 2560.
По отдельности скетчи апробированы (хотя их надо еще уточнять).
Скетч для тахометра взят из https://robotclass.ru/tutorials/arduino-tacho-irq/3/ «Ардуино: тахометр на прерываниях» (этот скетч опробован на ИК-датчике).
const byte interruptPin = 2;
unsigned int rot = 0;
unsigned long int tm;
unsigned long int spd = 0;
unsigned int dt = 0;
void detect() {
rot++; // прибавляем единичку к счётчику обротов
dt = millis() - tm; // вычисляем время с последнего расчёта
if( dt >= 100 ){ // если прошло 100мс или более, то начинаем расчёт
spd = rot*60000/dt;
rot = 0; // обнуляем счётчик
tm = millis(); // запоминаем время расчёта
}
}
void setup() {
Serial.begin(9600);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), detect, RISING);
tm = millis();
}
void loop() {
Serial.println(spd);
delay(100);
}
Скетч для 2-х тензодатчиков (с использованием ацп hx711 и его библиотеки) таков:
#include "HX711.h"
const int DM = 4; //dt ацп 1-й силы «М»
const int SM = 5; //sck ацп 1-й силы
const int DX = 6; //dt ацп 2-й силы «Х»
const int SX = 7; //sck ацп 2-й силы
HX711 scale1;
HX711 scale2;
void setup() {
Serial.begin(9600);
scale1.begin(DM, SM);
scale2.begin(DX, SX);
Serial.println("M X ");
}
void loop() {
if(scale1.is_ready() && scale2.is_ready()) {
long M = scale1.read();
long X = scale2.read();
Serial.print(M);
Serial.print(' ');
Serial.print(X);
Serial.println(' ');
}
delay(100);
}
Теперь стоит вопрос объединения этих скетчей в ЕДИНЫЙ, с учетом особенностей многозадачности в ардуино. Какие тут подводные камни? Каков текст единого скетча?
Тут я со своими познаниями в вакууме… Прошу помощи.
Пока код вставлять не научишься, так и будет теряться.
Ну, если только
Попробуйте и расскажите, что получается, а что нет. Пока ведь Вы не пробовали, так откуда Вам знать, может там всё и просто совсем.
Пока код вставлять не научишься
Это уже только в следующей жизни...
Скотч или синяя изолента???
Чтобы пробовать, надо знать и понимать правила для мультизадачности.
А я только понимаю, что все здесь не так просто...
Возможно, будут какие-то подсказки?
Чтобы пробовать, надо знать и понимать правила для мультизадачности.
А я только понимаю, что все здесь не так просто...
на самом деле все просто - нет в МК никакой многозадачности
Не бывает мультизадачности на ардуине. В любой момент времени выполняется одна программа, даже если это диспетчер мультизадачности. А если совсем без диспетчера, то надо точно расписать сколько времени какая задача занимает по минимум и решить как задача отдает свободное время другой задаче. У Вас как минимум 5 задач описано, но я подозреваю, что пару Вы не упомянули. Тахометр можно сделать на прерываниях, он сам будет время отбирать, а остальное можно подружить кооперативно.
...
У Вас как минимум 5 задач описано, но я подозреваю, что пару Вы не упомянули.
...
Подробнее можно, если вас это не затруднит?
"Нужно одновременно измерять частоту вращения привода 1) и силы (в 2х направлениях) тензодатчиками 2,3). И передавать на комп 4), с записью в файл 5)." Возможно ещё кнопки будут и дисплей 6,7) , для отражения оперативной информации и управления.
nik182
В целом да, такие хотелки в перспективе могут быть.
Но пока рассматриваются 1-2-3-4 в рамках исходного поста.
5- запись в файл просматривается ч/з эксель (известным макросом, но который еще надо освоить).
6 и 7 возможно потом потребуется для управления процессом испытания. Но пока можно без этого.
Кто понимает соотнесение обоих исходных скетчей, видит контуры ЕДИНОГО скетча и способен его сваять,
тому могу предложить свою почту sverlan@mail.ru для предложений на возмездной основе.
Насколько возмездной?
sadman41
Насколько вы понимаете задачу.
Порядок предполагаемого бюджета можете озвучить?
sadman41
Если вы специалист в данном вопросе, то вам это лучше должно быть понятно.
Жду предложений от исполнителя (на почту).
Жду предложений от исполнителя (на почту).
А че не в разделе "Ищу исполнителя"?
на самом деле все просто - нет в МК никакой многозадачности
Ну, вот, спалил контору!
Мы тут щёки надуваем, типа у нас всё по-взрослому, а он ....