roboforum.ru

Технический форум по робототехнике.

Датчик касания механический, тензометрический.

Обсуждение технологии печати на 3D принтерах. Самостоятельное изготовление и приобретение. RepRap и его последователи.

Re: Датчик касания механический, тензометрический.

Сообщение Myp » 16 сен 2020, 01:33

Мимо, на ADS1246 нет готовых модулей.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Датчик касания механический, тензометрический.

Сообщение Madf » 16 сен 2020, 10:13

Ну во-первых: это оригинал, видимо с чего драл китаец.
Во-вторых: всё равно колхозить, на макетку паяешь и вперёд...
В третьих: сам просил предлагать, а теперь не нравится, определись уже. :D
Я бы вообще попробовал для начала использовать LTC1864 (с которыми я раньше игрался и использовал их для обработки звука, может по разрешению бы подошли при грамотной отстройке операционника по входу (хотя может и Vref-а было бы достаточно).
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: Датчик касания механический, тензометрический.

Сообщение Myp » 16 сен 2020, 19:40

Я просил то что просил, готовый модуль который можно использовать с тензодатчиком.
Иначе это превратится в бесперспективный для меня квест по разработке и запуску платы ацп с наступанием на грабли по питанию и чёрт знает ещё каких.
вот там намекают что с LTC1864 слишком просто не будет https://www.arrow.com/en/reference-desi ... d5eca09af5

ЗЫ
Долбаные перекупы.
В прошлый четверг сделал заказ,обещали в понедельник отправить сдеком, но сегодня уже кончилась среда и заказ ещё в статусе "формируется"
Они видимо в китае заказали и ждут теперь.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Датчик касания механический, тензометрический.

Сообщение Dmitry__ » 16 сен 2020, 19:54

Myp писал(а):ЗЫ
Долбаные перекупы.

:D :D :D
Заказал бы у меня, я бы смотался в fastnvr на моноколесе и послал бы тебе по почте. Я бы не много накрутил сверху, мне всего-то надо кормить пятерых детей :crazy:
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания механический, тензометрический.

Сообщение setar » 19 сен 2020, 09:39

Myp писал(а):А у тебя ещё остались такие резюки? :oops:
если в нём например зажав в двух деревяшках дырочку просверлить в центре диаметром 3 мм, он сдохнет или будет работать?
по идее если аккуратно просверлить, то у него просто сместится диапазон рабочий.

Нужно посмотреть, вроде бы все использовал для детекта наступания ног шестинога.
https://www.pololu.com/category/148/for ... ntiometers
а вот дырочка его гарантированно убьет
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Датчик касания механический, тензометрический.

Сообщение Myp » 20 сен 2020, 18:12

получил деталюхи
по умолчанию 10 раз в секунду получаются данные
при этом есть явный затуп при срабатывании


Добавлено спустя 11 минут 13 секунд:
припаял соплю на 80 Гц
совсем другое дело
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Датчик касания механический, тензометрический.

Сообщение Myp » 21 сен 2020, 01:57

Ну чтож
предварительные результаты - работает.
прикрутил миньку чтобы можно было следить за цифрами, срабатывание настроил на 30 у.е.
сдвиг оси на 0.1 даёт примерно 400 у.е. с датчика.

на видео проба, срабатывает на лёгкое поглаживание.


заведены параллельно безсенсорный датчик и датчик веса.
даже если весы отвалятся, то остановится на безсенсорном датчике, ничего не должно выломать по идее.

надо разобраться с тарировкой
щас выставление нуля происходит в момент нажатия ресета на плате.
дёргания конструкции приводят к тому что ноль убегает и датчик срабатывает в воздухе.
провода по другому провисли и привет, калибровка сбилась. у меня боуден и поэтому в разных точках стола разный натяг буденовой трубки
в зависимости от положения может убегать до -200 у.е.

возможно делать после срабатывания? ON/OFF и калибровка в ноль.

как-то так тест повторяемости если предварительно обнулить.
Код: Выделить всёРазвернуть
22:22:11.732 : Bed X: 52.00 Y: 51.00 Z: 0.06
22:22:13.644 : 1 of 10: z: 0.050Mean: 0.050000 Sigma: 0.000000 Min: 0.050 Max: 0.050 Range: 0.000
22:22:15.552 : 2 of 10: z: 0.050Mean: 0.050000 Sigma: 0.000000 Min: 0.050 Max: 0.050 Range: 0.000
22:22:17.463 : 3 of 10: z: 0.045Mean: 0.048333 Sigma: 0.002357 Min: 0.045 Max: 0.050 Range: 0.005
22:22:19.372 : 4 of 10: z: 0.048Mean: 0.048125 Sigma: 0.002073 Min: 0.045 Max: 0.050 Range: 0.005
22:22:21.281 : 5 of 10: z: 0.048Mean: 0.048000 Sigma: 0.001871 Min: 0.045 Max: 0.050 Range: 0.005
22:22:23.190 : 6 of 10: z: 0.050Mean: 0.048333 Sigma: 0.001863 Min: 0.045 Max: 0.050 Range: 0.005
22:22:25.098 : 7 of 10: z: 0.052Mean: 0.048929 Sigma: 0.002259 Min: 0.045 Max: 0.052 Range: 0.008
22:22:27.008 : 8 of 10: z: 0.052Mean: 0.049375 Sigma: 0.002421 Min: 0.045 Max: 0.052 Range: 0.008
22:22:28.917 : 9 of 10: z: 0.055Mean: 0.050000 Sigma: 0.002887 Min: 0.045 Max: 0.055 Range: 0.010
22:22:30.825 : 10 of 10: z: 0.057Mean: 0.050750 Sigma: 0.003544 Min: 0.045 Max: 0.057 Range: 0.012
22:22:30.826 : Finished!
22:22:30.827 : Mean: 0.050750 Min: 0.045 Max: 0.057 Range: 0.012
22:22:30.829 : Standard Deviation: 0.003544


а вот пример сырого вывода датчика за секунду, рядом с датчиком работает кулер.
Код: Выделить всёРазвернуть
23:06:15.010 -> val: -211.31
23:06:15.010 -> val: -211.46
23:06:15.010 -> val: -211.53
23:06:15.044 -> val: -211.53
23:06:15.044 -> val: -211.53
23:06:15.044 -> val: -211.35
23:06:15.077 -> val: -211.34
23:06:15.077 -> val: -211.35
23:06:15.077 -> val: -211.25
23:06:15.111 -> val: -211.21
23:06:15.111 -> val: -211.21
23:06:15.111 -> val: -211.25
23:06:15.111 -> val: -211.26
23:06:15.146 -> val: -211.29
23:06:15.146 -> val: -211.50
23:06:15.181 -> val: -211.50
23:06:15.181 -> val: -211.50
23:06:15.181 -> val: -211.70
23:06:15.181 -> val: -211.70
23:06:15.214 -> val: -211.44
23:06:15.214 -> val: -211.44
23:06:15.214 -> val: -211.44
23:06:15.248 -> val: -211.36
23:06:15.248 -> val: -211.36
23:06:15.248 -> val: -211.81
23:06:15.283 -> val: -211.81
23:06:15.283 -> val: -211.37
23:06:15.283 -> val: -211.37
23:06:15.318 -> val: -211.37
23:06:15.318 -> val: -211.38
23:06:15.318 -> val: -211.38
23:06:15.352 -> val: -211.66
23:06:15.352 -> val: -211.66
23:06:15.352 -> val: -211.66
23:06:15.386 -> val: -211.72
23:06:15.386 -> val: -211.72
23:06:15.386 -> val: -211.72
23:06:15.421 -> val: -211.80
23:06:15.421 -> val: -211.80
23:06:15.421 -> val: -211.58
23:06:15.456 -> val: -211.58
23:06:15.456 -> val: -211.71
23:06:15.456 -> val: -211.75
23:06:15.456 -> val: -211.75
23:06:15.491 -> val: -211.75
23:06:15.491 -> val: -211.71
23:06:15.491 -> val: -211.46
23:06:15.525 -> val: -211.46
23:06:15.525 -> val: -211.72
23:06:15.525 -> val: -211.72
23:06:15.559 -> val: -211.21
23:06:15.559 -> val: -211.21
23:06:15.559 -> val: -211.21
23:06:15.593 -> val: -211.65
23:06:15.593 -> val: -211.69
23:06:15.593 -> val: -211.69
23:06:15.627 -> val: -211.32
23:06:15.627 -> val: -211.32
23:06:15.627 -> val: -211.31
23:06:15.661 -> val: -211.16
23:06:15.661 -> val: -211.16
23:06:15.661 -> val: -211.56
23:06:15.695 -> val: -211.56
23:06:15.695 -> val: -211.41
23:06:15.695 -> val: -211.41
23:06:15.730 -> val: -211.41
23:06:15.730 -> val: -211.11
23:06:15.730 -> val: -211.11
23:06:15.730 -> val: -211.24
23:06:15.763 -> val: -211.24
23:06:15.763 -> val: -211.24
23:06:15.798 -> val: -211.65
23:06:15.798 -> val: -211.65
23:06:15.798 -> val: -211.43
23:06:15.831 -> val: -211.43
23:06:15.831 -> val: -211.43
23:06:15.831 -> val: -211.22
23:06:15.866 -> val: -211.22
23:06:15.866 -> val: -211.64
23:06:15.866 -> val: -211.64
23:06:15.866 -> val: -211.33
23:06:15.900 -> val: -211.33
23:06:15.900 -> val: -211.33
23:06:15.900 -> val: -211.48
23:06:15.934 -> val: -211.48
23:06:15.934 -> val: -211.69
23:06:15.934 -> val: -211.69
23:06:15.969 -> val: -211.44
23:06:15.969 -> val: -211.44
23:06:15.969 -> val: -211.67


Добавлено спустя 2 часа 20 минут 36 секунд:
вобщем надо обрабатывать сырые данные
фильтровать всякое разное, в том числе и отрицательное, чтобы срабатывать только когда реально идёт пробинг.

вот пример цифр при реальном пробинге
Код: Выделить всёРазвернуть
00:04:27.753 -> val: 0.00
00:04:27.753 -> val: 1.62 //контакт со столом
00:04:27.753 -> val: 25.43
00:04:27.786 -> val: 94.32
00:04:27.786 -> val: 168.34 //Послал сигнал концевика, сигнал если val>100
00:04:27.786 -> val: 204.03
00:04:27.820 -> val: 267.40
00:04:27.820 -> val: 362.42
00:04:27.820 -> val: 439.60
00:04:27.853 -> val: 479.28
00:04:27.853 -> val: 487.78
00:04:27.887 -> val: 490.10
00:04:27.887 -> val: 492.10
00:04:27.887 -> val: 492.30
00:04:27.921 -> val: 493.06 //видимо стол остановился
00:04:27.921 -> val: 493.09
00:04:27.921 -> val: 493.09
00:04:27.921 -> val: 493.09
00:04:27.955 -> val: 493.09
00:04:27.955 -> val: 493.09
00:04:27.955 -> val: 482.80
00:04:27.989 -> val: 435.71
00:04:27.989 -> val: 365.71
00:04:27.989 -> val: 298.64
00:04:28.023 -> val: 252.28
00:04:28.023 -> val: 235.44
00:04:28.023 -> val: 233.72
00:04:28.057 -> val: 233.04
00:04:28.057 -> val: 233.04
00:04:28.057 -> val: 233.21
00:04:28.092 -> val: 233.21
00:04:28.092 -> val: 233.14
00:04:28.092 -> val: 233.14
00:04:28.126 -> val: 232.98
00:04:28.126 -> val: 232.90
00:04:28.126 -> val: 231.58
00:04:28.160 -> val: 222.74
00:04:28.160 -> val: 196.01
00:04:28.160 -> val: 142.92
00:04:28.194 -> val: 56.71
00:04:28.194 -> val: 0.00

нужно видимо следить за резким ростом, а медленные флуктуации игнорировать.

Добавлено спустя 13 минут 13 секунд:
всё, картинка давления при пробинге и пошёл спать =)
странное второе плато... потом разберусь
Снимок.PNG
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Датчик касания механический, тензометрический.

