maj 132010
 

Tak jak obiecałem, przedstawiam druga nową konstrukcję. Jest to stroik do każdego typu gitary (powinien też działać z innymi instrumentami strunowymi) wykorzystujący efekt stroboskopowy.

Zasada działania jest bardzo prosta. Mocne diody LED mrugają z częstotliwością wybranego tonu. W przypadku, gdy struna jest dobrze nastrojona (drga z taką samą częstotliwością co diody), to po oświetleniu jej w czasie gdy drga, widać dokładnie jedną cienką linię. Przy niewielkim odchyleniu częstotliwości linia oscyluje powoli na boki, a przy dużym rozstrojeniu widać kilka rozmazanych kresek. Strojenie polega na „unieruchomieniu” świetlnej kreski. Niestety, nie udało mi się tego uchwycić aparatem.

Układ jest bardzo prosty – zbudowałem go na mikrokontrolerze ATMega8 z użyciem podwójnego wyświetlacza segmentowego oraz dwóch mocnych diod LED 10mm. Dodatkowo dołączyłem beeper, który wydaje aktualnie wybrany ton. Dźwięk jest wybierany za pomocą pierwszych dwóch przycisków, natomiast trzeci aktywuje brzęczyk.

Program wymaga jeszcze drobnych kalibracji, ponieważ (jak to zwykle bywa w praktyce) teoretycznie poprawnie wyliczone wartości nie zapewniają idealnie dokładnej częstotliwości. Kod źródłowy wraz ze skompilowanym HEXem oraz projektem w Eagle (schemat + layout) dostępne poniżej. W planie mam dokładniejszą kalibrację oraz dodanie takich funkcji jak metronom oraz opcje strojenia, np. „niskie D” lub C. Oczywiście zapraszam do pisania komentarzy.

  Pobierz plik: strobetuner/strobetuner_0.1_a8_8mhz.hex
  Rozmiar: 11.19 KB
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/ebiwptr/silent/home/filedb.php on line 99

  Pobierz plik: strobetuner/strobetuner_0.1_src.zip
  Plik niedostępny!

  Pobierz plik: strobetuner/strobetuner_eagle.zip
  Rozmiar: 62.17 KB
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/ebiwptr/silent/home/filedb.php on line 99

maj 132010
 

Oto nowa wersja rejestratora temperatury. Tym razem jest to dedykowana płytka dwustronna wykonana metodą termotransferu zamiast uniwersalnej. Układ został wzbogacony o wyświetlacz alfanumeryczny, klawiaturę oraz beeper.

Klawiatura posiada 6 przycisków połączonych w matrycę – „strzałki”, „OK” (lewy-dolny) oraz „Powrót” (prawy-dolny). Po przetrzymaniu przycisku OK w czasie startu rejestratora (reset) włącza się tryb konfiguracji w którym można ustawić aktualny czas (w przyszłości będzie tam więcej opcji). Wyświetlacz, to 16-znakowy moduł na sterowniku zgodnym z HD44780 kupiony za jedyne 5,5zł w sklepie Lispol ;-). Wyświetlana jest na nim aktualna godzina oraz temperatura naprzemiennie z datą. W przeciwieństwie do pierwszej wersji, na płytce znajdują się trzy diody sygnalizacyjne (zasilanie, status – mruga co 5 sekund, zapis\odczyt z SD(SPI)\RTC(I2C)\Termometra(1Wire)) oraz beeper, który wydaje dźwięki podczas wciskania przycisków przy konfiguracji oraz sygnały kontrolne przy starcie. Dodatkowo na płytce znajduje się wyprowadzenie RS232 (TTL) przydatne przy debugowaniu.

Program nie jest jeszcze w pełni ukończony – wymaga trochę zmian w celu optymalizacji (był pisany „na szybko” – co widać np. przy budowie sekcji konfiguracji – ustawienia daty\godziny) oraz dodania kilku nowych funkcji. Rejestrator działa od początku lutego i jak na razie sprawuje się bardzo dobrze.

Firmware, przeglądarka (wersje skompilowane jak i źródła) dostępne poniżej! Jeśli podoba Ci się projekt, zostaw swój komentarz.

FOLDER PROJEKTU:

  Otwórz folder:
  TEMPLOGGER2/

FIRMWARE:

Aktualna wersja: 0.20

  Pobierz plik: templogger2/firmware/tl_firmware_0.20_a32_8mhz.hex
  Rozmiar: 56.05 KB
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/ebiwptr/silent/home/filedb.php on line 99

  Pobierz plik: templogger2/firmware/tl_firmware_0.20_src.zip
  Plik niedostępny!

* Program wymaga wyłączenia JTAGa – piny PC1…PC5 są używane (LCD).
Przykładowa konfiguracja w AVR8-Burn-o-mat:

do zrobienia m.in:

– zapisywanie wartości średniej z kilku pomiarów zamiast z jednego;
– opcja wyłączenia dźwięku, lub wyłączenia beepa kontrolnego podczas startu w godzinach nocnych – przydatne kiedy wyłączają i włączają prąd o 4 rano :-);
– uruchomienie watchdoga na wypadek zawieszenia się programu;
– automatyczna reinicjalizacja karty po wyjęciu w trakcie działania urządzenia;
– ogólna optymalizacja kodu, np. menu

znane błędy:

