Обсуждаем контроллеры компании Atmel.
Ответить

Какую ардуину взять для передачи данных с 3 датчиков на ПК?

Сб ноя 30, 2019 14:18:14

Подскажите, какую ардуину лучше всего применить для передачи данных с трех датчиков тока на компьютер по USB?
Мне нужно делать 15000 измерений переменного тока тремя датчиками в секунду. Насколько я разобрался, то получается по 2 байта с датчика: среднее значение АЦП при нуле тока = 512, а при максимальном токе = 1024 (2 байта).
Т.е. нужно пересылать на компьютер 6 байт на одно измерение: 15000 * 6 = 90000 байт в секунду или 90000 * 8 = 720000 бит в секунду, т.е. скорость должна быть не меньше 1 Мбит/сек.
Сможет ли Arduino выдать такую скорость на ПК через USB? Например контроллер ATmega32U4.
Из даташита на ATmega16: "Частота преобразования до 15 тыс. преобразований в сек. при максимальном разрешении". Это по всем входам в сумме или по каждому входу в отдельности? Мне нужно делать по трем входам по 15 тыс. измерений параллельно. Это возможно?

Правильно ли я вообще понимаю, что чувствительность АЦП 5 мВ на один разряд при опорном напряжении Vref = 5.12В (и при таком же напряжении питания датчика Vcc)? При нулевом входном токе выходное напряжение датчика ACS712 в идеальном случае должно быть строго Vcc/2 (2.56В), т.е. с АЦП должно быть считано число 512.
Если нужно измерять переменный ток от -5А до +5А напряжение с датчика будет от 0В до 5.12В, т.е. (Vin_max * 1024)/Vref = (5.12 * 1024)/5.12 = 1024 - максимальное значение АЦП.
А если взять Vref = 1.024В, то чувствительность АЦП = 1 мВ?
Какое вообще может быть минимальное Vref? И какая минимальная чувствительность АЦП у ATmega контроллеров?

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Сб ноя 30, 2019 14:38:13

два байта - это 16 бит. АЦП у описанных атмег существенно меньше, значит, передавать можно меньше.
Входы АЦП переключаемы, то есть, не параллельно будет по трем каналам, скорости не хватит

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Сб ноя 30, 2019 21:17:48

два байта - это 16 бит. АЦП у описанных атмег существенно меньше
Я округлил 10 бит до двух байт. Короче, шестнадцатеричный код надо передать от 1 до 1024.
А саму плату какую лучше использовать, с отдельной микросхемой USB-UART или, например, Arduino Micro на ATmega32u4 со встроенным USB-контроллером?
Встроенный USB-контроллер работает аппаратно отдельно от самого МК?

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Сб ноя 30, 2019 21:29:58

Аппаратно всё работает отдельно, но это не означает, что всё так просто - кинул туда байт по какому-нить адресу и забыл.
Там может оказаться жуткий фреймворк, с которым, возможно, придется разбираться. Для начинающего переходник усб-уарт - лучший вариант.
Но вся беда, что под Ваше требование о 15кГц выборках эти мк не подходят. 3 канала успеют в лучшем случае выбирать с 5 кГц частотой.
Либо надо три мк, либо другой мк, либо мк + 2 АЦП внешних, либо изменить ТЗ с учетом мультиплексирования (переключения) каналов ацп.

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 07:03:13

Да, три МК придется использовать. Но мне нужно знать, какую плату лучше использовать, с отдельной микросхемой USB-UART или со встроенным USB-контроллером?
Нужна максимальная скорость и точность работы АЦП и быстрая передача данных на ПК без отвлечения МК на эту задачу. Первый раз я столкнулся с такой задачей, да и с ардуинами дела не имел. Если бы не передача по USB, то я бы взял свои МК ATmega 16 и 32, но если нужны еще внешние USB-контроллеры, то их у меня нет. А нельзя ли использовать имеющийся USART для передачи на ПК и насколько эта передача сможет помешать непрерывной работе АЦП?
Никаких фреймворков и библиотек, я все сделаю сам на ASM-е. Придется разобраться в протоколе, но ничего страшного.
С тремя МК еще такая засада, что выборки с токовых датчиков надо как-то синхронизировать, чтобы они осуществлялись строго одновременно. Можно сделать, чтобы один МК тактировал все три, в пределах одной платы.
В принципе, передавать на ПК в реальном времени необязательно, можно как-то записывать на какую-нибудь SD-карту. Хотя нет, лучше сразу на ПК.
Или не USB, а Ethernet.

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 09:44:10

У всех разные понятия и задачи, но большая скорость и высокая точность - это скорее не про АЦП AVR.
Более того чтобы достичь завленной точности и приемлемого шума, надо вводить контроллер в режим сна в момент преобразований. Ну и грамотно сделать схему и плату.
Поддержание соединения USB потребует участия процессорного ядра. Меньше всего хлопот с отдельным UASB-UART преобразователем.
Минимальное значение Vref из документации для 32U4: 2.56V.

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 10:20:45

