Поэтому если мы Vref застабилизируем, а Vcc будет плавать,Sambedded, 02 Апр. 13, 07:49
это с какого будуна Vcc будет плавать? если только запитать по-китайски с ограничивающим стабилитроном и от китайской зарядки, немудрено.
Чтобы этого избежать ACS712 надо от опорника тоже запитать.Sambedded, 02 Апр. 13, 07:49
это что то новое в схемотехнике.
Sambedded, ты парень вроде грамотный , но акценты расставляешь неправильно имхо.
Sambedded
Кандидат наук
Vancouver
376 87
Отв.341 02 Апр. 13, 20:31, через 31 мин
Ну если Vcc у нас стабильно, то зачем нам еще дополнительный источник опорного напряжения. Достаточно LC фильтра.
А Vcc , даже при наличии "нормального" стабилизатора, заметно плывет, например,от изменения температуры.
Sambedded
Кандидат наук
Vancouver
376 87
Отв.342 02 Апр. 13, 20:40, через 9 мин
это с какого будуна Vcc будет плавать? если только запитать по-китайски с ограничивающим стабилитроном m16, 02 Апр. 13, 20:01
В данной схеме предполагается питание от внешнего стабилизированного источника 5v , а стабилитрон в цепи питания стоит для защиты.
m16Модератор
Тамбов
1.9K 1K
Отв.343 02 Апр. 13, 21:37, через 57 мин
Ну если Vcc у нас стабильно, то зачем нам еще дополнительный источник опорного напряжения.Sambedded, 02 Апр. 13, 20:31
no comment.
Sambedded
Кандидат наук
Vancouver
376 87
Отв.344 02 Апр. 13, 22:21, через 45 мин
Все же ответь - если ты утверждаешь что напряжение питания так стабильно, то зачем по твоему нужен источник опорно напряжения?
ironman
Академик
Синегорье
5.2K 2.7K
Отв.345 03 Апр. 13, 05:35
Вчера вечером подключил ACS712 на 20А без нагрузки, питание полностью Vcc и Vfer от USB. Просто тупо взял первый пример по чтению из аналогово порта, так там оказалось, что и порт А0 совпал )))
// the setup routine runs once when you press reset: voidsetup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); }
// the loop routine runs over and over again forever: voidloop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // print out the value you read: Serial.println(sensorValue); delay(1); // delay in between reads for stability }
Никакого ожидаемого 512+-2 при чтении на холостом ходу я не получил, тестировал всего несколько минут, но результат стабильный 404, 405, 406, т.е. 405+-1 В итоге результат порадовал, но почему получилось при чтении 405, а не ожидаемые 512, ведь Vcc=Vfer Напряжение питания стрелочным тестером замерил 4.6v
Sambedded
Кандидат наук
Vancouver
376 87
Отв.346 03 Апр. 13, 06:50
Странно. При напряжении питания и, соответственно, Vref =4.6В Значение 405 на АЦП должно соответствовать примерно 1.8В
А какое напряжение у тебя на выходе ACS712? При 0-м токе должно быть 2.3В Если у тебя там 1.8 попробуй замкнуть входы у 712й.
ironman
Академик
Синегорье
5.2K 2.7K
Отв.347 03 Апр. 13, 07:57
А какое напряжение у тебя на выходе ACS712? При 0-м токе должно быть 2.3В Если у тебя там 1.8 попробуй замкнуть входы у 712й.Sambedded, 03 Апр. 13, 06:50
Вот и я думаю, что странно... Напряжение на выходе только поздно вечером или завтра. Вот только замыкание входов не думаю, что как-то повлияет на датчик холла. Магнитов тоже вроде рядом нигде нет, хотя нужно будет в другой комнате попробовать.
m16Модератор
Тамбов
1.9K 1K
Отв.348 03 Апр. 13, 10:37
питание полностью Vcc и Vfer от USB.
Sambedded
Кандидат наук
Vancouver
376 87
Отв.349 03 Апр. 13, 11:20, через 44 минАвтор был пьяный
m16Обратись к первоисточникам и ты все сам (может быть) поймешь:
ADC Voltage Reference The reference voltage for the ADC (VREF) indicates the conversion range for the ADC. Single ended channels that exceed VREF will result in codes close to 0x3FF. VREF can be selected as either AVCC, internal 2.56V reference, or external AREF pin.
Table 74. Voltage Reference Selections for ADC REFS1 REFS0 Voltage Reference Selection 0 0 AREF, Internal Vref turned off 0 1 AVCC with external capacitor at AREF pin 1 0 Reserved 1 1 Internal 2.56V Voltage Reference with external capacitor at AREF pin
m16Модератор
Тамбов
1.9K 1K
Отв.350 03 Апр. 13, 12:14, через 54 мин
это пиздец.
а)после аппаратного сброса (0 0 AREF, Internal Vref turned off) Voltage Reference Selections ADC подключен к выводу контроллера AREF
б) открываем схему
что я вижу - AREF болтается в воздухе
в) возможно Voltage Reference автоматом куда то поключается при вызове функции , в таком случае ткнуть вольтметром на AREF и убедиться что там
Sambedded
Кандидат наук
Vancouver
376 87
Отв.351 03 Апр. 13, 13:10, через 57 мин
это пиздец. m16, 03 Апр. 13, 12:14
Что-ты неадекватный какой-то, ты эта, таблеточки какие попей, можа полегчае...
что я вижу - AREF болтается в воздухе
Он не болтается а, шунтирован конденсатором, как и положено по даташиту. При инициализации ардуиновских библиотек по дефолту в ADMUX прописывается REFS1-0, REFS0-1 те "AVCC with external capacitor at AREF pin"
ironman
Академик
Синегорье
5.2K 2.7K
Отв.352 03 Апр. 13, 13:12, через 2 мин
m16,
В стандартной конфигурации платформ Arduino вывод AREF (вывод 21 Atmega) не задействован. В этом случае при настройке DEFAULT к выводу подключается внутреннее напряжение AVCC.
Внешнее напряжение рекомендуется подключать к выводу AREF через резистор 5 кОм.
Таким образом уменьшается риск повреждения микросхемы Atmega если настройки analogReference не совпадают с возможностями платформы. Однако при этом произойдет небольшая просадка напряжения, вследствие того, что имеется встроенный резистор 32 кОм, подключенный к выводу AREF. В этом случае оба резистора работают как делитель напряжения. Подсоединение внешнего резистора позволяет быстро переключаться на напряжение 3.3 В вывода AREF с напряжения 5 В DEFAULT без конфигурации аппаратной части и АЦП.
Потом проверю подключен AREF к 21 ноге контроллера или нет и попробую в скетч добавить analogReference(DEFAULT) чтобы явно указать опорное от Vcc.
Sambedded
Кандидат наук
Vancouver
376 87
Отв.353 03 Апр. 13, 13:18, через 7 мин
m16, попробую в скетч добавить analogReference(DEFAULT) чтобы явно указать опорное от Vcc. ironman, 03 Апр. 13, 13:12
Для порядка лучще добавить, но я проверял - по умолчанию выставляется analogReference(DEFAULT). Начни лучше с измерния напряжения на выходе 612-й. Тогда сразу станет понятно где надо дальше ковырять - в ардуине или в ACS712.
Alex2x
Кандидат наук
DЕ
325 64
Отв.354 03 Апр. 13, 16:43
Потом проверю подключен AREF к 21 ноге контроллера или нетSambedded, 03 Апр. 13, 13:18
Сейчас посмотрел на ардуино уно-подключён(звонится)
pelecis
Специалист
Latvia-Germany
120 37
Отв.355 03 Апр. 13, 18:38
Arduino Uno может получать питание через подключение USB или от внешнего источника питания. Источник питания выбирается автоматически.
Внешнее питание (не USB) может подаваться через преобразователь напряжения AC/DC (блок питания) или аккумуляторной батареей. Преобразователь напряжения подключается посредством разъема 2.1 мм с центральным положительным полюсом. Провода от батареи подключаются к выводам Gnd и Vin разъема питания.
Платформа может работать при внешнем питании от 6 В до 20 В. При напряжении питания ниже 7 В, вывод 5V может выдавать менее 5 В, при этом платформа может работать нестабильно. При использовании напряжения выше 12 В регулятор напряжения может перегреться и повредить плату. Рекомендуемый диапазон от 7 В до 12 В.
ironman
Академик
Синегорье
5.2K 2.7K
Отв.356 04 Апр. 13, 15:46
Для порядка лучще добавить, но я проверял - по умолчанию выставляется analogReference(DEFAULT). Начни лучше с измерния напряжения на выходе 612-й. Тогда сразу станет понятно где надо дальше ковырять - в ардуине или в ACS712.Sambedded, 03 Апр. 13, 13:18
1. Проверил с analogReference(DEFAULT) - результат без изменений. 2. 21 нога нормально подключена к AREF. 3. Подключил этот раз ардуину к нетбуку и проверил в другой комнате. Напряжение питания - 4.7v, напряжение на выходе ACS712 - 1.9v, АЦП ардуины выдает 404+-1 (403,404,405), если замкнуть входы ACS712, то АЦП выдает 402+-1
Sambedded
Кандидат наук
Vancouver
376 87
Отв.357 04 Апр. 13, 20:09
Напряжение питания - 4.7v, напряжение на выходе ACS712 - 1.9v, АЦП ардуины выдает 404+-1 (403,404,405), если замкнуть входы ACS712, то АЦП выдает 402+-1 ironman, 04 Апр. 13, 15:46
Ардуина измеряет все правильно 4.7/1024*404 = 1.93В. Что-то не так с ACS712. При питании 4.7В у нее должно быть 2.35 на выходе. Попробуй померять напряжение прямо на ножках 712-й (питание и выход). Может где-то по дороге из-за плохого контакта напряжение падает?
Sambedded
Кандидат наук
Vancouver
376 87
Отв.358 04 Апр. 13, 20:24, через 15 мин
Да уж, светлая у тебя голова m16. Обьяснил всё красиво и понятно. Только пока вопрос остаётся не решённым. Может быть, пример какой выставил бы для "ардуино" Alex2x, 31 Марта 13, 20:46
Попрубуй вот так:
#include <LiquidCrystal.h>
#define MEDIAN 512 #define MEAS_INT 1000 // 1sec #define ACS_ADC A0 #define K_ACS 0.1 //это для 20А
Без детектирования 0 и без прерываний получается не совсем кошерно, но должно работать.
ironman
Академик
Синегорье
5.2K 2.7K
Отв.359 04 Апр. 13, 21:30
Попробуй померять напряжение прямо на ножках 712-й (питание и выход). Может где-то по дороге из-за плохого контакта напряжение падает?Sambedded, 04 Апр. 13, 20:09
Замерил непосредственно на ножках 712-й, тоже-самое, напряжение питания - 4.7v, напряжение на выходе - 1.9v Похоже чип битый ((( Придется заказывать новых парочку и ждать больше месяца (((