Амперметр/волтметр на ардуино

HellRaider

✩✩✩✩✩✩✩
12 Ноя 2018
19
1
Всем ку

Можно сделать из ардуино амперметр с вольтметром?
подойдет такая схема?
Shema.jpg
Напряжение работает, но надо измерят падение напряжение имена так?
Может для амперметра нужна другая схема?
 

dimonSha

✩✩✩✩✩✩✩
25 Окт 2019
64
9
Украина, Харьков.
Всем ку

Можно сделать из ардуино амперметр с вольтметром?
подойдет такая схема?
Напряжение работает, но надо измерят падение напряжение имена так?
Может для амперметра нужна другая схема?
Нужен токовый шунт и операцонный усилитель для замера падения напряжения в мв на шунте, и считать ток.
 
  • Лойс +1
Реакции: HellRaider

@liev.ru

✩✩✩✩✩✩✩
23 Ноя 2019
8
1
Вот такую схему с защитой наваял для ЛБП, управляется с AVR и STM (или по Вашему Усмотрению), измеряемый ток зависит от шунта (я использовал 4 smd 2512 на 1 ом, до 3А норм при срабатывания защиты). Защита выхода полностью программная, поэтому можно ток отсечки можно выставлять по своему усмотрению. VA.jpg
УО копеешный LM358 (так их на микрухе два УО, сделал двухканальный измеритель VA), mosfet любой подходящий по параметрам.
Выводы J1: 2 - управление выходом (>2V открыт, иначе закрыт), 3 - напряжение с делителя (на вход ADC), 4 - измеряемый ток (тож на вход ADC), 5 - питание ОУ +5V.
Данные напряжения и тока в контроллере корректирую коэфициетами сравнивая с эталонным замером мультиметром. Шумы УО (а они есть) тож программно сглаживаем.
 
  • Лойс +1
Реакции: HellRaider

@liev.ru

✩✩✩✩✩✩✩
23 Ноя 2019
8
1
Мощность я правильно посчитал?
Если исполосовать 4 резистора по 1 ом то выходит, исполсуя 3 ампера, надо на них развеять 2,25 ватта? Это ОК?
Для типоразмера резисторов smd 2512, мощность 1-2W.
Ну и БП в данном случае не особо мощный.
 

Arhat109

★★★★✩✩✩
9 Июн 2019
473
203
@@liev.ru, а то, что полевик отключает схему по Земле, а не по питанию .. это нормально?
 

@liev.ru

✩✩✩✩✩✩✩
23 Ноя 2019
8
1
В тех несложных схемах где я использовал данный блок, было не критично! По факту на выходе почти ноль!
 

Arhat109

★★★★✩✩✩
9 Июн 2019
473
203
Критично или нет, оно больше зависит от разводки питания, наличия в схеме нескольких источников (в т.ч. приборов, подключенных к Сети 220в) и возможности получить 1/2 от сетевого (128вольт) при разрыве земли на одном из участков. Сейчас, на вскидку, не припомню, но в юности помнится здорово шарашило по рукам, если в лабе не заземлишь все, используемые в схеме приборы .. да и не только по рукам.

Последнее время, все чаще вижу как пытаются рвать землю, что и поражает на схемах .. ну и на таких форумах народ часто жалуется почто и чем пробивается плата, подключенная к БП от сети И (одновременно) по USB к стационарному компу? Вот, примерно как тут.

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

@liev.ru

✩✩✩✩✩✩✩
23 Ноя 2019
8
1
Критично или нет, оно больше зависит от разводки питания, наличия в схеме нескольких источников (в т.ч. приборов, подключенных к Сети 220в) и возможности получить 1/2 от сетевого (128вольт) при разрыве земли на одном из участков. Сейчас, на вскидку, не припомню, но в юности помнится здорово шарашило по рукам, если в лабе не заземлишь все, используемые в схеме приборы .. да и не только по рукам.

Последнее время, все чаще вижу как пытаются рвать землю, что и поражает на схемах .. ну и на таких форумах народ часто жалуется почто и чем пробивается плата, подключенная к БП от сети И (одновременно) по USB к стационарному компу? Вот, примерно как тут.

Кстати, разрывая питание по земле .. разве Вы не получаете шанс запитать Ардуино по какому-нибудь пину через защитные его диоды?
Про стационарный комп и USB тут никто не говорил :) - оптрон в помощ. Схема простая, компактная и рабочая, по-факту мосфет нужен для отсечки питания, можете поставить реле с 5-ти вольтовым управлением, можно вообще ни чего не ставит, а управлять импульсным стабилизатором на входе (lm2575, lm2597 и т.п.).
 