Сообщение Dmitry__ » 21 сен 2020, 08:14

Myp писал(а):и поэтому в разных точках стола разный натяг буденовой трубки в зависимости от положения может убегать до -200 у.е.

Классный нежданчик :crazy:
Моя в шоке :o

Добавлено спустя 7 минут 12 секунд:
Вот хотел сумничать как обойти это, а потом дочитал твое сообщение :)

Myp писал(а):нужно видимо следить за резким ростом, а медленные флуктуации игнорировать.


При вкл. вентиляторе - это может быть просто шум ацп. Попробуй выкл. вентилятор и сравнить данные...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания механический, тензометрический.

Сообщение Myp » 21 сен 2020, 13:25

на вентилятор пофиг, от него шум в дробной части, можно просто отбросить.

вот ещё 2 картинки
проверка повторяемости M48 с 10 пробами с пределом срабатывания в 100 у.е.
тест повторяемости.PNG

касания очень чётко видно.

и простая парковка по всем осям
сначала паркуем X, потом Y, потом едем в центр стола и ось Z паркуем по соплу 2 раза, сначала быстро, а потом точно.
хоминг всех осей.PNG

видно плавный уход в минус, это трубка боудена натягивается, потом резкое падение - это при ударе в раму хотенд по инерции покачивается.
потом движение в ноль по Y и опять увеличение натяга боудена, ползёт дальше в минус.
короткое плато на 900 - пауза перед тем как ехать в центр стола.
далее резкий возврат к нулю - резкое движение каретки в центр стола для парковки.
Натяг боудена ослабляется и даже видно как коса с боуденом и проводами покачивается плавно затухая в районе 1000.
ну и потом 2 сильно положительных пика - быстрая парковка и медленная парковка.

