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

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


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

Реклама: ООО ТД Промэлектроника, ИНН: 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 пользователей онлайн

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

  • Сообщения

    • Насколько могу судить разъем не предназначен для многократного перевтыкания случайными товарищами . А при монтаже или ремонте с ними имеют дело специально обученные мастера . Вывод . Достаточно простой, но качественной пайки, где-то посередине вывода . КМК
    • Привет всем! Принесли плату управления для насоса лодки. Говорят, перепутали плюс-минус Вот, восстановил. Был пробит мосфет от диода дорожка шла на среднюю ногу. Эта D стоял мосфет Nce3080k, а вот Q4 какой стоял Транзистор SMD P канальный или N или PNP какой мог стоять Да и реле, наверное, тоже. Кирдык пришёл.
    • Ага, особенно, если учесть, что в большинстве случаев питание юсб напрямую висит на пятивольтовой линии блока питания. Той самой, на которой порядка двадцати!!! Ампер.
    • Тот неловкий момент, когда чуствуешь себя слепым...  @Noctiss Подключайте минус батарейки к Gnd на разъеме питания защиты.
    • Мне еще страннее, вчера реле подтянулось на 0,97вольта, защита не работала, аж сопруха дымилась. Плюнул ушел спать. Сегодня пришел после работы , собираю как было, выставил нужное U но уже на 1,1вольта. убрал нагрузку, сработка защиты от кроны на ура, подкинул нагрузку 4,3 ома, дал с АКБ от шурика, так же мгновенно отрабатывают. От что было, не понятно.... ничего не менял....  В целом Вам еще раз мое почтение и благодарность за помощь и за схему... тех решение отличное....  З.Ы. первичный запуск на проверку КЗ в целом работает и при выкороченном и не при выкороченном вводе. З.Ы.2 При сработке защиты от напряжения на входе, так же вспыхивает светодиод наличие сигнала, при снятии медленно гаснет. Если есть нагрузка но вспыхивает кратковременно и еле видно... Просто наблюдение. Видать особенность схемы ни на, что не влияющая и ничего не мешающая. 
    • Я вот эту использую двухкомпонентную.  
    • Короче это и правда был виноват тот транзистор,поставил двух затворный полевик от блока приемного от телевизора,V64 код на нем,с ним все зароботало более мение но возбуды преследуют если без заземления и антенны пользоваться,принемает одну англоязычную станцию какую-то,но изберательность низковата как для полевика,и при очень мощном входном сигнале незнаю что с ним происходит (что-ли первый или второй каскад УВЧ не роботает при большом входном сигнале) он просто нечего не делает и слышно гул 50 герц и все,но возбуд из за того что наверное провода по 2 см в УВЧ части,но возбуждается именно 2 каскад на s9018 потомучто если там брать больше 100 hfe транзистор то вообще мракобесие начинается 
×
×
  • Создать...