Мои проекты на Ардуино

Контроллеры, драйверы, датчики, управляющие устройства.

Re: Мои проекты на Ардуино

Сообщение Тима » 12 ноя 2012, 06:29

:good:
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Тима
Почётный участник
Почётный участник
 
Сообщения: 3128
Зарегистрирован: 01 мар 2012, 20:47
Откуда: КБР
Репутация: 1069
Медальки:
Настоящее имя: Тимур

Re: Мои проекты на Ардуино

Сообщение 2cme » 12 ноя 2012, 09:15

aftaev писал(а):далее когда термофилы расплодились

а они какието породистые, или уже "олл инклюзив" природой?
2cme
Почётный участник
Почётный участник
 
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -158
Медальки:

Re: Мои проекты на Ардуино

Сообщение aftaev » 12 ноя 2012, 10:43

2cme писал(а):а они какието породистые, или уже "олл инклюзив" природой?

это природа. от разны параметров таких как О2, рН, влажность температура будет зависить что вырастит нужные культуры иль не нужные.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 29295
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 5010
Медальки:

Re: Мои проекты на Ардуино

Сообщение Тима » 15 ноя 2012, 21:21

Может чуть опоздал, тут говорится о значениях после запятой... http://habrahabr.ru/post/110610/
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Тима
Почётный участник
Почётный участник
 
Сообщения: 3128
Зарегистрирован: 01 мар 2012, 20:47
Откуда: КБР
Репутация: 1069
Медальки:
Настоящее имя: Тимур

Re: Мои проекты на Ардуино

Сообщение aftaev » 20 ноя 2012, 15:05

Пришла еще одна ардуина :) Пришлось малость повозиться чтоб она заработала. Продавец дает примеры под другу плату и экран :hehehe:
Мои проекты на Ардуино DSCN0986.jpg


С таким экраном куды приятней :cheesy:
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 29295
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 5010
Медальки:

Re: Мои проекты на Ардуино

Сообщение Rafiq » 24 ноя 2012, 04:24

Ардуино конечно хорошо для быстрого старта, но устройства на них клепать дороговато будет.
Аватара пользователя
Rafiq
Мастер
 
Сообщения: 1053
Зарегистрирован: 28 сен 2012, 18:11
Откуда: Tatarstan Respublikası, Yar Çallı şəhəre
Репутация: 6
Медальки:

Re: Мои проекты на Ардуино

Сообщение aftaev » 24 ноя 2012, 09:37

для меня это дешево.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 29295
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 5010
Медальки:

Re: Мои проекты на Ардуино

Сообщение aftaev » 13 янв 2013, 23:30

Следующий проектик нужно сделать

односевой ЧПУ

Задача:
Задаем направление, длину пути, скорость. Пуск - ось проехала.
Ось должна разогнаться - выйти на нужную скорость - торможение.
Контроллер на базе Ардуино выдает сигналы step/dir

Задаем в настройках(константах) как в ЧПУ:
1. кол-во шагов/мм
2. макс. скорость
3. ускорение

Вот как то так :P
Сложность расчет разгона и торможения. Нашел статейку как это все просто делается :lol: http://fab.cba.mit.edu/classes/MIT/961. ... rofile.pdf

Нашел какую то библиотеку http://www.open.com.au/mikem/arduino/AccelStepper/
рою дальше :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 29295
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 5010
Медальки:

Re: Мои проекты на Ардуино

Сообщение aftaev » 06 май 2013, 22:59

Написал за пол часика простой осциллограф для Ардуины 2560 с TFT экраном.
Осциллограф чувствительный, но до 5в , но очень медлительный. Весь экран прорисовывается за 15 сек, что не очень быстро :hehehe: . Если убрать вывод цифровых чисел и передачу данных в СОМ будет шустрее работать шустрее намного, примерно 1-3 сек заполняться экран.

