Skocz do zawartości

Mily2001

Użytkownicy
  • Zawartość

    47
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

Mily2001 wygrał w ostatnim dniu 1 lutego

Mily2001 ma najbardziej lubianą zawartość!

Reputacja

15 Dobra

O Mily2001

  • Ranga
    3/10
  • Urodziny 12.09.1996

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Warszawa

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Mily2001

    Duży zegar na WS2812

    Po różnych testach ostatecznie stanęło na grubości 0.4mm, dawało to optymalne rozpraszanie światła i jednocześnie nie blokowało go zbyt dużo
  2. Mily2001

    Duży zegar na WS2812

    Zgadza się, ender 3, nawet widać kawałek na zdjęciach pod koniec :D Autopoziomowanie to jedno, kalibracja ekstrudera pewnie też by się przydała. Pewnie w wolnej chwili się tym zajmę, jest kilka rzeczy które można poprawić w tej drukarce małym, albo wręcz zerowym kosztem. Z adhezją dużych problemów nie miałem, mimo drukowania na szkle, aczkolwiek też drukowałem to dość wolno.
  3. Mily2001

    Duży zegar na WS2812

    @Treker farbą malowałem z założonymi wkładkami, dlatego bezpośrednio po malowaniu wkładki miejscami też były pomalowane, stąd ten mało ciekawy efekt. Po wyschnięciu farby wyjmowałem zamalowane częściowo wkładki i wkładałem na ich miejsce nowe. Dzięki takiemu podejściu nie musiałem się martwić że przez przypadek pomaluję farbą coś czego nie chcę pomalować, a przy okazji znalazłem zastosowanie dla nieudanych wkładek. Miałem ich całkiem sporo, bo jak się okazało, drukowanie tak cienkich elementów jest dość trudną sprawą i jest skrajnie wrażliwe na najmniejsze błędy w kalibracji beda drukarki :)
  4. Mily2001

    Duży zegar na WS2812

    Pojawiło się zapotrzebowanie na zegar cyfrowy, który będzie miał duże cyfry, przynajmniej 8-10cm wysokości. Dodatkowym wymaganiem było to, że cyfry nie mogą być czerwone. Wykluczyło to praktycznie wszystkie wyświetlacze 7-segmentowe. Dodatkowo cena wyświetlaczy tej wielkości jest już znaczna, koszt 4 sztuk to wydatek mniej więcej 200zł. Z tego powodu powstał pomysł realizacji takiego zegara na diodach WS2812. Po wykonaniu wstępnych projektów, zegar miał mieć cyfry wysokości ok 14cm, po dwie diody na segment, a obudowa miała zostać wykonana na drukarce 3D. Cały układ sterujący miał się znaleźć pomiędzy cyframi godzin i minut, co znacznie ograniczyło miejsce na podzespoły. Na początku układ miał bazować na Atmedze 8, jednak po dłuższych poszukiwaniach zdecydowałem się na Attiny814. W sieci nie ma zbyt wielu materiałów na temat tego procesora, jednak jego dokumentacja jest chyba jedną z najlepszych, z jakich miałem okazję do tej pory korzystać. Ponieważ nie jestem fanem ustawiania godziny poprzez przyciski, to zegar miał mieć możliwość zdalnego sterowania. Ostatecznie wybór padł na moduł Bluetooth HM-10. Do odmierzania czasu użyty został zegar DS1307 wraz z baterią CR2032. Dodatkową funkcjonalnością jest pomiar temperatury poprzez ADC i czujnik LM35. Konieczny był także pomiar jasności otoczenia, aby umożliwić automatyczne dostosowywanie się jasności diod. Wykorzystany został do tego zwykły fotorezystor. Jak się okazało, kompilowanie programów na Attiny81x przez gcc i Makefile nie jest proste i oczywiste. Przede wszystkim konieczne jest wykorzystanie gcc w wersji 8.x, oraz trzeba pobrać odpowiednie pliki nagłówkowe ze strony atmela, ponieważ avr-libc ich (jeszcze) nie dostarcza. Kolejnym wyzwaniem był programator, ponieważ Attiny814 korzysta z interfejsu UPDI, nie da się go zaprogramować poprzez USBasp. Programatory UPDI są kilkadziesiąt razy droższe od Attiny814, dlatego mocno wskazane było znalezienie jakiejś alternatywy. Okazało się nią jtag2updi, pozwalające na programowanie poprzez konwerter USB-UART oraz dowolny procesor, przy czym autor dostarcza gotowe wsady do atmegi328p (arduino). Sporą wadą takiego rozwiązania jest brak możliwości korzystania z debuggera, ale z odrobiną cierpliwości i oscyloskopem dało radę i bez niego. Diody led połączone są w dwa łańcuchy, było to konieczne ze względu na budowę zegara, a także pozwoliło zoptymalizować czas pełnego odświeżenia wyświetlacza. Ważne było, aby przeładowywać wszystkie diody w czasie mniejszym niż czas trwania jednego bajtu wysyłanego poprzez UART z prędkością 9600 baud. Wynikało to z faktu, że diody mają bardzo niewielki czas trwania jednego bitu, wynoszący ok 1.25us, przez co konieczne było wyłączenie przerwań na czas przeładowywania diod. Diody WS2812 działają na tej zasadzie, że pierwsza dioda w łańcuchu odbiera 3 bajty (24 bity) danych, a każde kolejne ignoruje i przesyła dalej. W przypadku przerwy w transmisji dłuższej niż 50us stan transmisji jest resetowany i pierwsza dioda zaczyna ponownie odbierać 3 bajty dla siebie. Aby zapewnić czasy możliwie najbardziej zbliżone do tych w dokumentacji, funkcja odświeżająca diody została napisana w assemblerze. Ponieważ nie posiadam drukarki, która umiałaby drukować dwoma kolorami jednocześnie, to cyfry składają się z czarnego szkieletu oraz białych wkładek, wydrukowanych oddzielnie. Efekt jest całkiem dobry. Aby jeszcze nieco poprawić równomierność świecenia segmentów cyfry zostały od środka pomalowane farbą akrylową na biało. Z racji tego że każdy segment składa się z dwóch diód, to możliwe jest wyświetlanie dwukolorowe, dające całkiem ciekawy efekt, jednak z braku czasu na razie zegar jest w stanie świecić tylko na jeden wybrany kolor. Na zdjęciu powyżej niektóre segmenty są pomalowane farbą od środka, stąd te ciemniejsze ramki, ostatecznie wszystkie wkładki zostały wymienione na takie bez farby. Do sterowania zegarem napisana została aplikacja w React Native, pozwalająca na ustawianie czasu, koloru oraz dodatkowych efektów. Komunikacja odbywa się poprzez wspomniany wyżej Bluetooth. Wskaźniki jasności były przydatne głównie w fazie rozwoju zegara, między innymi do testowania korekcji gamma. W aktualnej wersji zegar nie wysyła już pomiarów, ale w razie czego możliwe jest ich przywrócenie. Ostatecznie pomiar temperatury okazał się dość nieskuteczny, ponieważ termometr jest w środku obudowy, to pokazuje temperaturę wyższą niż jest w rzeczywistości. Wynika to między innymi z faktu, że podzespoły w środku nie są idealne i wydzielają trochę ciepła, na tyle dużo że temperatura zawyżona jest o 2-3°.
  5. Daj kod swojego programu bo mi to wygląda na jakiś głupi błąd.
  6. Mily2001

    Wzmacnianie czujnika IR

    Tak, miga. Dzięki za uwagę co do funkcji. Przydatne Co mam w takim razie zrobić dalej żeby timer1 działał jak trzeba? Albo gdzie podłączyć diodę?
  7. Mily2001

    Wzmacnianie czujnika IR

    Mi to wygląda na błąd programu: #include <avr/io.h> #include <util/delay.h> void zapal(int ktore) { PORTA|=(1<<ktore); } void zgas(int ktore) { int tmp; tmp=PORTA; tmp&=(1<<ktore); tmp^=PORTA; PORTA=tmp; } int main(void) { PORTB=0xFF; DDRD=0xFF; DDRA=0xFF; DDRD |= 0x08; OCR1A = 111; TCCR1A |= (1 << COM1A0); TCCR1B |= (1 << WGM12) | (1 << CS10); while(1) { if((PINB &0x10)) { zgas(1); }else if(!(PINB &0x10)) { zapal(1); } } return 0; } Dioda jest podłączona pod PD3 (0x08) i po załadowaniu tego programu do uC na diodzie nie ma napięcia. Dioda świeci jeśli zamiast DDRD |= 0x08; OCR1A = 111; TCCR1A |= (1 << COM1A0); TCCR1B |= (1 << WGM12) | (1 << CS10); wstawię PORTD=0x08 Sam TSOP działa bo sprawdzałem go używając pilota. Jeśli ktoś ma jakieś pomysły to proszę o pomoc.
  8. Mily2001

    Wzmacnianie czujnika IR

    Nie do końca o to mi chodziło. Raczej o coś co zamiast migać 36k razy na sekundę migało sobie raz na sekundę. Chcę sprawdzić czy to wina diody czy uC.
  9. Mily2001

    Wzmacnianie czujnika IR

    Czyli jak wygląda program do migania co dajmy na to sekundę?
  10. Mily2001

    Wzmacnianie czujnika IR

    Nie mam zamiaru tego zauważać, ale jeśli pod OCR1A wpiszę 8000000 to powinno migać raz na pół sekundy (to da się zauważyć ) a mimo to świeci ciągłym światłem.
  11. Mily2001

    Wzmacnianie czujnika IR

    Nie to żeby coś ale to nie za bardzo działa. Wpisałem mu 8000000 i nie migało co sekundę, tak samo TSOP nie reaguje przy 111 mimo że działa (sprawdzałem pilotem ). Jakieś pomysły?
  12. Mily2001

    Wzmacnianie czujnika IR

    Ok, właśnie o to mi chodziło. Jeszcze jakbyś jakąś tabelkę czy coś podrzucił dla innych częstotliwości kwarcu to byłbym wdzięczny.
  13. Mily2001

    Wzmacnianie czujnika IR

    Zdecydowałem się na TSOPa 36 KHz. Przejrzałem linka i znalazłem ten kod: #include <avr/io.h> int main(void) { DDRB = 0x02; // Pin PB1 jako wyjście OCR1A = 111; // wartość wpisana do OCR1A TCCR1A |= (1 << COM1A0); // przy zrównaniu przełacz stan pinu na przeciwny TCCR1B |= (1 << WGM12) | (1 << CS10); // tryb CTC - max. OCR1A, preskaler 1 while(1) // pusta pętla programu {} } Czy ktoś mógłby mi go wyjaśnić i pokazać jak używać tego razem z innym programem, który używa również innych pinów z portu b.
  14. Mily2001

    Wzmacnianie czujnika IR

    Myślę że rzeczywiście TSOP będzie najlepszym wyjściem. Potrzebuję tylko informacji co do częstotliwości jaką mam kupić no i oczywiście jak to wszystko zmontować i zaprogramować na Atmedze 16.
  15. Mily2001

    Wzmacnianie czujnika IR

    Na diodę (nadawczą) mam opornik 1k. Na odbiorczej nie ma nic.
×