Arhat109

★★★★✩✩✩
9 Июн 2019
473
203
Я бы предпочел, все же мосфет в цепи напруги чем в земле. Ясен пень что при одиночном применении оно пофиг, но вот когда собирается вместе осцилоскоп, такой БП, генератор, USB связь с компом .. и далеко не факт что нигде (особенно совр.!) не применен импульсник без развязки трансформатором или оптроном..
ИМХО, все же безопасней отключать цепь напруги чем рвать Землю.
Никто не застрахован от "случайностей" и "забывчивости". А это уже ТБ.. ;)
 
  • Лойс +1
Реакции: Wan-Derer

HellRaider

✩✩✩✩✩✩✩
12 Ноя 2018
19
1
Спасибо вам всем!
Теперь я слышал об операционном усилителе. Я постараюсь использовать это в будущем. Я немного протестировал LM358.

Кто-нибудь может помочь с этой схемой?
Все работает, но чтобы заставить работать Arduino. Вы должны нажать кнопку 1 раз, затем выключить и снова включить. Затем изображение появляется на экране, и все работает.

Чего-то не хватает в этой схеме :) Может быть конденсатор или что-то еще.
Skeem õige.jpg
 

Вложения

Изменено:

@liev.ru

✩✩✩✩✩✩✩
23 Ноя 2019
8
1
@HellRaider, непонятно подключение с делителя на ref (данный пин нужен для опорного напряжения втроеного ADC), используйте пины А0-А7, если хотите замерить напряжение.
Питание ssd1306 опасное (3.3 - 5 вольт), возьмите 3.3 с платы - нормально работать будет!
Это для начала...
 

HellRaider

✩✩✩✩✩✩✩
12 Ноя 2018
19
1
Схема была неправильной. Я нарисовал это по памяти. извините
Делитель подключен к разъему A0.
Дисплей и датчики температуры питаются от контакта 5 В
DC-DC понижающий модуль
Skeem õige.jpg

Как я уже писал, все работает, но, к сожалению, вы должны нажать кнопку 3 раза, когда устройство не используется в течение некоторого времени.
Вы должны нажать кнопку (подождите 1 секунду), затем выключить кнопку и затем снова нажать кнопку.
Если сейчас вы выключите и снова включите, arduino начнет работать сразу.
 
Изменено:

@liev.ru

✩✩✩✩✩✩✩
23 Ноя 2019
8
1
Если я правильно понял - это автономное устройство, которое снимает температуру и по шампанским нажатиям кнопки выводит её на экран?!
Есть ещё вопрос к питанию - если 16.8 питалово, то о каких элементах питания идёт речь?!
Всю логику МК вы пытаетесь построить на дергании питания - тааак не пойдёт. Хотите тумблер вкл/выкл - ставьте, нужна кнопка управления - ставьте.
Я так понимаю скетч вы сами пытаетесь написать, если есть интерес делать проекты в дальнейшем дам рекомендацию (которую реализуйте сразу) - изучите тему классов и событий, распихивайте скеч по разным файлам. Потратив несколько часов на изучение - в дальнейшем массу времени и невров сэкономите.
 

HellRaider

✩✩✩✩✩✩✩
12 Ноя 2018
19
1
Еще раз спасибо.
Одна батарея меньше на картинке. На самом деле таких батарей 4.
Это аккумулятор аккумуляторной отвертки.
Кнопка используется для включения питания и отключения питания микроконтроллера.
Кнопка c фиксатором.
На рисунке нет BMS. Я не нарисовал его на батарейках.

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

Рисунок исправил.
Skeem õige.jpg
 

Вложения

@liev.ru

✩✩✩✩✩✩✩
23 Ноя 2019
8
1
@HellRaider,
На данной схеме дребезг включения должен компенсировать dc-360, можно конечно после него кандер поставить (например тантал на 6V), хотя и без него тожжж можно обойтись?!
ssd1306 подключите на питание 3.3 с ардуины.
Далее только скетч смотреть, попробуйте задержку поставить после инициализации всех устройств (последней командой в setup() поставьте delay на 200-500 мс).
Как у вас отображение данных на дисплее меняется - через заданный интервал?
 
Изменено:

