Arduino Polska Forum
analogReference(INTERNAL) 'INTERNAL' was not declared in this scope - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: analogReference(INTERNAL) 'INTERNAL' was not declared in this scope (/watek-analogreference-internal-internal-was-not-declared-in-this-scope)



analogReference(INTERNAL) 'INTERNAL' was not declared in this scope - lgema - 08-01-2020

Próbuję odczytać wartości z przetwornika ADC z użyciem wewnętrznego źródła napięcia czyli funkcji analogReference(INTERNAL);, ale podczas kompilacji kodu wyrzuca błąd: "'NTERNAL' was not declared in this scope" - dlaczego?


RE: analogReference(INTERNAL) 'INTERNAL' was not declared in this scope - Agregacik - 08-01-2020

Że tak zapytam bom niekompetentny. Czy trzeba coś "pisać" aby wykorzystywać wewnętrzne źródło napięcia odniesienia? Czy domyślnie nie jest ono podłączone do Vcc.
Poprawcie jak błądzę.


RE: analogReference(INTERNAL) 'INTERNAL' was not declared in this scope - lgema - 08-01-2020

(08-01-2020, 21:54)Agregacik napisał(a): Że tak zapytam bom niekompetentny. Czy trzeba coś "pisać" aby wykorzystywać wewnętrzne źródło napięcia odniesienia? Czy domyślnie nie jest ono podłączone do Vcc.
Poprawcie jak błądzę.

Zasilanie do którego podłączamy układ lubi "pływać" - jest mało stabilne co przekłada się na pomiary ADC, dlatego można użyć wewnętrznego źródła zasilania jako odniesienie do pomiarów...


RE: analogReference(INTERNAL) 'INTERNAL' was not declared in this scope - Jarewa0606 - 08-01-2020

Zgadza sie ale tyczy sie to AVR, a my mamy szklane kule i się domyślimy dlaczego

analogReference(INTERNAL);

wyrzuca błąd: "'NTERNAL' was not declared in this scope"

Nawet nie wiemy o jaki układ chodzi i mamy się domyśleć. Ja się domyślam ale nie chce cię rozczarować,


RE: analogReference(INTERNAL) 'INTERNAL' was not declared in this scope - Robson Kerman - 09-01-2020

Arduino AVR Boards (Uno, Mega, Leonardo, etc.)

DEFAULT: the default analog reference of 5 volts (on 5V Arduino boards) or 3.3 volts (on 3.3V Arduino boards)

INTERNAL: an built-in reference, equal to 1.1 volts on the ATmega168 or ATmega328P and 2.56 volts on the ATmega32U4 and ATmega8 (not available on the Arduino Mega)

INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only)

INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only)

EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is used as the reference.

Arduino SAMD Boards (Zero, etc.)

AR_DEFAULT: the default analog reference of 3.3V

AR_INTERNAL: a built-in 2.23V reference

AR_INTERNAL1V0: a built-in 1.0V reference

AR_INTERNAL1V65: a built-in 1.65V reference

AR_INTERNAL2V23: a built-in 2.23V reference

AR_EXTERNAL: the voltage applied to the AREF pin is used as the reference

Arduino megaAVR Boards (Uno WiFi Rev2)

DEFAULT: a built-in 0.55V reference

INTERNAL: a built-in 0.55V reference

VDD: Vdd of the ATmega4809. 5V on the Uno WiFi Rev2

INTERNAL0V55: a built-in 0.55V reference

INTERNAL1V1: a built-in 1.1V reference

INTERNAL1V5: a built-in 1.5V reference

INTERNAL2V5: a built-in 2.5V reference

INTERNAL4V3: a built-in 4.3V reference

EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is used as the reference

Arduino SAM Boards (Due)

AR_DEFAULT: the default analog reference of 3.3V. This is the only supported option for the Due.


RE: analogReference(INTERNAL) 'INTERNAL' was not declared in this scope - kaczakat - 09-01-2020

Pewnie po tym, co zacytował @Robson Kerman wiele się wyjaśniło, a żeby było do końca jasne "INTERNAL" zadziała dla tych płytek, które mają tylko jedno "INTERNAL", te które mają wybór mają swoje inne "słówka kluczowe".
@Agregacik, domyślnie po starcie Arduino AVR używasz odniesienia do VCC, wewnętrzne lub zewnętrzne trzeba ustawić.
Jako ciekawostkę dodam, że w czasach, gdy minimalne U zasilania było >2.7V, wstawiali źródła wewnętrzne 2.56, gdy potem obniżono do minimum 1.8V wewnętrzne źródło podaje wartość 1.1V. Dzięki temu uC może zmierzyć jakim napięciem jest zasilany. W modelach przejściowych dostępne były obie wartości Uo.


RE: analogReference(INTERNAL) 'INTERNAL' was not declared in this scope - Agregacik - 09-01-2020

Czyli tak w skrócie:
DEFAULT: napięcie odniesienia wynosi 5V lub 3,3V - w zależności od zasilania układu - czyli jest równe napięciu zasilania układu,
INTERNAL: napięcie odniesienia wynosi 1.1V dla ATmega168 i ATmega328 i 2.56V dla ATmega8,
INTERNAL1V1: napięcie odniesienia wynosi 1.1V - tylko ARDUINO MEGA,
INTERNAL2V56: napięcie odniesienia wynosi 2.56V - tylko ARDUINO MEGA,
EXTERNAL: napięcie podłączone do pinu AREF - 0 do 5V.

źródło https://plociennik.info/index.php/funkcje?start=2


RE: analogReference(INTERNAL) 'INTERNAL' was not declared in this scope - Robson Kerman - 09-01-2020

(09-01-2020, 11:58)Agregacik napisał(a): DEFAULT: napięcie odniesienia wynosi 5V lub 3,3V - w zależności od zasilania układu - czyli jest równe napięciu zasilania układu,

To w końcu jest równe napięciu zasilania, czy 5V lub 3.3V ???
AVR'y stabilnie pracują już od 1.8V, więc nie można powiedzieć że dla DEFAULT: napięcie odniesienia wynosi 5V.
Gdy napięcie odniesienia jest ustawione na 

Kod:
ADMUX = (0x01 << REFS0);   /* AVCC with external capacitor at AREF pin */


To napięcie odniesienia jest dokładnie takie, jak zmierzysz na pinie Vin.
Czyli pływa zależnie od obciążenia.


RE: analogReference(INTERNAL) 'INTERNAL' was not declared in this scope - lgema - 09-01-2020

(08-01-2020, 23:02)Jarewa0606 napisał(a): Zgadza sie ale tyczy sie to  AVR, a my mamy szklane kule i się domyślimy dlaczego

analogReference(INTERNAL);

wyrzuca błąd: "'NTERNAL' was not declared in this scope"

Nawet nie wiemy o jaki układ chodzi i mamy się domyśleć. Ja się domyślam ale nie chce cię rozczarować,

Kurcze edytowałem post i podczas pisania padła mi bateria, dlatego nie dopisałem najważniejszego - używam w tym wypadku Wemos D1 mini (klon) opartego na układzie ESP8266-E12E/S...


RE: analogReference(INTERNAL) 'INTERNAL' was not declared in this scope - Jarewa0606 - 09-01-2020

Własnie tego się domyślałem, a wiesz że esp8266 ma napięcie referencyjne wewnętrzne 1V??

Żeby uzyskać dobre wyniki trzeba zadbać o dobre zasilanie.... Dlatego w tym przypadku wemos d1 to lipa...