Код здесь
(для просмотра содержимого нажмите на ссылку)
Код: Выделить всёРазвернуть
// UTFT_ViewFont (C)2012 Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
// Описание для Экрана http://www.henningkarlsen.com/electronics/resource/UTFT/UTFT.pdf
//экран 239х319
//myGLCD.lcdOff(); // выключить экран (неработает)
//myGLCD.setContrast(10); // выключить экран (неработает)
//myGLCD.clrScr(); // очистить экран (работает)
//myGLCD.fillScr(255,125,0); // закрасить экран цветом (работает)
//myGLCD.setColor(255,0,0); // цветом текста (работает)
//myGLCD.setBackColor(255,250,0); // цветом фона (работает)

//графика
//myGLCD.drawPixel(200,200); // рисуем пиксель (работает)
//myGLCD.drawLine(200,200,50,60); // рисуем линию (работает)
//myGLCD.drawRect(50,50,110,100); // рисуем квадрат (работает)
//myGLCD.fillRect(20,20,150,160); // рисуем закрашенный квадрат (работает)
//myGLCD.drawRoundRect(20,20,150,160); // рисуем скругленный квадрат (работает)
//myGLCD.fillRoundRect(20,20,150,160); // рисуем скругленный закрашенный квадрат (работает)
//myGLCD.drawCircle(100,100,50); // рисуем круг (работает)
//myGLCD.fillCircle(100,100,50); // рисуем круг (работает)

//текст
//myGLCD.setFont(BigFont); // большие буквы
//myGLCD.setFont(SmallFont); // маленькие буквы
//myGLCD.setFont(SevenSegNumFont); // семигментные цифры
//myGLCD.print("text",100,50,0); // выводим текст,х,у, поворот  (работает)
//myGLCD.printNumI(235.5,100,50,2,1); // выводим число Integer,х,у, знаков после запятой, фильтр  (работает)
//myGLCD.printNumF(235.5,100,50,2,1); // выводим число (работает)




#include <UTFT.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];

int analogPin = 3;     // номер порта к которому подключен потенциометр
int val = 0;           // переменная для хранения считываемого значения
int x=0;
int y=239;
int xx=1;
int yy=238;
float voltage ;


// Uncomment the next line for Arduino Mega
UTFT myGLCD(ITDB32S,38,39,40,41);   // Remember to change the model parameter to suit your display module!

void setup()
{
  myGLCD.InitLCD();

  myGLCD.clrScr();
  Serial.begin(9600);
//рисуем сетку
  myGLCD.setColor(0, 255, 0);
  myGLCD.setBackColor(0, 0, 0);

  myGLCD.setFont(BigFont);

Grid();

 
}

void loop()
{

  while(1) {
  //myGLCD.print("@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_", CENTER, 132);
  //myGLCD.print("`abcdefghijklmnopqrstuvwxyz{|}~ ", CENTER, 144);

//через сколько выводить на экран (БОЛЬШЕ ПИШЕМ В ПОРТ)
//  for (int i = 0; i < 3; i++) {
  val = analogRead(analogPin);     // считываем значение
  voltage = val * (5.0 / 1023.0);
  myGLCD.print("        ", 220, 10);
  myGLCD.printNumF(voltage,3, 220, 10);
//  Serial.println(voltage);
  //delay(1);
// }


//ВЫВОД ЛИНИЕЙ МЕДЛЕННО
  yy = 230-voltage*50;
  //myGLCD.drawLine(x++,yy,xx++,y); // У,Х рисуем линию (работает)
  myGLCD.drawLine(x,y,xx,yy); // У,Х рисуем линию (работает)
  x = xx;
  y = yy;
  xx++;

//ОЧИСКА ЭКРАНА
    if (x >= 319) {
     x=0;
    // y=239;
     xx=1;
    // yy=238;
      Grid();
      }
 
  };



  while(1) {};
}


void Grid()
{
  myGLCD.clrScr();
  myGLCD.setColor(100, 125, 0); // ЦВЕТ СЕТКИ
  myGLCD.drawLine(0,0,0,230); // рисуем линию (работает)
  myGLCD.drawLine(0,230,319,230); // У,Х рисуем линию ()
  myGLCD.drawLine(0,180,319,180); // У,Х рисуем линию ()
  myGLCD.drawLine(0,130,319,130); // У,Х рисуем линию ()
  myGLCD.drawLine(0,80,319,80); // У,Х рисуем линию ()   
  myGLCD.drawLine(0,30,319,30); // У,Х рисуем линию () 
  myGLCD.setColor(0, 255, 0);  // цвет графика


Написал для медленных процессов, а именно отладки THC на плазму :)

Мои проекты на Ардуино DSCN1516.JPG

Мои проекты на Ардуино DSCN1518.JPG
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 29295
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 5010
Медальки:

Re: Мои проекты на Ардуино

Сообщение Impartial » 06 май 2013, 23:18

aftaev писал(а):Осциллограф чувствительный, но до 5в , но очень медлительный. Весь экран прорисовывается за 15 сек,

Ты точками рисуй. Будет быстрее.
Impartial
Мастер
 
Сообщения: 911
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 23

Re: Мои проекты на Ардуино

Сообщение aftaev » 06 май 2013, 23:38

Impartial писал(а):Ты точками рисуй. Будет быстрее.

С начало сделал именно точками. Если точками, то график рваный получается при скачках напряжения и не понятно как напруга прыгала.
Сравнивал что точками, что линиями разницы большой нет для моих задач. Когда амплитуда сигнала растет экран медленнее прорисовыет конечно. Больше всего времени занимает вывод значений вольт на экран, и передача в СОМ (если их закоментить будет шустро).
Мне нужно чтобы линия на экране Ардуины рисовалась примерно с той же скоростью что режим на плазме. Скорость резки в опытах 1000мм/мин :)
Шустро мне как раз не нужно :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 29295
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 5010
Медальки:

Re: Мои проекты на Ардуино

Сообщение Impartial » 06 май 2013, 23:44

Точками конечно, рваная будет. Но понять можно.
aftaev писал(а):Мне нужно чтобы линия на экране Ардуины рисовалась примерно с той же скоростью что режим на плазме.

А какой режим? Как ездит или какие то параметры дуги?
Impartial
Мастер
 
Сообщения: 911
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 23

Re: Мои проекты на Ардуино

Сообщение aftaev » 07 май 2013, 01:53

Impartial писал(а):А какой режим?

Пока занимаемся измерениями. Мне нужно было записывать вольты после делителя/фильтров и писать в файл чтобы посмотреть что происходит на краю листа, когда дуга через рез проходит, разный ток, разные расходники, старые/новые расходники итд..
Осциллограф Что я урвал, хвастаемся покупками, завидуем и облизываемся #66 такие чудеса рисует :)
Есть 4 разных плазмы, с разным принципом работы, будем обкатывать.

Impartial писал(а):Как ездит или какие то параметры дуги?

На портал прицепили и он таскает плазматрон. Испытываем на ровном и гнутом листе.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 29295
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 5010
Медальки:

Re: Мои проекты на Ардуино

Сообщение Kopyloff » 04 фев 2015, 18:31

Подниму-ка старую, но интересную тему :)
aftaev - с Вашего позволения напишу свой пост здесь, отдельную тему поднимать не вижу смысла. Если против - можете выделить в новую тему.

Итак, предлагаю вашему вниманию новую модель относительно быстрого осциллографа - частота снятия показаний - до 280 микросекунд.

Сразу скажу, что собирать именно осциллограф на ардуино я не собирался, но раз уж попались мне все ингредиенты- почему не попробовать?
Хочу собрать систему а-ля "Умный дом". Задача минимум на данный момент - собрать статистику энергопотребления в доме и на её базе автоматизировать управление электроприборами (в автомат. режиме или удалённо, через веб-морду). Ну - это в обозримом будущем. Не о том сейчас.

Вот эти ингредиенты:
- ардуино мега 2560
- TFT LCD экранчик, 2.4", на контроллере st7783:
Мои проекты на Ардуино 2015-02-02 17.52.02.jpg

