Перейти к содержанию

нужен скетч для ардуино


Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

К каждому датчику провода должны идти в виде свитой пары. Это так?

Если не поможет, попробуй подключить по трёх проводной схеме закоротив резистор 100 Ом.

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

2 часа назад, mazzi сказал:

К каждому датчику провода должны идти в виде свитой пары. Это так?

Если не поможет, попробуй подключить по трёх проводной схеме закоротив резистор 100 Ом.

да к датчикам по витой паре

что с чем коротить то.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Нам нужно добиться, что бы датчики температуры работали.

Попробуйте подключить датчики прямо к плате без длинных проводов. И покажите что показывает скетч при обмене с терминалом.

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

я же уже подключал датчики к плате с скетчем из примеров провода при этом были сантиметров по 10 и в мониторе были текущие показания с датчиков.

Ссылка на комментарий
Поделиться на другие сайты

Я собрал у себя , всё заработало. Попробовал с паразитным питанием и с нормальным. Только температуру считает в 10 раз больше, там опечатка, вместо (float)raw / 16.0; нужно набрать (float)raw / 160.0;

После исправления меряет чётко.

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

#include <MsTimer2.h>
#include <OneWire.h>
//#define POWER_MODE  1 // режим питания, 0 - внешнее, 1 - паразитное
OneWire sensDs1 (2);  // датчик подключен к выводу 2
OneWire sensDs2 (3);  // датчик подключен к выводу 3
OneWire sensDs3 (4);  // датчик подключен к выводу 4

byte bufData1[12];  // буфер данных
byte adr1[8];
float temperature1;  // измеренная 
byte bufData2[12];  // буфер данных
byte adr2[8];
float temperature2;  // измеренная 
byte bufData3[12];  // буфер данных
byte adr3[8];
float temperature3;  // измеренная 

float tOpen=30.0, tClose=20.0;

byte nTask; // номер задачи
byte door1, door2, door3; // 0 - unknown, 1 - open, 2 - close
byte Pump, oldPump;
int16_t  debounce;
int16_t  raw;
byte present = 0, i;

// --------------------------------------------------------------------

