Jump to content
2a420

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

Recommended Posts

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

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

Share this post


Link to post
Share on other sites
2 часа назад, mazzi сказал:

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

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

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

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

Share this post


Link to post
Share on other sites

Особенности схемотехники и трассировки печатных плат для STM32WB55

Разработка новых устройств на базе беспроводного микроконтроллера STM32WB от STMicroelectronics может быть сделана в короткий срок, если выполнять некоторые важные правила и воспользоваться готовыми конструктивными решениями и рекомендациями инженеров ST.

Читать статью

Закоротить резистор 100 Ом. Или вместо резистора запаять перемычку.

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
                     

CoolGaN - на предельной скорости коммутации!

Решения на галлий-нитриде (GaN) обладают фундаментальными преимуществами перед кремнием. В частности, имея более высокую критическую напряжённость электрического поля, в сравнении с традиционными кремниевыми транзисторами, транзисторы на основе галлий-нитрида обладают выдающимися динамическими характеристиками, что позволяет коммутировать их на высоких частотах. Семейство CoolGaN™ – это именно то, что необходимо, чтобы поднять ваши устройства на принципиально новый уровень. Мы собрали все самые интересные материалы по данной теме на одной странице.

Читать статьи

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

А тут все еще интересно, жизнь кипит :)

Может легче будет в режиме Голоса или скайпа, быстрее решиться вопрос.

Share this post


Link to post
Share on other sites

Может.но я не использую этот способ.Здесь то почему нельзя?Жизнь хоть какая то шевелится)))

Share this post


Link to post
Share on other sites

Получается, что с короткими проводами работает, а с длинными нет? Я правильно понял?

Share this post


Link to post
Share on other sites

провода те же. скетчи разные.

Edited by 2a420

Share this post


Link to post
Share on other sites

Я достал такую же ардуино, попробую у себя, потом отпишусь.

Share this post


Link to post
Share on other sites

328-я имеет фьюз CKDIV8, запрограммированный производителем. Проверьте, возможно из-за него тайминги "ушли".

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

так может корректный скетч дадите я тоже попробую?

Share this post


Link to post
Share on other sites
#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();
  }
}

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

Share this post


Link to post
Share on other sites

А я бы с измерением температуры поступал бы как здесь

И меньше бы памяти съедалось у Ардуины на библиотеки onewire

Share this post


Link to post
Share on other sites

Какой смысл экономить память если задача и так маленькая?

Share this post


Link to post
Share on other sites

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

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

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

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

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

Edited by 2a420
ошибка

Share this post


Link to post
Share on other sites

Контраст может покрутить. Либо данные не приходят. Мод с подключением напутано или обрыв где

Share this post


Link to post
Share on other sites
13 часа назад, 2a420 сказал:

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

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

Share this post


Link to post
Share on other sites

Я писал для ардуино нано и вывод должен быть на терминал компьютера. Как работает в указанном мной составе?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Конденсатор, что последовательно с резистором уже выпаял и проверил - в порядке, но всёравно заменю. Что там по вч творится, сейчас посмотреть не смогу. Осциллограф далеко. Что там стоит проверить? Ну конденсаторы в первую очередь это понятно, что ещё так может "подсдохнуть", что вроде работает, но не совсем? С тем что дежурка раньше могла греться это понятно, но смущает, что ШИМ и при тесте грелся заметно, хотя там у меня нагрузки на дежурку по сути вообще не было. Может стоит её под нагрузкой проверить? Какие токи там считаются допустимыми?
    • Было такое, через недели 2-3 снова появилась полоса. Так что способ имеет право на жизнь, но только для себя, продлить агонию матрицы.  Почему тут пишут, что так нельзя делать - не пойму. Ведь матрица все равно уже не рабочая! Вот посте такого ремонта отдавать моник клиенту, без его одобрения такого ремонта - это да, нельзя.
    • Государство поддержит эти рухнувшие банки, как уже было с банком "Открытие", которому государство гредитануло триллиончик рублей пару лет назад.   Ну так что делать-то предлагаешь? - мультиками гадов закидывать или исками, как котенок рекомендует?
    • ну предположим что это PIC10F200-I/OT , чем это поможет? ТС ее красным маркером закрасил
    • Я один не вижу на фото микросхему?
    • Фейкомёты тролли занимаются дискредииацией темы военной экспансии китая. Видимо, есть что скрывать. Смешно читать комментарии идиотов, которые не подозревают как их дурачит геббельс-канал. Разоблачители тупые..  
    • Напряжение на входе в моник 19.1, стабильно.  
×
×
  • Create New...