При напряжении питания 5.0 В и опорном 1.087 В ADC должен выдавать 222. Подставляем в формулу, получаем 50, т.е. напряжение в десятых долях вольта.
понятно, что программист как бог может придумать любую удобную ему новую единицу измерения, речь о другом, что формула считает неправильно, завышая показания, ЕвгенийП говорит, что это не его формула, вот и спросил, что в ней не так? (ЧТО Я НЕ ТАК ПОНЯЛ)
А чего тут пояснять. У меня только целочисленные операции, Вы же решили перевести на flaot, но
1. деления остались целочисленными
2. на кой-то хрен оставили на месте мои "+ result1 / 2" и " + 500", которые нужны для более аккуратно целочисленного округления, а при флоате только мешают.
Т.е. Вы уж определитесь, Вы используете мою формулу для целых, или делаете во флоат, тогда переходите на все операции во float и выбрасывайте мои прибавление половин. То, что написано у меня никаким образом не предназначено для милливольтов, поэтому все Ваши замечания про "завышает на 50 милливольт" - мимо.
Да, кстати, строки №№10-12 полностью эквивалентны
uint16_t result1 = ADC;
это прямо в даташите написано. Зачем плодить три строки вместо одной?
это прямо в даташите написано. Зачем плодить три строки вместо одной?
так глубоко не копал, но к примеру на важгаде брать значения регистров в 3-м таймере можно только половинками, видимо уши оттуда растут, код был нагло спионэрен )))
так глубоко не копал, но к примеру на важгаде брать значения регистров в 3-м таймере можно только половинками, видимо уши оттуда растут, код был нагло спионэрен )))
Так он половинками и берётся. Просто, компилятор берёт половинки в правильном порядке, так что можно не париться.
В даташите так прямо и написано: "Note that when using “C”, the compiler handles the 16-bit access"
При напряжении питания 5.0 В и опорном 1.087 В ADC должен выдавать 222. Подставляем в формулу, получаем 50, т.е. напряжение в десятых долях вольта.
понятно, что программист как бог может придумать любую удобную ему новую единицу измерения, речь о другом, что формула считает неправильно, завышая показания
Ну так приведите пример, на котором его формула считает неправильно. На моем примере в сообщении №61 ошибок нет.
Ну так приведите пример, на котором его формула считает неправильно. На моем примере в сообщении №61 ошибок нет.
дело не в неправильной формуле, а в методе определения напряжения ИОН, действуем от обратного, измеряем напряжение на батарее точным прибором и напряжение ИОН определяем расчётом это напряжение в формулу заносим и, всё встанет по своим местам )))
дело не в неправильной формуле, а в методе определения напряжения ИОН, действуем от обратного, измеряем напряжение на батарее точным прибором и напряжение ИОН определяем расчётом это напряжение в формулу заносим и, всё встанет по своим местам )))
Здесь вообще ничего измерять не надо. От слова "совсем"!
Я же привел пример расчета:
1. Задаем любое напряжение (сами - от фонаря, вот какое число нам понравится, такое и задаем).
2. Вычисляем, чему будет равно наше опорное напряжение в "попугаях" от этого опорного.
3. Подставляем вычисленное число в формулу и считаем, что получилось.
4. А теперь сравниваем, что было (1), и что получилось в результате (3).
Все исключительно расчетным путем. Я, например, считал на калькуляторе, но по правилам Си.
Все исключительно расчетным путем. Я, например, считал на калькуляторе, но по правилам Си.
можно и так, мне просто другое непонятно ну не может разработчик заложить в ИОН разброс в 10%, он жеж не идиот, лазерная калибровка этого напряжения должна быть, наверно эти атмеги какой-то определённый индекс имеют, ИМНО
можно и так, мне просто другое непонятно ну не может разработчик заложить в ИОН разброс в 10%, он жеж не идиот, лазерная калибровка этого напряжения должна быть, наверно эти атмеги какой-то определённый индекс имеют, ИМНО
Лично мне непонятно, что именно Вам непонятно.))))
Вот мне пока ни в одной из моих конструкций не пришлось использовать встроенный ИОН. Как Вы думаете, готов ли я платить больше за кристалл, который дополнительно был подвергнут лазерной калибровке того, чем я не пользуюсь? Не забывайте, речь идет о самом дешевом сегменте простейших МК.
Вот мне пока ни в одной из моих конструкций не пришлось использовать встроенный ИОН. Как Вы думаете, готов ли я платить больше за кристалл, который дополнительно был подвергнут лазерной калибровке того, чем я не пользуюсь? Не забывайте, речь идет о самом дешевом сегменте простейших МК.
это которую никто из физиков-математиков-программистов не решил, а в направлении решения которой продвинулся всего один из пользователей этого сайта? Помню )))
Ну не у всех же Пифагорийское движение мысли, куда бы мы столько Пифагоров дели...
Интересный способ измерения питающего напряжения. Только так и не понял какой конкретно функцией считывается значение опорного напряжения по отношению к питающему? Чем 1,1 В превращаются в 210-230 усл. единиц? По ссылке
Тогда в монитор идут 4.81, редко 4.83, а на вольтметре ровно 4.80, в принципе здорово с учётом необходимости расчёта коэффициента пропорции под экземпляр платы на калькуляторе.
Интересный способ измерения питающего напряжения. Только так и не понял какой конкретно функцией считывается значение опорного напряжения по отношению к питающему? Чем 1,1 В превращаются в 210-230 усл. единиц?
не понимаете вероятно потому, что плохо представляете себе работу ADC в контроллере.
Для начала - вы в курсе, что в 328й атмеге только один ADC? - вы спросите, как же ему удается читать сигнал аж с 8ми входов А0-А7? - а очень просто, через переключатель, типа галетного :)
Положение переключателя определяется регистром ADMUX, меняя его, мы подключаем ADC к разным источникам сигнала. Среди этих источников не только 8 внешних аналоговых входов, но так же и внутренний аналоговый референс 1.1в и внутренний термометр атмеги.
Интересный способ измерения питающего напряжения. Только так и не понял какой конкретно функцией считывается значение опорного напряжения по отношению к питающему? Чем 1,1 В превращаются в 210-230 усл. единиц?
не понимаете вероятно потому, что плохо представляете себе работу ADC в контроллере.
Для начала - вы в курсе, что в 328й атмеге только один ADC? - вы спросите, как же ему удается читать сигнал аж с 8ми входов А0-А7? - а очень просто, через переключатель, типа галетного :)
Положение переключателя определяется регистром ADMUX, меняя его, мы подключаем ADC к разным источникам сигнала. Среди этих источников не только 8 внешних аналоговых входов, но так же и внутренний аналоговый референс 1.1в и внутренний термометр атмеги.
Дальше, я думаю, все понятно...
Вот, именно часть этих данных я и не знал, просто интуитивно думал, что analogRead(1.1V) должна быть тогда в доступных функциях :-)
В общем, мне это надоело.
что-то вы быстро сдались )))
и вывод:
Если выводить в милливольтах ваша формула плюсит на 50 милливольт относительно истинного 4920
ua6em, Вы уже выпили?
ua6em, Вы уже выпили?
только чай...тестер показывает 4920, ваша формула если выводить в милливольтах 4997, формула через float 4923
такие ошибки (19 строка) даже я по пьяне уже не допускаю.
такие ошибки (19 строка) даже я по пьяне уже не допускаю.
у меня все ходы записаны ))) пост #11 строка -
return
(((internalRefference * 1024L + adc / 2) / adc) + 500) / 1000;
понял, ждемс...
кстати, у меня вот такая хрень
понял, ждемс...
кстати, у меня вот такая хрень
а ты в монитор порта что-нить отправь и, таки да, я свои данные ИОН подставил...если в милливольтах то
блин, вроде не пил еще, все я понял ))
Если Вы хотите приспособить её для float, так делайте это правильно. А то, что у Вас написано в строке №19 - это что угодно, только не моя формула :-)
А то, что у Вас написано в строке №19 - это что угодно, только не моя формула :-)
поясните -
result = (((10870 * 1024L + result1 / 2) / result1) + 500) / 1000;
ua6em, а что, собственно, Вас не устраивает?
При напряжении питания 5.0 В и опорном 1.087 В ADC должен выдавать 222. Подставляем в формулу, получаем 50, т.е. напряжение в десятых долях вольта.
ua6em, а что, собственно, Вас не устраивает?
При напряжении питания 5.0 В и опорном 1.087 В ADC должен выдавать 222. Подставляем в формулу, получаем 50, т.е. напряжение в десятых долях вольта.
понятно, что программист как бог может придумать любую удобную ему новую единицу измерения, речь о другом, что формула считает неправильно, завышая показания, ЕвгенийП говорит, что это не его формула, вот и спросил, что в ней не так? (ЧТО Я НЕ ТАК ПОНЯЛ)
понятно, что программист как бог может придумать любую удобную ему новую единицу измерения
Она удобна тем, что не нужно использовать float, при этом обеспечивая нужную точность. Можно и в миливольтах: 5В == 5000мВ
понятно, что программист как бог может придумать любую удобную ему новую единицу измерения
Она удобна тем, что не нужно использовать float, при этом обеспечивая нужную точность. Можно и в миливольтах: 5В == 5000мВ
так ++ жеж, что не есть карасо )))
ua6em у вас формула без округления - вот и чуть точнее
но float деление цепляет хз сколько лишнего кода !
минимум 1.5к сразу
А то, что у Вас написано в строке №19 - это что угодно, только не моя формула :-)
поясните -
result = (((10870 * 1024L + result1 / 2) / result1) + 500) / 1000;
А чего тут пояснять. У меня только целочисленные операции, Вы же решили перевести на flaot, но
1. деления остались целочисленными
2. на кой-то хрен оставили на месте мои "+ result1 / 2" и " + 500", которые нужны для более аккуратно целочисленного округления, а при флоате только мешают.
Т.е. Вы уж определитесь, Вы используете мою формулу для целых, или делаете во флоат, тогда переходите на все операции во float и выбрасывайте мои прибавление половин. То, что написано у меня никаким образом не предназначено для милливольтов, поэтому все Ваши замечания про "завышает на 50 милливольт" - мимо.
Да, кстати, строки №№10-12 полностью эквивалентны
это прямо в даташите написано. Зачем плодить три строки вместо одной?
Да, кстати, строки №№10-12 полностью эквивалентны
это прямо в даташите написано. Зачем плодить три строки вместо одной?
так глубоко не копал, но к примеру на важгаде брать значения регистров в 3-м таймере можно только половинками, видимо уши оттуда растут, код был нагло спионэрен )))
так глубоко не копал, но к примеру на важгаде брать значения регистров в 3-м таймере можно только половинками, видимо уши оттуда растут, код был нагло спионэрен )))
Так он половинками и берётся. Просто, компилятор берёт половинки в правильном порядке, так что можно не париться.
В даташите так прямо и написано: "Note that when using “C”, the compiler handles the 16-bit access"
ua6em, а что, собственно, Вас не устраивает?
При напряжении питания 5.0 В и опорном 1.087 В ADC должен выдавать 222. Подставляем в формулу, получаем 50, т.е. напряжение в десятых долях вольта.
понятно, что программист как бог может придумать любую удобную ему новую единицу измерения, речь о другом, что формула считает неправильно, завышая показания
Ну так приведите пример, на котором его формула считает неправильно. На моем примере в сообщении №61 ошибок нет.
Ну так приведите пример, на котором его формула считает неправильно. На моем примере в сообщении №61 ошибок нет.
дело не в неправильной формуле, а в методе определения напряжения ИОН, действуем от обратного, измеряем напряжение на батарее точным прибором и напряжение ИОН определяем расчётом это напряжение в формулу заносим и, всё встанет по своим местам )))
Ua6en - если ты неверно померил свой ИОН - причем тут формула? Формула верная, а вот ты похоже просто так и не понял методику измерения
чего там понимать то?
ЗЫ как наладчик КИП 8-го разряда может что-то неправильно измерить?
дело не в неправильной формуле, а в методе определения напряжения ИОН, действуем от обратного, измеряем напряжение на батарее точным прибором и напряжение ИОН определяем расчётом это напряжение в формулу заносим и, всё встанет по своим местам )))
Здесь вообще ничего измерять не надо. От слова "совсем"!
Я же привел пример расчета:
1. Задаем любое напряжение (сами - от фонаря, вот какое число нам понравится, такое и задаем).
2. Вычисляем, чему будет равно наше опорное напряжение в "попугаях" от этого опорного.
3. Подставляем вычисленное число в формулу и считаем, что получилось.
4. А теперь сравниваем, что было (1), и что получилось в результате (3).
Все исключительно расчетным путем. Я, например, считал на калькуляторе, но по правилам Си.
Все исключительно расчетным путем. Я, например, считал на калькуляторе, но по правилам Си.
можно и так, мне просто другое непонятно ну не может разработчик заложить в ИОН разброс в 10%, он жеж не идиот, лазерная калибровка этого напряжения должна быть, наверно эти атмеги какой-то определённый индекс имеют, ИМНО
http://arduino.ru/forum/programmirovanie/sysinfo-arduino
Там показано как в Ардуине измерять напряжение, температуру и прочее.
Почему? Вот из таблицы 29-11 даташита:
Не просто 10%, а даже ±9%, т.е. "от края до края" - все 18%
Почему? Вот из таблицы 29-11 даташита:
Не просто 10%, а даже ±9%, т.е. "от края до края" - все 18%
это нас обывателей, для себя, вот у меня уверенность 100500, 0,1% точности заложено, в крайнем случае 0,5%...технологически это совсем несложно как бы
Я вот тут сейчас на практике столкнулся с уходом воч-дог таймера у тиньки от температуры. Прилично так убегает - создало реальные проблемы.
Я вот тут сейчас на практике столкнулся с уходом воч-дог таймера у тиньки от температуры. Прилично так убегает - создало реальные проблемы.
это да! от температуры и напряжения питания с ним полный трэш, что есть, то есть
можно и так, мне просто другое непонятно ну не может разработчик заложить в ИОН разброс в 10%, он жеж не идиот, лазерная калибровка этого напряжения должна быть, наверно эти атмеги какой-то определённый индекс имеют, ИМНО
Лично мне непонятно, что именно Вам непонятно.))))
Вот мне пока ни в одной из моих конструкций не пришлось использовать встроенный ИОН. Как Вы думаете, готов ли я платить больше за кристалл, который дополнительно был подвергнут лазерной калибровке того, чем я не пользуюсь? Не забывайте, речь идет о самом дешевом сегменте простейших МК.
ЗЫ как наладчик КИП 8-го разряда может что-то неправильно измерить?
ой да сколько угодно, вспомни задачу про бочку :)
По-моему тут ровно та же ситуация - ты упираешься в незначительные мелочи, не понимая главного :)
Вот мне пока ни в одной из моих конструкций не пришлось использовать встроенный ИОН. Как Вы думаете, готов ли я платить больше за кристалл, который дополнительно был подвергнут лазерной калибровке того, чем я не пользуюсь? Не забывайте, речь идет о самом дешевом сегменте простейших МК.
оказывается ИОН можно откалибровать и по его калибровке есть целый мануал #18 )))
ой да сколько угодно, вспомни задачу про бочку :)
это которую никто из физиков-математиков-программистов не решил, а в направлении решения которой продвинулся всего один из пользователей этого сайта? Помню )))
Ну не у всех же Пифагорийское движение мысли, куда бы мы столько Пифагоров дели...
:-)
Интересный способ измерения питающего напряжения. Только так и не понял какой конкретно функцией считывается значение опорного напряжения по отношению к питающему? Чем 1,1 В превращаются в 210-230 усл. единиц? По ссылке
https://blog.unlimite.net/?p=25
только команда (а как ?)...
2. Снять показания АЦП для внутреннего источника 1.1 В.
... и код мутный ниже.
строка 11 - конфигурирование мультиплексера
строка 15 разрешаем измерение, пока бит окончания измерения (строка 15) не установлен, в регистре ADC - значение
Спасибо, стало гораздо ярче :-)
Попробовал, чуть изменив исходник:
В мониторе ровно 5.00, а на вольтметре 4.79, тоже ровно.
В мониторе ровно 5.00, а на вольтметре 4.79, тоже ровно.
Теперь чего то 4.00 ровно, на вольтметре те же 4.79 :-)
Он хотел написать 1174635.
Наверное с флоатом я неправильно переделал что-то, в исходнике.
Он хотел написать 1174635.
скосячил, каюсь )))
и таки да, если нет чем замерить AREF лучше рассчитать
Он хотел написать 1174635.
Нет, тоже 5.00. Явно с числами я не так сделал, 00 при любых извратах остаются, меняется только первая цифра.
Наверное с флоатом я неправильно переделал что-то, в исходнике.
Наверное.
Для начала вместо 1000 напишите 1000.0 и посмотрите, что получится.
Он хотел написать 1174635.
Нет, тоже 5.00. Явно с числами я не так сделал, 00 при любых извратах остаются, меняется только первая цифра.
Так чего же Вы хотите, если все вычисления делаете в целых?
вот тут код от DIMAX, там с float
Никак не привыкну к этой математике, надо так:
Тогда в монитор идут 4.81, редко 4.83, а на вольтметре ровно 4.80, в принципе здорово с учётом необходимости расчёта коэффициента пропорции под экземпляр платы на калькуляторе.
Интересный способ измерения питающего напряжения. Только так и не понял какой конкретно функцией считывается значение опорного напряжения по отношению к питающему? Чем 1,1 В превращаются в 210-230 усл. единиц?
не понимаете вероятно потому, что плохо представляете себе работу ADC в контроллере.
Для начала - вы в курсе, что в 328й атмеге только один ADC? - вы спросите, как же ему удается читать сигнал аж с 8ми входов А0-А7? - а очень просто, через переключатель, типа галетного :)
Положение переключателя определяется регистром ADMUX, меняя его, мы подключаем ADC к разным источникам сигнала. Среди этих источников не только 8 внешних аналоговых входов, но так же и внутренний аналоговый референс 1.1в и внутренний термометр атмеги.
Дальше, я думаю, все понятно...
Интересный способ измерения питающего напряжения. Только так и не понял какой конкретно функцией считывается значение опорного напряжения по отношению к питающему? Чем 1,1 В превращаются в 210-230 усл. единиц?
не понимаете вероятно потому, что плохо представляете себе работу ADC в контроллере.
Для начала - вы в курсе, что в 328й атмеге только один ADC? - вы спросите, как же ему удается читать сигнал аж с 8ми входов А0-А7? - а очень просто, через переключатель, типа галетного :)
Положение переключателя определяется регистром ADMUX, меняя его, мы подключаем ADC к разным источникам сигнала. Среди этих источников не только 8 внешних аналоговых входов, но так же и внутренний аналоговый референс 1.1в и внутренний термометр атмеги.
Дальше, я думаю, все понятно...
Вот, именно часть этих данных я и не знал, просто интуитивно думал, что analogRead(1.1V) должна быть тогда в доступных функциях :-)
но так же и внутренний аналоговый референс 1.1в и внутренний термометр атмеги.
точно? а не с вывода AREF?