Электротранспорт

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск    

Новости:

Страницы: 1234>>ВсеВниз

Автор Тема: "Бортовой компьютер своими руками" или "Arduino для "чайника""  (Прочитано 1175 раз)

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

Yaroslav

  • Старожил
  • *****
  • Репутация:
    +6/-0
  • :
    125
    131
  • Сообщений: 1113
  • Украина, Киев
  • Ездяю на батарейках!
  • Оффлайн Оффлайн
    • Награды
Привет всем.
Вот зачесались у меня руки, захотелось разобраться с платформой Arduino. Поморгал диодами, покрутил серву, теперь решил попробовать сделать бортовой компьютер, который будет показывать напряжение, ток, скорость, считать мощность, потраченную энергию и т.д.

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

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

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

Строю лигерад

Yaroslav

  • Старожил
  • *****
  • Репутация:
    +6/-0
  • :
    125
    131
  • Сообщений: 1113
  • Украина, Киев
  • Ездяю на батарейках!
  • Оффлайн Оффлайн
    • Награды
Первое что сделал, это схема для согласования напряжений к входам ардуино и питание.
Батарейное напряжение понижаем с помощью делителя и подаем на a0, у меня расчитано под 100в, так как батарею имею 22s li-po.
Сигнал с шунта контроллера усиливаем с помощью неинвертирующего усилителя на ОУ и отправляем на a1, пока расчет до 50а.
Питание - делитель напряжения и стабилизатор lm7805.

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

Строю лигерад

Dmitry__

  • Местный
  • ****
  • Репутация:
    +2/-3
  • :
    38
    81
  • Сообщений: 563
  • Санкт-Петербург
  • Ездю на батарейках!
  • Оффлайн Оффлайн
    • Награды
Вопросы:
1. Какой лучше использовать ОУ?
Ответ: никакой  :-)
Во-первых:
В сборке прибора планирую максимально использовать готовые платы
Во-вторых, lm358 не ОУ Rail to Rail и с большим дрейфом. Это очень плохой усилитель для шунтов. Поэтому возвращаемся к пункту 1 и ставим готовую плату :)
http://roboparts.ru/products/acs712-30a
Есть такой датчик на 100 ампер.
Еще лучше с цифровым выходом (нужен внешний шунт):
http://roboparts.ru/products/cjmcu-226-ina226
Еще можно приспособить платы для квадрокоптеров: токовый шунт и датчик напряжения.

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

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



mr.Dream

  • Старожил
  • *****
  • Репутация:
    +105/-2
  • :
    166
    629
  • Сообщений: 2653
  • Ternopil, Ukraine
  • Ездю на лифере :)
  • Оффлайн Оффлайн
    • Награды
я лм 358 успешно использовал с коэфициентом усиления 200. Сделал смещение нуля через подстроечник. Касательно низкоомности - где то в даташите вычитал про 100мОм.

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

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

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

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

Dmitry__

  • Местный
  • ****
  • Репутация:
    +2/-3
  • :
    38
    81
  • Сообщений: 563
  • Санкт-Петербург
  • Ездю на батарейках!
  • Оффлайн Оффлайн
    • Награды
я лм 358 успешно использовал с коэфициентом усиления 200
Это будет не сенсор тока, это будет показометр.
Касательно низкоомности - где то в даташите вычитал про 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

  • Старожил
  • *****
  • Репутация:
    +105/-2
  • :
    166
    629
  • Сообщений: 2653
  • Ternopil, Ukraine
  • Ездю на лифере :)
  • Оффлайн Оффлайн
    • Награды
, почему показометр? Сравнивал с ваттметром турниги, линейность присутствует, а малые токи не мерил им. Зато доступно)

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

Dmitry__

  • Местный
  • ****
  • Репутация:
    +2/-3
  • :
    38
    81
  • Сообщений: 563
  • Санкт-Петербург
  • Ездю на батарейках!
  • Оффлайн Оффлайн
    • Награды
, почему показометр? Сравнивал с ваттметром турниги, линейность присутствует, а малые токи не мерил им. Зато доступно)
У lm358 температурный дрейф больше измеряемого напряжения на шунте.  И он не "rail to rail", а смещать в рамки ОУ резистором - моветон, ведь смещение делается не от прецизионного Vref. Долго рассказывать теорию шунтов, первая нагугленная ссылка по "lm358 токовый шунт"
http://vrtp.ru/index.php?showtopic=17174
А 14 пф и 1 ком это скорее всего паразитная ёмкость ключей мультиплексора.
Нет, это такое УВХ (устройство выбора хранения). И я привел цитату из пдф: Входное сопротивление должно быть меньше 10кОм.

Yaroslav

  • Старожил
  • *****
  • Репутация:
    +6/-0
  • :
    125
    131
  • Сообщений: 1113
  • Украина, Киев
  • Ездяю на батарейках!
  • Оффлайн Оффлайн
    • Награды
Еще лучше с цифровым выходом (нужен внешний шунт):
http://roboparts.ru/products/cjmcu-226-ina226
Очень интересный вариант, только наверное возьму INA219, их можно у нас найти а INA226 только с китая ждать.
В INA219 контакты измерения напряжения и тока совмещенные, наверное им буду только ток измерять, хочу подключить к шунту инфинеона через разъем для CA.
Единственное, я бы добавил конденсатор на нижний резистор. Аналоговые входы у дуины без буферизации и довольно низкоомные для АЦП (большое потребление в момент замера).
Тут не понял. Параллельно нижнему резистору делителя? Какой номинал?

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

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

