Реакция на изменение напряжения
- Войдите на сайт для отправки комментариев
Вс, 07/04/2013 - 14:04
Всем привет!
пожалуйста подскажите где почитать
идея такая
в зависимости от напряжения на входящем канале выдается определенная команда на исполнительную дорожку
т.е. к примеру
есть датчик высоты (обычный патонциометр) и в зависимости от того какая высота (меняется напряжение) на исполнительнуюю ножку выдается команда
Это зависит от того что именно вам нужно. В названии темы и в описании - поставлены немного разные задачи.
1. Реакция на изменения
2. В зависимости от напряжение.
Другими словами, вам нужно "если напряжение упало на 0,5V выдать команду" или "если напряжение попало в диапазон скажем от 1.5v до 2.0v выдать комманду"
если попало в диапазон такой-то, выдать такую команду
написал такую программу!
если попало в диапазон такой-то, выдать такую команду
Тогда чтение лучше всего начать с раздела Программирование в шапке сайта. И желательно целиком. Пусть не все понятно будет, но общую картину - нужно составить. И какая нибудь книжечка по программированию на C/C++ (да вообщем-то на любом языке) - тоже будет в помощ.
Вообщем для начала нужно разобратся с типами, if, циклами и т.п. базовые "строительные блоки". Хотя-бы знать какие есть. А потом осваивать их уже в процессе детально.
В вашем случае (не хочу просто срыватся еще 10-ток уточнящих вопросов "что же именно вам нужно"). Это могло бы быть что-то такое
Ну вот как-то так. Будет зажигать как только попадет в нужный диапазон (правда выключать при выходе из диапазона не будет. если нужно "выключать", то еще else digitalWrite(13,LOW) добавит нужно будет.
Можно, после чтения, сразу в вольты пересчитывать (и писать условие в вольтах). Пересчитывать исходя из того что 1023 возвращенное analogRead - соотвествует напряжению питания.
Поэтому, кстати 1.25 и 2.5 - это услоно. Если у вас дуина питается не ровно 5v, а, скажем 4.5вольтами, то диапазон - сместится. Будет уже сработка от 1.12v до 2.25v . Вообщем "нужно калибровать по реальное напряжение на 5v пине дуины".
Прикрепленные ветки - тоже нужно читать
Вставка программного кода в тему/комментарий
но почему то не работает!
Ну откуда я знаю?
1. Я не знаю как и куда вы подключили потенциометр.
2. Я не знаю чего вы ждете от этого скетча.
3. Я не знаю в чем выражается, с вашей точки зрения "не работает".
Итого: телепаты в отпуске.
P.S. А во то что догадались свой скетч показать - это хорошо. Возможно с этого стоило и начать. Плюс добавить "ожидаю что будет вот это, а выходит - вот такое".
Попробую, все-таки "протелепатировать":
918.36 ?
918.36 ?
42
918.36 ?
взято с
http://arduino.ru/Reference/AnalogRead
Напряжение поданное на аналоговый вход, обычно от 0 до 5 вольт будет преобразовано в значение от 0 до 1023, это 1024 шага с разрешением 0.0049 Вольт
т.е. 918.36*0,0049 = 4,49 В
918.36 ?
взято с
http://arduino.ru/Reference/AnalogRead
Напряжение поданное на аналоговый вход, обычно от 0 до 5 вольт будет преобразовано в значение от 0 до 1023, это 1024 шага с разрешением 0.0049 Вольт
т.е. 918.36*0,0049 = 4,49 В
Кажись я догадался что имел ввиду Александ.
Вопрос нужно было задать не так "918.36 ?", а так "918.36 ?"
Тогда сразу было-бы ясно, что это намек на то, что val у нас имеет тип int (и это правильно, так как analogRead именно его и возвращает). А значит дробная часть - тут как бы и "лишняя". val никогда не будет иметь значений типа 918.30 или 918.40, только 918 или 919.
Согласен, поэтому я переписал программу и вот что получилось
если обратить внимание, теперь сравнение идет со значением 230 потому что когда я посмотрел какие значения считаываются с потанциометра то очень удивился значения пляшут от 180 до 245 при чем когда никто ничего не меняет т.е. само по себе
программа кстати работает, и светодиоды переключаются как только условие выполняется
но если замерить вольтметром, то значения действительные оказываются в районе 4,5 вольт
отсюда вопрос почему ардуино неправильно считывает значения напряжения?
я использую функциию analogRead()
а прочитал про нее вот здесь http://arduino.ru/Reference/AnalogRead
питание я беру с 13 выхода куда подается максимальное значение напряжение, замыкаю его через патонциоментр на gnd на плате ардуино, чтобы наглядно видеть радоту патонциометра еще туда же воткнул светодиод (получается когда меняю значение патонциометра, то светодиод горит с разной яркостью)
вот последовательность подключения
идет 5В (13 выход), потом светодиод, потом патонциометр, потом провод на считывание значения напряжения, и дальше gnd
и все же не понятно почему же он начинает считывать значения из воздуха? и постоянно скачет от 180 до 245? при это патонциометр не трогается
то есть изначальная задумка такая
я считываю напряжение и в зависимости от того в каком оно диапазоне
включаю тот или иной светодиод, а остальные светодиоды отключаю
как бы начал экспереминтировать с 3 мя светодиодами
благодарая вашим комментариям получилось что программа заработала
но теперь не ясно почему значения по напряжению считываются не правильно
но теперь не ясно почему значения по напряжению считываются не правильно
Значения по напряжению как раз считываются правильно - ты подключил светодиод ч\з резистор к земле и снимаешь падение напряжения на этом резюке, да еще ч\з делитель... Дальше сам догадаешься какое там напряжение будет?
А то, что оно у тебя прыгает, ну так: нестабильность питания, нестабильность опорного напряжения, нестабильный контакт в токосьеме резюка...
питание я беру с 13 выхода куда подается максимальное значение напряжение,
Все. Стоп!!! Выключайте отключайте.
честно говоря не догадаюсь, можно немного подробнее?
я убрал светодиод но напряжение таким же осталось
честно говоря не догадаюсь, можно немного подробнее?
я убрал светодиод но напряжение таким же осталось
что не так?
питание я беру с 13 выхода куда подается максимальное значение напряжение,
Никогда нельзя "брать питание с пина". Они не предназначенны для того. Если оттуда что-то и берется - то "нормальным" считается брать ток 15-20ma. Если очень нужно, то до 40ma, ну в зависимости от корупуса камня до 80-ти иногда прокатит кратковренно.
В вашем случае - вы явно понятие не имеете какой там ток идет. Следовательно - сразу забыть.
Общие праивло: питание берем с пина 5v или vin (если питаемся от внешнего блока и там нужно, например для мотора, что-то больше 5v). Но и в этом случае следим, что-бы держатся в границах 200-300ma. 500ma - граница допустимая по стандарту при питании от USB (но не факт что все китайцы выдерживают стандарт).
"Следить" можно двумя способами. Либо мерять с помощью амперметра, либо просто "прикинуть" сопротивление нагрузки (в вашем случае минимальное сопротивление потенциометра) и дальше - гуглить "закон Ома".
А так неплохо начать с изучения примеров идущих с ArduinoIDE. Их можно найти в меню File/Examples
Или на сайте Arduino - Tutorials
Причем нужный вам пример находится в "самых базовых". В первых же ReadAnalogVoltage или AnalogReadSerial
Там вы можете увидеть как правильно подключать потенциометр.
P.S. Кстати там же можете увидеть как делать про что я писал выше "Можно, после чтения, сразу в вольты пересчитывать (и писать условие в вольтах)"
кстати, а какую опору выбирает analogRead?
питание я беру с 13 выхода куда подается максимальное значение напряжение,
Никогда нельзя "брать питание с пина". Они не предназначенны для того. Если оттуда что-то и берется - то "нормальным" считается брать ток 15-20ma. Если очень нужно, то до 40ma, ну в зависимости от корупуса камня до 80-ти иногда прокатит кратковренно.
В вашем случае - вы явно понятие не имеете какой там ток идет. Следовательно - сразу забыть.
Общие праивло: питание берем с пина 5v или vin (если питаемся от внешнего блока и там нужно, например для мотора, что-то больше 5v). Но и в этом случае следим, что-бы держатся в границах 200-300ma. 500ma - граница допустимая по стандарту при питании от USB (но не факт что все китайцы выдерживают стандарт).
"Следить" можно двумя способами. Либо мерять с помощью амперметра, либо просто "прикинуть" сопротивление нагрузки (в вашем случае минимальное сопротивление потенциометра) и дальше - гуглить "закон Ома".
А так неплохо начать с изучения примеров идущих с ArduinoIDE. Их можно найти в меню File/Examples
Или на сайте Arduino - Tutorials
Причем нужный вам пример находится в "самых базовых". В первых же ReadAnalogVoltage или AnalogReadSerial
Там вы можете увидеть как правильно подключать потенциометр.
благодарю за полезную информацию
когда все получится напишу сюда же
кстати, а какую опору выбирает analogRead?
что значит опору?
что значит опору?
эт я не у вас. это я ваще.
питание я беру с 13 выхода куда подается максимальное значение напряжение,
Все. Стоп!!! Выключайте отключайте.
все работает
подключил патонциометр по этой схеме
занчения показывает здоровые!
всех благодарю за помощь!
=)
кстати, а какую опору выбирает analogRead?
По дефолту напряжение питания.
Изменять можно c помощью analogReference(type) :
питание я беру с 13 выхода куда подается максимальное значение напряжение,
Все. Стоп!!! Выключайте отключайте.
все работает
подключил патонциометр по этой схеме
Ну и что бы закрепить знания и уменьшить вероятность криков "караул!" в будущем, советую не поленится и завершить эту лабораторную работу. Расчитать какой-же ток будет потреблять ваша нагрузка (резистор). Вначале "посчитать/прикинуть", а потом взять тестер и убедится что теория совпадает с практикой.
Для этого вам нужно
1. Узнать сопротивление вашего переменника (между ногой идущей к питанию и ногой идущей к земле. по идее, если все подключено правильно - оно не должно менятся от положения реостата). Узнать можно - либо по маркировке (если она есть), либо "знаю что покупал", либо опять-таки тестером в режиме омметра (или и так и этак).
2. Гуглим закон ома - и вычисляем какой ток у нас через него пойдет.
3. Берем тестер, включаем в режим амперметра и меряем проходящий ток (если не помним - гуглим как подключать правильно подключать амперметр для измерений). После чего либо радуемся что все правильно рассчитали, либо "чешим затылок".
4.Если расчетный/намеряный ток превышает 200-300ma - начинаем думать "а как бы его снизить", если ничего не приходит в голову - спрашиваем тут.
И на будущие, такую "расчет/прикидку габаритов", хотя-бы грубо, желательно делать до подключения.