// --------------------------------------------------------------------
void timerInterrupt() {
   if(debounce) {debounce--; digitalWrite(12,HIGH); }
   else digitalWrite(12,LOW);
   Pump=digitalRead(11); 
   if(oldPump!=Pump) {
      oldPump=Pump; debounce=1000; 
   }
}
// --------------------------------------------------------------------
void getDigits() {
unsigned int a1,a2;
   a1=analogRead(2);
   a2=analogRead(3);
   if(a1>500 && a2<100) door1=1;
   else if(a1<100 && a2>500) door1=2;
   else door1=0;

   a1=analogRead(4);
   a2=analogRead(5);
   if(a1>500 && a2<100) door2=1;
   else if(a1<100 && a2>500) door2=2;
   else door2=0;

   a1=analogRead(6);
   a2=analogRead(7);
   if(a1>500 && a2<100) door3=1;
   else if(a1<100 && a2>500) door3=2;
   else door3=0;
}
// --------------------------------------------------------------------
void handlerDoors() {
   if     (door1!=2 && temperature1<tClose) { digitalWrite( 5, LOW);  digitalWrite( 6, HIGH);}
   else if(door1!=1 && temperature1>tOpen)  { digitalWrite( 5, HIGH); digitalWrite( 6, LOW);}
   if     (door2!=2 && temperature2<tClose) { digitalWrite( 7, LOW);  digitalWrite( 8, HIGH);}
   else if(door2!=1 && temperature2>tOpen)  { digitalWrite( 7, HIGH); digitalWrite( 8, LOW);}
   if     (door3!=2 && temperature3<tClose) { digitalWrite( 9, LOW);  digitalWrite(10, HIGH);}
   else if(door3!=1 && temperature3>tOpen)  { digitalWrite( 9, HIGH); digitalWrite(10, LOW);}
}
// --------------------------------------------------------------------
void taskHandler(byte task) {
  switch(task) {
    case 0:
       if ( !sensDs1.search(adr1)) {
         sensDs1.reset_search();
         delay(250);
       }
       sensDs1.reset();
       sensDs1.select(adr1);
       sensDs1.write(0x44, 1);        // start conversion, with parasite power on at the end
       delay(1000);     // maybe 750ms is enough, maybe not
       present = sensDs1.reset();
       sensDs1.select(adr1);    
       sensDs1.write(0xBE);         // Read Scratchpad
       for ( i = 0; i < 9; i++) {           // we need 9 bytes
          bufData1[i] = sensDs1.read();
       }
       raw = (bufData1[1] << 8) | bufData1[0];
       raw = raw << 3; // 9 bit resolution default
       if (bufData1[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
         raw = (raw & 0xFFF0) + 12 - bufData1[6];
       }
       temperature1 = (float)raw / 160.0;
       Serial.print("  Temperature1= ");
       Serial.print(temperature1);
       Serial.print(" Celsius, \n");
    break;
    case 1:
       if ( !sensDs2.search(adr2)) {
         sensDs2.reset_search();
         delay(250);
       }
       sensDs2.reset();
       sensDs2.select(adr2);
       sensDs2.write(0x44, 1);        // start conversion, with parasite power on at the end
       delay(1000);     // maybe 750ms is enough, maybe not
       present = sensDs2.reset();
       sensDs2.select(adr2);    
       sensDs2.write(0xBE);         // Read Scratchpad
       for ( i = 0; i < 9; i++) {           // we need 9 bytes
          bufData2[i] = sensDs2.read();
       }
       raw = (bufData2[1] << 8) | bufData2[0];
       raw = raw << 3; // 9 bit resolution default
       if (bufData2[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
         raw = (raw & 0xFFF0) + 12 - bufData2[6];
       }
       temperature2 = (float)raw / 160.0;
       Serial.print("  Temperature2= ");
       Serial.print(temperature2);
       Serial.print(" Celsius, \n");
    break;
    case 2:
       if ( !sensDs3.search(adr3)) {
         sensDs3.reset_search();
         delay(250);
       }
       sensDs3.reset();
       sensDs3.select(adr3);
       sensDs3.write(0x44, 1);        // start conversion, with parasite power on at the end
       delay(1000);     // maybe 750ms is enough, maybe not
       present = sensDs3.reset();
       sensDs3.select(adr3);    
       sensDs3.write(0xBE);         // Read Scratchpad
       for ( i = 0; i < 9; i++) {           // we need 9 bytes
          bufData3[i] = sensDs3.read();
       }
       raw = (bufData3[1] << 8) | bufData3[0];
       raw = raw << 3; // 9 bit resolution default
       if (bufData3[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
         raw = (raw & 0xFFF0) + 12 - bufData3[6];
       }
       temperature3 = (float)raw / 160.0;
       Serial.print("  Temperature3= ");
       Serial.print(temperature3);
       Serial.print(" Celsius, \n");
    break;
  }
}
void setup() {
  nTask=0;
  pinMode( 5, OUTPUT); digitalWrite( 5, LOW);
  pinMode( 6, OUTPUT); digitalWrite( 6, LOW);
  pinMode( 7, OUTPUT); digitalWrite( 7, LOW);
  pinMode( 8, OUTPUT); digitalWrite( 8, LOW);
  pinMode( 9, OUTPUT); digitalWrite( 9, LOW);
  pinMode(10, OUTPUT); digitalWrite(10, LOW);
  pinMode(12, OUTPUT); digitalWrite(12, LOW);  // насос

  pinMode(11, INPUT);  digitalWrite(11, HIGH); // сигнал от насоса
  Pump=digitalRead(11); oldPump=Pump; debounce=0;
  MsTimer2::set(2, timerInterrupt); // задаем период прерывания по таймеру 2 мс 
  MsTimer2::start();               // разрешаем прерывание по таймеру
  Serial.begin(9600); // инициализируем порт, скорость 9600  
}

void loop() {
  taskHandler(nTask++);
  if(nTask>2) {
    nTask=0;  
    getDigits();
    handlerDoors();
  }
}

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

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

залил результат такой :

до этого стоял скетч проверочный на экранчике показывало температуру с датчика

скомпилировал без ошибок

залил тоже ошибок не показало

экран светится в верхней строке черные прямоугольники.

Изменено пользователем 2a420
ошибка
Ссылка на комментарий
Поделиться на другие сайты

13 часа назад, 2a420 сказал:

экран светится в верхней строке черные прямоугольники.

О каком экране речь? Скрин или фото можешь показать?

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Вот что мне ответил продавец после предъявления претензий к мини камере: "Да, сэр, мы проверили ваше видео для инженера. Инженер предоставил инструмент, и мы отправим его вам. Пожалуйста, укажите свой адрес электронной почты." Что это означает? И как не попасться в ловушку?
    • Питание к этому усилителю у меня имеется, трансформатор с двойным питанием 27-0-27, на 300вт, выпрямитель стоит на самом усилителе. Корпус не нужен, т.к. он будет находится внутри сабвуфера, все регулировки - частота среза, уровень - находятся на плате, вход и выход так же соответственно.  У саба одна катушка. С двумя катушками я бы так и сделал. 
    • Постепенное зажигание светодиодов в одной цепи, потом переключение реле на другую цепь, постепенное зажигание светодиодов в другой цепи и переключение реле обратно на первую цепь. Вообще схема работает. Реле переключает цепи несколько раз, примерно 3-4 раза, если на разряженных конденсаторах. Но после очередного переключения на первую цепь светодиоды начинают моргать, реле перестает переключаться, а в цепи начинает скакать ток.
    • Указанные Вами частотники, насколько я помню, имеют встроенное аналоговое управление, в т.ч. с помощью потенциометра. Как его подключить показано в инструкции на частотник. Можно ли иметь дополнительно индикацию положения потенциометра? Да, можно. Например обычный мультиметр в режиме вольтметра Вам будет показывать напряжение на движке потенциометра. Вам это нужно?
    • Давайте так, не знаю на сколько это конкретно но я попробую.    1. Мне нужна, схема подключения ШИМ регулятора CCM5D (DC) 6-30 В 6А с дисплеем, к частотным преобразователям LG SV004IC5-1 и Schneider ATV12H037M2 для возможности регулировки скорости двигателя.    Или….  возможно, если я не правильно понимаю, и ШИМ регулятор для такого функционала не годится. (Так как мне сказали что его можно использовать только на двигателях постоянного тока и только напрямую не через преобразователь, в чем я тоже сомневаюсь) Подсказать как сделать так что бы добавить к потенциометру цифровой дисплей.  Так как в целом задача стоит, поставить цифровой дисплей на котором будет отображаться заданная скорость.    сразу отмечу что вариант покупки выносных пультов управления к частотникам рассматривали, очень дорого в целом, так как надо много, да и на наши частотники не нашлись 
    • Если я правильно понял условия задачи, то как-то так попробовал бы подступиться к решению. Но нюансы есть - с какой скоростью надо сбрасывать конденсаторы ==> как быстро нужно открывать/закрывать мосфеты. 
×
×
  • Создать...