Блог

● Проект 13: Фоторезистор. Обрабатываем освещённость, зажигая или гася светодиоды

Опубликовано: 23.04.2018
В этом эксперименте мы познакомимся с аналоговым датчиком для измерения освещенности – фоторезистором (рис. 13.1).


Необходимые компоненты:

контроллер Arduino UNO R3;
плата для прототипирования;
• фоторезистор;
резистор 10 кОм;
резистор 220 Ом – 8 штук;    
светодиод;
провода папа-папа.


Распространённое использование фоторезистора – измерение освещённости. В темноте его сопротивление довольно велико. Когда на фоторезистор попадает свет, сопротивление падает пропорционально освещенности. Схема подключения фоторезистора к Arduino показана на рис. 13.2. Для измерения освещённости необходимо собрать делитель напряжения, в котором верхнее плечо будет представлено фоторезистором, нижнее – обычным резистором достаточно большого номинала. Будем использовать резистор 10 кОм. Среднее плечо делителя подключаем к аналоговому входу A0 Arduino.
Arduino проект www.arduino-kit.ru
Рис. 13.2. Схема подключения фоторезистора к Arduino

Напишем скетч чтения аналоговых данных и отправки их в последовательный порт. Содержимое скетча показано в листинге 13.1.

int light; // переменная для хранения данных фоторезистора
void setup()
{
Serial.begin(9600);
}
void loop()
{
light = analogRead(0);
Serial.println(light);
delay(100);
}

Порядок подключения:

1. Подключаем фоторезистор по схеме на рис. 13.2.
2. Загружаем в плату Arduino скетч из листинга 13.1.
3. Регулируем рукой освещенность фоторезистора и наблюдаем вывод в последовательный порт изменяющихся значений, запоминаем показания при полной освещенности помещения и при полном перекрывании светового потока.

Теперь создадим индикатор освещенности с помощью светодиодного ряда из 8 светодиодов. Количество горящих светодиодов пропорционально текущей освещенности. Собираем светодиоды по схеме на рис. 13.3, используя ограничительные резисторы номиналом 220 Ом.

Arduino проект www.arduino-kit.ru
Рис. 13.3. Схема подключения фоторезистора и светодиодов к Arduino

Содержимое скетча для отображения текущей освещенности на линейке светодиодов показано в листинге 13.2.

// Контакт подключения светодиодов
const int leds[]={3,4,5,6,7,8,9,10};
const int LIGHT=A0; // Контакт A0 для входа фоторезистора
const int MIN_LIGHT=200; // Нижний порог освещенности
const int MAX_LIGHT=900; // верхний порог освещенности
// Переменная для хранения данных фоторезистора
int val = 0;
void setup()
{
// Сконфигурировать контакты светодиодов как выход
for(int i=0;i<8;i++)
pinMode(leds[i],OUTPUT);
}
void loop()
{
val = analogRead(LIGHT); // Чтение показаний фоторезистора
// Применение функции map()
val = map(val, MIN_LIGHT, MAX_LIGHT, 8, 0);
// ограничиваем, чтобы не превысило границ
val = constrain(val, 0, 8);
// зажечь кол-во светодиодов, пропорциональное освещенности,
// остальные потушить
for(int i=1;i<9;i++)
{
if(i>=val) // зажечь светодиоды
digitalWrite(leds[i-1],HIGH);
else // потушить светодиоды
digitalWrite(leds[i-1],LOW);
}
delay(1000); // пауза перед следующим измерением
}

Порядок подключения:

1. Подключаем фоторезистор и светодиоды по схеме на рис. 13.3.
2. Загружаем в плату Arduino скетч из листинга 13.2.
3. Регулируем рукой освещенность фоторезистора и по количеству горящих светодиодов определяем текущий уровень освещенности (рис. 13.3).

Нижний и верхний пределы освещенности мы берем из запомненных значений при проведении эксперимента по предыдущему скетчу (листинг 13.1). Промежуточное значение освещенности мы масштабируем на 8 значений (8 светодиодов) и зажигаем количество светодиодов пропорциональное значению между нижней и верхней границами.

Листинги программ скачать
Читать далее

● Проект 12: Управляем реле через транзистор

Опубликовано: 23.04.2018

В этом эксперименте мы познакомимся с реле, с помощью которого с Arduino можно управлять мощной нагрузкой не только постоянного, но и переменного тока.

Необходимые компоненты:

контроллер Arduino UNO R3;
плата для прототипирования;
• биполярный транзистор С945;
• диод 1N4004;
• реле;
провода папа-папа.
провода папа-мама.

Реле – это электрически управляемый, механический переключатель, имеет две раздельные цепи: цепь управления, представленная контактами (А1, А2), и управляемая цепь, контакты 1, 2, 3 (см. рис. 12.1).



Цепи никак не связаны между собой. Между контактами А1 и А2 установлен металлический сердечник, при протекании тока по которому к нему притягивается подвижный якорь (2). Контакты же 1 и 3 неподвижны. Стоит отметить, что якорь подпружинен, и пока мы не пропустим ток через сердечник, якорь будет прижатым к контакту 3. При подаче тока, как уже говорилось, сердечник превращается в электромагнит и притягивается к контакту 1. При обесточивании пружина снова возвращает якорь к контакту 3.

При подключении реле к Arduino контакт микроконтроллера не может обеспечить мощность, необходимую для нормальной работы катушки. Поэтому следует усилить ток – поставить транзистор. Для усиления удобнее применять n-p-n-транзистор, включенный по схеме ОЭ (см. рис. 12.2). При таком способе можно подключать нагрузку с большим напряжением питания, чем питание микроконтроллера.
Резистор на базе – ограничительный. Может варьироваться в широких пределах (1–10 кОм), в любом случае, транзистор будет работать в режиме насыщения. В качестве транзистора может быть любой n-p-n-транзистор. Коэффициент усиления практически не имеет значения. Выбирается транзистор по току коллектора (нужный нам ток) и напряжению коллектор–эмиттер (напряжение, которым запитывается нагрузка).



Для включения реле, подключенного по схеме с ОЭ, на вывод Arduino необходимо подать 1, для выключения – 0. Подключим реле к плате Arduino по схеме на рис. 12.3 и напишем скетч управления реле. Каждые 5 секунд реле будет переключаться (включаться/выключаться). При переключении реле раздается характерный щелчок.
Содержимое скетча показано в листинге 12.1.

int relayPin = 10; // подключение к выводу D10 Arduino
void setup()
{
pinMode(relayPin, OUTPUT); // настроить вывод как выход (OUTPUT)
}
// функция выполняется циклически бесконечное число раз
void loop()
{
digitalWrite(relayPin, HIGH); // включить реле
delay(5000);
digitalWrite(relayPin, LOW); // выключить реле
delay(5000);
}


Порядок подключения:

1. Подключаем элементы к плате Arduino по схеме на рис. 12.3.
2. Загружаем в плату Arduino скетч из листинга 12.1.
3. Каждые 5 секунд происходит щелчок переключения реле если подключить контакты реле, например в разрыв подключенной к сети 220 В патрона с лампой накаливания, то увидим процесс включения/выключения лампы накаливания раз в 5 секунд (рис. 12.3).


Arduino проект www.arduino-kit.ru

Рис. 12.3
 
Листинги программ скачать
Читать далее

● Проект 11: Транзистор MOSFET. Показываем усилительные качества транзистора. На примере электродвигателя изменяем обороты

Опубликовано: 23.04.2018
В этом эксперименте мы познакомимся с транзистором MOSFET и с помощью него будем управлять мощной нагрузкой – электродвигателем.

Необходимые компоненты:

контроллер Arduino UNO R3;
плата для прототипирования;
• транзистор MOSFET IRF540;
• диод 1N4007;
• двигатель DC;
блок питания 5 В;
провода папа-папа.

Выводы Arduino, сконфигурированные как OUTPUT, находятся в низкоимпедансном состоянии и могут отдавать 40 мА в нагрузку и не в состоянии обеспечить питание мощной нагрузки и большого напряжения. Одним из способов управления мощной нагрузкой является использование полевых MOSFET-транзисторов. MOSFET-транзистор – это ключ для управления большими токами при помощи небольшого напряжения (в отличие от биполярных транзисторов, управляемых током). В нашем эксперименте мы будем управлять скоростью вращения мотора изменением напряжения, подаваемого на MOSFET. Управлять напряжением, подаваемым на MOSFET, будем с помощью ШИМ (широтно-импульсной модуляции). В эксперименте 5 мы уже рассматривали использование ШИМ для получения изменяющегося аналогового значения посредством цифровых сигналов. Для регулирования скорости двигателя будем использовать потенциометр. Схема подключения элементов для данного эксперимента показана на рис. 11.1.
Arduino проект www.arduino-kit.ru
Рис. 11.1. Схема подключения мотора к Arduino
 
Скетч данного эксперимента показан в листинге 11.1. В цикле loop() считываем аналоговое значение потенциометра и, масштабируя функцией map(), выдаем ШИМ-сигнал на MOSFET, к которому подключен мотор.

const int MOTOR=9; // Выход для подключения MOSFET
const int POT=0; // Аналоговый вход A0 для подключения потенциометра
int valpot = 0; // переменная для хранения значения потенциометра
int speedMotor = 0; // переменная для хранения скорости двигателя
void setup()
{
//
pinMode(MOTOR,OUTPUT);
}
void loop()
{
valpot = analogRead(POT); // чтение данных потенциометра
// масштабируем значение к интервалу 0-255
speedMotor=map(valpot,0,1023,0,255);
// устанавливаем новое значение ШИМ
analogWrite(MOTOR,speedMotor);
delay(1000); // пауза
}


Порядок подключения:

