Меня зовут Саша
Алгоритм работы : заключается в расчете линейной скорости колеса и звездочки, ну и силы на цепи.
Реализация : 2 датчика холла, тензодатчик + HX711
Теперь давайте обсудим код :
Решил собрать велик - в котором отслеживается сила тяги, два датчика холла на D12 и D10 ну и сам тензодатчик на A0 и A1.Суть в том что не могу отдельно сделать цикл для тензодатчика (таким образом чтобы при открытии com порта высвечивалось по одному значению - а не так что в основном высвечивается сила тяги и изредка линейные скорости). Либо напутал я где то. Помогите.
P. S. Необходимо еще вывести все 3 параметра для построения графика.
Код:
Алгоритм работы : заключается в расчете линейной скорости колеса и звездочки, ну и силы на цепи.
Реализация : 2 датчика холла, тензодатчик + HX711
Теперь давайте обсудим код :
Решил собрать велик - в котором отслеживается сила тяги, два датчика холла на D12 и D10 ну и сам тензодатчик на A0 и A1.Суть в том что не могу отдельно сделать цикл для тензодатчика (таким образом чтобы при открытии com порта высвечивалось по одному значению - а не так что в основном высвечивается сила тяги и изредка линейные скорости). Либо напутал я где то. Помогите.
P. S. Необходимо еще вывести все 3 параметра для построения графика.
Код:
C++:
int digitalPin1 = 10;
int digitalPin2 = 12;
unsigned long runTime1;
unsigned long runTime2;
int prevValue1 = 0;
int prevValue2 = 0;
#include <HX711.h>
HX711 scale(A1, A0);
float calibration_factor = +190.6;
float units;
float ounces;
float omega1;
float omega2;
void setup() {
pinMode(digitalPin1, INPUT);
pinMode(digitalPin2, INPUT);
Serial.begin(9600);
runTime1 = millis();
runTime2 = millis();
scale.set_scale();
scale.tare();
scale.set_scale(calibration_factor);
}
void loop() {
int digitalValue1 = digitalRead(digitalPin1); // значение с цифрового канала
if ((prevValue1 == HIGH) && (digitalValue1 == LOW)) { // ловим переход HIGH->LOW сигнала
unsigned long timeSpan1 = millis() - runTime1; // время одного оборота, мс
runTime1 = millis(); // запомним текущее время
for(int i = 0;i < 2; i ++) runTime1 =+ millis(), 2;
timeSpan1 / 2;
omega1 = round(2*PI*0.07*3.6 / (timeSpan1 * 1.0E-3));
Serial.println("$");
Serial.println(omega1);
Serial.println(" ");
}
{
int digitalValue2 = digitalRead(digitalPin2); // значение с цифрового канала
if ((prevValue2 == HIGH) && (digitalValue2 == LOW)) { // ловим переход HIGH->LOW сигнала
unsigned long timeSpan2 = millis() - runTime2; // время одного оборота, мс
runTime2 = millis(); // запомним текущее время
for(int j = 0;j < 2; j ++) runTime2 =+ millis(), 2;
timeSpan2 / 2;
omega2 = round(2*PI*0.025*3.6 / (timeSpan2 * 1.0E-3));
Serial.println(omega2);
Serial.println(";");
}
prevValue2 = digitalValue2; // запомним предыдущее значение датчика Холла
prevValue1 = digitalValue1; // запомним предыдущее значение датчика Холла
for(int h = 0;h < 5; h ++) units =+ scale.get_units(), 5;
units / 5;
ounces = units * 0.035274*102;
Serial.println("Сила тяги = " + (String)ounces + " Н*м");
}
}
Последнее редактирование: