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

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


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

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

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

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

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

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

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

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

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

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

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

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

7 минут назад, 2a420 сказал:

в мониторе 0.03

Я не давно случайно воткнул "data" DS18B20 в выход МК с работающим PWM, потом подключил в нужный пин и кажет тоже -0.03 всегда. Так что неисправен датчик скорее всего

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

флюс - спиртоканифоль

в общем так:

выковырил я датчики - собрал по самой простой схеме  для датчиков этого типа с резистором на 4.7 ком  на плате нано залил скетч из примеров.

поочередно менял датчики и наблюдал показания в мониторе порта.показания нового и датчиков из собранной схемы практически никак не отличаются.

единственное что мне показалось странным это то что при удерживании датчиков в пальцах минут 5 в мониторе порта показывает 32.13 градусов.при опускании в снег показывает 6.56 градусов.

вот так вот.

какие мысли,?

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

ВОТ

#include <OneWire.h>

// OneWire DS18S20, DS18B20, DS1822 Temperature Example
//
// http://www.pjrc.com/teensy/td_libs_OneWire.html
//
// The DallasTemperature library can do all this work for you!
// http://milesburton.com/Dallas_Temperature_Control_Library

OneWire  ds(10);  // on pin 10 (a 4.7K resistor is necessary)

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;
  
  if ( !ds.search(addr)) {
    Serial.println("No more addresses.");
    Serial.println();
    ds.reset_search();
    delay(250);
    return;
  }
  
  Serial.print("ROM =");
  for( i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr, HEX);
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return;
  }
  Serial.println();
 
  // the first ROM byte indicates which chip
  switch (addr[0]) {
    case 0x10:
      Serial.println("  Chip = DS18S20");  // or old DS1820
      type_s = 1;
      break;
    case 0x28:
      Serial.println("  Chip = DS18B20");
      type_s = 0;
      break;
    case 0x22:
      Serial.println("  Chip = DS1822");
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  } 

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end
  
  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.
  
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  Serial.print("  Data = ");
  Serial.print(present, HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data = ds.read();
    Serial.print(data, HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print(OneWire::crc8(data, 8), HEX);
  Serial.println();

  // Convert the data to actual temperature
  // because the result is a 16 bit signed integer, it should
  // be stored to an "int16_t" type, which is always 16 bits
  // even when compiled on a 32 bit processor.
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let's zero them
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    //// default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, ");
  Serial.print(fahrenheit);
  Serial.println(" Fahrenheit");

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

#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 / 16.0;
       Serial.print("  Temperature1= ");
       Serial.print(temperature1);
       Serial.print(" Celsius, ");
    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 / 16.0;
       Serial.print("  Temperature2= ");
       Serial.print(temperature2);
       Serial.print(" Celsius, ");
    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 / 16.0;
       Serial.print("  Temperature3= ");
       Serial.print(temperature3);
       Serial.print(" Celsius, ");
    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();
  }
}

Лови.

 

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

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

Был в отьезде по работе только вот дома появился .скорее всего получится тестировать только завтра.как только проверю отпишу сразу.

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • Здравствуйте, более 10 лет назад была куплена эта АС - Magnat SoundForce 2300   Сопротивление: 4 - 8 Ом Чувствительность: 96 дБ Количество динамиков: 6 Количество полос: 4 Размер ВЧ: 2 х 100 х 75 мм Размер СЧ: 265 х 110 + 220 х 95 мм Размер НЧ: 2 x 330 мм Фазоинвертор: есть Рекомендуемая мощность: 300 - 800 Вт Частотный диапазон: 25 - 25000 Гц ЧЕстно признаться практическине слушал, н от чтобы на полную, даже 50%мощности не подводил к ним, только изредка, в первы несколько лет после постройки УНЧ ОМ2 послушал немного и так и остались стоять то в одном то в другом углу дома. Решил выставить на продажу, звонили, спрашивали, интересовались, месяц прошел, прослушку делал на одной колонке, сегодня решил оба подрубить, кабеля от УНЧ разные, один ПВС 2х0.75 10м, второй от пылесоса. Заметил что одна колонка верхний диапазон отыгрывает чище приятнее, думал в проводах дело, перекинул - ничего не изменилось. потом понял что на одной колонке не играют СЧ.. открутил и в общем такое дело что на одном ВЧ тихо играют на другом СЧ. ПРогблема в том, что там рупоры стоят без опознавательных надписей и номеров. Я так полагаю такие купить заказать отдельно невозможно. Встал вопрос как подпрапвить СЧ и ВЧ на этих колонках Одну СЧ вынуть не могу - резьба посажена на клей, снять разогревом? Внутренности выглядят отвратительно.. Признаться на удивыление звучат не так ужасно как кажется)) хотя и эстрадники. == 1) Можно ли где то лостать купить рупоры сч вч для этой АС? 2) Если нет что можно поставить взамен этих рупоров? 3) стоит ли изнутри обить войлоком или ватой? 4) как открутить рупор по резьбе от основания? Резьба залита чем то мутным белым, полагаю клеевым пистолетом. Чем вообще можно заменить эти элементы СЧ и ВЧ? Какие то зуммеры там, а не динамики даже) Все звуковые излучатели подключены в параллель и почему то такими тонкими проводками
    • А зачем "изобретать велосипед", и набивать шишек там, где можно использовать уже готовое решение. Или это очередной студент "из отстающих", которому нужно "решить задачку чтобы получить зачет"? И какой тогда из него инженер получится, если такой примитив является проблемой... Возьмите TL494 или его примерный аналог KA7500, двухтактный выход по 200ма на канал, те же частоты как требуется, защита от КЗ и другие плюшки. И даже есть готовая полная схема в одном из даташитов, но не везде (если очень нужно будет, могу порыться в архивах).
    • Однозначно! Стоки должны быть на +. Вот так с номиналами автора Вот так предлагается уменьшить ведерность Если ведерность и присутствовала, то точно не из-за номиналов, предложенных автором. Причину нужно искать, где-то в другом месте.
    • Конечно с подключенной. А как без нагрузки? Пожечь всё к чертям. На счёт цифер, что спектра показала то и отскринил. Ничего не подрисовывал. Alex, последний график это мои потуги снять АЧХ с вычетом АЧХ звуковухи. Сам не совсем въехал в этот метод, вернее настройки для него. Вот что то нарисовалась, сам не знаю как. А делал и крутил только подстроечники первой лампы и баланс выходных. Пока прогреваю, но немного ток поднял. Сейчас в зависимости от усиления  ток по 47-55 ма. Напряжение катод анод - 349 вольт. Ток больше делать пока побаиваюсь, что бы в саморазогрев не ушли, пусть прокалятся часов 10 хотя бы. 
    • Мне прибор достался в ещё худшем состоянии - чип был пробит в гвоздь. После замены чипа оказалось, что пробиты ещё шесть мелких чипов (три операционника и три чипа логики), один транзистор и ещё какая-то мелочь. Причём проверяется только заменой.
×
×
  • Создать...