1. Подключаем элементы к плате Arduino по схеме на рис. 11.1.
2. Загружаем в плату Arduino скетч из листинга 11.1.
3. Крутим потенциометр – изменяем скорость вращения мотора.

Листинги программ скачать
Читать далее

● Проект 10: Управляем пьезоизлучателем: меняем тон, длительность, играем музыку

Опубликовано: 23.04.2018
В этом эксперименте мы произведем генерацию звуков на Arduino c помощью пьзоизлучателя.

Необходимые компоненты:

контроллер Arduino UNO R3;
плата для прототипирования;
пьезоизлучатель;
резистор 100 Ом;
провода папа-папа.

Самым простым вариантом генерации звука является использование пьезоизлучателя. Пьезокерамические излучатели (пьезоизлучатели) – электроакустические устройства воспроизведения звука, использующие обратный пьезоэлектрический эффект – возникновение механических деформаций под действием электрического поля. Пьезоизлучатели бывают двух типов – со встроенным генератором и без. Пьезоизлучатели со встроенным генератором излучают фиксированный тональный сигнал сразу после подачи на них номинального напряжения. Они не могут воспроизводить произвольного сигнала. Их обычно используют для простого звукового оповещения. Если требуется проиграть мелодию, то используют пьезоизлучатели без встроенного генератора и генерируют сигнал отдельно. В эксперименте мы используем пьезоизлучатель без встроенного генератора. Схема подключения пьезоизлучателя показана на рис. 10.1.

Arduino проект www.arduino-kit.ru
Рис. 10.1. Схема подключения пьезоизлучателя к Arduino

Приступим к написанию скетча. Для воспроизведения мелодии необходимо подавать последовательно звуки определенной частоты и длительности. Для генерации звуков определенной частоты и длительности будем использовать Arduino-функцию tone(): one(pin,frequency,duration); Функция tone() генерирует на выводе прямоугольный сигнал заданной частоты (с коэффициентом заполнения 50%). Функция также позволяет задавать длительность сигнала. Если длительность сигнала не указана, он будет генерироваться до тех пор, пока не будет вызвана функция noTone(). Значения частот для нот первой и второй октав представлены в табл. 10.1.


Составим мелодию понотно, занесем в массив melody[], список длительностей нот занесем в массив duration[].

Рис. 10.2. Фрагмент Имперского марша

Данные с обозначением нот занесем в массив notes[], а данные с частотами для соответствующих нот – в массив frequency[]. Содержимое скетча представлено в листинге 10.1.

// МЕЛОДИЯ – массив нот и массив длительностей
char melody[]={'G','G','G','E','H',
'G','E','H','G','*',
'd','d','d','e','H',
'T','E','H','F',
'g','G','G','g','t','e',
's','s','s','*','U','r','c','B',
'H','A','H','*','E','T','E','F',
'H','G','H','d',
'g','G','G','g','t','f',
's','s','s','*','U','r','c','B',
'H','A','H','*','E','T','E','H',
'G','E','H','G',
'%','%'};
int bb[]={8,8,8,6,2,
8,6,2,8,8,
8,8,8,6,2,
8,6,2,16,
8,6,2,8,6,2,
2,2,4,4,2,8,6,2,
2,2,4,4,2,8,6,2,
8,6,2,16,
8,6,2,8,6,2,
2,2,4,4,2,8,6,2,
2,2,4,4,2,8,6,2,
8,6,2,16,
64,64};
// подключить динамик к pin 8
int speakerPin = 8;
// темп воспроизведения, ноты, длительности
int tempo,notes,beats;
// процедура проигрыша ноты
void playNote(char note, int duration)
{
// массив для наименований нот в пределах двух октав
char names[]={'c','r','d','s','e','f','t','g','u','a','b',
'h','C','R','D','S','E','F','T','G','U','A','B', 'H','F'};
// массив частот нот
int tones[]={261,277,293,311,329,349,370,392,415,440,466,
494, 523,554,587,622,659,698,740,784,830,880,932,988};
// проиграть тон, соответствующий ноте
for (int i = 0; i < sizeof(tones); i++)
{
if (names[i] == note)
{
tone(speakerPin,tones[i],duration);
}
}
}
void setup()
{
pinMode(speakerPin, OUTPUT);
tempo=50; // скорость воспроизведения мелодии
}
void loop()
{
for(int i=0;i<sizeof(melody);i++)
{
notes=melody[i];
beats=bb[i];
if (notes == '*')
tone(speakerPin,0, beats*tempo); // пауза
else
playNote(notes, beats*tempo);
// пауза между нотами
delay(beats*tempo+tempo);
}
}

Порядок подключения:

1. Подключаем пьезоэлемент к плате Arduinoпо по схеме на рис. 10.1.
2. Загружаем в плату Arduino скетч из листинга 10.1.
3. После загрузки скетча слушаем мелодию на монтажной плате (рис. 10.3).

Листинги программ скачать
Читать далее

Главное меню

Каталог

Полезные ссылки

Цена
от
до