Skocz do zawartości

Kurs Arduino II - #2 - diody RGB (tradycyjne oraz WS2812)


Pomocna odpowiedź

(edytowany)

Witam,

kolejny świetny odcinek kursu. Zaprogramowałem sekwencję jak z "Nieustraszonego" - to pierwszy element mojego KITT-a 😉. Chciałem po kursie elektroniki zrobić wersję analogową, ale jakoś nie udało mi się kupić jeszcze układu zliczającego. Tutaj w pętli oprócz zaświecania kolejnej diody zaświecam słabiej 2 sąsiednie. Poniżej program i film jak to działa.

#include <Adafruit_NeoPixel.h>

#define pixelsNumber 8
#define ledPin A5

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(pixelsNumber, ledPin, NEO_GRB + NEO_KHZ800);

const uint32_t darkRed = pixels.Color(2, 0, 0);
const uint32_t red = pixels.Color(16, 0, 0);
const uint32_t lightRed = pixels.Color(64, 0, 0);

void setup() {
  pixels.begin();
  for (int i = 0; i < pixelsNumber; i++) {
    pixels.setPixelColor(i, darkRed);
  }
  pixels.show();
}

void loop() {
  for (int i = 0; i < pixelsNumber; i++) {
    turnOn(i);
    delay(100);
    turnOff(i);
  }

  for (int i = pixelsNumber-2; i > 1; i--) {
    turnOn(i);
    delay(100);
    turnOff(i);
  }
}

void turnOn(int position) {
  pixels.setPixelColor(position, lightRed);
  if (position  > 0) {
    pixels.setPixelColor(position - 1, red);
  }
  if (position  < pixelsNumber) {
    pixels.setPixelColor(position + 1, red);
  }
  pixels.show();
}

void turnOff(int position) {
  pixels.setPixelColor(position, darkRed);
  if (position  > 0) {
    pixels.setPixelColor(position - 1, darkRed);
  }
  if (position  < pixelsNumber) {
    pixels.setPixelColor(position + 1, darkRed);
  }
  pixels.show();
}

 

kitt.gif

Edytowano przez Raccoon
  • Lubię! 2
Link to post
Share on other sites

Mam pytanie odnośnie wielkości kondensatora jaki należy podłączyć równolegle z listwą diod do zasilania. W tekście jest napisane

Cytat

 Równolegle z pinami zasilającymi podłączamy kondensator elektrolityczny. Przy tej ilości diod 100uF będzie wystarczające.

Od czego ona zależy i jak? W kursach elektroniki i techniki cyfrowej zwykle do zasilania były wpinane równolegle 2 kondensatory 100nF i 220uF.

Link to post
Share on other sites
(edytowany)

@Raccoon To o czym piszesz nazywa się kondensatorem filtrującym zasilanie albo kondensatorem odsprzęgającym (decoupling capacitor) lub kondensatorem obejściowym (bypass). Stosuje się je aby filtrować zasilanie - czyli odrzucić składową zmienną w sygnale. Co to oznacza?

W sytuacji, gdy na linii zasilania pojawia się spadek napięcia trzeba temu przeciwdziałać. Spadki mogą pochodzić z różnych powodów. Pierwszy to na pewno rezystancja i długość przewodów zasilających (stąd indukcyjność). Dodając większe pojemności np. 100-220uF przeciwdziałasz zmianom napięcia zasilania pochodzącym z zewnątrz od zasilacza i kabli - to jest ten decoupling.

Obok tych większych (elektrolitycznych i tantalowych) kondensatorów pojawiają się często ceramiczne 100nF. Dzieje się tak ponieważ duży kondensator jest za wolny dla niektórych sygnałów. Jeżeli mamy do czynienia z układem cyfrowym, w którym może dojść do szybkiego przełączeń wielu tranzystorów, to mogą pojawić się minimalne ale znaczące spadki napięcia wynikające z przekroczenia wydajności prądowej zasilania (plus rezystancja kabli, indukcyjność itp.). W takiej sytuacji szybki kondensator 100nF (o niskiej szeregowej rezystancji i zastępczej szeregowej indukcyjności) jest w stanie dostarczyć energię lepiej niż główne źródło zasilania - to jest bypass.

Całość tego tematu można związać teorią filtrów cyfrowych i częstotliwości (harmonicznych) w sygnale. Ogólny wzór na tzw. reaktancję czyli opór dla wartości przemiennych (sinusoidalnych) w sygnale to X = 1 / (2πfC) wyrażane w Ω. Sygnał składa się z 2 części - stałem czyli powiedzmy 6 V i zmiennej składającej się z wielu częstotliwości (harmonicznych). Aby odfiltrować (sprowadzić do masy) składowe zmienne trzeba sprawić żeby dla nich reaktancja była możliwie niska - niski opór szybko odprowadzi napięcie do masy. Widać tu że częstotliwość i pojemność są ze sobą powiązane, aby mieć stałą wartość to jedno zwiększamy a drugie zmniejszamy.

Już nie brnąc dalej w temat, pomijając zastępczą szeregową indukcyjność, to 2 zasady:

  • większa pojemność redukuje (filtruje) niskie częstotliwości i umieścić ją możesz raczej dowolnie w obwodzie,
  • niska pojemność redukuje wysokie częstotliwości i umieszcza się możliwie blisko układu scalonego, wymagającego stabilnego napięcia zasilania i generującego krótkie spadki napięcia.

image.thumb.png.4640d5c386a0ed9e463db5a214a7df69.png

Link

Edytowano przez Gieneq
  • Lubię! 1
  • Pomogłeś! 1
Link to post
Share on other sites
(edytowany)

@Gieneq Dzięki za wyczerpujące wyjaśnienia. Rozjaśniłeś mi temat. Ciekawy artykuł podlinkowałeś.

Edytowano przez Raccoon
Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.