Строю лигерад

Dmitry__

  • Местный
  • ****
  • Репутация:
    +2/-3
  • :
    38
    81
  • Сообщений: 563
  • Санкт-Петербург
  • Ездю на батарейках!
  • Оффлайн Оффлайн
    • Награды
Очень интересный вариант, только наверное возьму 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__

  • Местный
  • ****
  • Репутация:
    +2/-3
  • :
    38
    81
  • Сообщений: 563
  • Санкт-Петербург
  • Ездю на батарейках!
  • Оффлайн Оффлайн
    • Награды
Ссылки дал на местные интернет магазины, там цены конские. Надо в поиск: "adc arduino ali"
Мои любимые дуинки на 3.3v (8 мГц) arduino pro mini 3.3v, по сто руб за пучок :) Только шить их немного сложнее, нужен usb/com переходник. Но тоже стОит 100р и покупается один раз (лучше 3, теряются иногда :))

Yaroslav

  • Старожил
  • *****
  • Репутация:
    +6/-0
  • :
    125
    131
  • Сообщений: 1113
  • Украина, Киев
  • Ездяю на батарейках!
  • Оффлайн Оффлайн
    • Награды
На сколько я понял в этих АЦП есть встроенный усилитель и сигнал с шунта можно усилить раз в 5 и готово?
Если они бывают 4х канальные, то одним можно измерять и ток (падение напряжения на шунте) и напряжение батарни(через делитель)?

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

Строю лигерад

Dmitry__

  • Местный
  • ****
  • Репутация:
    +2/-3
  • :
    38
    81
  • Сообщений: 563
  • Санкт-Петербург
  • Ездю на батарейках!
  • Оффлайн Оффлайн
    • Награды
На сколько я понял в этих АЦП есть встроенный усилитель и сигнал с шунта можно усилить раз в 5 и готово?
Да, настроил регистры и просто снимаешь данные. Как бы еще загрублять не пришлось, тензодатчики и термопары еще меньше имеют напряжение чем шунты :)
Если смотреть пдф на ацп ADS1115 (последняя ссылка на али), то он при FSR (Full-Scale Range) = ±0.256 V , имеет 16 эффективных бит до 64 DATA RATE (SPS).

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

Yaroslav

  • Старожил
  • *****
  • Репутация:
    +6/-0
  • :
    125
    131
  • Сообщений: 1113
  • Украина, Киев
  • Ездяю на батарейках!
  • Оффлайн Оффлайн
    • Награды
Заказал пару модулей 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

  • Старожил
  • *****
  • Репутация:
    +41/-1
  • :
    105
    496
  • Сообщений: 5768
  • ПодМосква
  • Оффлайн Оффлайн
    • Награды
сделать бортовой компьютер, который будет показывать напряжение, ток, скорость, считать мощность, потраченную энергию и т.д.
А если ещё и его в разрыв ручки газа поставить, то можно сделать токовое управление, управление по оборотам, обратную связь по температуре, нужную кривую отклика ручки...  :mus:
« Последнее редактирование: 19 Окт 2017 в 23:53 от edw123 »

Yaroslav

  • Старожил
  • *****
  • Репутация:
    +6/-0
  • :
    125
    131
  • Сообщений: 1113
  • Украина, Киев
  • Ездяю на батарейках!
  • Оффлайн Оффлайн
    • Награды
, да, были такие мысли) но всему свое время, сначала простые функции а потом посмотрим)

Строю лигерад

edw123

  • Старожил
  • *****
  • Репутация:
    +41/-1
  • :
    105
    496
  • Сообщений: 5768
  • ПодМосква
  • Оффлайн Оффлайн
    • Награды
А 8бит точно не хватит для измерений? Или прямо аптекарской точности хочется? С шунта вроде в районе 0.5в идёт - вполне можно пробовать и без усилителя?

mr.Dream

  • Старожил
  • *****
  • Репутация:
    +105/-2
  • :
    166
    629
  • Сообщений: 2653
  • Ternopil, Ukraine
  • Ездю на лифере :)
  • Оффлайн Оффлайн
    • Награды
, с шунта по стандарту 75мВ. Я делал на лм358 с КУ=100 и не парился, подкрутил резистором, чтобы было на выходе чуть больше нуля, а потом первых пару ступенец оцифровки просто не учитывал. Мне нужен был именно показометр. А верней, ограничение тока. не такой уж температурный дрейф у 358 страшный, если не греть сильно :) в районе двух-трех миливольт смещение.

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

edw123

  • Старожил
  • *****
  • Репутация:
    +41/-1
  • :
    105
    496
  • Сообщений: 5768
  • ПодМосква
  • Оффлайн Оффлайн
    • Награды
, с шунта по стандарту 75мВ.
Это смотря с какого шунта. В велоконтроллере вроде нет никакого усилителя внешнего на сигнал с шунта и даже кажется делитель и там явно больше 75мВ.

Страницы: 1234>>ВсеВверх