категории: Микроконтролер вериги
Брой преглеждания: 18998
Коментари към статията: 0
Свързване на аналогови сензори към Arduino, датчици за четене
Сензорите се използват за измерване на количества, условия на околната среда и реакции на промени в състояния и позиции. На изхода им може да има както цифрови сигнали, състоящи се от единици и нули, така и аналогови, състоящи се от безкраен брой напрежения в определен интервал.
За сензорите
Съответно сензорите са разделени на две групи:
1. Цифров.
2. Аналог.
За да се четат цифрови стойности, в нашия случай могат да се използват както цифрови, така и аналогови входове на микроконтролера Avr на дъската Arduino, Аналоговите сензори трябва да бъдат свързани чрез аналогово-цифров преобразувател (ADC). ATMEGA328, именно той е инсталиран в повечето ARDUINO платки (повече за това има статия на сайта), съдържа във веригата си вграден ADC. На разположение са най-много 6 аналогови входа.
Ако това не е достатъчно за вас, можете да използвате допълнителен външен ADC за свързване към цифрови входове, но това ще усложни кода и ще увеличи обема му, поради добавянето на алгоритми за обработка и ADC контрол. Темата за аналогово-цифровите преобразуватели е достатъчно широка, че можете да направите отделна статия или цикъл за тях. По-лесно е да използвате дъска с голям брой от тях или мултиплексори. Нека да разгледаме как да свържем аналогови сензори към Arduino.
![Свързване на аналогови сензори към Arduino, отчитане на показанията на сензора Свързване на аналогови сензори към Arduino, отчитане на показанията на сензора](https://e.imadeself.com/uploads/posts/2018-02/1519826538_41.jpg)
Обща схема на аналогови сензори и тяхната връзка
Сензорът дори може да бъде конвенционален потенциометър. Всъщност това е резистивен датчик за положение, на този принцип те осъществяват контрол на нивото на течностите, ъгъла на наклон, отваряне на нещо. Тя може да бъде свързана с ардуино по два начина.
![Обща схема на аналогови сензори и тяхната връзка Обща схема на аналогови сензори и тяхната връзка](https://e.imadeself.com/uploads/posts/2018-02/1519826555_1.png)
Веригата по-горе ви позволява да четете стойности от 0 до 1023, поради факта, че цялото напрежение пада на потенциометъра. Тук работи принципът на разделителя на напрежението, при всяко положение на двигателя напрежението се разпределя линейно върху повърхността на резистивния слой или в логаритмична скала (зависи от потенциометъра), че частта от напрежението, която остава между изхода на плъзгача (плъзгащ се контакт) и земята (gnd), стига до входа. На дъската тази връзка изглежда така:
![Схема на свързване на аналогови сензори Схема на свързване на аналогови сензори](https://e.imadeself.com/uploads/posts/2018-02/1519826545_2.jpg)
Вторият вариант е свързан според класическата съпротивителна разделителна верига, тук напрежението в точката на максимално съпротивление на потенциометъра зависи от съпротивлението на горния резистор (на фигура R2).
![Класически резистивен делител Класически резистивен делител](https://e.imadeself.com/uploads/posts/2018-02/1519826504_3.png)
По принцип резистивният делител е много важен не само в областта на работа с микроконтролери, но и в електрониката като цяло. По-долу виждате общата схема, както и изчислените съотношения за определяне на стойността на напрежението на долната част на рамото.
![Схема и конструктивни връзки за определяне на стойността на напрежението на долната част на рамото Схема и конструктивни връзки за определяне на стойността на напрежението на долната част на рамото](https://e.imadeself.com/uploads/posts/2018-02/1519826516_4.jpg)
Такава връзка е характерна не само за потенциометър, но и за всички аналогови сензори, тъй като повечето от тях работят на принципа на промяна на съпротивлението (проводимост) под въздействието на външни източници - температура, светлина, излъчване от различни видове и т.н.
По-долу е най-простата схема на свързване РТСпо принцип може да се направи термометър на негова основа. Но точността на неговите показания ще зависи от точността на таблицата за преобразуване на устойчивост към температура, стабилността на източника на мощност и коефициентите на промяна на съпротивлението (включително горния резистор на рамото) при същата температура. Това може да се сведе до минимум чрез избиране на оптималните съпротивления, тяхната мощност и експлоатационни токове.
![Най-простата схема за свързване на термистор Най-простата схема за свързване на термистор](https://e.imadeself.com/uploads/posts/2018-02/1519826481_5.gif)
По същия начин можете да свържете фотодиоди, фототранзистори като сензор за светлина. Фотоелектрониката намери приложение в сензори, които определят разстоянието и наличието на обект, един от които ще разгледаме по-нататък.
![Фоторезистор Фоторезистор](https://e.imadeself.com/uploads/posts/2018-02/1519826485_34.jpg)
Фигурата показва връзката на фоторезистора към ардуино.
![Схема на свързване на фоторезистора към ардуино Схема на свързване на фоторезистора към ардуино](https://e.imadeself.com/uploads/posts/2018-02/1519826494_6.png)
Софтуерна част
Преди да говоря за свързване на конкретни сензори, реших да разгледам софтуер за обработката им. Всички аналогови сигнали се четат от едни и същи портове с помощта на командата analogRead ().Заслужава да се отбележи, че Arduino UNO и други модели с 168 и 328 atmega имат 10-битов ADC. Това означава, че микроконтролерът вижда входния сигнал като число от 0 до 1023 - общо 1024 стойности. Ако смятате, че захранващото напрежение е 5 волта, тогава входната чувствителност:
5/1024 = 0,0048 V или 4,8 mV
Тоест, със стойност 0 на входа, напрежението е 0, а със стойност 10 на входа - 48 mV.
В някои случаи за преобразуване на стойностите до желаното ниво (например за предаване на изхода на ШИМ) 1024 се дели на число и в резултат на разделянето трябва да се получи необходимия максимум. Функцията на картата (източник, нисък, висок, висок, висок, нисък) работи по-ясно, където:
-
ниско - по-малък брой преди преобразуване по функция;
-
vch - горна;
-
VCh - по-ниското число след обработка от функцията (на изхода);
-
VHV - отгоре.
Практическо приложение за преобразуване на функция във входна стойност за предаване на PWM (максималната стойност е 255, за преобразуване на данни от ADC в PWM изхода, 1024 се дели на 4):
Вариант 1 - деление.
int x;
x = analogRead (пот) / 4;
// ще бъде получено число от 0 до 1023
// делим го на 4, получаваме цяло число от 0 до 255 analogWrite (led, x);
Вариант 2 - функцията MAP - отваря повече възможности, но повече за това по-късно.
void loop ()
{int val = analogRead (0);
val = карта (val, 0, 1023, 0, 255);
analogWrite (led, val); }
Или още по-кратко:
analogWrite (доведе, карта (val, 0, 1023, 0, 255))
Не всички датчици имат 5 волта на изхода, т.е. числото 1024 не винаги е удобно да се дели, за да получи същите 256 за PWM (или който и да е друг). Това може да бъде 2 и 2,5 волта и други стойности, когато максималният сигнал ще бъде например 500.
Популярни аналогови сензори
Общ изглед на сензора за arduino и неговата връзка е показан по-долу:
![Как да свържете аналогов сензор Как да свържете аналогов сензор](https://e.imadeself.com/uploads/posts/2018-02/1519826531_7.jpg)
Обикновено има три изхода, може да има четвърти - цифров, но това са функции.
Декодиране на обозначението на изходите на аналоговия сензор:
-
G - минус мощност, обща шина, земя. Може да бъде определен като GND, „-“;
-
V - плюс мощност. Може да се обозначава като Vcc, Vtg, "+";
-
S - изходен сигнал, възможна нотация - Out, SGN, Vout, знак.
Начинаещите да се научат как да четат стойностите на сензорите избират проекти от всякакъв вид термометри. Такива сензори са в дигитален дизайн, например DS18B20, и в аналогов - това са всички видове микросхеми като LM35, TMP35, TMP36 и други. Ето пример за модулния дизайн на такъв сензор на платката.
![Аналогов сензор на TMP36 Аналогов сензор на TMP36](https://e.imadeself.com/uploads/posts/2018-02/1519826505_8.jpg)
Точността на сензора е от 0,5 до 2 градуса. Изграден върху TMP36 чип, като много от неговите аналози, неговите изходни стойности са 10 mV / ° C. При 0 ° изходният сигнал е 0 V, след което се добавя 10 mV на 1 градус. Тоест при 25,5 градуса напрежението е 0,255 V, възможно е отклонение в рамките на грешката и самонагряването на IC кристала (до 0,1 ° C).
В зависимост от използваната микросхема диапазоните на измерване и изходните напрежения могат да се различават, вижте таблицата.
![Температурни диапазони и изходни напрежения на сензора Температурни диапазони и изходни напрежения на сензора](https://e.imadeself.com/uploads/posts/2018-02/1519826549_9.png)
За висококачествен термометър обаче не можете просто да прочетете стойностите и да ги покажете на LCD индикатора или сериен порт за комуникация с компютър, за стабилността на изходния сигнал на цялата система като цяло, трябва да определите средни стойности от сензори, аналогови и цифрови, в определени граници, докато без да се нарушава скоростта и точността им (има ограничение за всичко). Това се дължи на наличието на шум, смущения, нестабилни контакти (за резистивни сензори, базирани на потенциометър, вижте неизправности на сензора за вода или гориво в резервоара на автомобила).
Кодовете за работа с повечето сензори са доста обемисти, така че няма да им дам всички, те могат лесно да бъдат намерени в мрежата чрез заявка „сензор + име Arduino“.
Следващият сензор, който често използват инженерите от ардуино роботи, е линейният сензор. Тя се основава на фотоелектронни устройства, вид фототранзистори.
![Линеен датчик Линеен датчик](https://e.imadeself.com/uploads/posts/2018-02/1519826542_11.jpg)
С тяхна помощ робот, който се движи по линията (използва се в автоматизирано производство за доставяне на части) определя наличието на бяла или черна ивица. От дясната страна на фигурата се виждат две устройства, подобни на светодиоди. Единият от тях е светодиодът, той може да излъчва в невидимия спектър, а вторият е фототранзистор.
Светлината се отразява от повърхността, ако е тъмна - фототранзисторът не получава отразен поток, но ако светлината получава и се отваря. Алгоритмите, които поставяте в микроконтролера, обработват сигнала и определят правилността и посоката на движение и ги коригират. Оптичната мишка, която най-вероятно държите в ръката си, докато четете тези редове, е подредена по подобен начин.
Ще допълня със съседен сензор - датчик за разстояние от Sharp, използва се и в роботиката, както и в условия за наблюдение на положението на обекти в пространството (със съответната TX грешка).
![Сензор за рязко разстояние Сензор за рязко разстояние](https://e.imadeself.com/uploads/posts/2018-02/1519826558_12.jpg)
Работи на същия принцип. Библиотеки и примери за скици и проекти с тях са достъпни в голям брой на сайтовете на Arduino.
заключение
Използването на аналогови сензори е много просто и с лесния за усвояване език за програмиране на Arduino бързо научавате прости устройства. Този подход има значителни недостатъци в сравнение с цифровите аналози. Това се дължи на голямото различие в параметрите, което създава проблеми при подмяната на сензора. Може да се наложи да редактирате изходния код на програмата.
Вярно е, че отделните аналогови устройства включват източници на референтно напрежение и стабилизатори на тока, което има положителен ефект върху крайния продукт и повторяемостта на устройството при масовото производство. Всички проблеми могат да бъдат избегнати с помощта на цифрови устройства.
Цифровата схема като такава намалява необходимостта от настройка и настройка на веригата след монтажа. Това ви дава възможност да сглобите няколко идентични устройства на един и същ изходен код, детайлите на които ще дават едни и същи сигнали, с резистивни сензори това е рядкост.
Вижте и на нашия уебсайт:Свързване на външни устройства към Arduino
Вижте също на e.imadeself.com
: