Светодиод, который можно потушить как свечку на Ардуино Уно

Светодиоды предназначены обычно для света, но они также могут быть удивительно способными датчиками. Используя только Arduino UNO, светодиод и резистор, мы сможем создать светодиодный анемометр, который измеряет скорость ветра и отключает светодиод в течение 2 секунд, когда он обнаруживает, что вы дуете на него.

Вы можете использовать этот проект, чтобы сделать интерфейсы, управляемые дыханием, или даже электронную свечу, которую вы можете потушить! Вот как это работает:

Шаг 1. Комплектующие

Начинаем с комплектующих для нашего Ардуино Уно анемометра. Их не так много :

  • Arduino UNO (с USB-кабелем для подключения к вашему компьютеру);
  • 220 Ом резистор;
  • Желтый светодиод 5 x 12v 0402;
  • Коннекторы.

Вам также понадобятся:

  • Компьютер для запуска среды Arduino;
  • Arduino IDE;
  • Базовое паяльное оборудование и навыки пайки.

Шаг 2. Как это работает?

Когда вы пускаете ток через светодиод, его температура повышается. Количество нагревов зависит от того, насколько эффективно вы его охлаждаете. Когда вы дуете на горячий светодиод, дополнительное охлаждение снижает рабочую температуру. Мы можем это обнаружить, потому что падение напряжения в прямом направлении светодиода увеличивается по мере его охлаждения.

Схема очень проста и очень похожа на управление светодиодом.

Единственное отличие состоит в том, что мы добавим дополнительный провод для измерения падения напряжения светодиода, когда он включен. Для правильной работы, нужно использовать очень маленький светодиод (предлагаем использовать светодиод для поверхностного монтажа 0402), соединенный самыми тонкими проводами.

Это позволит светодиоду нагреваться и охлаждаться очень быстро и минимизировать потерю тепла через провода. Изменения напряжения, которые мы ищем, всего лишь милливольты - на самом краю того, что может быть надежно обнаружено через аналоговые выводы UNO. Если светодиод взаимодействует с чем-то что отводит тепло, возможно он не сможет достаточно нагреться, поэтому все лучше всего работает, если он поднят в воздух.

Шаг 3. Готовим светодиод и резисторы к подключению к Arduino UNO

Пайка очень тонких проводов к очень маленьким светодиодов требует достаточную квалификацию. К счастью, вы можете просто купить предварительно подключенные светодиоды 0402. Они часто поставляются с резистором (покрытый термоусадочной пленкой на снимке), размер которого подходит для 12 В.

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

Провода слишком тонкие, чтобы сделать хорошую связь с выводами Arduino, поэтому нам нужно припаять их к чему-то более толстому. Мы использовали хедеры отколовшиеся от платы, чтобы сделать соединения, но вы можете использовать что-то на свое усмотрение. Обратный (катодный) провод от светодиода припаивается к одному из коннекторов. Красный (анодный) провод должен быть припаян к изогнутому резистору, как показано на рисунке. Обрежьте провода на резисторе равной длины и припаяйте их к двум соседним штырям, как показано на рисунке.

Шаг 4. Схема соединения

Подключите светодиод / резистор, как показано на схеме выше или на фото ниже. Сторона резистора, подключенного к красному светодиодному проводу, идет на A0. Таким образом мы измеряем напряжение на светодиоде, используя возможности аналогового ввода.

Другая сторона резистора идет на A1, который мы будем использовать в качестве цифрового выхода, устанавливая его для включения светодиода. Черный провод должен быть подключен к GND. Любой из контактов Arduino GND можно использовать.

Шаг 5. Код проекта

Скачать или скопировать код проекта свечки-анемометра ниже:

// Blow Out LED Ave creates an LED that you can blow out. It automatically relights after 2 seconds
//
// Copyright 2018, Paul H. Dietz

// LED Connections
#define PLUS A1               // High side of the resistor
#define MEASURE A0            // Low side of resistor and anode of LED
// Cathode of LED goes to ground

#define NUMSAMPLES 10         // Number of samples to keep
#define MINJUMP 150           // Minimum jump for blow out

long int sensedata[NUMSAMPLES];
int dataptr = 0;
int buffull = 0;

