Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.03.2013, 00:37   #11
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Алгоритм должен быть таким:
1-читаем аналоговый порт в обработчике прерывания АЦП
2-Если поймали ноль, то запускаем отсчет таймера
3-После заданного временного интервала открываем симистор и останавливаем таймер
4-симистор откроется, через нагрузку потечет ток и его мы зафиксируем датчиком тока
5-Снова добрались до ноля, симистор сам отключился, датчик тока зафиксирует ноль
и так по кругу
Admin вне форума   Ответить с цитированием
Старый 14.03.2013, 07:23   #12
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от Admin Посмотреть сообщение
Алгоритм должен быть таким:
4-симистор откроется, через нагрузку потечет ток и его мы зафиксируем датчиком тока
Пока симмистора нет, измеряю ток для релейного устройства. Думается что что-то напутано с типами переменных и в формуле. Надо еще подумать. Вчера экспериментировал - выводит везде ноль, причем в обработчике все нормально работает, ошибка возникает гдето в основном теле программы

А толку то его фиксировать -для переменки нужно искать максимум
Bulatovor вне форума   Ответить с цитированием
Старый 14.03.2013, 09:38   #13
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Можно еще вот так ток измерять
Название: curent.png
Просмотров: 3502

Размер: 96.8 Кб
Admin вне форума   Ответить с цитированием
Старый 14.03.2013, 12:22   #14
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию

Заменил тип переменной с int на long начало считать

Пока нет возможности проверить с реальной нагрузкой, но при подаче на аналоговый 5 вольт выдает 17 ампер тока для 20 амперного датчика, будем искать дальше ошибку в формуле.

PHP код:
#include "nanopins.h" //быстрое управление пинами 
#include <Bounce.h>        // библиотека для устранения дребезга 
#include <TimerOne.h> //использует Timer1

 
volatile long  Smax// сумма максимальных значений
 
volatile long PeriodTic=0// счетчик периодов
 
volatile long PintTic=0// счетчик периодов
 
volatile long Vmax;// максимальное значение за период
 
volatile long Vout;// значение аналогового порта, можно конечно и считывать прямо, 
                   //но на сайте Arduino говорится что при использовании в функции 
                   // max других функций результаты получаются непредсказуемыми
           
long Power=0// значение потребляемой мощности
           
long I 0// сила тока
           
 
Bounce bouncer Bounce(95); //создаем экземпляр класса Bounce для 9 вывода 
 

void setup()  
{    
D9_In//настраиваем порт на вход для кнопки 1
     
D9_High;  //установить на входах высокий уровень и подключить резистор 
     
Serial.begin(9600);//поднимаем соединение для передачи на терминал   
   // Запуск таймера
    //  StartTimer1(current_meter, 80); 
    
     
Timer1.initialize(80);              // Интервал срабатывания таймера в мкс 
  
Timer1.attachInterrupt(current_meter);   //будет вызываться каждый раз при отсчете заданного времени
 

//********************обработчики прерываний******************************* 
void current_meter()  //прерывания таймера 

  
PintTic++;  //счетчик периодов  
  
Vout=A3_Read// читаем  порт к которому подключен выход датчика
  
Vmax=max(Vout,Vmax); //  если полученное значение самое большое, присваиваем его переменной Vmax
    
if(PintTic==250)
  { 
//Serial.println(Smax,DEC);  
    
Smax=Smax+Vmax// Добавляем сумму максимальных значений
      
PeriodTic++; // увеличиваем счетчик периодов
      
Vmax=0// обнуляем переменную максимума
      
PintTic=0;  //обнуляем счетчик 
  
}



//************************************************************************* 
void loop()  

  
  
// Обработка нажатия кнопки 
   
if (bouncer.update()) {     //если состояние кнопки изменилось
    
if (bouncer.read()==0//если кнопка нажата
    
{//если кнопка нажата
      
I=(Smax/PeriodTic-512)/204,8*0,707/0,1;
      
Power 220*I;// рассчитываем потребляемую мощность
      
Serial.print ("I=");Serial.print (I); Serial.print (" A");
      
Serial.print ("   P=");Serial.print (PowerDEC); Serial.print ("Watt");
      
Serial.print ("   Period=");Serial.print (PeriodTic/50DEC); Serial.println ("Sec");
      
Smax=0// Обнуляем счетчики
      
PeriodTic=0// обнуляем счетчик
    

  }

Bulatovor вне форума   Ответить с цитированием
Старый 14.03.2013, 13:37   #15
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

При нулевом значении тока , с выхода датчика на входе A3 должно показывать 512
Все что меньше 512 это отрицательный полупериод, все что больше это положительный полупериод
Admin вне форума   Ответить с цитированием
Старый 14.03.2013, 13:57   #16
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию

Не спорю, а это где-то в программе не учтено? функция max знает что отрицательные значения меньше чем положительные, в формуле расчета тож 512 вычитается из средне максимального значения. И все равно при подаче 5 вольт на А3 сила тока 17 Ампер, а должна быть 20
Bulatovor вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 18:33. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика