"Бортовой компьютер своими руками" или "Arduino для "чайника""

Автор Yaroslav, 16 Окт. 2017 в 19:30

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Yaroslav

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

Цель проекта:
в первую очередь получить знания и  опыт работы с arduino;
во-вторых - получить работающий прибор для ежедневного использования.
в-третих - задокументировать процесс создания и собрать информацию которая пригодится другим таким же как я "чайникам" которые захотят повторить данный проект.

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

В процессе работы будет много вопросов, надеюсь более опытные коллеги мимо не пройдут и помогут-подскажут.
Строю лигерад

Yaroslav

#1
Первое что сделал, это схема для согласования напряжений к входам ардуино и питание.
Батарейное напряжение понижаем с помощью делителя и подаем на a0, у меня расчитано под 100в, так как батарею имею 22s li-po.
Сигнал с шунта контроллера усиливаем с помощью неинвертирующего усилителя на ОУ и отправляем на a1, пока расчет до 50а.
Питание - делитель напряжения и стабилизатор lm7805.

Вопросы:
1. Какой лучше использовать ОУ? На схеме нарисован lm358, выбран на угад как самый распространенный и дешевый но они продаются сдвоенными в одном корпусе, чем его заменить?
2. правильно я выбрал номиналы резисторов делителей, имею в виде не коэффициент а именно номиналы?
3. Может будут какие то еще замечания по схеме, возможно где то нужен конденсатор и т.д?
Строю лигерад

Dmitry__

Цитата: Yaroslav от 16 Окт. 2017 в 19:41
Вопросы:
1. Какой лучше использовать ОУ?
Ответ: никакой  :-)
Во-первых:
Цитата: Yaroslav от 16 Окт. 2017 в 19:30
В сборке прибора планирую максимально использовать готовые платы
Во-вторых, lm358 не ОУ Rail to Rail и с большим дрейфом. Это очень плохой усилитель для шунтов. Поэтому возвращаемся к пункту 1 и ставим готовую плату :)
http://roboparts.ru/products/acs712-30a
Есть такой датчик на 100 ампер.
Еще лучше с цифровым выходом (нужен внешний шунт):
http://roboparts.ru/products/cjmcu-226-ina226
Еще можно приспособить платы для квадрокоптеров: токовый шунт и датчик напряжения.

Цитировать2. правильно я выбрал номиналы резисторов делителей, имею в виде не коэффициент а именно номиналы.

Правильно, но смотреть на них сейчас нет смысла, т.к. они меняются без изменения платы. Единственное, я бы добавил конденсатор на нижний резистор. Аналоговые входы у дуины без буферизации и довольно низкоомные для АЦП (большое потребление в момент замера).
Цитировать3. Может будут какие то еще замечания по схеме, возможно где то нужен конденсатор и т.д?
Искать готовые датчики до последнего, никаких лазерно-утюжной технологии (ЛУТ)...



mr.Dream

я лм 358 успешно использовал с коэфициентом усиления 200. Сделал смещение нуля через подстроечник. Касательно низкоомности - где то в даташите вычитал про 100мОм.

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

И еще, на ОУ нужно заводить дифференциальный сигнал с шунта, а не использовать общий минус, иначе будет мерить еще и падение на проводке :)

дисплей рекомендовал бы подключать не через параллельный интерфейс, а например через i2c. Четыре провода: два данных и два питания.

думаю, для показометра точности больше 10бит не нужно. мне было достаточно. а если нужно больше, можно использовать внешний ацп, например ads1115, он имеет настраиваемій коєфициент усиления + диф. усилитель в одном флаконе, 15бит в одну сторону, если не мерить отрицательное напряжение. но можно же и ток зарядки мерить тоже :)

Dmitry__

Цитата: mr.Dream от 16 Окт. 2017 в 20:37
я лм 358 успешно использовал с коэфициентом усиления 200
Это будет не сенсор тока, это будет показометр.
Цитата: mr.Dream от 16 Окт. 2017 в 20:37
Касательно низкоомности - где то в даташите вычитал про 100мОм.
Низкоомность  динамическая, у avr измерение ацп делается подключением конденсатора 14пф ко входу через резистор 1кOm. Это расписано в пдф. Без внешнего конденсатора будет ошибка плюс страшные перекрестные помехи при переключении каналов ацп.



Из пдф:
ЦитироватьThe ADC is optimized for analog signals with an output impedance of approximately 10 k or
less. If such a source is used, the sampling time will be negligible. If a source with higher imped-
ance is used, the sampling time will depend on how long time the source needs to charge the
S/H capacitor, with can vary widely. The user is recommended to only use low impedant sources
with slowly varying signals, since this minimizes the required charge transfer to the S/H
capacitor.


mr.Dream

[user]Dmitry__[/user], почему показометр? Сравнивал с ваттметром турниги, линейность присутствует, а малые токи не мерил им. Зато доступно)

А 14 пф и 1 ком это скорее всего паразитная ёмкость ключей мультиплексора. Если переключить канал и подождать пару миллисекунд все стабилизируется.) а высокой частоты переключения не нужно, и постоянная времени маленькая. Но лично я ставил конденсптор для фильтрации шума от шим и т.д.

Dmitry__

Цитата: mr.Dream от 16 Окт. 2017 в 21:24
[user]Dmitry__[/user], почему показометр? Сравнивал с ваттметром турниги, линейность присутствует, а малые токи не мерил им. Зато доступно)
У lm358 температурный дрейф больше измеряемого напряжения на шунте.  И он не "rail to rail", а смещать в рамки ОУ резистором - моветон, ведь смещение делается не от прецизионного Vref. Долго рассказывать теорию шунтов, первая нагугленная ссылка по "lm358 токовый шунт"
http://vrtp.ru/index.php?showtopic=17174
Цитата: mr.Dream от 16 Окт. 2017 в 21:24
А 14 пф и 1 ком это скорее всего паразитная ёмкость ключей мультиплексора.
Нет, это такое УВХ (устройство выбора хранения). И я привел цитату из пдф: Входное сопротивление должно быть меньше 10кОм.


Yaroslav

Цитата: Dmitry__ от 16 Окт. 2017 в 20:23
Еще лучше с цифровым выходом (нужен внешний шунт):
http://roboparts.ru/products/cjmcu-226-ina226
Очень интересный вариант, только наверное возьму INA219, их можно у нас найти а INA226 только с китая ждать.
В INA219 контакты измерения напряжения и тока совмещенные, наверное им буду только ток измерять, хочу подключить к шунту инфинеона через разъем для CA.
Цитата: Dmitry__ от 16 Окт. 2017 в 20:23
Единственное, я бы добавил конденсатор на нижний резистор. Аналоговые входы у дуины без буферизации и довольно низкоомные для АЦП (большое потребление в момент замера).
Тут не понял. Параллельно нижнему резистору делителя? Какой номинал?

Добавлено 17 Окт. 2017 в 00:25

Цитата: mr.Dream от 16 Окт. 2017 в 20:37
скорость меряйте в прерываниях по периоду между импульсами - так проще и правильней. Я использовал PCINT для чтения трех датчиков холла и в прерываниях обновлял регистры, а в основной программе делал калькуляцию всего с переводом в обороты/скорость.
В это пока не вникал, придет время переспрошу, и так много новой информации)

Цитата: mr.Dream от 16 Окт. 2017 в 20:37
дисплей рекомендовал бы подключать не через параллельный интерфейс, а например через i2c. Четыре провода: два данных и два питания.
Само-собой, это я в протеусе скетч немного ковырял, i2c почему то там не захотел работать.
Строю лигерад

Dmitry__

Цитата: Yaroslav от 17 Окт. 2017 в 00:20
Очень интересный вариант, только наверное возьму INA219, их можно у нас найти а INA226 только с китая ждать.
В INA219 контакты измерения напряжения и тока совмещенные, наверное им буду только ток измерять
Любой внешний ацп будет значительно интересней чем аналоговая схема. Можно взять spi или i2c ацп для тензодатчиков или термопар, они стоят как мукА и рассчитаны на такие низкие напряжения как у шунта. Есть встроенный фильтр на фон 50/60 Гц. Из-за дешевой технологии (дельта-сигма) и низкой скорости у них разрядность от 16 до 22 бит. Правда и шум около 4 бит. До 14 бит можно смело обрезать данные. Такой ацп будет в разы лучше встроенного в avr. Для ардуин много выпускается плат ацп. Под датчик тока точно нет смысла ЛУТ-ить плату.
http://roboparts.ru/products/ad7705
http://roboparts.ru/products/gy-mcp3424

ЦитироватьТут не понял. Параллельно нижнему резистору делителя? Какой номинал?
Да, который на схеме R10. 0.1mkf за глаза :)





Добавлено 17 Окт. 2017 в 00:59

Который R9 лучше наборный из 2-х поставить, для высоковольтности...

Dmitry__

