А почитать? AREF то не фиксирован! Для мега328 он может быть внутренним (1.1в), иметь напряжение питания (AVCC) и внешним - каким хош (<= AVCC). Мультиплексором выбирается только внутренний, называемый BANDGAP. Из него, через усилитель, получается внутренний 1.1в , который уже может быть AREF-ом, если выберешь.
Опередили.)
Полностью разжевать можно только путём дословного перевода мануала с комментариями. Как по мне проще самому прочитать мануал. Ну а тем кто лениться читать, приходится писать посты типа: а если так сделать...
Блин, тема сама того не стоит, а уж третья страница ... ТС, кстати, забил и свалил ещё 60 постов назад.
Я, Женя, когда тему увидел, то, как и ты, хотел написать, что и чем называется, IYKWIM! Но удержался. А потом понял, что тема прекрасна и без меня. ;)
Если бы я написал пример с измерением внутреннего источника, то после нескольких замечаний "коллег", тему бы пришлось снести! У меня нет твоего терпения и толерантности. ;)) Прости за этот термин!
Тема полезная, почему только он такой секретный, этот вольтметр? Им удобно отслеживать падение напряжения при питании платы от аккумулятора непосредственно... и всё, наверное.
:-)
А как встроенным термометром пользоваться и какая с него польза?
// Internal Temperature Sensor
// Example sketch for ATmega328 types.
//
// April 2012, Arduino 1.0
void setup()
{
Serial.begin(115200);
Serial.println(F("Internal Temperature Sensor"));
}
void loop()
{
// Show the temperature in degrees Celsius.
Serial.println(GetTemp(),1);
delay(1000);
}
double GetTemp(void)
{
unsigned int wADC;
double t;
// The internal temperature has to be used
// with the internal reference of 1.1V.
// Channel 8 can not be selected with
// the analogRead function yet.
// Set the internal reference and mux.
ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3));
ADCSRA |= _BV(ADEN); // enable the ADC
delay(20); // wait for voltages to become stable.
ADCSRA |= _BV(ADSC); // Start the ADC
// Detect end-of-conversion
while (bit_is_set(ADCSRA,ADSC));
// Reading register "ADCW" takes care of how to read ADCL and ADCH.
wADC = ADCW;
// The offset of 324.31 could be wrong. It is just an indication.
t = (wADC - 324.31 ) / 1.22;
// The returned temperature is in degrees Celsius.
return (t);
}
Т.е. не надо смотреть даташит? Ну, не "нет" и суда "нет".
Кстати, lilik,
код в #121 - только демонстрация, что это всего-навсего 8-ой аналоговый пин. Так-то если замерять, то, конечно, лучше поставить analogReference(INTERNAL), Разумеется.
код в #121 - только демонстрация, что это всего-навсего 8-ой аналоговый пин. Так-то если замерять, то, конечно, лучше поставить analogReference(INTERNAL), Разумеется.
я тут некоторое количество ардуино нано проверил, слишком сильно гуляет температура, до 2-х градусов, между измерениями, можно конечно подумать на внутренний ИОН, что нестабилен, но сомнительно как-то, спиртом платки не промывал, остаётся конденсатор на AREF, он должен быть МП0, а что там в действительности знают только в поднебесной
Код, которым вы поправили Евгения - полностью аналогичен его коду. Чего было вылезать, непонятно.
Рассуждения о "точности" не имеют смысла, пока вы не почитаете даташит. Там и точность указана и есть упоминание, что этот сенсор врет из-за нагрева самого чипа...
Это вы там отжигали на тему, что вышка в наше время не нужна? :)))
)) Я тут с мега48 (считая что она эквивалентна 88, 168, 328) пытался получить температуру. И, когда уже ничего не помогло, таки глянул даташит...(
А вообще датчик, конечно, полезен. Если всю дорогу спишь, то и температура от нагрева кристалла никак не зависит.
К сожалению, в посте #121 "брехня детектед" (жаль не могу поправить там)
Я совершенно забыл, что у меня wiring_analog.c "не из коробки".
Из коробки там перед записью пина в ADMUX стоит & 0x07 и пин 8 там просто не прокатывает.
Вот, если это "& 0x07" убрать, то да, действительно, так, как у меня написано - работает. И, кстати, если это убрать, то и напряжение питания можно измерять без работы с регистрами
К сожалению, в посте #121 "брехня детектед" (жаль не могу поправить там)
Я совершенно забыл, что у меня wiring_analog.c "не из коробки".
Из коробки там перед записью пина в ADMUX стоит & 0x07 и пин 8 там просто не прокатывает.
Вот, если это "& 0x07" убрать, то да, действительно, так, как у меня написано - работает. И, кстати, если это убрать, то и напряжение питания можно измерять без работы с регистрами
Попробовал для УНО (чип как на нано :-), не знаю правильно я исправил в ADMUX & 0x07 или нет, но показывает в мониторе после первого числа (оно всегда неверное) - 5.01-5.03 Вольта (а должно 4.81 :-)
К сожалению, в посте #121 "брехня детектед" (жаль не могу поправить там)
Я совершенно забыл, что у меня wiring_analog.c "не из коробки".
Из коробки там перед записью пина в ADMUX стоит & 0x07 и пин 8 там просто не прокатывает.
Вот, если это "& 0x07" убрать, то да, действительно, так, как у меня написано - работает. И, кстати, если это убрать, то и напряжение питания можно измерять без работы с регистрами
Попробовал для УНО (чип как на нано :-), не знаю правильно я исправил в ADMUX & 0x07 или нет, но показывает в мониторе после первого числа (оно всегда неверное) - 5.01-5.03 Вольта (а должно 4.81 :-)
в формулу для VCC нужно подставлять не 1,1, а реальное опорное напряжение конкретного экземпляра. Не исключено, что в вашем кристалле оно 1,05в.
не знаю правильно я исправил в ADMUX & 0x07 или нет,
Выложите файл, я посмотрю.
/*
wiring_analog.c - analog input and output
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2005-2006 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
Modified 28 September 2010 by Mark Sproul
*/
#include "wiring_private.h"
#include "pins_arduino.h"
uint8_t analog_reference = DEFAULT;
void analogReference(uint8_t mode)
{
// can't actually set the register here because the default setting
// will connect AVCC and the AREF pin, which would cause a short if
// there's something connected to AREF.
analog_reference = mode;
}
int analogRead(uint8_t pin)
{
uint8_t low, high;
#if defined(analogPinToChannel)
#if defined(__AVR_ATmega32U4__)
if (pin >= 18) pin -= 18; // allow for channel or pin numbers
#endif
pin = analogPinToChannel(pin);
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
if (pin >= 54) pin -= 54; // allow for channel or pin numbers
#elif defined(__AVR_ATmega32U4__)
if (pin >= 18) pin -= 18; // allow for channel or pin numbers
#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__)
if (pin >= 24) pin -= 24; // allow for channel or pin numbers
#else
if (pin >= 14) pin -= 14; // allow for channel or pin numbers
#endif
#if defined(ADCSRB) && defined(MUX5)
// the MUX5 bit of ADCSRB selects whether we're reading from channels
// 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high).
ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5);
#endif
// set the analog reference (high two bits of ADMUX) and select the
// channel (low 4 bits). this also sets ADLAR (left-adjust result)
// to 0 (the default).
#if defined(ADMUX)
#if defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
ADMUX = (analog_reference << 4) | (pin & 0x07);
#else
ADMUX = (analog_reference << 6) | (pin /*& 0x07*/);
#endif
#endif
// without a delay, we seem to read from the wrong channel
//delay(1);
#if defined(ADCSRA) && defined(ADCL)
// start the conversion
sbi(ADCSRA, ADSC);
// ADSC is cleared when the conversion finishes
while (bit_is_set(ADCSRA, ADSC));
// we have to read ADCL first; doing so locks both ADCL
// and ADCH until ADCH is read. reading ADCL second would
// cause the results of each conversion to be discarded,
// as ADCL and ADCH would be locked when it completed.
low = ADCL;
high = ADCH;
#else
// we dont have an ADC, return 0
low = 0;
high = 0;
#endif
// combine the two bytes
return (high << 8) | low;
}
// Right now, PWM output only works on the pins with
// hardware support. These are defined in the appropriate
// pins_*.c file. For the rest of the pins, we default
// to digital output.
void analogWrite(uint8_t pin, int val)
{
// We need to make sure the PWM output is enabled for those pins
// that support it, as we turn it off when digitally reading or
// writing with them. Also, make sure the pin is in output mode
// for consistenty with Wiring, which doesn't require a pinMode
// call for the analog output pins.
pinMode(pin, OUTPUT);
if (val == 0)
{
digitalWrite(pin, LOW);
}
else if (val == 255)
{
digitalWrite(pin, HIGH);
}
else
{
switch(digitalPinToTimer(pin))
{
// XXX fix needed for atmega8
#if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__)
case TIMER0A:
// connect pwm to pin on timer 0
sbi(TCCR0, COM00);
OCR0 = val; // set pwm duty
break;
#endif
#if defined(TCCR0A) && defined(COM0A1)
case TIMER0A:
// connect pwm to pin on timer 0, channel A
sbi(TCCR0A, COM0A1);
OCR0A = val; // set pwm duty
break;
#endif
#if defined(TCCR0A) && defined(COM0B1)
case TIMER0B:
// connect pwm to pin on timer 0, channel B
sbi(TCCR0A, COM0B1);
OCR0B = val; // set pwm duty
break;
#endif
#if defined(TCCR1A) && defined(COM1A1)
case TIMER1A:
// connect pwm to pin on timer 1, channel A
sbi(TCCR1A, COM1A1);
OCR1A = val; // set pwm duty
break;
#endif
#if defined(TCCR1A) && defined(COM1B1)
case TIMER1B:
// connect pwm to pin on timer 1, channel B
sbi(TCCR1A, COM1B1);
OCR1B = val; // set pwm duty
break;
#endif
#if defined(TCCR1A) && defined(COM1C1)
case TIMER1C:
// connect pwm to pin on timer 1, channel B
sbi(TCCR1A, COM1C1);
OCR1C = val; // set pwm duty
break;
#endif
#if defined(TCCR2) && defined(COM21)
case TIMER2:
// connect pwm to pin on timer 2
sbi(TCCR2, COM21);
OCR2 = val; // set pwm duty
break;
#endif
#if defined(TCCR2A) && defined(COM2A1)
case TIMER2A:
// connect pwm to pin on timer 2, channel A
sbi(TCCR2A, COM2A1);
OCR2A = val; // set pwm duty
break;
#endif
#if defined(TCCR2A) && defined(COM2B1)
case TIMER2B:
// connect pwm to pin on timer 2, channel B
sbi(TCCR2A, COM2B1);
OCR2B = val; // set pwm duty
break;
#endif
#if defined(TCCR3A) && defined(COM3A1)
case TIMER3A:
// connect pwm to pin on timer 3, channel A
sbi(TCCR3A, COM3A1);
OCR3A = val; // set pwm duty
break;
#endif
#if defined(TCCR3A) && defined(COM3B1)
case TIMER3B:
// connect pwm to pin on timer 3, channel B
sbi(TCCR3A, COM3B1);
OCR3B = val; // set pwm duty
break;
#endif
#if defined(TCCR3A) && defined(COM3C1)
case TIMER3C:
// connect pwm to pin on timer 3, channel C
sbi(TCCR3A, COM3C1);
OCR3C = val; // set pwm duty
break;
#endif
#if defined(TCCR4A)
case TIMER4A:
//connect pwm to pin on timer 4, channel A
sbi(TCCR4A, COM4A1);
#if defined(COM4A0) // only used on 32U4
cbi(TCCR4A, COM4A0);
#endif
OCR4A = val; // set pwm duty
break;
#endif
#if defined(TCCR4A) && defined(COM4B1)
case TIMER4B:
// connect pwm to pin on timer 4, channel B
sbi(TCCR4A, COM4B1);
OCR4B = val; // set pwm duty
break;
#endif
#if defined(TCCR4A) && defined(COM4C1)
case TIMER4C:
// connect pwm to pin on timer 4, channel C
sbi(TCCR4A, COM4C1);
OCR4C = val; // set pwm duty
break;
#endif
#if defined(TCCR4C) && defined(COM4D1)
case TIMER4D:
// connect pwm to pin on timer 4, channel D
sbi(TCCR4C, COM4D1);
#if defined(COM4D0) // only used on 32U4
cbi(TCCR4C, COM4D0);
#endif
OCR4D = val; // set pwm duty
break;
#endif
#if defined(TCCR5A) && defined(COM5A1)
case TIMER5A:
// connect pwm to pin on timer 5, channel A
sbi(TCCR5A, COM5A1);
OCR5A = val; // set pwm duty
break;
#endif
#if defined(TCCR5A) && defined(COM5B1)
case TIMER5B:
// connect pwm to pin on timer 5, channel B
sbi(TCCR5A, COM5B1);
OCR5B = val; // set pwm duty
break;
#endif
#if defined(TCCR5A) && defined(COM5C1)
case TIMER5C:
// connect pwm to pin on timer 5, channel C
sbi(TCCR5A, COM5C1);
OCR5C = val; // set pwm duty
break;
#endif
case NOT_ON_TIMER:
default:
if (val < 128) {
digitalWrite(pin, LOW);
} else {
digitalWrite(pin, HIGH);
}
}
}
}
, а реальное опорное напряжение конкретного экземпляра. Не исключено, что в вашем кристалле оно 1,05в.
Мерить вольтметром, выводя на AREF?
Да как хочешь.
1. находишь у Гайвера какую-то библиотеку, там всё автоматизировано: вводишь в монитор порта значение с вольтметра, нужная константа вычисляется и записывается в еепром.
2. измеряешь напряжение на пине 5в (#127), считаешь, следующей прошивкой записываешь константу в еепром.
3. в режиме референсе интернал измеряешь входное напряжение около 1 вольта, считаешь, следующей прошивкой записываешь константу в еепром.
Да, у меня тоже 0 показал, выставил в скетч наобум 1.05 вместо 1.1 - стало очень точно :-)
переключи на предел измерения повыше, там входное больше однако, к примеру с 2 вольт на 20 это на порядок )))
PS поэтому для меня осциллограф идеальный инструмент и лампового вольтметра не надо...
Настройкой INTERNAL к выводу AREF подключается внутреннее напряжение 1.1 В (или 2.56 микросхемы ATmega8). При этом напряжение соответствующее или превышающее 1.1 В будет конвертироваться АЦП в 1023. Другие значения напряжения конвертируются пропорционально.
Внутреннее подключение источника 1.1 В к выводу является высоко-импедансным, что означает, что для измерение напряжения на выводе может быть произведено только мультиметром с высоким сопротивлением. Ошибочное подключение напряжения к выводу AREF при этой настройке функции analogReference не повредит микросхему, но превысит значение 1.1 В. В этом случае АЦП будет конвертировать напряжение внешнего источника. Во избежание вышеописанных проблем настоятельно рекомендуется подключать внешнее напряжение через резистор 5 кОм.
но так же и внутренний аналоговый референс 1.1в и внутренний термометр атмеги.
точно? а не с вывода AREF?
Сколько вопросов... Ну открой уже даташит, да посмотри сам.
Bandgap reference и Internal 1.1v reference это одно и тоже.
но так же и внутренний аналоговый референс 1.1в и внутренний термометр атмеги.
точно? а не с вывода AREF?
Сколько вопросов... Ну открой уже даташит, да посмотри сам.
Bandgap reference и Internal 1.1v reference это одно и тоже.
тогда всё складывается )))
PS только на структурной схеме этого нет почему то, совсем нет...
PPS я полностью доверяю DIMAX )))
А почитать? AREF то не фиксирован! Для мега328 он может быть внутренним (1.1в), иметь напряжение питания (AVCC) и внешним - каким хош (<= AVCC). Мультиплексором выбирается только внутренний, называемый BANDGAP. Из него, через усилитель, получается внутренний 1.1в , который уже может быть AREF-ом, если выберешь.
Опередили.)
Сколько вопросов... Ну открой уже даташит, да посмотри сам.
А зачем? Когда и так всё объяснят.)
Сколько вопросов... Ну открой уже даташит, да посмотри сам.
Bandgap reference и Internal 1.1v reference это одно и тоже.
тогда всё складывается )))
PS только на структурной схеме этого нет почему то, совсем нет...
В даташите есть, ну это если ты сподобишься его открыть.
А что разве он утверждает что АЦП работает как-то по другому?
Сколько вопросов... Ну открой уже даташит, да посмотри сам.
А зачем? Когда и так всё объяснят.)
вот тут ты прав!!! )))
"мне теперь не надо гладить брюки,
помощь мне прислуги не нужна,
у меня для этой самой штуки есть..."
сайт arduino.ru )))
А что разве он утверждает что АЦП работает как-то по другому?
эту тему впервые на этом сайте DIMAX разжевал, может было и раньше не увидел
Полностью разжевать можно только путём дословного перевода мануала с комментариями. Как по мне проще самому прочитать мануал. Ну а тем кто лениться читать, приходится писать посты типа: а если так сделать...
PPS я полностью доверяю DIMAX )))
Полностью нельзя доверять даже дэйташитам.
Хотя, не спорю, dimax - это намного лучше, чем datasheet.
PPS я полностью доверяю DIMAX )))
Полностью нельзя доверять даже дэйташитам.
Хотя, не спорю, dimax - это намного лучше, чем datasheet.
для общего развития информации достаточно, а для профессиональной datasheet и макетирование спасут МИР
Блин, тема сама того не стоит, а уж третья страница ... ТС, кстати, забил и свалил ещё 60 постов назад.
Блин, тема сама того не стоит, а уж третья страница ... ТС, кстати, забил и свалил ещё 60 постов назад.
+1 мельчает форум :) Года три назад этот "секретный вольтметр" знали все, а теперь смотрю половина форума ничего понять не может :)
а теперь смотрю половина форума ничего понять не может :)
отож, уже сам b707 понял, а другие понять не могут )))
Блин, тема сама того не стоит, а уж третья страница ... ТС, кстати, забил и свалил ещё 60 постов назад.
Я, Женя, когда тему увидел, то, как и ты, хотел написать, что и чем называется, IYKWIM! Но удержался. А потом понял, что тема прекрасна и без меня. ;)
Если бы я написал пример с измерением внутреннего источника, то после нескольких замечаний "коллег", тему бы пришлось снести! У меня нет твоего терпения и толерантности. ;)) Прости за этот термин!
Прости за этот термин!
так не за что, пятница жеж
кстати, тема не раскрыта, можно ли сделать такое же на ESP8266 осталось за скобками
кстати, тема не раскрыта, можно ли сделать такое же на ESP8266 осталось за скобками
Она даже в аддоне штатно реализовано https://arduino-esp8266.readthedocs.io/en/2.7.4_a/reference.html#analog-input
Прости за этот термин!
так не за что, пятница жеж
кстати, тема не раскрыта, можно ли сделать такое же на ESP8266 осталось за скобками
Я уже писал. Читай мануалы. Может непридётся такую хрень писать. Или опять Диму ждал?
Я уже писал. Читай мануалы. Может непридётся такую хрень писать. Или опять Диму ждал?
так мы с ним в какой-то степени соратники, он сильно продвинутей, а мне спросить не зазорно )))
ЗЫ и таки да, я жеж тут не про нутаникс спрашиваю ...
Тема полезная, почему только он такой секретный, этот вольтметр? Им удобно отслеживать падение напряжения при питании платы от аккумулятора непосредственно... и всё, наверное.
:-)
А как встроенным термометром пользоваться и какая с него польза?
http://arduino.ru/forum/apparatnye-voprosy/datchik-temperatury-vnutri-at...
Нашёл, пользы по ходу не много.
А как встроенным термометром пользоваться
Это просто "8-ой аналоговый пин". Так и пользуйтесь:
А как в температуру пересчитать см. даташит.
Есть исправление #127
А как в температуру пересчитать см. даташит.
ан нет )))
А как в температуру пересчитать см. даташит.
ан нет )))
Т.е. не надо смотреть даташит? Ну, не "нет" и суда "нет".
Кстати, lilik,
код в #121 - только демонстрация, что это всего-навсего 8-ой аналоговый пин. Так-то если замерять, то, конечно, лучше поставить analogReference(INTERNAL), Разумеется.
код в #121 - только демонстрация, что это всего-навсего 8-ой аналоговый пин. Так-то если замерять, то, конечно, лучше поставить analogReference(INTERNAL), Разумеется.
я тут некоторое количество ардуино нано проверил, слишком сильно гуляет температура, до 2-х градусов, между измерениями, можно конечно подумать на внутренний ИОН, что нестабилен, но сомнительно как-то, спиртом платки не промывал, остаётся конденсатор на AREF, он должен быть МП0, а что там в действительности знают только в поднебесной
ua6em, продолжаете тупить не по детски...
Код, которым вы поправили Евгения - полностью аналогичен его коду. Чего было вылезать, непонятно.
Рассуждения о "точности" не имеют смысла, пока вы не почитаете даташит. Там и точность указана и есть упоминание, что этот сенсор врет из-за нагрева самого чипа...
Это вы там отжигали на тему, что вышка в наше время не нужна? :)))
)) Я тут с мега48 (считая что она эквивалентна 88, 168, 328) пытался получить температуру. И, когда уже ничего не помогло, таки глянул даташит...(
А вообще датчик, конечно, полезен. Если всю дорогу спишь, то и температура от нагрева кристалла никак не зависит.
К сожалению, в посте #121 "брехня детектед" (жаль не могу поправить там)
Я совершенно забыл, что у меня wiring_analog.c "не из коробки".
Из коробки там перед записью пина в ADMUX стоит & 0x07 и пин 8 там просто не прокатывает.
Вот, если это "& 0x07" убрать, то да, действительно, так, как у меня написано - работает. И, кстати, если это убрать, то и напряжение питания можно измерять без работы с регистрами
Результат на Нано
К сожалению, в посте #121 "брехня детектед" (жаль не могу поправить там)
это сразу было понятно, но код я не стал выкладывать, так как уже не дружеский троллинг был бы...
Вопрос? насколько конденсатор на AREF влияет на измерения, я о ТКЕ ...
PS если ограничится 8 то можно видимо и "%9" )))
К сожалению, в посте #121 "брехня детектед" (жаль не могу поправить там)
Я совершенно забыл, что у меня wiring_analog.c "не из коробки".
Из коробки там перед записью пина в ADMUX стоит & 0x07 и пин 8 там просто не прокатывает.
Вот, если это "& 0x07" убрать, то да, действительно, так, как у меня написано - работает. И, кстати, если это убрать, то и напряжение питания можно измерять без работы с регистрами
Попробовал для УНО (чип как на нано :-), не знаю правильно я исправил в ADMUX & 0x07 или нет, но показывает в мониторе после первого числа (оно всегда неверное) - 5.01-5.03 Вольта (а должно 4.81 :-)
К сожалению, в посте #121 "брехня детектед" (жаль не могу поправить там)
Я совершенно забыл, что у меня wiring_analog.c "не из коробки".
Из коробки там перед записью пина в ADMUX стоит & 0x07 и пин 8 там просто не прокатывает.
Вот, если это "& 0x07" убрать, то да, действительно, так, как у меня написано - работает. И, кстати, если это убрать, то и напряжение питания можно измерять без работы с регистрами
Попробовал для УНО (чип как на нано :-), не знаю правильно я исправил в ADMUX & 0x07 или нет, но показывает в мониторе после первого числа (оно всегда неверное) - 5.01-5.03 Вольта (а должно 4.81 :-)
не знаю правильно я исправил в ADMUX & 0x07 или нет,
Выложите файл, я посмотрю.
не знаю правильно я исправил в ADMUX & 0x07 или нет,
Выложите файл, я посмотрю.
Строка 70.
, а реальное опорное напряжение конкретного экземпляра. Не исключено, что в вашем кристалле оно 1,05в.
Мерить вольтметром, выводя на AREF?
я привык осциллографом, аналоговым с открытым входом
PS было бы интересно посмотреть картинку от DIMAX
я привык осциллографом, аналоговым с открытым входом
"Менял я женщин там-тыр-ярам как перчатки!"
"Менял я женщин там-тыр-ярам как перчатки!"
приходится, цифровой у меня простенький DT9205A им только на диапазоне 20 вольт можно, а это неточно
Строка 70.
Оно!
, а реальное опорное напряжение конкретного экземпляра. Не исключено, что в вашем кристалле оно 1,05в.
Мерить вольтметром, выводя на AREF?
1. находишь у Гайвера какую-то библиотеку, там всё автоматизировано: вводишь в монитор порта значение с вольтметра, нужная константа вычисляется и записывается в еепром.
2. измеряешь напряжение на пине 5в (#127), считаешь, следующей прошивкой записываешь константу в еепром.
3. в режиме референсе интернал измеряешь входное напряжение около 1 вольта, считаешь, следующей прошивкой записываешь константу в еепром.
Мне как-то больше нравится третий вариант.
а самый простой - второй, для него окромя мильтиметра ничего не надо и входное сопротивление оного практически неважно
Мне как-то больше нравится третий вариант.
Только нужен высокоомный вольтметр. Мой мультиметр показал 0. Потому пришлось считать ручками, получилось 1,0522 ))
Да, у меня тоже 0 показал, выставил в скетч наобум 1.05 вместо 1.1 - стало очень точно :-)
Да, у меня тоже 0 показал, выставил в скетч наобум 1.05 вместо 1.1 - стало очень точно :-)
Точно наобум?
в формулу для VCC нужно подставлять не 1,1, а реальное опорное напряжение конкретного экземпляра. Не исключено, что в вашем кристалле оно 1,05в.
Да, у меня тоже 0 показал, выставил в скетч наобум 1.05 вместо 1.1 - стало очень точно :-)
переключи на предел измерения повыше, там входное больше однако, к примеру с 2 вольт на 20 это на порядок )))
PS поэтому для меня осциллограф идеальный инструмент и лампового вольтметра не надо...
Точно наобум?
В том смысле, что не подтверждённое измерениями.
Мне как-то больше нравится третий вариант.
Только нужен высокоомный вольтметр. Мой мультиметр показал 0.
Высокоомности народного российского DT-83* хватает с избытком, ещё и остается.
Точно наобум?
В том смысле, что не подтверждённое измерениями.
Мне как-то больше нравится третий вариант.
Только нужен высокоомный вольтметр. Мой мультиметр показал 0.
Высокоомности народного российского DT-83* хватает с избытком, ещё и остается.
Как куда? AREF <-> GND. Мультик - MY-64. Сам в шоке )))
Мне как-то больше нравится третий вариант.
Только нужен высокоомный вольтметр. Мой мультиметр показал 0.
Высокоомности народного российского DT-83* хватает с избытком, ещё и остается.
Как куда? AREF <-> GND. Мультик - MY-64. Сам в шоке )))
"в режиме референсе интернал измеряешь входное напряжение около 1 вольта"
Функция analogReference() | Аппаратная платформа Arduino
Настройкой INTERNAL к выводу AREF подключается внутреннее напряжение 1.1 В (или 2.56 микросхемы ATmega8). При этом напряжение соответствующее или превышающее 1.1 В будет конвертироваться АЦП в 1023. Другие значения напряжения конвертируются пропорционально.
Внутреннее подключение источника 1.1 В к выводу является высоко-импедансным, что означает, что для измерение напряжения на выводе может быть произведено только мультиметром с высоким сопротивлением. Ошибочное подключение напряжения к выводу AREF при этой настройке функции analogReference не повредит микросхему, но превысит значение 1.1 В. В этом случае АЦП будет конвертировать напряжение внешнего источника. Во избежание вышеописанных проблем настоятельно рекомендуется подключать внешнее напряжение через резистор 5 кОм.
А чисто математический метод и так ясен, и к мультиметру требований не предъявляет ))