HellRaider

✩✩✩✩✩✩✩
12 Ноя 2018
19
1
через заданный интервал delay(2000);

Так как я использовал много горячего клея, мне нужно время, чтобы вытащить Arduino :)
Я положу время ожидания между инициализацией LCD и датчиками температуры. Это может помочь.

void setup() {
u8g2.begin();
delay(500);
sensors.begin();
sensors2.begin();
}
 

@liev.ru

✩✩✩✩✩✩✩
23 Ноя 2019
8
1
Попробуй заменить библиотеку u8g на Adafruit для ssd1306, я ее использую, там только splash(заставка adafruit при включении) надо ручками "убить" в библиотеке.
Delay - последним! 2 сек. многовато :(
 

HellRaider

✩✩✩✩✩✩✩
12 Ноя 2018
19
1
.... Как у вас отображение данных на дисплее меняется - через заданный интервал?
Экран меняется каждые две секунды.
Напряжение в течение 2 секунд, температура аккумулятора в течение 2 секунд и BMS в течение 2 секунд. А потом все с самого начала.
 

EandV

★★★✩✩✩✩
4 Авг 2018
288
163
Всем привет!

Если кому интересно, я вот такие варианты собирал:
Вольтметр на делителе напряжения из двух резисторов. Погрешность в районе 0,01-0,03 В


Амперметр на готовом модуле с датчиком холла. Погрешность при от 0,5 до 10 А - 0,03-0,07 А. Небольшие токи меньше 0,1А мерит плохо.
 

EandV

★★★✩✩✩✩
4 Авг 2018
288
163
@dimonSha, Пробовал... В первом видосе результат есть: гуляет при изменении напряжения питания. А амперметры ACS 712 вообще опорного требуют в 5В (либо напряжение питания, либо внешнее на 5В), внутреннее на 1,1 В не годится.
 

HellRaider

✩✩✩✩✩✩✩
12 Ноя 2018
19
1
Большое спасибо за ответы!
Особенно @liev.ru
Хочу сделать регулируемый блок питания, как AlexGyver сделал , но ток и напряжение рассчитывались бы в ардуино.
Я хочу сделать блок с модулями, как это делал AlexGyver в видео.
Я пробовал такую схему. все тесты проводились на дашборде.По крайней мере, казалось, что это сработало.
ampermeeter_ads1115_differential1.jpg
Joonis.jpg
Я сделал что-нибудь не так? Мне очень нужна ваша помощь. Я просто хочу заменить амер вольтметр в роликах на ардуино.
Код для расчета будет примерно таким
arduino:
#include <Wire.h>
#include <Adafruit_ADS1015.h>

Adafruit_ADS1115 ads;  /* Use this for the 16-bit version */
//Adafruit_ADS1015 ads;     /* Use thi for the 12-bit version */

void setup(void)
{
  Serial.begin(9600);
  Serial.println("Hello!");

  Serial.println("Getting differential reading from AIN0 (P) and AIN1 (N)");
  Serial.println("ADC Range: +/- 6.144V (1 bit = 3mV/ADS1015, 0.1875mV/ADS1115)");

  // The ADC input range (or gain) can be changed via the following
  // functions, but be careful never to exceed VDD +0.3V max, or to
  // exceed the upper and lower limits if you adjust the input range!
  // Setting these values incorrectly may destroy your ADC!
  //                                                                ADS1015  ADS1115
  //                                                                -------  -------
  //  ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)
  ads.setGain(GAIN_ONE);        // 1x gain   +/- 4.096V  1 bit = 2mV      0.125mV
  // ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
  // ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V  1 bit = 0.5mV    0.03125mV
  // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
  // ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.125mV  0.0078125mV

  ads.begin();
}

void loop(void)
{
  int16_t results;

  /* Be sure to update this value based on the IC and the gain settings! */
  //  float   multiplier = 3.0F;    /* ADS1015 @ +/- 6.144V gain (12-bit results) */
  float multiplier = 0.125F; /* ADS1115  @ +/- 6.144V gain (16-bit results) */
  float results1;

  results = ads.readADC_Differential_2_3();
  results1 = results * multiplier / 1000 / 0.11 ;

  Serial.print("Differential: "); Serial.print(results); Serial.print("("); Serial.print(results * multiplier); Serial.println("mV)");
  Serial.print("("); Serial.print(results1, 3); Serial.println("A)");

  delay(1000);
}
 
Изменено: