Tajemnice wejść analogowych Arduino Leonardo i Yun

W Arduino Leonardo i Arduino Yun zastosowano inny kontroler niż w tradycyjnych płytkach. Jest nim ATmega32u4. Ma on kilka zalet w porównaniu z poprzednikami – sprzętowe USB, więcej wyjść PWM i więcej wejść analogowych.

Wejścia analogowe oprócz tradycyjnych cech opisanych w poprzednim wpisie mają też nowe możliwości.

long readADC(byte ref, byte input)
{
  ADMUX = (input & 31) | ((ref & 3) << 6);
  bitWrite(ADCSRB, 5, ((input & 32) >> 6));
  delay(2); // Wait for Vref to settle
  ADCSRA |= _BV(ADSC); // Convert
  while (bit_is_set(ADCSRA,ADSC));
  long result = ADCL;
  result |= ADCH<<8;
  
  return result;
}

void setup() 
{
  while (!Serial);
  Serial.begin(9600);
}

void loop() 
{
  Serial.println(readADC(3, 39));
  delay(1000);
}

Użyta w programie funkcja readADC pozwala je odkryć.

word value = readADC(ref, input);

  • value – wartość odczytana z wejścia analogowego (0 – 1023)
  • ref – numer źródła napięcia referencyjnego
  • input – numer wejścia analogowego.

Argument “ref” może przyjąć następujące wartości:

  • 0 – napięcie referencyjne to napięcie zasilania
  • 1 – napięcie referencyjne pochodzi z pinu AREF
  • 3 – napięcie referencyjne pochodzi z dokładnego źródła 2,56 V

Jeśli czytałeś poprzedni wpis to zadanie i możliwości napięcia referencyjnego są ci znane.

Dużo ciekawiej jest z drugim argumentem “input”. Zacznę od standardowych możliwości.

Wprowadzając tam jedną z tych wartości odczytujesz standardowe wejścia analogowe:

  • 0    A5
  • 1    A4
  • 4    A3
  • 5    A2
  • 6    A1
  • 7    A0
  • 32    D4/A6
  • 33    D12/A7
  • 34    D6/A8
  • 35    D8/A9
  • 36    D9/A10
  • 37    D10/A11

Do tej pory nuuuda. Wszystko prawie jak bibliotekach Arduino, tylko bardziej zagmatwane ;-). Jednak mamy do dyspozycji więcej liczb w tym argumencie, które kryją dodatkowe możliwości.

Następna grupa to:

  • 30    1.1 V
  • 31    0 V
  • 39    Temperatura

Wartość 30 argumentu podaje na wejście przetwornika dokładne napięcie 1,1 V. Pozwala to skalibrować wynik podawany przez wejście i napięcie odniesienia. Tak jak w poprzednim wpisie.

Wartość 31 podaje na wejście analogowe 0 V. To taka wartość testowa, czy przetwornik zwróci wynik 0.

Wartośc 39 odczytuje temperaturę panującą w środku kontrolera. Pomiar nie jest zbyt precyzyjny. Ma dokładność +/-10 stopni Celsjusza. Służy głównie do tego by kalibrować wewnętrzne elementy wrażliwe na temperaturę (jak generator RC). Trudno nim zmierzyć temperaturę w pokoju, bo przecież kontroler też się nagrzewa podczas pracy.

Kolejne wartości dotyczą wejść symetrycznych.

Standardowo wejścia analogowe Arduino mierzą napięcie między pinami GND i wybranym wejściem analogowym.

W wejściach symetrycznych dostajesz do dyspozycji 2 wejścia analogowe. Jedno z biegunem dodatnim “+”, a drugie z biegunem ujemnym “-”. Napięcie jest mierzone między tymi biegunami.

Wejścia symetryczne ułatwiają wiele obwodów w których nie chcesz do pomiarów używać GND. Jak np. w pomiarze prądu za pomocą rezystora o małej wartości, albo przy czujnikach wagi w układzie mostka.

Wartości wejść symetrycznych to:

  • 16    +A5    -A4
  • 20    +A3    -A4
  • 21    +A2    -A4
  • 22    +A1    -A4
  • 23    +A0    -A4

Czyli biegun dodatni takiego wejścia jest w wybranym pinie A0, A1, A2, A3, A5, a biegun ujemny jest w pinie A4.

Wejścia symetryczne mają jeszcze jedną opcję. Pozwalają przepuścić wejście przez wzmacniacz i wzmocnić sygnał od 10 do 200 razy.

Kombinacja wejść symetrycznych i siła wzmocnienia przypisana jest do następujących wartości:

  • 9    +A4    -A5    x10
  • 11    +A4    -A5    x200
  • 38    +A4    -A5    x40
  • 40    +A3    -A5    x10
  • 41    +A2    -A5    x10
  • 42    +A1    -A5    x10
  • 43    +A0    -A5    x10
  • 44    +A3    -A4    x10
  • 45    +A2    -A4    x10
  • 46    +A1    -A4    x10
  • 47    +A0    -A4    x10
  • 48    +A3    -A5    x40
  • 49    +A2    -A4    x40
  • 50    +A1    -A5    x40
  • 51    +A0    -A5    x40
  • 52    +A3    -A4    x40
  • 53    +A2    -A4    x40
  • 54    +A1    -A4    x40
  • 55    +A0    -A4    x40
  • 56    +A3    -A5    x200
  • 57    +A2    -A5    x200
  • 58    +A1    -A5    x200
  • 59    +A0    -A5    x200
  • 60    +A3    -A4    x200
  • 61    +A2    -A4    x200
  • 62    +A1    -A4    x200
  • 63    +A0    -A4    x200

Wzmocnienie 200 razy przy napięciu odniesienia 2,56 V pozwoli zmierzyć napięcia nawet do 12,5 mikrowolta.

sprae

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.