Приветствую. Возникла потребность удаленно снимать показания с индуктивного датчика. Если кто не знает, это такая штука, которая в зависимости от расстояния до металлической поверхности выдает соответствующий аналоговый сигнал. Пришла в голову мысль использовать для этих целей ардуино с его АЦП + Ethernet шилд. Сразу возникает несколько вопросов. Во-первых, практически все индуктивные датчики дают выходное напряжение 0-10 В, в то время как ардуишный АЦП понимает лишь до 5 В, т.е. придется брать датчики с расстоянием примерно в 2 раза большим чем то, что требуется измерять. Но и это не самое интересное: данные с датчика хотелось бы снимать с точностью не хуже 0.01 мм., а это накладывает серьезные ограничения на разрешение и точность АЦП. Казалось бы, 10-ти разрядного АЦП до 5 вольт должно хватить для измерений с точностью 5В/1024~=0.005 В, но из многих отзывов понял что такая красота в силу разных причин практически недостижима. В связи с этим вопросы: 1. Какой реальной точности измерения напряжения можно добиться от ардуиновского АЦП при его запитывании от внешнего источника? 2. Есть ли какие-то хитрости, чтобы достичь максимальной теоретически возможной точности? 3. Не станет ли ардуине плохо от 10 вольт, подаваемых на АЦП? (сами показания АЦП при превышении 5 вольт меня интересовать уже, естественно, не будут) Заранее спасибо за ответы.
Не совсем так. 0-5В — это умолчание. Вы можете подать на специальный контакт AREF 10 В и тогда опорным напряжением станет 10 В — вы получите 1024 градации в расширенном диапазоне. Точность постоянна и равна 1024 градациям. Другой вопрос: насколько исказятся ваши данные пока гуляют по проводам до Arduino. Если они короткие (менее 0.5 метра) и вы работаете в квартирных условиях (без сильных наводок), можно особо не беспокоиться. Если провода длинные, а точность измерений пипец как важна, лучше поставить отдельный АЦП не относящийся к Arduino рядом с датчиком. При конфигурации пинов как входов на них устанавливается большой импеданс, поэтому плохо ей не станет. Тем более, что штатный Vin — до 12 В по документации, и до 15,5 В на практике.
В спеках на Freeduino видел фразу о том, что АЦП на 0-5 вольт, но можно и меньше, подав опорное на AREF. Про большее ничего сказано не было, поэтому я и засомневался. Хотя может это особенность именно этого клона Arduino?
Если честно, я никогда не проделывал этого манёвра. После вашей фразы засомневался — проверил. Исходя из документации: Вы правы, на AREF нельзя давать больше 5 В. Извиняюсь за введение в заблуждение. Бьюсь головой об пианину: раньше этого замечания не было. Но! Что вам мешает сделать элементарный делитель напряжения, скажем, попалам, и именно его выход отправлять на АЦП? Вы просто понизите уровни напряжения, но не потеряете в точности. Нужно только 2 резистора по 2 рубля.
Похоже придётся встрять в разговор За недостатком одного параметра, который уважаемый nsiprodoer не указал, тема ушла в сторону от вопроса... Для начала нужно знать сколько вольт на миллиметр выдаёт датчик и дальше всё станет сильно проще, так мы узнаем какое разрешение аналого-цифрового преобразователя нам нужно. Измерить напряжение действительно не проблема, два резистора, может и более точных, может и подстроечных (сильно сократит вычисления, а вдруг для задачи оно критично), но хоть 220 вольт в ардуино подавай, всё будет нормально, делитель вгонит их в диапазон 0 - 5 вольт.