Система автоматического тестирования ВМГ (народный проект)
Предисловие
Не хочу заниматься плагиатом, хотя повторение колеса не является оным, но все же…
Хотел бы поделиться идеями с дальнейшим воплощением их в жизнь.
Не имею навыков программирования на определенных платформах.
Как вы понимаете, не имея навыков, но имея идею большинство проектов невозможно воплотить в реальность, по этому я и создаю данную тему и проект.
Надеюсь на вашу помощь в развитии и продвижении проекта.
Что имеем? Что требуется?
Нам нужно, как минимум получать три показания с датчиков, это ток, напряжение, тяга. Этого минимума будет достаточно для получения результатов и последующего подбора эффективной ВМГ. В дальнейшем можно будет добавить например датчики для снятия показаний КВ, вибрации и т. д.
Не плохо бы использовать для этого ардуину, большинство ею пользуется и имеет в наличии. Но имеется небольшое ограничения при использовании данной платформы, а точнее огромный недостаток, это 10 биттный АЦП, проще говоря вес мы сможем измерять в пределах килограмма. Для измерения тока и напряжения ардуины будет нам вполне достаточно, а вот для измерения тяги придется использовать внешний АЦП. В качестве такого внешнего АЦП предлагаю использовать микросхему ADS1232. Данная микросхема уже имеет усилитель и стоимость у нее не большая, пару баксов всего.
Решение
В даташите АЦП имеется схема подключения к нему тензо-датчика.
На просторах интернета были найдены кусочки кода для чтения данных ардуиной для подобной АЦП.
forum.arduino.cc/index.php/topic,128823.0.html
forum.arduino.cc/index.php?topic=196110.0
Читая ломанный гугло-перевод даташита, добился определенных результатов в чтении данных АЦП с помощью ардуины.
/*
ADS1244*/
int DATA = 4;
int SCLK = 5;
int PWDN = 3;void setup() {
pinMode(DATA, INPUT);
pinMode(SCLK, OUTPUT);Serial.begin(115200);
// generate a 2.4MHz clock signal on pin 3
pinMode(PWDN, OUTPUT); //CLK// 17.11 Register Description
TCCR2A = 0x33; // 0011 0011
TCCR2B = 0x09; // 0000 1001
OCR2A = 0x06; // 0000 0110
OCR2B = 0x05; // 0000 0011Serial.print(“ADS1244\n”); // output ‘AADS1244’ (?) additional ‘A’ in front
delay(100);
}void loop() {
// Code for reading the data:
int32_t value = 0;
digitalWrite(PWDN, HIGH);
//digitalWrite(SCLK, HIGH); //enter slleep mode
delay(300);
digitalWrite(SCLK, LOW); // wake up ADC// wait for data ready, stay in while-loop until LOW
while (digitalRead(DATA) == HIGH);value = shiftIn(DATA, SCLK, MSBFIRST);
value <<= 8;
value |= shiftIn(DATA, SCLK, MSBFIRST);
value <<= 8;
value |= shiftIn(DATA, SCLK, MSBFIRST);digitalWrite(SCLK, HIGH); // enter sleep mode
//digitalWrite(SCLK, LOW); // 25th pulse to keep DATA high till next data ready// process as int24_t (two’s compliment 24bit)
value = ((signed long) (value << 8)) >> 8;Serial.println(value, DEC);
Serial.flush();}
Правильно ли я организовал чтение данных, возможно ли оптимизировать код?
Как я понял, из кода можно выбросить часть с “// generate a 2.4MHz clock signal on pin 3”
Завести данный код удалось добавлением “digitalWrite(PWDN, HIGH);”
Правильно ли так оставлять его или следует все таки сбрасывать и в какой момент?
Набросал на макетной платке предварительную сборочку стенда.
в качестве датчика тока использую ACS758
для снятия показаний напряжения буду использовать делитель напряжения на резисторах
какой тензодатчик планируете использовать?
www.aliexpress.com/item/…/1445102584.html
линк на похожий, так как покупалось через аукцион
Александр, штука эта классная. Без нее долго не полетаешь, если на обум все делать. Но вроде кто-то уже делали подобное. Ну и на всякий случай вот уже готовый вариант hobbyking.com/…/__10487__EagleTree_MicroPower_E_Lo…, правда к электронным весам ее сложно прикрутить, но меряет и обороты, ток, напругу, мощность и еще много чего. Все лагирует с нужным интервалом, далее в своей программе рисует графики… считает сразу мини, макси, среднее и т.д. Любой интервал можно масштабировать, анализировать, обрабатывать отдельно, и также сам интревал записи данных настраиваемый.
это не то, похожее устройство имеется в наличии у меня
требуется специализированный стенд
установил ВМГ, крутанул, данные залил в базу
затем данные сравниваешь, используешь для подбора конфига и т. д.
ЗЫ в общем то куски кода имеются, все работает
идут данные тяги с внешнего АЦП на ардуину, напряжение и ток меряются
осталось все собрать в кучу, организовать сбор данных, придумать ГУИ
как выше писал, в программировании не в зуб ногой, буду очень благодарен за помощь в дальнейшей разработке ГУИ
собственно я могу данные собирать и через терминал, но было бы лучше организовать интерфейс
если разберусь, возможно и сам, что нить организую, но очень надеюсь на помощь
ЗЫЗЫ по сравнению с STM32 (делал подобный стенд), на много меньше помех по АЦП у ардуины, как я понимаю это связанно с разрядностью?
думаю можно будет использовать данные без цифрового фильтра, это огромный плюс, да и 24 биттный внешний АЦП так же приятно работает без особых помех
очень упрощается программная часть и повышается точность измерений, но это пока догадки, надо собрать все данные в кучу и тогда будет известен результат
Но там ведь данные из E-Logger просто ипортируются в Excel (без проблем) и он уже быстро анализирует. Программа в Excel состовляется за час-два во время просмотра телевизора ( анализ маломерных числовых массивов)
Но там ведь данные из E-Logger просто ипортируются в Excel (без проблем) и он уже быстро анализирует. Программа в Excel состовляется за час-два во время просмотра телевизора ( анализ маломерных числовых массивов)
там нет датчика массы а на нем все и завязанно
правда к электронным весам ее сложно прикрутить
но все же возможно по той же I2C 😃 есть еще и аналоговые
Для сбора и анализа данных предложенное вами устройство не годится, тем более нет данных тяги.
Да, его можно использовать для создания подобного описываемому проекту стенда, но потребуются дополнительные затраты, лишние устройства, программы, возня с совмещением данных и многое другое.
Стоимость собираемого мною стенда будет примерно:
тензодатчик - 10$
АЦП - 3$
ардуина с ФТДИ - 7$ (у большинства она валяется в загашнике)
датчик тока - 5$
обвязка и монтажка ну - 10$
_____________________________
всего 30 баксов относительно легко повторяемый стенд 😃
… имеется небольшое ограничения при использовании данной платформы, а точнее огромный недостаток, это 10 биттный АЦП, проще говоря вес мы сможем измерять в пределах килограмма.
Никакой проблемы на самом деле нет. 10 бит в нашем случае более чем достаточно. Точность измерения составляет 0,1%. Скажем, в диапазоне 0…5кг точность будет плюс-минус 5 грамм. Причем, скорость измерения высокая не требуется, поэтому точность можно повысить многократными измерениями.
Никакой проблемы на самом деле нет. 10 бит в нашем случае более чем достаточно. Точность измерения составляет 0,1%. Скажем, в диапазоне 0…5кг точность будет плюс-минус 5 грамм. Причем, скорость измерения высокая не требуется, поэтому точность можно повысить многократными измерениями.
вы не учли шумы внутреннего АЦП, а при использовании фильтра уменьшается точность, если делать несколько замеров, падает скорость теста
к тому же микросхема внешнего АЦП стоит столько же, сколько и усилитель для тензодатчика, но при этом точность замера с тензодатчика возрастает на много больше
а что с этой установкой? RThrust - система автоматического тестирования ВМГ вроде тожесамое - единственное что она “закрытая”, а тут будет открытая?
вы не учли шумы внутреннего АЦП, а при использовании фильтра уменьшается точность, если делать несколько замеров, падает скорость теста
Шумы легко фильтруются программным фильтром, а скорость работы внутреннего АЦП на несколько порядков выше, чем требуется для данной задачи.
к тому же микросхема внешнего АЦП стоит столько же, сколько и усилитель для тензодатчика
Подходящий усилитель можно сделать из того, что есть под рукой, а микросхему АЦП в ближайшем магазине можно и не найти.
а что с этой установкой? RThrust - система автоматического тестирования ВМГ вроде тожесамое - единственное что она “закрытая”, а тут будет открытая?
то же самое, только на чипе smt32, но уж слишком затянут проект под предлогом доведения до ума
данный проект будет открытым, не вижу смысла в закрытии подобных разработок, ведь чем больше народу повторит его, тем больше пользы будет получено в конечном результате
Шумы легко фильтруются программным фильтром, а скорость работы внутреннего АЦП на несколько порядков выше, чем требуется для данной задачи.
Подходящий усилитель можно сделать из того, что есть под рукой, а микросхему АЦП в ближайшем магазине можно и не найти.
на практике знаю возникающие сложности в процессе разработки в данном направлении
имеете реальное предложение, схемы, коды, решения, милости просим, иначе, проходите мимо
по поводу шумов и легкости фильтрации, хотелось бы взглянуть пример вашей легкости решения проблемы
про скорость АЦП, полагаю вы ошиблись в термине, да и не в теме того, что имелось в виду в моем сообщении
ну и на по следок, усилитель, который с легкостью собирается из подручного хлама глянуть бы
пример подбора датчик тока для наших целей
в моем распоряжении имеется датчик ACS758ECB-200B
если мы откроем даташит к этому датчику и посмотрим его данные,
то увидим крайнюю не пригодность данного датчика для наших потребностей,
но на данный момент делать нечего, я буду использовать его.
для правильного подбора датчика требуется воспользоваться таблицей с даташита, посмотрим ее
предположим, что замер тока нашего стенда не будет превышать 50А
датчик тока в моем распоряжении в нулевом состоянии выдает половину опорного напряжения
то есть при нулевом значении АЦП будет выдавать значение 512
причем точность показаний будет 10мВ на 1А - это самое не подходящее значение
для наших целей лучшим датчиком будет ACS758LCB-050U
этот датчик измеряет до 50А с точностью 60мВ/1А, самый точный из ACS758 для наших целей
точность в 6 раз выше используемого мною
обращайте внимание на буковку U в маркировке датчика, этот датчик меряет ток в одном направлении
тем самым точность повышается в два раза
ЗЫ выше описанное является моим пониманием прочтенного, на достоверность не претендую
если есть замечания или исправления, прошу поправить
сейчас полез на Али смотреть тензодатчики … первое что бросилосЪ в глаза - куча недорогих готовых модулей АЦП изначально заточеных под тензодатчик - hx711 … ИМХО поддержка таких модулей сильно облегчит повторение конструкции …
датчик имеет смысл брать именно на 10 кг или лучне на 5 ???
еще едут регули , китайская подделка ESC32 … если разобраться с протоколом то с них можно получать напряжение , ток и обороты … только нужен будет свободный компорт (проблему решает ардуина мега или леонардо ) …
тогда получается для стенда нужны будут только ардуина , регуль ESC32 , плата на hx711 и тензодатчик …
Спасибо Юрий за полезную информацию по модулю.
Отличное готовое решение для модульной сборки и дешевой комплектухи.
Именно то, что требуется для данного проекта и легкого повторения.
Имеется библиотека и пример чтения данных с этого модуля.
Обязательно закажу его и включу в качестве основного модуля в проект.
датчик имеет смысл брать именно на 10 кг или лучне на 5 ???
Зависит от ваших потребностей, если вы не собираетесь измерять ВМГ с тягой не превышающей пару килограмм, думаю достаточно тензодатчика и в 3 килограмма, точность измерений будет больше.
Чем больше будет значение, тем меньше будет точность, хотя для АЦП в 24 битта это не особо критично.
тогда получается для стенда нужны будут только ардуина , регуль ESC32 , плата на hx711 и тензодатчик …
пошел искать инфу по этим регулям
ЗЫ добавлено апосля
не, думаю нет смысла включать в проект данный регуль, слишком он дорогой