ПОМОГИТЕ с написание скетча

проекты на основе Arduino/CraftDuino

ПОМОГИТЕ с написание скетча

Сообщение MEGA » 19 дек 2014, 20:24

Помогите написать скетч для arduino , в этом я полный нуль
контроль за потребляемым током и контроль сетевого напряжения

1. Подключение линии Л1 ,Л2(контрольные линии) производится через оптрон А9пин-линия1 А10пин-линия2 (оптопара KPC354NT0B + силовой мосфет) макс напряжение для открытия оптопары 1.4v вот про него всё http://www.cosmo-ic.com/object/products/KPC354NT.pdf
2. Измерение тока с линии 1 и 2 снимается с датчиков тока типа ACS712 подключенных к А9пин-линия1 А10пин-линия2
3. Задаётся определенный ток потребления(2А на канал), при изменении его в меньшую сторону порядка 0,5А на 22пин(для первой линии) и 24пин(для второй линии) формируется лог. 1 (данное задание работает только при лог.0 на 49 пине)
4. Датчик контроля сетевого напряжения вход на А8 пине 220в в ББП ( делитель) , при понижении напряжения до 190в формирует сигналы на 52ом и 53ем пине ((цикличное открытия и закрытия оптронов( 1сек открыто 2 сек закрыто) и формирует лог. 1 на 49пине при этом отменятся команда 3 . Как напряжение достигает >= 190в на 49 пине лог.1 сменяется на лог.0 и задание 3 работает а задание 4 отменяется
5. Все данный L1-ток L2-ток V-напряжение ( если нет V-error) выводится на жк дисплей 16х2
6. Все данные L1-ток L2-ток V-напряжение ( если нет V-error) выводится по USB на мониторинг порта(лучше окно :) )

возможно аналоговые и цифровые пины не перепутал поправите если не верно


выводы где формируется лог.1 лог.0 22, 24, 49 пины подключаются к блоку реле с НРК для подключения к "сухим контактам"
MEGA
 
Сообщения: 4
Зарегистрирован: 19 дек 2014, 19:55
programming: &

Re: ПОМОГИТЕ с написание скетча

Сообщение MEGA » 20 дек 2014, 20:31

нет тут таких мастеров ?
MEGA
 
Сообщения: 4
Зарегистрирован: 19 дек 2014, 19:55
programming: &

Re: ПОМОГИТЕ с написание скетча

Сообщение MEGA » 26 дек 2014, 19:36

написал еле еле для дисплея , а теперь:
1. как мне это видеть по сетке в браузере?, есть в наличии W5100
2. задание 3,4,6

Код: Выделить всё
#include <LiquidCrystal.h>

LiquidCrystal lcd(50, 52, 48,46,44,42);

float vout = 0.0;
float V1 = 0.0;
float R1 = 100000.0;
float R2 = 10000.0;
int value = 0;


void setup()
{
  lcd.begin(16, 2); //инициализация LCD 1602
}

void loop () 
 {

float L1 = 0;
for(int i = 0; i < 1; i++) {
L1 = L1 + (.0264 * analogRead(A0) -13.51);

float L2 = 0;
for(int i = 0; i < 1; i++) {
L2 = L2 + (.0264 * analogRead(A1) -13.51);

value = analogRead(A2);
   vout = (value * 5.0) / 1024.0;
   V1 = vout / (R2/(R1+R2));
   if (V1<0.09) {
   V1=0.0;

delay(1);
}
{


  lcd.setCursor(0,1);
  lcd.print(V1);
  lcd.print(" ");
  lcd.setCursor(5,1) ;
  lcd.print("V");

  lcd.setCursor(11,0) ;
  lcd.print(L1);
  lcd.print(" ");
  lcd.setCursor(8,0);
  lcd.print("L1");
 
   lcd.setCursor(11,1) ;
  lcd.print(L2);
  lcd.print(" ");
  lcd.setCursor(8,1);
  lcd.print("L2");
   
  delay(900);//задержка-обновление экрана
}
}
}
}
MEGA
 
Сообщения: 4
Зарегистрирован: 19 дек 2014, 19:55
programming: &

Re: ПОМОГИТЕ с написание скетча

Сообщение noonv » 29 дек 2014, 10:04

посмотрите примеры для Ethernet library.
Аватара пользователя
noonv
Администратор
 
Сообщения: 553
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++

Re: ПОМОГИТЕ с написание скетча

Сообщение MEGA » 22 янв 2015, 17:40

проверьте пожалуста всё правильно сделал ??? если нет подскажите :) да ещё в сервере помогите дописать в коментах написал что сделать может как то красочнее конечно можно
все делал на меге + W5100+ дисп от ноки3110 компилится с arduino-1.5.8 библиотеки если над прикреплю все измерения без формул т.к пока не ясно какие датчики будут
Код: Выделить всё
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <TimerOne.h>
#include <SPI.h>
#include <Ethernet.h>
// pin 22 - Serial clock out (SCLK)
// pin 24 - Serial data out (DIN)
// pin 26 - Data/Command select (D/C)
// pin 28 - LCD chip select (CS)
// pin 30 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(22,24,26,28,30);

int PressureOut, PressureSet;
int PressureSet_Pin = 0;
int PressureRead_Pin = 1;
int analogRead_Pin = (12,13,14,15);



int led1 = 2;             // Порт 2, оптопара на линию 1
int led2 = 3;             // Порт 3, оптопара на линию 2
int led3 = 48;              //сухие контакты нет сети 220в
int led4 = 50;                 //сухие контакты 48в
int led5 = 52;                 //сухие контакты ток в линии1
int led6 = 53;                //сухие контакты ток в линии2


byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xF1 };
byte ip[] = { 192, 168, 1, 2 };   
EthernetServer server(80);
byte my_addr[8]={0x28,0x2A,0x78,0x65,5,0,0,0x10};


void setup() 
 {
      display.begin();
      display.setContrast(60); 
 
      pinMode(led1, OUTPUT);  // Порт 2, оптопара на линию 1
      pinMode(led2, OUTPUT);  // Порт 3, оптопара на линию 2
      pinMode(led3, OUTPUT); //сухие контакты нет сети 220в
      pinMode(led4, OUTPUT); //сухие контакты 48в
      pinMode(led5, OUTPUT); //сухие контакты ток в линии1
      pinMode(led6, OUTPUT); //сухие контакты ток в линии2
      Ethernet.begin(mac, ip);         
      server.begin();
}


void loop() {


 {
 digitalWrite(led1, HIGH);
 digitalWrite(led2, HIGH);
 }
 
   int U1;
   U1 = analogRead(12);   
    if (U1<100)
   {                 
   digitalWrite(led4,HIGH);
   delay(100);
   digitalWrite(led1,LOW);
   digitalWrite(led2,LOW);
   delay(1000);
   digitalWrite(led1,HIGH);
   digitalWrite(led2,HIGH);
   delay(1000);
   }
   else if(U1>100)
  digitalWrite(led4,LOW);       


                   
   int U2;       
   U2 = analogRead(13);   
    if (U2<100)
   {                 
   digitalWrite(led5,HIGH);
   delay(100);
   }
   else if(U2>100)
   digitalWrite(led5,LOW); 
   digitalWrite(led1,LOW);
   digitalWrite(led2,LOW);
   delay(1000);
   digitalWrite(led1,HIGH);
   digitalWrite(led2,HIGH);
   delay(1000);   


   
 
 
 
   int L1;             
   L1 =analogRead(14);
   if (L1<100)
   {                       
   digitalWrite(led5,HIGH);
   delay(500);
  }else if(L1>100)
  digitalWrite(led5,LOW);
   
   int L2;
   L2 =analogRead(15);
   if (L2<100)
   {                       
   digitalWrite(led6,HIGH);
   delay(500);
  }else if(L2>100)
  digitalWrite(led6,LOW);
   




{   
  display.setTextSize(1);
  display.setTextColor(BLACK);
 
  display.setCursor(0,0);
  display.println("display :)");
 
  display.setCursor(2,10);
  display.println(U1); 
  display.setCursor(40,10);
  display.println("Volt");
    display.setCursor(70,10);
  display.println("AC");
 
  display.setCursor(2,20);
  display.println(U2);
   display.setCursor(40,20);
  display.println("Volt");
    display.setCursor(70,20);
  display.println("DC");
 
  display.setCursor(2,29);
  display.println(L1);
   display.setCursor(35,29);
  display.println("Amper");
    display.setCursor(70,29);
  display.println("L1");
 
 
  display.setCursor(2,39);
  display.println(L2);
   display.setCursor(35,39);
  display.println("Amper");
    display.setCursor(70,39);
  display.println("L1");
 
  display.display();
  delay(500);
  display.clearDisplay();
  }
  {
  EthernetClient client = server.available();
  if (client) {
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
       char c = client.read();
       
        if (c == '\n' && currentLineIsBlank) {
                 
                 
         client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close"); 
          client.println("Refresh: 5");                         
          client.println();
         client.println("<!DOCTYPE HTML>");
          client.println("<html>");
         
                       
                                                                             
           client.print("Ток на линии 1");client.print("=");                 // надо выстроить каждую строку в столбик  и закрасить надписи в зелёный цвет
           client.print(L1);
           client.print('\n');
           client.print("--");       
           client.print("Ток на линии 2");client.print("=");
           client.print(L2);
           client.print("--");           
           client.print("Напруга 220в");client.print("=");
           client.print(U2);
           client.print("--");           
           client.print("Напруга 48в");client.print("=");
           client.print(U1);
           client.print("--"); 
                     
           if (U2<100)                               //если напруга пропала в браузере надпись
           {
             client.print("Напруга 220в  ПИЗДЕЦ");  //надпись сделать красного цвета и желательно моргать
             client.print("--");
           }   
           
           if (U1<100)                               //если напруга пропала в браузере надпись
           {
             client.print("Напруга 48в  ПИЗДЕЦ");       //надпись сделать красного цвета и желательно моргать
             
             client.print("--");
           }   
           client.println("<br />");
           
           if (L1<100)                             //если упал ток потребления в линии1 в браузере надпись
           {
             client.print(" ПИЗДЕЦ на линии одын ");  //надпись сделать красного цвета и желательно моргать
             client.print("--");
           }
           
           if (L2<100)                            //если упал ток потребления в линии2 в браузере надпись
           {
             client.print(" ПИЗДЕЦ на линии два ");  //надпись сделать красного цвета и желательно моргать
             client.print("--");
           }
                
         
          break;
         }
        if (c == '\n')
        {         
          currentLineIsBlank = true;
        }
        else if (c != '\r')
        {         
          currentLineIsBlank = false;
        }
      }
    }   
    delay(1);   
    client.stop();
        }
} delay(1000);         //делаем паузу всей программы
}

MEGA
 
Сообщения: 4
Зарегистрирован: 19 дек 2014, 19:55
programming: &


Вернуться в Проекты

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

© 2009-2017 |  О проекте  |  Политика Конфиденциальности  |