Ви не увійшли.
Сторінки 1
Добрий день!
Допоможіть розібратися з модулем INA219. Одразу попереджую, що я початківець, і багато чого можу, на жаль, не розуміти.
Виникла необхідність вимірювати напругу на акумуляторній батареї, передавати значення на сервер та будувати там графік.
Для цього я використав Arduino Nano, Ethernet шилд ASC229 та вимірювач струму/напруги INA219. Вимірювання струму мене не цікавить, потрібна лише напруга. Я зібрав все на макетній платі, досить довго провозився зі скетчем, та в мене все вийшло. Напруга вимірювалась, Ethernet працював як потрібно. Але через деякий час модуль INA219 вийшов з ладу. Напруга перестала вимірюватись. Я подумав, що можливо причина була десь в монтажі на макетці, та вважаючи на те, що на підході були плати з JLCPCB, я заказав нову INA219 та зібрав схему вже на платі.
С початку все працювало добре, але у результаті INA219 теж накрилася. Я маю достатньо знань для того щоб знайти що ц там згоріло, але шунт на вході був закорочений. Я випаяв його (мені не потрібно міряти струм), але Arduino модуль не бачить. Вимірювана напруга не перевищувала 14V.
Звідсіль питання. Може, а мабуть і напевно, я чогось не знаю? Чи не розумію?
Додаю схему яку я розробив у EasyEda. Відповідно до неї були виготовлені і плати.
Ось, якщо цікаво, як виглядає сам девайс.
Заздалегідь дуже вдячний за допомогу.
Неактивний
Я правильно розумію, що ви "Вимірювану напругу що не перевищує 14V" подали на VIN Nano?
Vin=?
Пін 1 INA219 це живлення модуля (має бути 3-5В). Цю ж напругу ви подаєте на VIN Nano, значить вона явно вища 5В. От вам і спалений модуль.
А взагалі, у вашому випадку, рекомендую розглянути можливість відмовитися від INA219. Використайте подільник напруги. Ось вам навіть зразок коду для Vin 0-15В (при бажанні можна температурну компенсацію додати):
#include <avr/sleep.h> /* for ADC sleep mode */
#define REF_VCC 4.931
/* measured division by voltage divider */
#define VOLTAGE_DIV_FACTOR 3.013
float voltage;
void initADC(void) {
ADMUX |= (0b00001111 & PC3); /* set MUX to ADC3 */
ADMUX |= (1 << REFS0); /* Voltage reference selected - AVcc */
ADCSRA |= (1 << ADPS0) | (1 << ADPS1) | (1 << ADPS2); /* Set prescaler - 128 (125 kHz, between 50 and 200kHz according to datasheet) */
ADCSRA |= (1 << ADEN); /* Enable ADC */
}
void setupADCSleepmode(void) {
set_sleep_mode(SLEEP_MODE_ADC); /* defined in avr/sleep.h - halt CPU and I/O clocks and start an ADC conversion */
ADCSRA |= (1 << ADIE); /* enable ADC interrupt */
sei(); /* enable global interrupts */
}
uint16_t oversample16x(void) {
uint16_t oversampledValue = 0;
uint8_t i;
for (i = 0; i < 16; i++) {
sleep_mode(); /* chip to sleep, takes ADC sample */
oversampledValue += ADC; /* add them up 16x */
}
return (oversampledValue >> 2); /* divide back down by four */
}
void setup() {
Serial.begin(9600);
Serial.println("*****Digital Voltmeter*****");
initADC();
setupADCSleepmode();
}
void loop() {
voltage = oversample16x() * VOLTAGE_DIV_FACTOR * REF_VCC / 4096;
Serial.println(voltage);
_delay_ms(500);
}
EMPTY_INTERRUPT(ADC_vect);
Пін 1 INA219 це живлення модуля (має бути 3-5В). Цю ж напругу ви подаєте на VIN Nano, значить вона явно вища 5В. От вам і спалений модуль.
А чому вища? Зараз поміряв блок живлення який живить цей девайс, то 5.1V. Чи цього достатньо? Наразі я не пригадую чому заживив модуль від VIN. Мабуть це якось пов'язане з тим, що планував вимірювати напругу яка б і живила мій девайс. Скажіть, а якщо я використаю вивід 3.3V від Nano? Це вирішить проблему?
Неактивний
А взагалі, у вашому випадку, рекомендую розглянути можливість відмовитися від INA219. Використайте подільник напруги. Ось вам навіть зразок коду для Vin 0-15В (при бажанні можна температурну компенсацію додати):
Дякую. Я подивлюся.
Неактивний
По факту 5.1V
Уверены что INA вышла из строя? Для встроенного стабилизатора ардуины это на грани фола. При таком напряжении на этом входе сама ардуина может глючить. Соедините Vсс INA с пином +5 ардуины. И туда же подключите свой блок питания (или запитайте от usb). Второй вариант оставить подключение БП на Vin, но увеличить напругу от 6-7 до 12 В.
arizona пише:По факту 5.1V
Уверены что INA вышла из строя? Для встроенного стабилизатора ардуины это на грани фола. При таком напряжении на этом входе сама ардуина может глючить. Соедините Vсс INA с пином +5 ардуины. И туда же подключите свой блок питания (или запитайте от usb). Второй вариант оставить подключение БП на Vin, но увеличить напругу от 6-7 до 12 В.
Я вас зрозумів. Найближчим часом спробую.
Неактивний
г0cть пише:arizona пише:По факту 5.1V
Уверены что INA вышла из строя? Для встроенного стабилизатора ардуины это на грани фола. При таком напряжении на этом входе сама ардуина может глючить. Соедините Vсс INA с пином +5 ардуины. И туда же подключите свой блок питания (или запитайте от usb). Второй вариант оставить подключение БП на Vin, но увеличить напругу от 6-7 до 12 В.
Я вас зрозумів. Найближчим часом спробую.
Мабуть таки INA - дохла. Я зробив так як ви сказали. Перерізав доріжку на 1-й pin та кинув перемичку на +5V ардуіни. Заживив все від БП 12V . На VIN INA219 зараз у мене 5.01V. Але девайс не стартує. Точніше арудіна запускається, та після ініціалізації INA219 залипає. Відповідно вочдог перезавантажує ардуінку кожні 8 секунд. Я закомментував все що відноситься до INA219 у скетчі і все запрацювало. Зрозуміло що за виключенням вимірювання напруги. Мабуть замовлю ще INA та спробую.
Неактивний
Вы писали, что измерять нужно только напряжение, зачем вам ИНка ???
Чем не устраивает просто делитель ??
Тому що це мені здалося меньш складним. Використати готовий модуль, замість того що я не розумію.
Я обов'язково почитаю про ділитель.
Неактивний
Сторінки 1