Добавлено спустя 25 минут 45 секунд:
Вы наверное спросите, а что там с дрейфом при прогреве?
а ничего собственно, при прогреве до рабочей температуры ноль уползает до -10, а после стабилизации температуры возвращается обратно и ползёт к +4.
видимо это провода и сама констуркция прогревается и деформируется, можно не обращать внимания.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Датчик касания механический, тензометрический.

Сообщение Dmitry__ » 21 сен 2020, 17:35

Ну я считаю, что все очень круто...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания механический, тензометрический.

Сообщение Myp » 21 сен 2020, 19:30

круто, тока у меня по математике тройка была.
как мне теперь из этого зоопарка точек, надёжно детектировать резкий скачок?
я все 10 проб засунул в одну картинку, они само собой довольно похожи друг на друга.
10 проб.PNG

как мне в коде имея первые 3 точки, понять что это нужный мне резкий скачок?
нужна какаято высокоматематическая магия.
Код: Выделить всёРазвернуть
val1 = -0,94
val2 = 3
val3 = 33,07

я пока вижу только одно решение, запоминать 3 последние точки
и если (val3-val2)-(val2-val1) больше 20, то имеет место быть резкий рост и надо триггерить.

Добавлено спустя 12 минут 58 секунд:
но я вот нифига не уверен что это разумно...
Код: Выделить всёРазвернуть
void loop() {
  // get smoothed value from the dataset:
  if (newDataReady) {
    float i = LoadCell.getData();
    newDataReady = 0;

    //сдвигаем окно с точками
    val_1 = val_2;
    val_2 = val_3;
    val_3 = i;
   
    //считаем круизну
    Delta_val = (val_3 - val_2) - (val_2 - val_1);
   
    //триггерим
    if (Delta_val > 20) {
      digitalWrite(LED_BUILTIN, HIGH);
    }
    if (i < 80) {
      digitalWrite(LED_BUILTIN, LOW);
    }
    Serial.print("val: ");
    Serial.println(i);
  }



ЗЫ
сам контроллер кажется тупой, после срабатывания сенсора шаговик успевает сделать ещё несколько шагов до остановки
хотелось бы включить прерывание на пробинг оси Z.
Но нет //TMCStepper includes SoftwareSerial.h which is incompatible with ENDSTOP_INTERRUPTS_FEATURE
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Датчик касания механический, тензометрический.

Сообщение Dmitry__ » 21 сен 2020, 23:50

Myp писал(а):круто, тока у меня по математике тройка была.

Myp писал(а):я пока вижу только одно решение, запоминать 3 последние точки
и если (val3-val2)-(val2-val1) больше 20, то имеет место быть резкий рост и надо триггерить.

Вас, глубокоуважаемый Фёдор Анатольевич, можно поздравить, Вы только что открыли для себя дифференцирование. Нахождение производной функции :crazy:
Вычитанием одной последовательной точки из другой, ты находишь скорость ИЗМЕНЕНИЯ функции. Если продифференцировать твой график, то получится такое:

10 проб.PNG


Чтоб было нагляднее, я зеленый график сместил на уровень 200, для этого графика это ноль. Красные метки - это где функция изменяет скорость, горизонтальные участки на моем графике - это где скорость изменения функции минимальна.
Дальше все просто, компаратор на фиксированный уровень. Но есть маленькие ньюнсы :) Может понадобиться фильтр низких частот, т.к. дифференцирование очень сильно усиливает высокочастотный шум. Но с твоей смекалкой это не будет проблемой. Подсказка: "фильтр скользящего среднего"
Если сложно это представить математикой, можно сравнить с последовательным конденсатором небольшой емкости, которая нагружена на резистор. Всплески напряжения на выходе будут ровно как на графике, т.е. конденсатор пропускает только быстрые фронты и спады напряжения...

Добавлено спустя 35 минут 17 секунд:
Кста, очень интересная производная более раннего твоего графика :)

хоминг всех осей.PNG
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания механический, тензометрический.

Сообщение Myp » 22 сен 2020, 00:24

для красоты ещё digitalWrite заменил на PORTB = PORTB | B00100000;
ато в интернетах пишут что медленно работает, мы же за каждый чих процессорный боремся.
ну и от флоата пожалуй надо отказаться, атож небось тоже жрёт такты на вычитания и перекладывания.

кстати, вот так выглядит давление если пробовать холодным соплом с торчащей из него соплёй =)
не сразу понял откуда такие артефакты, увидел тока случайно нагнувшись торчащую завитушку из сопла.
сопля.PNG
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Датчик касания механический, тензометрический.

Сообщение Dmitry__ » 22 сен 2020, 00:46

Myp писал(а):для красоты ещё digitalWrite заменил на PORTB = PORTB | B00100000;

Так можно только для записи "1"
Но мысль правильная...
Все digitalWrite(пин, HIGH) заменить на как у тебя, а все digitalWrite(пин, LOW) заменить на PORTB = PORTB & B11011111

А вообще надо все задефайнить как в исходниках моего датчика:

Код: Выделить всёРазвернуть
#define pin_nClock_Mode_OUTPUT  pin_nClock_DDR    |= (1<<pin_nClock_bit)
#define pin_nClock_LOW          pin_nClock_PORT   &=~(1<<pin_nClock_bit)
#define pin_nClock_HIGH         pin_nClock_PORT   |= (1<<pin_nClock_bit)

#define pin_SDIO_Mode_INPUT     pin_SDIO_DDR      &=~(1<<pin_SDIO_bit)
#define pin_SDIO_Mode_OUTPUT    pin_SDIO_DDR      |= (1<<pin_SDIO_bit)
#define pin_SDIO_LOW            pin_SDIO_PORT     &=~(1<<pin_SDIO_bit)
#define pin_SDIO_HIGH           pin_SDIO_PORT     |= (1<<pin_SDIO_bit)
#define pin_SDIO_IN             pin_SDIO_PORT_IN  &  (1<<pin_SDIO_bit)

#define pin_TRIG_Mode_INPUT     pin_TRIG_DDR      &=~(1<<pin_TRIG_bit)
#define pin_TRIG_IN             (pin_TRIG_PORT_IN  &  (1<<pin_TRIG_bit))


И вот так настраивать:

Код: Выделить всёРазвернуть
//initialize SPI
    pin_nClock_Mode_OUTPUT;
    pin_nClock_HIGH;
    pin_SDIO_Mode_OUTPUT;
    pin_SDIO_LOW;


Myp писал(а):ну и от флоата пожалуй надо отказаться, атож небось жрёт такты.

Очень правильная мысль, ничего что я к Вам спиной сижу? :crazy:
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания механический, тензометрический.

Сообщение Myp » 22 сен 2020, 02:38

вот кстати я ещё не лазил в библиотечку работы с датчиком.
там при выводе данных например число во флоате забирается из датасета и делится на коэффициент, чтобы получить граммы. :(
ужс прям.
Код: Выделить всёРазвернуть
float HX711_ADC::getData() // return fresh data from the moving average dataset
{
   long data = 0;
   lastSmoothedData = smoothedData();
   data = (lastSmoothedData >> divBit) - tareOffset ;
   float x = (float)data / calFactor;
   return x;
}


но сам забор из датасета вроде не медленный, датасет у меня размером 1, H=L=0
то есть вроде должно быстро забираться.
Код: Выделить всёРазвернуть
long HX711_ADC::smoothedData() 
{
   long data = 0;
   long L = 0xFFFFFF;
   long H = 0x00;

   for (uint8_t r = 0; r < (samplesInUse + IGN_HIGH_SAMPLE + IGN_LOW_SAMPLE); r++)
   {
      if (L > dataSampleSet[r]) L = dataSampleSet[r]; // find lowest value
      if (H < dataSampleSet[r]) H = dataSampleSet[r]; // find highest value
      data += dataSampleSet[r];
   }
   if(IGN_LOW_SAMPLE) data -= L; //remove lowest value
   if(IGN_HIGH_SAMPLE) data -= H; //remove highest value
   return data;
}

Где отладчик? я требую отладчик чтобы такты на бумажке посчитать.

Добавлено спустя 46 минут 36 секунд:
Ах да, забыл добавить принудительное срабатывание при превышении
почему-то последний пик получился слишком плавный, получил "маленький" перелёт...
перелёт.PNG
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Пред.След.

Вернуться в 3D печать

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10