Ну и грамотно сделать схему и плату.
Вот потому и хочу готовую ардуину взять, в надежде, что там все грамотно сделано. А датчик от платы на небольшом расстоянии планирую: 5 см, ну 10 см максимум.

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 11:25:17

По поводу 15 тыс измерений в сек.
Если вы планируете следить за 3-х фазной сетью, то такая скорость может оказаться излишней. Для периодических сигналов можно даже попробовать использовать стробоскопический эффект. Сдвиг фаз между каналами компенсировать программно. Недостающие выборки получать интерполяцией. Вариантов много, иногда бывает полезным на проблему взглянуть просто с другой стороны.
Сам ACS712 кстати тоже имеет шум и дрейф.

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 11:38:59

А зачем эту отрыжку мамонта использовать? Взять Cortex-M4, хоть тот же STM32F411, да сделать на нем!

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 13:06:32

uk8amk, нет, не за 3-х фазной сетью следить надо, там другое устройство, но вам вряд ли это будет интересно.

Eddy_Em, я думал про ARM контроллеры, но я с ними дела никогда не имел. Хотя попробовать можно, если один Cortex-M4 потянет три датчика (нужно 3 АЦП на борту) + передача на ПК.

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 13:58:45

Вот потому и хочу готовую ардуину взять, в надежде, что там все грамотно сделано.

Сожалею, но это не так. Универсальная платформа чаще всего не очень грамотно сделана (для какой-то задачи). Не потому, что делали безграмотные, а потому, что универсально - никак, за универсальность приходится платить, в том числе прозвищем "одурино".
Но если Ваша задача именно такова, как описана, и ТЗ полностью сформировано (без всяких потом "а можно еще светодиодик добавить?") то разработать схемку-плату, заказать в китае плату и спаять - пустяковая задача для подавляющего большинства фрилансеров, если неохота самому.

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 16:45:49

А зачем эту отрыжку мамонта использовать? Взять Cortex-M4, хоть тот же STM32F411, да сделать на нем!

Возник вопрос, какое ядро из STM32F4xx выбрать, нормальной сравнительной таблицы не нашел. Нужно 3 АЦП, 168 МГц, объем памяти и т.д.
И еще вопрос, на плате Cortex-M4 STM32F4xx один USB разъем для программирования контроллера и для вывода данных с него на ПК? Какой-то внешний программатор не нужен?

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 17:12:48

Vlad_RK, на сайте производителя есть нормальная параметрическая таблица, включая вариант 3 и более независимых ацп
например https://www.st.com/content/st_com/en/pr ... 103rd.html

и зачем 168? и какой объем памяти? и что такое и т.д? Вы задаете общие вопросы, на них можно дать лишь общие ответы. Опубликуйте нормальное ТЗ, получите нормальное решение.

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 17:46:45

Вот я там и был: https://www.st.com/content/st_com/en/pr ... eries.html
Но надо было пройти немного дальше, в Product Selector.
Просто уже голова плохо соображает, пол дня по сотне сайтов пролазил, попадаются только какие-то куски параметров. Хоть даташиты на каждый качай и изучай по отдельности.

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 18:02:34

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

Да, раньше у ST поудобнее было, все армы можно было сравнить в одной табличке, а теперь еще по подразделам лазить.
Гляньте указанный мной выше - он дешевле и информации(примеров) по нему больше. И платы а-ля ардуино на похожем (NUCLEO-F103RB - там вроде лишь 2 независимых ацп) есть, что позволит изучить. Единственное, что не все 103 имеют 3 ацп, надо по корпусу - буквам смотреть

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 18:27:02

Да мне задачу надо решить, а изучать в процессе буду. Нужен с тремя АЦП, иначе какой смысл? Ну и перебираю теперь, какой покруче взять - пригодится.
Теперь бы понять, не нужен ли какой внешний программатор, а то жди потом еще пока его привезут. Но вроде бы не нужен.

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 18:37:38

nucleo-f303re https://www.st.com/content/st_com/en/pr ... s-software
и
nucleo-f303ze https://www.st.com/content/st_com/en/pr ... 303ze.html
- ардуино-совместимые, причем, какая-то с езернетом.

B-G474E-DPOW1 https://www.st.com/content/st_com/en/pr ... dpow1.html
и
STM32F3DISCOVERY https://www.st.com/content/st_com/en/pr ... overy.html
- отладочные платы
Это из готового, от 3 АЦП

с программатором

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 19:57:22

А какую среду разработки лучше использовать под STM32?

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 20:06:24

тут есть подобное обсуждение: https://radiokot.ru/forum/viewtopic.php?f=59&t=167043

Re: Какую ардуину взять для передачи данных с 3 датчиков на

Вс дек 01, 2019 20:53:15

А какую среду разработки лучше использовать под STM32?

Ту, в которой привык работать. Вот и всĒ!
Ответить