Ссылки дал на местные интернет магазины, там цены конские. Надо в поиск: "adc arduino ali"
Мои любимые дуинки на 3.3v (8 мГц) arduino pro mini 3.3v, по сто руб за пучок :) Только шить их немного сложнее, нужен usb/com переходник. Но тоже стОит 100р и покупается один раз (лучше 3, теряются иногда :))

Yaroslav

На сколько я понял в этих АЦП есть встроенный усилитель и сигнал с шунта можно усилить раз в 5 и готово?
Если они бывают 4х канальные, то одним можно измерять и ток (падение напряжения на шунте) и напряжение батарни(через делитель)?

Добавлено 17 Окт. 2017 в 01:19

Мне про мини тоже нрaвятся, в руках пока не держал, только в корзину закинул, но по параметрам интересные платки для готовых проектов. А этих кабелей на pl2303 от старых мобилок где то валяется пару штук, что нибудь придумаю.
Строю лигерад

Dmitry__

Цитата: Yaroslav от 17 Окт. 2017 в 01:15
На сколько я понял в этих АЦП есть встроенный усилитель и сигнал с шунта можно усилить раз в 5 и готово?
Да, настроил регистры и просто снимаешь данные. Как бы еще загрублять не пришлось, тензодатчики и термопары еще меньше имеют напряжение чем шунты :)
Если смотреть пдф на ацп ADS1115 (последняя ссылка на али), то он при FSR (Full-Scale Range) = ±0.256 V , имеет 16 эффективных бит до 64 DATA RATE (SPS).

Добавлено 17 Окт. 2017 в 01:32

Вообще, лучше искать ацп заточенные под ардуины, т.к. будут готовые библиотеки для работы с ними.

Yaroslav

Заказал пару модулей ads1115, будут недели через 2-3.
А пока пара вопросов.
1. Возможно считывать с двух каналов ads1115 дифференциально, а с оставшихся двух в одноканальном режиме между землей и входом?
Если не ошибаюсь ничего не мешает написать:
Цитироватьdif = ads.readADC_Differential_0_1();
adc2 = ads.readADC_SingleEnded(2);
adc3 = ads.readADC_SingleEnded(3);
и получать три измерения. Поправьте если это не так.

2. Как лучше измерять напряжение батареи с уровнем 0-1в с ads1115 или с уровнем 0-5в с входом ардуино?
Думаю что лучше 0-1в с помощью ads1115 так как большее разрешение, но нет ли подводных камней из за меньшего уровня сигнала?
Строю лигерад

edw123

#13
Цитата: Yaroslav от 16 Окт. 2017 в 19:30
сделать бортовой компьютер, который будет показывать напряжение, ток, скорость, считать мощность, потраченную энергию и т.д.
А если ещё и его в разрыв ручки газа поставить, то можно сделать токовое управление, управление по оборотам, обратную связь по температуре, нужную кривую отклика ручки...  :mus:

Yaroslav

[user]edw123[/user], да, были такие мысли) но всему свое время, сначала простые функции а потом посмотрим)
Строю лигерад

edw123

А 8бит точно не хватит для измерений? Или прямо аптекарской точности хочется? С шунта вроде в районе 0.5в идёт - вполне можно пробовать и без усилителя?

mr.Dream

[user]edw123[/user], с шунта по стандарту 75мВ. Я делал на лм358 с КУ=100 и не парился, подкрутил резистором, чтобы было на выходе чуть больше нуля, а потом первых пару ступенец оцифровки просто не учитывал. Мне нужен был именно показометр. А верней, ограничение тока. не такой уж температурный дрейф у 358 страшный, если не греть сильно :) в районе двух-трех миливольт смещение.

Касательно адс1115, может он мерить и диференциально и относительно минуса, просто перед измерениями менять конфигурацию. Я ардуиновский функции не использовал, а просто посылал ему по шине пару байт, а в ответ ловил тоже пару байт. Мне так было проще, так как перед собой сразу держал даташит с регистрами управления :) Скажу только, что при невысокой скорости квантирования и конденсаторе по входу прыгание младших бит минимальное. То есть, в режиме одноканального измерения там честных 14бит, чего хватает за глаза. И 15 бит в дифференциальном режиме. Но мне и 10 бит ардуины хватало. При 100В цена деления 0,1В - это более чем достаточно :)

edw123

Цитата: mr.Dream от 20 Окт. 2017 в 00:29
[user]edw123[/user], с шунта по стандарту 75мВ.
Это смотря с какого шунта. В велоконтроллере вроде нет никакого усилителя внешнего на сигнал с шунта и даже кажется делитель и там явно больше 75мВ.