Калибровка аналогового датчика для Arduino

Схема
Аналоговый датчик (например, потенциометр, датчик света) подключается к аналоговому входу 2. Светодиод на цифровой выход 9.



Соедините светодиодный цифровой вывод 9 с резистором 220 Ом для ограничения тока. Подключите фотоэлемент к выводу 5, а затем к аналоговому выводу 0 с резистором 10 кОм в качестве подтягивающего на землю.

Электрическая схема



Программа
До установки, необходимо задать начальные значения минимального и максимального уровня,вот так:
int sensorMin = 1023; // минимальное значение
int sensorMax = 0; // максимальное значение

Они могут показаться обратными. Первоначально, вы устанавливаете высокий уровень и читаете значение ниже, сохраняя его как новый минимум. Кроме того, вы установите максимально низкий и будете считывать что-нибудь выше, новый максимум, вот так:
// калибровка на протяжении 5с
while (millis () < 5000) {
sensorValue = analogRead (sensorPin);
// установим максимальное значение
if (sensorValue > sensorMax) {
sensorMax = sensorValue;
}
// установим минимальное значение
if (sensorValue < sensorMin) {
sensorMin = sensorValue;
}
}
Таким образом, любые дальнейшие показания могут быть сопоставлены в диапазоне между этим минимальным и максимальным:
// применим калибровку
sensorValue = map (sensorValue, sensorMin, sensorMax, 0, 255);
Вот целая программа:
/ *
Калибровка
Демонстрируется одна методика калибровки датчика.
Схема:
* аналоговый датчик (потенциометр например): аналоговый вход 0
* светодиод: цифровой пин 9 и к земле
http://arduino.cc/en/Tutorial/Calibration
*/
// Эти константы не будут изменятся:
const int sensorPin = A0; // вывод к которому подключен датчик
const int ledPin = 9; // вывод к которому подключен светодиод
// переменные:
int sensorValue = 0; // значение датчика
int sensorMin = 1023; // минимальное значение датчика
int sensorMax = 0; // максимальное значение датчика
void setup () {
// подключаем светодиод как индикатор начала работы:
pinMode (13, OUTPUT);
digitalWrite (13, HIGH);
// калибровка на протяжении 5 с
while (millis () < 5000) {
sensorValue = analogRead (sensorPin);
// установим максимальное значение
if (sensorValue > sensorMax) {
sensorMax = sensorValue;
}
// установим минимальное значение
if (sensorValue < sensorMin) {
sensorMin = sensorValue;
}
}
// выключим светодиод вконце
digitalWrite (13, LOW);
}
void loop () {
// считываем информацию с датчика:
sensorValue = analogRead (sensorPin);
// применяем калибровку
sensorValue = map (sensorValue, sensorMin, sensorMax, 0, 255);
// если значение сенсора вышло за пределы калибровки
sensorValue = constrain (sensorValue, 0, 255);
// включить светодиод по калибровочному значению:
analogWrite (ledPin, sensorValue);
}

0 комментариев

Ваше имя: *
Ваш e-mail: *
Войти через
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Введите два слова, показанных на изображении:
© 2010-2017 Все права соблюдены.