- датчик тока на элементе ACS712-20А (вот тут брал: http://www.ebay.com/itm/1pcs-new-20A-range-Current-Sensor-Module-ACS712-Module-M60-/351189534395?pt=LH_DefaultDomain_0&hash=item51c48706bb)

Ну и для тестов - нагрузка в виде утюга и автомобильного зарядного с аккумулятором :)

Получился такой вот код:
Код: Выделить всёРазвернуть
#include <Adafruit_GFX.h>    // Core graphics library
#include "SWTFT.h" // Hardware-specific library
#include <TimerOne.h> //используем Timer1 для прерываний по времени

// Assign human-readable names to some common 16-bit color values:
#define   BLACK     0x0000
#define   BLUE      0x001F
#define   RED       0xF800
#define   DARKRED   0x2020
#define   GREEN     0x07E0
#define   DARKGREEN 0x2121
#define CYAN      0x07FF
#define MAGENTA   0xF81F
#define YELLOW    0xFFE0
#define WHITE     0xFFFF

SWTFT tft;

int ACS712 = A8; // select the input pin for an ACS712-20
int Uopornoe;// = A15; // select the input pin for a reference voltage
const int k=160; // k - кол-во записей в массив.
const int numReadings = 30; // numReadings - кол-во данных в фильтре.
boolean trig, resize;

volatile long PintTic=0; // счетчик периодов
volatile int CurA0; // Ток текущий
volatile int CurA0max; // Ток маскимальный
volatile long CurA0calcMax; // Ток маскимальный за весь период
volatile int CurA0min; // Ток минимальный
volatile long CurA0calcMin; // Ток минимальный за весь период
volatile int ymax=256, ymin=-256; // значения для масштабирования графика и сетки
float CurA0calcMid; // Ток средний (среднеквадратичное от CurA0calcMax и CurA0calcMin)

volatile int val_a[501]; //Массив значений A0 в прерываниях
volatile int val_a2[501]; //Массив значений времени в прерываниях
volatile int val_Uo[501]; //Массив значений опорного напряжения прерываниях
volatile long val_t[501]; //Массив значений времени в прерываниях

volatile int nb[501]; //Массив для учета номера итерации
volatile int i, z, c, v;
int scr_out, x1=0, x2=1, y1=120, y2=120;

// Переменные для фильтра
float readings[numReadings];      // the readings from the analog input
float total = 0;                  // the running total
float average = 0;                // the average

float A0_current;

unsigned long previousMillis = 0;        // will store last time LED was updated
const long interval = 6000;           // interval at which to blink (milliseconds)


void setup(void) {
  Serial.begin(9600); //поднимаем соединение для передачи на терминал   

  // Инициализация данных в массиве фильтра в 0:
  for (int thisReading = 0; thisReading < numReadings; thisReading++)
    readings[thisReading] = 0;         

  tft.reset();

  uint16_t identifier = tft.readID();

  Serial.print(F("LCD driver chip: "));
  Serial.println(identifier, HEX);

  tft.begin(identifier);

  tft.setRotation(1);
 
//рисуем сетку
  Grid();

   // Запуск таймера
  Timer1.initialize(400);              // Интервал срабатывания таймера в мкс
  Timer1.attachInterrupt(current_meter);   //будет вызываться каждый раз при отсчете заданного времени
   
}


void loop(void) {
 
  // Закрашиваем чёрным предыдущее значение тока:
  tft.setCursor(96, 4);
  tft.setTextColor(BLACK);  tft.setTextSize(1);
  tft.println(A0_current,2);
  tft.setCursor(222, 4);
  tft.print(average,2);

  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;   

    Grid();
    scr_out = 0;
    x1=0; x2=1; y1=120,y2=120;
    while (scr_out <= k) {
  // Ноль координат - в верхнем левом углу экрана!!! Вынос мозга...
      y2 = map(val_a2[scr_out], ymin, ymax, 240, 0);
      tft.drawLine(x1, y1, x2, y2, GREEN);
      x1 = x2;
      y1 = y2;
      x2 = x2 + (tft.width()/k);
/*
      Serial.print(scr_out);// 
      Serial.print(" , ");// 
      Serial.print(val_a2[scr_out]);// 
      Serial.println("");// 
*/
      scr_out++;
    }
  // Данный триггер сбросится только после заполнения буфера новыми данными в прерывании current_meter
  trig = true;
  }
 
  CurA0calcMid = sqrt((sq(CurA0calcMax)+sq(CurA0calcMin))/2);
