Skocz do zawartości

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


Pomocna odpowiedź

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

@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

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.