Считывание показаний датчиков с помощью Arduino

Добавлено 1 октября 2017 в 13:25

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

Датчики – это устройства, которые преобразуют физические величины, например, яркость света или температуру, в электрическую величину. Например, термопара выдает напряжение, пропорциональное её температуре. Существует множество различных датчиков:

  • датчик освещенности;
  • датчик движения;
  • датчик температуры;
  • датчик магнитного поля;
  • датчик силы тяжести;
  • датчик влажности;
  • датчик вибрации;
  • датчик давления;
  • датчик электрических полей;
  • звуковой датчик;
  • датчик положения.

Эти датчики используются в тысячах различных применений, включая промышленность, машины, космонавтику, автомобили, медицину и робототехнику.

Эксперимент 1: датчик расстояния

В этом эксперименте мы будем использовать датчик расстояния Sharp GP2Y0A21YK для управления яркостью светодиода.

Инфракрасный (IR) датчик SHARP
Инфракрасный (IR) датчик SHARP

Необходимые комплектующие

  • 1 x Arduino Mega2560;
  • 1 x макетная плата;
  • 1 x светодиод;
  • 5 x перемычка;
  • 1 x резистор 470 Ом;
  • 1 X датчик расстояния Sharp GP2Y0A21YK.

Схема соединений

Схема соединений
Схема соединений

Датчик расстояния Sharp может обнаруживать объекты на расстояниях от 10 до 80 см. Он излучает импульс инфракрасного света, а затем определяет угол, на котором отражается этот свет. Чем дальше объект, тем ниже выходное напряжение. Если датчик не принимает отраженный свет, то напряжение на его выходе составит 0 В. Если объект находится на расстоянии 10 см или ближе, выходное напряжение будет равно 5 В (в этом эксперименте мы подаем на датчик напряжение питания 5 В).

Выход датчика подключается к аналоговому входу Arduino. Аналого-цифровой преобразователь (ADC) Arduino затем преобразует это напряжение в значение от 0 до 1023. Затем это значение преобразуется в значение от 0 до 255, и это число используется для установки коэффициента заполнения сигнала на широтно-модулированном (ШИМ) выходе, который управляет яркостью светодиода. В результате, чем ближе объект к датчику расстояния, тем ярче светит светодиод.

Код

const int pwm = 2  ;  // определение вывода для ШИМ
const int adc = A0 ;  // определение вывода для АЦП

void setup()
{
  pinMode(pwm,OUTPUT) ;  // настроить вывод, подключенный к светодиоду, на выход
}

void loop()
{
  int sensor_val = analogRead(adc);

  /*
   ----------- функция map ------------
   Данная функция масштабирует выходное значение АЦП, который
   является 10-битным и выдает значения от 0 до 1023,
   в значения от 0 до 255 для функции analogWrite,
   которая принимает значения только в диапазоне от 0 до 255.
  */
  sensor_val = map(sensor_val, 0, 1023, 0, 255); 
  
  analogWrite(pwm, sensor_val); // установить значение датчика в ШИМ
}

Видео

Эксперимент 2: датчик температуры

В этом эксперименте Arduino будет измерять температуру с помощью микросхемы датчика LM35. LM35 – это низковольтная микросхема, которая требует питания постоянным напряжением от +4 до +20 вольт. Это идеально, потому что мы можем подключить датчик к выводу +5V на плате Arduino. LM35 имеет всего 3 вывода: два для питания и один для аналогового выхода. Выходной вывод представляет собой аналоговый выход, напряжение на котором линейно пропорционально температуре в градусах Цельсия. Выходной сигнал находится в диапазоне от 0 до 1,5 вольта. Выходное напряжение 9 В соответствует температуре 0°C, и при каждом повышении температуры на один градус оно увеличивается на 10 мВ. Чтобы преобразовать выходное напряжение в температуру, вам необходимо просто разделить выходное напряжение в мВ на 10. Например, если выходное напряжение равно 315 мВ (0,315 В), температура равна 31,5°C.

Назначение выводов микросхемы LM35

Назначение выводов микросхемы LM35
Назначение выводов микросхемы LM35

Необходимые комплектующие

  • 1 x датчик температуры LM35;
  • 2 x светодиод;
  • 1 x коробок спичек;
  • 2 X резистор 470 Ом;
  • 1 x Arduino Mega2560;
  • 1 x макетная плата;
  • 10 x перемычка.

Схема соединений

Схема соединений
Схема соединений

Код

Выходной вывод LM35 (вывод 2) подключен к выводу A0 Arduino. Код использует функцию analogRead() для преобразования выходного напряжения в число между 0 и 1023. Умножение этого числа на 0.48828125 преобразует его в градусы Цельсия, которые и отображаются в мониторе последовательного порта.

const int adc = 0;  // назначение вывода 0 для работы с АЦП
const int high = 8; // для включения и выключения желтого светодиода
const int low = 9;  // для включения и выключения зеленого светодиода

void setup()
{
  Serial.begin(9600);    // запуск последовательного порта на скорости 9600
  pinMode(high, OUTPUT); // установка выводов светодиодов в режим выхода
  pinMode(low, OUTPUT);
}

void loop()
{
  // чтение аналогового напряжения и сохранение его как целое число
  int adc = analogRead(0);
  // преобразование показаний датчика в градусы Цельсия
  adc = adc * 0.48828125;

  Serial.print("TEMPRATURE = "); // вывод в монитор последовательного порта
  Serial.print(adc);             // показания температуры
  Serial.print("*C");            // TEMPRATURE = 27*C
  Serial.println();              // закрыть строку
  delay(1000);                   // задержка 1 секунда

  /*
   ЛОГИКА:
   если (температура (adc) > 70°C)
     зажечь желтый светодиод
     погасить зеленый светодиод
   иначе
     погасить желтый светодиод
     зажечь зеленый светодиод
  */
  if(adc > 70)
  {
    digitalWrite(high, HIGH);
    digitalWrite(low, LOW);
  }
  else
  {
    digitalWrite(high, LOW);
    digitalWrite(low, HIGH);
  }
}

Видео

Теги

ArduinoДатчикДатчик расстоянияДатчик температурыИзмерениеИзмерение температурыРасстояниеТемпература

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.