/*
Измеряем максимальный и минимальный пики синусоиды. Затем находим их среднеквадратичное значение.
                  пик = sqrt( ( (пик мин)^2 + (пик макс)^2 )/2 )  [маш.ед.]
Далее это значение (в машинных единицах - 0-1023) переводим в напряжение:
                  напряж. = (пик / 1023)*5  [Вольт]
Чувствительность ACS712-20 равна 100 милиВольт/Ампер = 0,1В/А (см. даташит на ACS), отсюда:
                  ток ампл. = напряж. / Чувствит. = напряж / 0,1 = напряж * 10  [Ампер]
Ток средний - это ток ампл., поделенный на корень из 2:
                  ток средний = ток ампл. / sqrt(2) = ток ампл. * 0,707  [Ампер]
Итого:
                  Ток = 0,707*ток ампл. = 0,707 * напряж / чувствит. = 0,707 * напряж. * 10 = 7,07 * напряж. =
                      = 7,07 * пик * 5 / 1023 = 35,35 * пик / 1023
*/ 
  A0_current = 35.35 * CurA0calcMid / 1023.0;

//=================== Фильтр сглаживающий: ================
  // передвигаем данные в массиве:
  v = numReadings;
  while (v > 0) {
    readings[v]=readings[v-1];
    v--;
  }
  readings[0] = A0_current;
//  Serial.print("A0_current = "); Serial.print(A0_current); Serial.print(" ; ");
  c = 0;
  total = 0;
  while (c < numReadings) {
    total += readings[c];
//    Serial.print(readings[c]); Serial.print(" ; ");
//    Serial.print(total); Serial.println("");
    c++;
  }
  // calculate the average:
  average = total / numReadings;         
// ======================================================

  // Выводим на экран значение тока:
  tft.setCursor(60, 4);
  tft.setTextColor(WHITE);  tft.setTextSize(1);
  tft.print("Iact= "); tft.print(A0_current,2); tft.print(" A");
  // Среднее значение тока (после фильтра)
  tft.setCursor(180, 4);
  tft.print("Iaver= "); tft.print(average,2); tft.print(" A");
 
//  Serial.print("Free memory size: "); // печать количества свободной оперативной памяти
//  Serial.println(memoryFree()); // печать количества свободной оперативной памяти
}


//********************обработчики прерываний*******************************
void current_meter()  //прерывания таймера
{
  PintTic++;  //счетчик периодов 
  Uopornoe = analogRead(A15);
  CurA0 = analogRead(ACS712)-(Uopornoe/2);
  CurA0max = max(CurA0,CurA0max);
  CurA0min = min(CurA0,CurA0min);
  val_a[PintTic] = CurA0;
//  val_Uo[PintTic] = Uopornoe;
//  nb[PintTic] = PintTic;
//  val_t[PintTic] = micros();

    if(PintTic==k)
    {   
      if (trig == true) {
        z = 0;
        while (z <= k) { val_a2[z] = val_a[z]; z++; }
//        ymax = CurA0max; ymin = CurA0min; // Сохраняем макс. и мин. значения в массиве
      }
      trig = false;
      PintTic=0;  //обнуляем счетчик
      CurA0calcMax=CurA0max;
      CurA0calcMin=CurA0min;
      CurA0max=0;
      CurA0min=0;
   }

}
//*************************************************************************



