Карма: 4
Рейтинг сообщений: 26
Зарегистрирован: Ср сен 17, 2008 14:32:15 Сообщений: 2106 Откуда: Старые Васюки
Рейтинг сообщения:0
Тихан писал(а):
Если число двойчное(а оно поидеи такое) то 1023 не как не подходит.
Да ну? Так же, как и 255?
pavel123 писал(а):
Ну ладно, поймали, каюсь - соврал.
На самом деле я вовсе не ставил себе цели вас "ловить"! Меня правда занимает этот вопрос: при 10 разрядах АЦП цена его деления должна бы получиться Uref/1023, однако почему-то всегда упоминается деление на 1024. Аналогично с 8 разрядами, под которые даже подогнан внутренний источник 2,56 (а не 2,55) В.
Может, я всё-таки чего-то не понимаю?
Зарегистрирован: Чт май 17, 2007 09:44:13 Сообщений: 268 Откуда: Украина, г. Кривой Рог
Рейтинг сообщения:0
Ради торжества истины можно найти любые обьяснения. Но я их не знаю.
Как по мне - шо 1023, шо 255, погрешность не велика.
И отлавливать эти дробные части, конечно можно, если это комуто нужно Спросили про АЦП, вспомнил, что видел статейку, вот предложил для обсуждения.
Уважаемые кошаки, очень нужен пример программы для термостата DS1621 + МК (любой AVR) на BASCOMе. Или подскажите, где взять библиотеку для DS1621. Была мысля конвертировать в CodeVisionAVR, хидер для DS1621 в .lib Эта либа потом сработает в BASCOMe? И где вообще брать новые библиотеки для васика?
Карма: 4
Рейтинг сообщений: 26
Зарегистрирован: Ср сен 17, 2008 14:32:15 Сообщений: 2106 Откуда: Старые Васюки
Рейтинг сообщения:0
pomidor писал(а):
от 0 до 255 будет 256 значений
Совершенно верно, вот только получается, что 0 соответствует нулю, а 255 тогда должно соответствовать максимуму. «Делений» между этими 256 значениями опять же получается 255. Итого цена такого деления д.б. = Uref/255.
Нет, а всё-таки? Неужели никто точно не знает этот момент? Погрешность может конечно и небольшая, но всё равно лучше бы от неё избавиться.
Особых проблем с пересчетом действительных значений АЦП нету , все дело в правильном расчете делителя. Смотрим архив : там пример делителя в диапазоне 0-99 В , при снятии с АЦП так и получаем - от 0.01 до 9.99 В = 001 ... 999 , выше 10 В = 100 ... 999 (да именно так , но уже с подключенным дополнительным делителем см. полевой транзистор в схеме) . Остается только правильно контролировать десятичную точку , но все в наших руках (лапах) так как делитель мы сами и подключали - установкой единицы на соответствующей ножке .. Смотрим программу вольтметра в этом же архиве (под этот делитель).
P.S. Схема делителя взята из журнала "Радио 6'2008" - статья "Вольтметр для лабораторных источников питания" . Там и описание коэффициентов делителя.
P.S.S. to Деня . Спасибо за исходник. Которым ты в принципе подтвердил, как и свои , так и мои предположения. И еще .. По вопросам RS-485 обращатся можно ?
Вложения:
Комментарий к файлу: Вольтметр с "правильным" делителем Volt.rar [39.58 KiB]
Скачиваний: 677
Еще решил дописать размышления по поводу ошибок преобразования АЦП и разного рода "ошибок деления" и т.д. и т.п. Я тоже поначалу думал о "неизбежных" ошибках преобразования, точности АЦП и прочих "математических" нюансах, пока не перечитав кучу инфы в интернете и в бумажных (!) книгах не пришел к выводу : ошибки преобразования и все что с ними связано должны Вас волновать , если Вы "затачиваете" МК именно под работу АЦП , а то есть применяете :
1. Раздельное питание аналоговой и цифровой части
2. Прецезионный источник опорного напряжения (например MAX873)
3. Специальные режимы МК , специально созданные для измерений с помощью АЦП (например ADC Noise)
4. Рекомендации Atmel по проектирования и изготовлению печатных плат.
Если в Вашем проекте этого не присутствует , то мысли вокруг ошибок "цифровой" части МК Вас волновать не должны , т.к. ошибки "аналоговой" части уже заведомо будут больше. Все просто .. На "бытовом" уровне, все решается настройкой делителя по эталонному вольтметру ...
Совершенно верно, вот только получается, что 0 соответствует нулю, а 255 тогда должно соответствовать максимуму. «Делений» между этими 256 значениями опять же получается 255. Итого цена такого деления д.б. = Uref/255.
Вы ошибаетесь, цена деления в данном случае Uref/256.
Пример с линейкой - на сантиметровом отрезке 10 делений цена деления соответственно 1 мм.
Карма: 4
Рейтинг сообщений: 26
Зарегистрирован: Ср сен 17, 2008 14:32:15 Сообщений: 2106 Откуда: Старые Васюки
Рейтинг сообщения:0
smac писал(а):
Пример с линейкой - на сантиметровом отрезке 10 делений цена деления соответственно 1 мм.
Посмотрите на линейку внимательнее На сантиметровом отрезке 10 делений и соответственно 11 возможных отсчётов (рисок), от 0 до 10. То есть длину в 1 см мы получаем, когда достигаем 11-й (а не 10-й) риски.
Продолжая эту аналогию, у АЦП 255 (1023) «делений» и 256 (1024) возможных значений. Число делений всегда на единицу меньше числа дискретных отсчётов, это же основы метрологии. Так что не убедили.
Пример с линейкой - на сантиметровом отрезке 10 делений цена деления соответственно 1 мм.
Посмотрите на линейку внимательнее На сантиметровом отрезке 10 делений и соответственно 11 возможных отсчётов (рисок), от 0 до 10. То есть длину в 1 см мы получаем, когда достигаем 11-й (а не 10-й) риски. Продолжая эту аналогию, у АЦП 255 (1023) «делений» и 256 (1024) возможных значений. Число делений всегда на единицу меньше числа дискретных отсчётов, это же основы метрологии. Так что не убедили.
Что вы мне голову морочите? Какова по Вашему цена деления обсуждаемой нами линейки?
Я справедливо полагаю, что деление - это расстояние между рисками а не сама риска, соответсвенно цена деления 1 мм. У восьмибитного АЦП 256 делений, соответственно цена деления Vref/256. Чтобы найти напряжение на входе мы берем полученное значение (кол-во делений) и умножаем на цену, в результате получаем:
Vin=ADC*(Vref/256), где ADC - значение считанное с преобразователя.
Vin=ADC*(Vref/256), где ADC - значение считанное с преобразователя.
Так и есть . Следовательно Smac прав. Берется не максимальное число возможное в данной "разрядности" , а количество шагов . Смотрим в даташите для 10 битного ацп (например: ATtiny26) :
ADC = Vin*1024 / Vref
Как видите в расчетах участвует количество (!) шагов. Читаем даташиты , и таких вопросов не возникает
+1000, собственно в даташитах даже все формулы приведены и разжевано подробно. Причем если весь даташит читать лень, то хотя бы раздел про АЦП прочитать можно.
Карма: 4
Рейтинг сообщений: 26
Зарегистрирован: Ср сен 17, 2008 14:32:15 Сообщений: 2106 Откуда: Старые Васюки
Рейтинг сообщения:0
smac писал(а):
Что вы мне голову морочите? Какова по Вашему цена деления обсуждаемой нами линейки?
Только давайте полегче плиз, ок? Хамство это не лучший аргумент.
На промежутке от 0 до 1 см на линейке 11 рисок и 10 делений, соответственно цена одного деления 1 см/10 делений = 1 мм.
smac писал(а):
Я справедливо полагаю, что деление - это расстояние между рисками а не сама риска, соответсвенно цена деления 1 мм. У восьмибитного АЦП 256 делений, соответственно цена деления Vref/256.
У восьмибитного АЦП 256 именно рисок (0 - это не деление!), а делений (по вашему собственному определению!) получается 255. Так как максимальное значение, считываемое из АЦП, не может быть равно 256.
smac писал(а):
Причем если весь даташит читать лень, то хотя бы раздел про АЦП прочитать можно.
Shuriks писал(а):
Смотрим в даташите для 10 битного ацп (например: ATtiny26) : ADC = Vin*1024 / Vref Как видите в расчетах участвует количество (!) шагов. Читаем даташиты , и таких вопросов не возникает
На самом деле грустно, что у вас таких вопросов не возникает. Просто подставьте в эту формулу Vin = Vref. Какое значение мы при этом считаем с АЦП? Даташиты мне читать отнюдь не лень, и эта примитивная формула у меня тоже не вызывала вопросов, пока я не утрудился над ней хоть чуть-чуть задуматься. Если максимальное значение, считываемое с АЦП, равно 255 (1023), то значит в формуле из даташита заведомо заложена погрешность. Так как согласно этой формуле максимальное значение равно 256 (1024), чего мы никогда не получим при 8 (10) битах.
Можно допустить и второй вариант, при котором просто измеряемое АЦП напряжение никогда не достигнет Vref. Тогда цена деления может быть любой: и 1/256, и 1/1024, и хоть 1/2789 . Хотя внятного указания на этот момент я в даташите тоже не нашёл, везде упоминается измерение в полном диапазоне 0-Vref.
Только давайте полегче плиз, ок? Хамство это не лучший аргумент.
Ок, принимается, был несдержан, извиняюсь.
Секретный кот писал(а):
У восьмибитного АЦП 256 именно рисок (0 - это не деление!), а делений (по вашему собственному определению!) получается 255. Так как максимальное значение, считываемое из АЦП, не может быть равно 256.
Правда Ваша, по поводу максимального значения. Наверное мой пример с рисками был не очень удачен, во всяком случае я считаю, что на отрезке от 0 до 1 см, не обязательно может быть 11 рисок, их может быть и 10 и 9 (если вся линейка - это отрезок 1 см), но спорить по этому поводу я дальше не хочу, поэтому счтитайте что здесь Вы выиграли.
Секретный кот писал(а):
Можно допустить и второй вариант, при котором просто измеряемое АЦП напряжение никогда не достигнет Vref. Тогда цена деления может быть любой: и 1/256, и 1/1024, и хоть 1/2789 . Хотя внятного указания на этот момент я в даташите тоже не нашёл, везде упоминается измерение в полном диапазоне 0-Vref.
А вот тут неправда Ваша, лучше все-таки читать не только заголовки у разделов. Вот оригинальный текст из ДШ на мегу8.
Цитата:
The minimum value represents GND and the maximum value represents the voltage onthe AREF pin minus 1 LSB.
(2486T–AVR–05/08 стр. 197)
Что приблизительно переводится как "Минимальная отбражаемая величина - земля (или 0 В), а максимальная - напряжение на пине AREF минус 1 младший разряд", т.е при подаче напряжения на входной пин больше чем 1023*Vref/1024, считываться из АЦП все равно будет значение 1023.
Карма: 4
Рейтинг сообщений: 26
Зарегистрирован: Ср сен 17, 2008 14:32:15 Сообщений: 2106 Откуда: Старые Васюки
Рейтинг сообщения:0
smac писал(а):
Ок, принимается, был несдержан, извиняюсь.
Я тоже прошу прощения, если что.
smac писал(а):
я считаю, что на отрезке от 0 до 1 см, не обязательно может быть 11 рисок, их может быть и 10 и 9 (если вся линейка - это отрезок 1 см)
В теории на этом отрезке может быть и 2, и 3, и 5 рисок. Но достаточно взглянуть на фотографию любой линейки, чтобы понять, что с ценой деления в 1 мм их ровно 11. Метрология всё-таки упрямая штука, хотя ок, эту тему мы закрываем
smac писал(а):
счтитайте что здесь Вы выиграли.
Ещё раз повторюсь, что не ставил себе такой цели, а только хотел уяснить истину.
smac писал(а):
the maximum value represents the voltage onthe AREF pin minus 1 LSB. (2486T–AVR–05/08 стр. 197)
Вот! Собственно то, что я и хотел услышать. То есть максимально возможное показание АЦП = (1023/1024)*Vref. Действительно, сей стэйтмент присутствует в даташите (несмотря на заявленное там же парой абзацев выше
Крыша едет...Совсем вы меня щапутали!Ктонить может дать нормальную формулу(с мнимальными погрешностями) и объяснить всякую ерунду вроде Vref, aref, vin.
Хараша спорить!А то у меня совсем крыша поедет...
Крыша едет...Совсем вы меня щапутали!Ктонить может дать нормальную формулу(с мнимальными погрешностями) и объяснить всякую ерунду вроде Vref, aref, vin. Хараша спорить!А то у меня совсем крыша поедет...
Еще раз. Vin=ADC*Vref/(2^n), где Vin - измеряемое напряжение, ADC - значение считанное из АЦП (пара регистров ADCH:ADCL, выравнивание результата по правому краю т. е. бит ADLAR = 0), Vref - опорное напряжение (зависит от настроек АЦП, может быть как внутренним так и внешним), n-разрядность АЦП - в вашем случае n=10. (2^n - читать как 2 в степени n).
Здравствуйте форумчане!
Нужно собрать некий таймер.
При подаче питания он начинает считать секунды, как только пропало питание,
время сохранилось в eeprom. После подачи питания заново секунды считаются
и на индикаторе отображается значение из eeprm. Итак по гругу.
Очень нужно! Помогите кто чем сможет!
Заранее спасибо!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 199
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения