1 2 3 4 5 6 7 8 9 10 0/10 0,00оценок: 0

Регистратор ватт/вольт с блоком реле и ПО

Тема в разделе "Возобновляемые источники электроэнергии", создана пользователем Sa., 29.02.12.

  1. aostspb
    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083

    aostspb

    Живу здесь

    aostspb

    Живу здесь

    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083
    Адрес:
    Санкт-Петербург
    При чем тут ибей? :)
    Ардуино - это такая минимальная обвязка вокруг контроллера ATmega, которая позволяет использовать его возможности без особых знаний в технике пайки микроэлектроники, или разводке печатных плат. Вобщем, почти готовый мозг для того самого регистратора, который мы здесь начали обсуждать. В отличие от заказной разработки, при наличии описания и программы, конструкция может быть достаточно дешево воспроизведена силами местных умельцев в любой точке земли.
    Что умеет:
    - автономно работать по программе, заливаемой в него через USB шнурок с компьютера.
    - обрабатывать входные сигналы с помощью встроенного АЦП
    - выдавать наружу управляющие сигналы в виде аналога или "цифры" в зависимости от...
    - под ардуино выпускаются готовые датчики для измерения тока, температуры, давления, влажности и т. п.
    - при наличии Ethernet модуля - может передавать/принимать данные по сети tcp/ip.

    Соотношение входов/выходов варьируется в зависимости от назначения и использования дополнительных модулей. На мой взгляд, самое то для организации той части регистратора, которая будет заниматься опросом датчиков, проверкой значений, и отдачей всего этого по сети тому, кто пришел снаружи.

    Собирающая и показывающая часть у меня будет реализована на базе munin, с которым я работаю уже много лет на других проектах.
     
  2. selestasvz
    Регистрация:
    05.11.11
    Сообщения:
    210
    Благодарности:
    46

    selestasvz

    ЭкоФанат

    selestasvz

    ЭкоФанат

    Регистрация:
    05.11.11
    Сообщения:
    210
    Благодарности:
    46
    Адрес:
    Новокузнецк
    Главное, чтобы все данные хранились внутри, а не привязывались к внешнему ПК.
    ПК со своим программным обеспечением для анализа должен подключаться по необходимости, таким образом не сжирать 24часа в сутки эл. энергию которую мы с таким трудом добываем в автономке !
     
  3. Sa.
    Регистрация:
    11.04.11
    Сообщения:
    951
    Благодарности:
    1.137

    Sa.

    писатель

    Sa.

    писатель

    Регистрация:
    11.04.11
    Сообщения:
    951
    Благодарности:
    1.137
    Адрес:
    Обнинск
    Спасибо!

    Я читаю, и учитываю пожелания.

    Что-то спорно, но все идеи полезны.
     
  4. aostspb
    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083

    aostspb

    Живу здесь

    aostspb

    Живу здесь

    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083
    Адрес:
    Санкт-Петербург
    На сколько месяцев будем рассчитывать время автономной работы? Исходя из этого разработчик сможет прикинуть необходимый объем носителя и формат хранения данных. В этом случае Вам и сетевой модуль не нужен: пусть контроллер пишет "сырые" данные на флэшку с помощью SD Library...
     
  5. Sa.
    Регистрация:
    11.04.11
    Сообщения:
    951
    Благодарности:
    1.137

    Sa.

    писатель

    Sa.

    писатель

    Регистрация:
    11.04.11
    Сообщения:
    951
    Благодарности:
    1.137
    Адрес:
    Обнинск
    Я видел бы разделение функций.

    Регистратор - измеряет.

    Компьютер обрабатывает и сохраняет в базе. Вариант компьютера EeeBox PC EB102

    Потребление 40 вт.

    Как показывает практика, лучше делать простые приборы, а потом мутить схемки из нескольких простых элементов, чем делать сложный и дорогой комбайн.
     
  6. aostspb
    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083

    aostspb

    Живу здесь

    aostspb

    Живу здесь

    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083
    Адрес:
    Санкт-Петербург
    Тут у selestasvz мысль здравая есть: в отсутствии Ethernet-сети (или Ethernet-модуля вообще), ничто не мешает локально включенному регистратору писать данные на флэшку. Периодически флэшка вынимается, вместо нее вставляется новая, собранные данные используются для последующей обработки на компьютере.

    Вероятно, надо предусмотреть два варианта: сетевой и изолированный.
     
  7. Weis
    Регистрация:
    14.06.10
    Сообщения:
    6.192
    Благодарности:
    5.157

    Weis

    Живу здесь

    Weis

    Живу здесь

    Регистрация:
    14.06.10
    Сообщения:
    6.192
    Благодарности:
    5.157
    Адрес:
    Санкт-Петербург
    Тем более что одно другому не помеха.
    Для записи подробных логов лучше флешки ничего не придумать.
     
  8. selestasvz
    Регистрация:
    05.11.11
    Сообщения:
    210
    Благодарности:
    46

    selestasvz

    ЭкоФанат

    selestasvz

    ЭкоФанат

    Регистрация:
    05.11.11
    Сообщения:
    210
    Благодарности:
    46
    Адрес:
    Новокузнецк
    В общем все пришли к мысли, что как ни крути, а автономная запись в энергонезависимую память - обязательная в этом проекте ! :super:

    Я и так не люблю много электроники в одном месте, а постоянно включенный ПК с третьим миллионом деталей - вообще перебор (первый миллион у контроллера, второй еще у чего-нибудь)
     
  9. aostspb
    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083

    aostspb

    Живу здесь

    aostspb

    Живу здесь

    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083
    Адрес:
    Санкт-Петербург
    Главное, чтобы все колом не вставало при отсутствии или переполнении флэшки. Т. е., есть носитель - пишем, нет носителя - взводим бит запрещающий запись до перезагрузки и больше не отвлекаемся по пустякам... После смены флэшки, просто перезапускаем контроллер и он снова начнет писать...
     
  10. selestasvz
    Регистрация:
    05.11.11
    Сообщения:
    210
    Благодарности:
    46

    selestasvz

    ЭкоФанат

    selestasvz

    ЭкоФанат

    Регистрация:
    05.11.11
    Сообщения:
    210
    Благодарности:
    46
    Адрес:
    Новокузнецк
    Общий алгоритм всегда и везде был таков, что более старые записи стираются и записываются новые. Только в связи с огромными объемами современной flash памяти, записи хватит на десяток лет. :)

    Лет через 30, авось мы вспомним, что поставили на запись контроллер и пойдем проверим чего там написАлось :)
     
  11. aostspb
    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083

    aostspb

    Живу здесь

    aostspb

    Живу здесь

    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083
    Адрес:
    Санкт-Петербург
    Увы.

    Во-первых, все зависит от объемов собираемой информации. В случае батареи можно снимать показания раз в 5 минут, а вот в случае ветряка - пятиминутные данные, боюсь, никого не устроят... А как снимать (и сбрасывать после записи) интегрированные показатели - я пока что-то не соображу.

    Во-вторых, флэшка может самопроизвольно выйти из строя в любой момент времени.
     
  12. selestasvz
    Регистрация:
    05.11.11
    Сообщения:
    210
    Благодарности:
    46

    selestasvz

    ЭкоФанат

    selestasvz

    ЭкоФанат

    Регистрация:
    05.11.11
    Сообщения:
    210
    Благодарности:
    46
    Адрес:
    Новокузнецк
    Я вопросом сбора данных уже занимался. И вот как мы решили вопрос усреднения данных за диапазон времени T.

    1. В память записываются итоговые данные за диапазон времени T - а не все оцифрованные данные за этот период.

    2. Для того чтобы получить min, max и avg (среднее) значение не обязательно держать в памяти все оцифрованные данные. Точнее можно, но это не самый оптимальный вариант. Для этого берутся всего три ячейки памяти на каждый параметр в которые записываются данные таким образом.

    В каждом цикле оцифровке считываются данные:

    например, по температуре T
    В ячейку Tmin будет записано самое минимальное значение за период T
    В ячейку Tmax будет записано самое максимальное значение за период T
    В ячейке Tavg будут усредняться в режиме реального времени весь поток этих данных.
    Т. е. Tavg = T+Tavg[k-1] - сумируются все значения.
    После окончания текущего периода рассчитывается Tavg = Tavg / k

    Далее записывается на флешь всего три цифры:
    Tmin Tmax Tavg

    Вариантов усреднения данных несколько. Можно не считать очень большую цифру Tavg, а делать усреднение on-line. Тогда формула для цикла примет вид

    Repeat
    ...
    Tavg=(T+Tavg0) /2,
    Tavg0 = Tavg1

    Until k<=N

    Этим мы уменьшим еще память для обработки потока.

    Так мы собирали статистику по ветру (Скорость мин, макс, средн, направление ветра преимущественное, температура воздуха) и отправляли через GPRS на сервер в интернете. При этом была встроенная память на 30 записей в базу - на случай невозможности передачи on-line (деньги на СИМ закончились или связи нет) и в следующей сессии передавался весь кусок непереданных данных... но это так отступление...
     
  13. aostspb
    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083

    aostspb

    Живу здесь

    aostspb

    Живу здесь

    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083
    Адрес:
    Санкт-Петербург
    Приехал модуль для измерения тока (ACS712 Module 20A Range Hall Current Sensor Module). Подключил к контроллеру Arduino тремя проводками, набросал программку - даже чего-то меряет. :) Выдает в сериальную консоль результат в амперах и два знака после запятой...

    Перед началом работы надо выставить "ноль" (значение ZeroLevel), и по имеющемуся измерительному прибору в своем диапазоне подобрать коэффициент персчета (kVolt), т. к., либо у меня мультиметр нелинейно меряет, либо у модуля зависимость в разных диапазонах чуть отличается (пробовал токи 0.5А, 5А, 9А).

    Код:
    /*
    This example code is in the public domain.
    */
     
    int sensorPin0 = A0;    // select the input pin for the potentiometer
    int sensorValue = 0;  // variable to store the value coming from the sensor
    int countvalues = 50;      // how many values must be averaged
    int ZeroLevel = 520;    // Zero level
    int kVolt = 0.0506;      // conversion factor
     
    void setup() {
      // declare the ledPin as an OUTPUT:
      pinMode(ledPin, OUTPUT);
      pinMode(sensorPin0, INPUT); // Curent sensor
      digitalWrite(sensorPin0, HIGH); //internal analog input pullup
      // serial output
      Serial.begin(9600);
    }
     
    int Current(int sensorPin) {
      int TMPsensorValue = 0;
      int count = 0;
     
      for (count =0; count < countvalues; count++) {
        // read the value from the sensor:
        TMPsensorValue = analogRead(sensorPin);
        delay(30);
        // make average value
        sensorValue = (sensorValue+TMPsensorValue)/2;
        }
      return sensorValue;
      }
     
    void loop() {
      int CurrentValue = Current(sensorPin0);
      Serial.print("current.value ");
      Serial.println(kVolt * (CurrentValue - ZeroLevel));
      delay(350);
    }
     
  14. Sa.
    Регистрация:
    11.04.11
    Сообщения:
    951
    Благодарности:
    1.137

    Sa.

    писатель

    Sa.

    писатель

    Регистрация:
    11.04.11
    Сообщения:
    951
    Благодарности:
    1.137
    Адрес:
    Обнинск
    Ардуино хорош - факт.

    Пока не получил спец разработку, мои программеры тоже ковыряются с ардуином.

    То есть, я пока не готов сказать на базе какой платы следует развивать тему. Безусловно, а полон оптимизма с нашими разработчиками.
     
  15. aostspb
    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083

    aostspb

    Живу здесь

    aostspb

    Живу здесь

    Регистрация:
    31.08.11
    Сообщения:
    7.746
    Благодарности:
    6.083
    Адрес:
    Санкт-Петербург
    Разработчиков хорошо бы озадачить помехозащитой линий между контроллером и датчиками, т. к. на столе оно все хорошо работает, а на длинных линиях - тут я, например, просто не обладаю необходимыми знаниями...