void Grid()
{
  tft.fillScreen(BLACK);
  //  tft.drawLine(x1, y1, x2, y2, color);
  // Ноль координат - в верхнем левом углу экрана!!! Вынос мозга...
  tft.drawLine(0, 0, 0, 240, BLUE); // Ось ординат
  // 120*75%=90.
  tft.drawLine(0, (120-(90*(1024/(ymax-ymin)))), 319, (120-(90*(1024/(ymax-ymin)))), DARKGREEN); // 75%
  // 120*50%=60.
  tft.drawLine(0, (120-(60*(1024/(ymax-ymin)))), 319, (120-(60*(1024/(ymax-ymin)))), DARKGREEN); // 50%
  // 120*25%=30.
  tft.drawLine(0, (120-(30*(1024/(ymax-ymin)))), 319, (120-(30*(1024/(ymax-ymin)))), DARKGREEN); // 25%
  // В пикселях по оси Y: 240/2=120 пикселей - это середина экрана.
  tft.drawLine(0,120,319,120, BLUE); // Ноль
  // 120 пикселей - это 100% сигнала. 120*25%=30.
  tft.drawLine(0, (120+(30*(1024/(ymax-ymin)))), 319, (120+(30*(1024/(ymax-ymin)))), DARKGREEN); // -25%
  // 120 пикселей - это 100% сигнала. 120*50%=60.
  tft.drawLine(0, (120+(60*(1024/(ymax-ymin)))), 319, (120+(60*(1024/(ymax-ymin)))), DARKGREEN); // -50%
  // 120 пикселей - это 100% сигнала. 120*75%=90.
  tft.drawLine(0, (120+(90*(1024/(ymax-ymin)))), 319, (120+(90*(1024/(ymax-ymin)))), DARKGREEN); // -75%


// Переменные, создаваемые процессом сборки,
// когда компилируется скетч
// extern int __bss_end;
// extern void *__brkval;


/*
// Функция, возвращающая количество свободного ОЗУ (RAM)
int memoryFree()
{
   int freeValue;
   if((int)__brkval == 0)
      freeValue = ((int)&freeValue) - ((int)&__bss_end);
   else
      freeValue = ((int)&freeValue) - ((int)__brkval);
   return freeValue;
}
*/


Собирался использовать тачскрин - сделать кнопки для обновления и для масштабирования графика по высоте, но тачскрин не захотел работать в том же чипе, что и прерывание по таймеру TimerOne. Точнее - если делать прерывание больше 1000 микросекунд - тогда тач начинает кое-как работать, но тут уже лучше кнопками пожертвовать, чем частотой измерений.

Ну и фото того что получилось:
Мои проекты на Ардуино 2015-02-04 20.46.32.jpg


Сначала в качестве нагрузки - утюг:
Мои проекты на Ардуино 2015-02-04 20.54.59.jpg

Мои проекты на Ардуино 2015-02-04 20.55.13.jpg


Где-то читал, что современные импульсные блоки питания (компы и прочая бытовая техника) срезают верхушку синусоиды. Здесь на маленьком экранчике не очень хорошо видно, а в экселе когда график строишь из полученных данных - видно срезанную верхушку.

Далее в качестве нагрузки - автомобильное зарядное с аккумулятором:
Мои проекты на Ардуино 2015-02-04 21.05.07.jpg

Мои проекты на Ардуино 2015-02-04 21.06.08.jpg

Мои проекты на Ардуино 2015-02-04 21.07.05.jpg
Kopyloff
Мастер
 
Сообщения: 385
Зарегистрирован: 28 мар 2013, 07:40
Откуда: Первоуральск
Репутация: 115
Настоящее имя: Сергей

Re: Мои проекты на Ардуино

Сообщение UAVpilot » 04 фев 2015, 20:01

Kopyloff писал(а):Задача минимум на данный момент - собрать статистику энергопотребления в доме

Так?

Мои проекты на Ардуино pwr.png


;)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 17009
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4187
Медальки:
Настоящее имя: Сергей

Re: Мои проекты на Ардуино

Сообщение Kopyloff » 04 фев 2015, 20:12

UAVpilot писал(а):Так?

Примерно так, только у меня будет 13 групп электроприемников (читай - 13 автоматов после счетчика) :)
А эти графики откуда?
Kopyloff
Мастер
 
Сообщения: 385
Зарегистрирован: 28 мар 2013, 07:40
Откуда: Первоуральск
Репутация: 115
Настоящее имя: Сергей

Re: Мои проекты на Ардуино