void setup() {
  Serial.begin(250000);                     // Initialize serial communication
  pinMode(MEASURE, INPUT);
  pinMode(PLUS, OUTPUT);
  digitalWrite(PLUS, HIGH);                 // Turn on the LED
}

void loop() {
  int cnt;
  long int sum = 0;

  // Sum 256 adc readings (to reduce adc noise)
  for (cnt = 0; cnt < 256; cnt++) {
    sum = sum + analogRead(MEASURE);
  }
  
  Serial.println(sum);                      // Output sum so we can watch with Serial Plotter

  // Compare current measurement to oldest if buffer full
  if (buffull && (sum > (sensedata[dataptr] + MINJUMP))) {
    // Temperature drop exceeded minimum - turn off
    digitalWrite(PLUS, LOW);
    dataptr = 0;                            // Reinitialize the buffer
    buffull = 0;
    delay(2000);                            // off time for LED
    digitalWrite(PLUS, HIGH);
  }
  else {
    sensedata[dataptr] = sum;               // Store the latest data in the buffer
    dataptr++;                              // Update buffer pointer
    if (dataptr == NUMSAMPLES) {            // Check if dataptr went past end
      dataptr = 0;                          // Reset the dataptr to beginning
      buffull = 1;                          // Mark that buffer is full
    }
  }
}

Скачайте/скопируйте код и откройте его в среде Arduino IDE. Затем вы можете загрузить его в саму Arduino.

Программа сначала устанавливает направления выводов и загорается светодиод. Затем она измеряет прямое падение напряжения светодиода через аналоговый сигнал на выводе A0. Чтобы повысить точность измерения, мы быстро считываем напряжение 256 раз и суммируем результат.

Это может увеличить эффективное разрешение преобразования, чтобы мы могли видеть изменения, которые меньше наименьшего шага на конвертере. Если буфер данных sensedata[] заполнен, мы сравниваем последнюю сумму с самой старой, которая хранится в буфере, чтобы увидеть, вызвало ли недавнее охлаждение напряжение светодиода не менее MINJUMP. Если это не так, мы храним сумму в буфере, обновляем указатель буфера и начинаем следующее измерение. Если есть, мы выключаем светодиод на 2 секунды, перезагружаем буфер, а затем снова запускаем процесс.

Чтобы лучше понять, что происходит, мы записываем каждую сумму в виде последовательных данных и используем последовательный плоттер Arduino IDE (в меню Tools), чтобы графически отображать напряжение светодиода, когда оно изменяется со временем. Не забудьте установить скорость передачи в бодах до 250000, чтобы соответствовать программе. Затем вы сможете увидеть, как напряжение падает, когда светодиод прогревается после включения. Это также покажет, насколько чувствительна система. После того, как светодиод погаснет, он немного охладится к тому времени, когда он снова включится, что вы увидите как скачок на графике.

Шаг 6. Заключение

Когда код запущен, вы сможете потушить свой светодиод, быстро подув на него. Мы обнаружили, что можно потушить светодиод с расстояния более 1 метра! В некоторых комнатах воздушные потоки могут вызывать ложные срабатывания. Если это проблема, вы можете снизить чувствительность вашей системы, увеличив значение MINJUMP. Серийный плоттер может помочь вам визуализировать то, что может быть подходящим для вашего приложения.

Вы можете заменить светодиод другим цветом. Белые светодиоды работают особенно хорошо. Поскольку они имеют более высокое падение напряжения, вам нужно будет изменить значение сопротивления, чтобы получить правильный ток. Учитывая возможности Arduino UNO, делайте ток в диапазоне 10-15 мА. Для белого светодиода 100 Ом является хорошей отправной точкой.

Поскольку UNO имеет 6 аналоговых входных контактов, вы можете легко изменить этот код для поддержки 6 независимых светодиодных анемометров! Это позволяет создавать простые интерфейсы, которые могут распознавать, когда вы дуете в разных направлениях. Это может быть невероятно полезно при создании интерфейсов для инвалидов, выразительных контроллеров для музыкантов или даже для тортов на день рождения со многими электронными свечами!

22 августа 2018 в 14:47 | Обновлено 7 декабря 2019 в 00:12 (редакция)
Опубликовано:
Уроки, ,

Добавить комментарий

Ваш E-mail не будет никому виден. Обязательные поля отмечены *