– zawieszanie się rejestratora po wyjęciu (i włożeniu) karty SD przy próbie zapisu (wymagany reset)

UKŁAD:

Aktualna wersja: 1.1

Schemat wykonałem przede wszystkim w celu wygodnego stworzenia layoutu płytki e Eagle, więc jest trochę niedokładny 😉

DODATKI:

– Przeglądarka (Win32; aktualna wersja: 1.0); program napisany w Delphi (7).
  Pobierz plik: templogger2/viewer/tl_viewer_1.0_bin.zip
  Rozmiar: 210.92 KB
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/ebiwptr/silent/home/filedb.php on line 99

  Pobierz plik: templogger2/viewer/tl_viewer_1.0_src.zip
  Plik niedostępny!

Przeglądarka online (aktualna wersja: 1.0); napisana w PHP – jeśli chcesz zobaczyć kod źródłowy, napisz do mnie.

WYNIKI POMIARÓW (offline):

Folder „dane” z plikami tekstowymi powinien znajdować się w jednym folderze razem z TLViewer.exe.
  Otwórz folder:
  TEMPLOGGER2/DANE/

lut 142010
 

Ostatnio w wolnym czasie dla zabawy zbudowałem prosty sterownik myszki szeregowej.
Po podłączeniu do portu COM i wystartowaniu komputera jest wykrywany jako zwykła myszka 2-przyciskowa.
Układ powstał z moich płytek testowych. Jest to najzwyklejsze połączenie mikrokontrolera ATMega8 z COMem przez układ MAX232. Dodatkowo do lini RTS portu podłączyłem tranzystor poprzez diodę prostowniczą i opornik, który uruchamia przerwanie w chwili pojawienia się stanu wysokiego.

Protokół jest bardzo prosty. Po pojawieniu sie +12V na linii RTS układ wysyła bajt 0x4D („M”) w celu inicjacji. Dalsza komunikacja polega na wysłaniu 3-bajtowych pakietów z aktualnym stanem zgodnie z tą tabelką:

Parametry transmisji to 1200 bodów/s, 7\8 bitów danych oraz brak kontroli parzystości. W przypadku 8 bitów danych, najstarszy bit zawsze ma wartość 1. Bit 6 w każdym bajcie jest stały. L i R mają wartość 1 w przypadku wciśniętego przycisku, a X\Y 0-7 to liczba w kodzie U2 (-128 do 127) określająca zmianę położenia kursora.

Krótki program w języku Bascom razem z HEXem skompilowanym dla ATMegi8@12MHz dostępny poniżej. Co 2 sekundy „robi kwadrat” kursorem po ekranie. Można go rozbudować, np. o obsługę klawiatury matrycowej.

  Pobierz plik: mouse_bas.zip
  Rozmiar: 1.02 KB
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/ebiwptr/silent/home/filedb.php on line 99

lut 142010
 

[13-05-2010]: Nowa werja rejestratora

Oto mój pierwszy opublikowany tutaj projekt – rejestrator temperatury z obsługą kart Secure Digital (SD).
(temat przeniesiony z portalu elektorda.pl)
Projekt powstał oczywiście w celach naukowych. Podstawą układu jest moja płytka testowa z mikrokontrolerem ATMega32. Dołączyłem do niej termometr cyfrowy DS18B20, zegar RTC DS1307 oraz adapter wpinany w gniazdo ISP (Kanda; zamiast LED jest podłączony PB4 – slave select), który wykonałem metodą termotransferu. Przystawka posiada stabilizator napięcia 3,3V (LF33CV), dzielniki napięcia z rezystorów oraz oczywiście gniazdo SD/MMC. Schemat wziąłem [stąd] , a projekt w eagle jest dostępny w paczce z programem.

Program napisałem w C (środowisko AVR Studio 4) z wykorzystaniem biblioteki FAT32 z bloga CC Dharmani, dzięki czemu mogę w prosty sposób kopiować dane z rejestratora na PC. Do przeglądania logów napisałem w Delphi (7) prostą aplikację generującą wykresy z plików tekstowych. Zarówno program dla mikrokontrolera jak i przeglądarka logów są napisane na szybko (tak, wiem, że mogłoby być bardziej optymalnie ), ale poprawkami zajmę się po sesji. Mikrokontroler komunikuje się z komputerem poprzez interfejs szeregowy RS232. Jak kuż wspomniałem kod nie jest jeszcze w pełni ukończony, przez co tryb ustawień włącza się porpzez dopisanie 1 linijki w kodzie zamiast zworką na płytce. W normalnym trybie pracy układ zapisuje temperaturę co 5 minut oraz dodatkowo wysyła wynik po RS232. Układ pracuje już 2 tygodnie bez zarzutów.

Przykładowy wykres:

Skompilowane programy oraz źródła dostępne poniżej. Domyślne ustawienia to UART na 19200 bodów (8;1;N) i 1Wire na PD6.

  Pobierz plik: temp_logger/temp_logger_0.1.zip
  Plik niedostępny!

Aktualne pomiary:
  Otwórz folder:
  TEMP_LOGGER/DANE/

W folderze z przeglądarką należy utworzyć katalog DANE i w nim umieścić pliki tekstowe z pomiarami.
  Pobierz plik: temp_logger/tlviewer.exe
  Rozmiar: 416.5 KB
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/ebiwptr/silent/home/filedb.php on line 99