Сообщение UAVpilot » 05 фев 2015, 01:26

С моего домашнего электросчётчика. :)

У меня ещё много подобных графиков есть... :)

Мои проекты на Ардуино input.png


Мои проекты на Ардуино bath.png


Мои проекты на Ардуино hum.png


Мои проекты на Ардуино pres.png


Мои проекты на Ардуино temp.png
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 17009
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4187
Медальки:
Настоящее имя: Сергей

Re: Мои проекты на Ардуино

Сообщение Kopyloff » 05 фев 2015, 06:25

Круто! За RRDtool отдельное спасибо - я хотел базу данных на sqlite делать, но не знал как организовать закольцовывание базы. А тут уже готовое решение, да ещё и под OpenWRT есть. А можно вкратце описать систему? Какие датчики, кто с них данные собирает и в базу пишет? Где графики отображаются?
Kopyloff
Мастер
 
Сообщения: 385
Зарегистрирован: 28 мар 2013, 07:40
Откуда: Первоуральск
Репутация: 115
Настоящее имя: Сергей

Re: Мои проекты на Ардуино

Сообщение UAVpilot » 05 фев 2015, 08:26

По электричеству опрашивается домашний счётчик Меркурий-200, он много чего умеет рассказывать.
Другие датчики и исполнительные устройства - это в основном устройства 1-wire, для работя с ними применяется OWFS (в разработке которой я принимаю скромное участие :)).
Ещё на компе (домашнем сервере) работает программка, отслеживающая разнообразные события и выполняющая разннобразные запрограммированные действия. Для примера кусок её конфига:
Код: Выделить всёРазвернуть
init 12.646A26000000 /usr/local/lib/oweventd/bathfan init
init 26.0A3026000000 /usr/local/lib/oweventd/bathfan init
event ow 26.0A3026000000/VAD * /usr/local/lib/oweventd/bathfan check

init 12.8C4229000000 /usr/local/lib/oweventd/doormonitor init
init 12.90D21C000000 /usr/local/lib/oweventd/doormonitor init
event ow uncached/12.8C4229000000/latch.A 1 /usr/local/lib/oweventd/doormonitor start

Это управление вентилятором в ванной в зависимости от влажности и температуры и включение изображения на мониторе в прихожей с дверной камеры, если в дверь позвонили.
event - при появлении указанного события выполняется соотв. команда, init - если датчик оторвать, а потом снова прицепить, то прога это обнаружит и зальёт в датчик начальные настройки.
А графики - это так, побочный эффект. Да и для отлова глюков полезно - если вдруг система непонятно на что среагирует, то по графиками можно посмотреть "что это было?". :)

P.S. домашний датацентр (в туалете) ;)

Мои проекты на Ардуино 20150205_083118.jpg
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 17009
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4187
Медальки:
Настоящее имя: Сергей

Re: Мои проекты на Ардуино

Сообщение Kopyloff » 05 фев 2015, 09:49

Это кошмарный сон электрика - куча разных проводов вперемешку :) А сколько этот датацентр в общем энергии потребляет? Столько потребителей в розетки воткнуто.. А что за штука слева на стене вертикально висит?
Kopyloff
Мастер
 
Сообщения: 385
Зарегистрирован: 28 мар 2013, 07:40
Откуда: Первоуральск
Репутация: 115
Настоящее имя: Сергей

Пред.След.

Вернуться в Электроника

Кто сейчас на конференции

Зарегистрированные пользователи: aegis, aftaev, al_us, Арсентий, AVK74, barroweer, Bing [Bot], Сергей Саныч, Darxton, Ershoff, Google [Bot], kihanat, Lafayette, Lebede, Lunatic, Majestic-12 [Bot], Malik, Mehobr, MX_Master, neonas, nik1, niksooon, NKS, Nonstopich, not4u, Provodnik, гаечный ключ, rehden, sazn86, SNS, spryt, SVP, trafbite, tsups, tubeman88, uzer, xenon-alien, xvovanx, Yandex [bot], Zobakka, Фукс, Леонид Владимирович

Поделиться

Reputation System ©'