Вчера попробовал с REF192.
Спаял как в ДШ.На входе было примерно 4.8-4.9в, на выходе 4.5 как заявлено в ДШ.
Ничего не изменилось.На ЛЦД нулевая точка гуляет от 0.00 до 0.65.
Пошевелишь провода, плату-снова гуляет.
Что не так?
#include <LiquidCrystal.h>
#define MEDIAN 512
#define MEAS_INT 1000 // 1sec
#define ACS_ADC A0
#define K_ACS 0.09 //für 20A version
LiquidCrystal lcd(22, 23, 24, 25, 26, 27, 28);
int backLight = 29;
void setup() {
pinMode(backLight, OUTPUT);
digitalWrite(backLight, HIGH);
lcd.begin(20, 4);
lcd.setCursor(0, 0);
lcd.print("I=");
analogReference(EXTERNAL);
analogRead(ACS_ADC);
Serial.begin(9600);
}
void loop()
{
Serial.println(analogRead(ACS_ADC));
uint32_t sum2=0;
uint16_t n=0;
uint32_t StartTime, StopTime;
int16_t adc;
uint32_t avrg=0xFFFF;
float I;
StartTime=millis()+1;
StopTime=StartTime+MEAS_INT;
while(StartTime>millis());
while(StopTime>millis())
{
adc=(MEDIAN-analogRead(ACS_ADC));
sum2+=(uint32_t)adc*adc;
n++;
}
if (n>0)
{
avrg=sqrt(sum2/n);
}
I=(float)avrg*5/(K_ACS*1024);
lcd.setCursor(2, 0);
lcd.print(I);
lcd.print("A ");
}
Аппаратная платформа Arduino для автоматизации наших процессов
Alex2x
Кандидат наук
DЕ
325 64
Отв.380 17 Апр. 13, 10:50
Sambedded
Кандидат наук
Vancouver
376 87
Отв.381 17 Апр. 13, 11:04, через 15 мин
Вопросы:
-Что ты имеешь в виду под "нулевой точкой" - когда ток через 712 не течет?
- Если да, то подключи на выход 712 хороший вольтметр и посмотри плавает ли напряжение.
- отключи 712-ю от Ардуино, сделай делитель из 2х резисторов по паре килоом и подключи к нему аналоговый вход, посмотри стабильность.
-Что ты имеешь в виду под "нулевой точкой" - когда ток через 712 не течет?
- Если да, то подключи на выход 712 хороший вольтметр и посмотри плавает ли напряжение.
- отключи 712-ю от Ардуино, сделай делитель из 2х резисторов по паре килоом и подключи к нему аналоговый вход, посмотри стабильность.
Alex2x
Кандидат наук
DЕ
325 64
Отв.382 17 Апр. 13, 11:12, через 8 мин
Вопросы:
-Что ты имеешь в виду под "нулевой точкой" - когда ток через 712 не течет?
- Если да, то подключи на выход 712 хороший вольтметр и посмотри плавает ли напряжение.
- отключи 712-ю от Ардуино, сделай делитель из 2х резисторов по паре килоом и подключи к нему аналоговый вход, посмотри стабильность.
Sambedded, 17 Апр. 13, 11:04
Да, когда ток через 712 не течет.
На тот момент напруга на выходе 712 не плавала. Вечером ещё раз попробую.
Также пробовал запитывать 712 от REF194, остаётся по прежнему.На пару соток садится напруга.(4,5в)
Alex2x
Кандидат наук
DЕ
325 64
Отв.383 18 Апр. 13, 11:28
Сейчас снова пробовал.
На входе 712й- 4.930, на выходе- 2.474.
Долго не висел 5-8сек.
Собрал делитель из 2х сопр. 2кОм.
На выходе делителя было 2.439в.
Эти 2.439в подал на аналоговый вход ардуины.
Вообщем напруга была от 2.436 до 2.441, потом вниз пошла до 2.435.
На ЛЦД высвечивалось 2.71А.(2.66, 2.77)
На входе 712й- 4.930, на выходе- 2.474.
Долго не висел 5-8сек.
Собрал делитель из 2х сопр. 2кОм.
На выходе делителя было 2.439в.
Эти 2.439в подал на аналоговый вход ардуины.
Вообщем напруга была от 2.436 до 2.441, потом вниз пошла до 2.435.
На ЛЦД высвечивалось 2.71А.(2.66, 2.77)
ironman
Академик
Синегорье
5.2K 2.7K
Отв.384 18 Апр. 13, 11:33, через 6 мин
На входе 712й- 4.930, на выходе- 2.474.Alex2x, 18 Апр. 13, 11:28Мне казалось, что на вход нужно от опорника 4.5 вольта подавать
и в расчете
I=(float)avrg*5/(K_ACS*1024);
Вместо 5 вольт прописать 4.5
Alex2x
Кандидат наук
DЕ
325 64
Отв.385 18 Апр. 13, 11:37, через 4 мин
Мне казалось, что на вход нужно от опорника 4.5 вольта подавать
и в расчете
I=(float)avrg*5/(K_ACS*1024);
Вместо 5 вольт прописать 4.5
ironman, 18 Апр. 13, 11:33
Делал я и так тоже.
И чувствительность датчика менял(в скетче не 0.1,а 0.09)
Уже начинает вскипать разум возмущённый.
m16
Модератор
Тамбов
1.9K 1K
Отв.386 18 Апр. 13, 12:07, через 31 мин
adc=(MEDIAN-analogRead(ACS_ADC));Alex2x, 17 Апр. 13, 10:50
if MEDIAN > analogRead then adc=(MEDIAN - analogRead(ACS_ADC)); (отрицательная полуволна)
if MEDIAN < analogRead then adc=(analogRead(ACS_ADC)- MEDIAN); (положительная полуволна)
как думаешь, у кого из нас ошибка?
ironman
Академик
Синегорье
5.2K 2.7K
Отв.387 18 Апр. 13, 13:30
m16, смотри вторую строку
adc=(MEDIAN-analogRead(ACS_ADC));
sum2+=(uint32_t)adc*adc;
при перемножении adc*adc всегда будет плюс (минус на минус дает плюс) и без всяких проверок.
adc=(MEDIAN-analogRead(ACS_ADC));
sum2+=(uint32_t)adc*adc;
при перемножении adc*adc всегда будет плюс (минус на минус дает плюс) и без всяких проверок.
Ну а нулевая точка всёравно плавает от 0.05 до 0.65Alex2x, 12 Апр. 13, 11:00Ты её один раз возьми в переменную как среднеквадратичное значение.
m16
Модератор
Тамбов
1.9K 1K
Отв.388 18 Апр. 13, 15:13
согласен, был неправ , вспылил.
Sambedded
Кандидат наук
Vancouver
376 87
Отв.389 19 Апр. 13, 00:07
При использовании резисторного делителя напряжения питания и при установке опорного напряжения от питания же - считываемая величина при таком усреднении как в данном случае плавать не должна. Скорее всего что-то не так с монтажем (наводки. или плохие контакты )
Alex2x
Кандидат наук
DЕ
325 64
Отв.390 19 Апр. 13, 10:00
Вчера снова невозможно было попасть на форум.
О плохих контактах в монтаже уже думал.
Заметил, если на минус станавлюсь щупом прям на внешнем блоке питания-вроде бы стабильно и напруги чуть больше. А если меряю непосредственно на АЦС712 то-немного плывёт.
Попробую на другой плате-отпишусь.
О плохих контактах в монтаже уже думал.
Заметил, если на минус станавлюсь щупом прям на внешнем блоке питания-вроде бы стабильно и напруги чуть больше. А если меряю непосредственно на АЦС712 то-немного плывёт.
Попробую на другой плате-отпишусь.
Alex2x
Кандидат наук
DЕ
325 64
Отв.391 19 Апр. 13, 10:16, через 16 мин
Ну а нулевая точка всёравно плавает от 0.05 до 0.65Ты её один раз возьми в переменную как среднеквадратичное значение.ironman, 18 Апр. 13, 13:30Можно по подробнее?
Alex2x
Кандидат наук
DЕ
325 64
Отв.392 19 Апр. 13, 22:55
Вот как обещал.
Думаю получилось. Можно так оставлять.
Напруга плавала в соединениях. Поставил на шильду, которую буду впоследствии использовать и
всё устаканилось. Единственное, думаю надо экранировать АЦС712. Отводишь подальше от всех проводов и ардуины-0,00, подводишь 0,05
Думаю получилось. Можно так оставлять.
Напруга плавала в соединениях. Поставил на шильду, которую буду впоследствии использовать и
всё устаканилось. Единственное, думаю надо экранировать АЦС712. Отводишь подальше от всех проводов и ардуины-0,00, подводишь 0,05
asvar
Специалист
Крога
163 30
Отв.393 29 Апр. 13, 13:01
Поделюсь написанным кодом для управления клапаном отбора. Управление по принципу как у клапанов Игорь223 (надеюсь автор не будет против, т.к. всё написано с нуля, опираясь на видеоуроки с описанием работы такого клапана)
Фишка в том что паузы открытия/закрытия клапана регулируются без delay(). Главный недостаток такого подхода заключается в том, что во время выполнения delay() программа "замораживается" и не может выполнять других действий.
Вобщем ничего особо заумного, но зато работает.
Говорите, будем дописывать вместе, если что не так.
Фишка в том что паузы открытия/закрытия клапана регулируются без delay(). Главный недостаток такого подхода заключается в том, что во время выполнения delay() программа "замораживается" и не может выполнять других действий.
Вобщем ничего особо заумного, но зато работает.
Говорите, будем дописывать вместе, если что не так.
svarnoy
Профессор
Жуковский.
9K 4.6K
Отв.394 29 Апр. 13, 13:21, через 21 мин
Поделюсь написанным кодомasvar, 29 Апр. 13, 13:01Дребезжит при выключении на меге.
И привязку к температуре от ДС18Б20 надобы
asvar
Специалист
Крога
163 30
Отв.395 29 Апр. 13, 13:31, через 10 мин
У меня мега 2650 - ничего не дребезжит - но еще проверю.
Проверил - пока висел светодиод вместо реле, дребезга не было. Подключил реле - реально дребезг. Буду копать.
К температуре кому надо привяжут.
ЗЫ: Порпавил, прикрутил вывод значения потенциометра на экран. Дребезг исправил.
Проверил - пока висел светодиод вместо реле, дребезга не было. Подключил реле - реально дребезг. Буду копать.
К температуре кому надо привяжут.
ЗЫ: Порпавил, прикрутил вывод значения потенциометра на экран. Дребезг исправил.
svarnoy
Профессор
Жуковский.
9K 4.6K
Отв.396 29 Апр. 13, 17:41
ЗЫ: Порпавилasvar, 29 Апр. 13, 13:31Негрузится скетч.Мега 2560.
asvar
Специалист
Крога
163 30
Отв.397 29 Апр. 13, 19:08
Убрал всё лишнее
выкладываю еще раз
выкладываю еще раз
svarnoy
Профессор
Жуковский.
9K 4.6K
Отв.398 29 Апр. 13, 21:58
asvar Спасибо.
Работает,недребезжит.
Так если эту програмулину привязать к температуре,то получится часть полновесной автоматики.
Работает,недребезжит.
К температуре кому надо привяжут.asvar, 29 Апр. 13, 13:31Мне например надо,но с моими способностями к програмированию,такая возможность стремится к нулю.
Так если эту програмулину привязать к температуре,то получится часть полновесной автоматики.
sharky98
Новичок
Нижний Новгород
5 3
Отв.399 12 Июня 13, 17:44
Доброго времени суток! Благодаря этой статье и предоставленным программам, собрал автоматику на управление дистилляцией и ректификацией. В основе конструкции модуль arduino, индукционная плита. Дистиллятор и ректификационная колонна были приобретены. Процесс контролируется по трем датчикам температуры: температура в баке, температура в месте отбора и температура воды на выходе их аппарата. Управление процессом организованно на замыкании контактов кнопок плитки, а работа плиты определяется по снятию напряжения со светодиода на плите. В случае сбоя, программа восстанавливает нормальный режим работы. Использовал индукционную плиту для нагрева как самый дешевый и быстрый способ автоматизировать процесс. Испарительный куб изготовлен из листовой нержавейки, но несмотря на это, нагрев происходит нормально и без подгорания. Если есть заинтересовавшиеся, фотографии, схемы и программу выложу.