Archiwum z Maj 2010

Płytki testowe do eksperymentów

czwartek, 20 Maj 2010

Do montowania prototypów dotychczas używałem płytek uniwersalnych, w które wlutowywane były potrzebne mi elementy. Jednak często najlepszym (najszybszym) podejściem jest montaż na płytce stykowej.

Zalety:

przy dobrej organizacji warsztatu – b łyskawicznie można przetestować interesujące rozwiązania

Wady

po jakimś czasie zmontowany układ może (duże prawdopodobieństwo) przestać działać. Po prostu połączenia różnych metali przestają przewodzić prąd.

Płytki nie są najtańsze, jednak są wielokrotnego użytku.

Organizacja warsztatu.

Jako, że jestem zwolennikiem montażu powierzchniowego (nie chce mi się wiercić dziur), mam lekki problem. Na szczęście mam kilka procesorów w wersji DIP, oraz na warszawskiej giełdzie na Bielanach kupiłem kilka paczek z różnistymi elementami po 2 zł paczka. W paczce na oko ok. kilka tysięcy diod, dławików, rezystorów. Rezystory takie do zastosowań cyfrowych, bo o niskich wartościach.

Po drugie, należy zaopatrzyć się w kilka metrów skrętki – drutu, oraz dobry ściągacz izolacji. Takie druciki (o średnicy 0.5 mm) są IDEALNE do łączenia punktów, przy czym są różnokolorowe :) .

Po trzecie, zrobiłem sobie takie terminale do SPI, z jednej strony wtyczka, z drugiej opisane druciki, aby łatwo było programować procesor.

Do takich płytek stykowych dobrze pasują (trochę się rozpychają, ale to nieszkodzi) goldpiny. Mam kilka modułów (usb na FT232RL, LCD telefonów nokii, siemensa, gniazdka różnego rodzaju), które wtykam w płytkę i już.

Pozostaje kwestia zasilania – podłączam zasilacz laboratoryjny 0-15V (ustawiony na 5V :) ) lub 4 paluszki – akumulatorki – wtedy jest ciszej, bo akumulatorki nie mają wentylatorka. Paluszki mam umieszczone w koszyczku na baterie.

To mniej więcej cały mój warsztat.

Timer – wodolej

czwartek, 20 Maj 2010

Jesteśmy z żoną szczęśliwymi posiadaczami filtra do wody. Filtr jest w postaci oddzielnego kraniku, przez który woda sobie leci mniej więcej 2litry/minutę.

Nie mamy cierpliwości czekać na nalanie się np. 4 litrów wody, stąd pomysł na timerek, który – skalibrowany odpowiednio – odmierza zadaną ilość wody, poczynając piszczeć pod koniec. Zasilany bateryjnie, chodzi już pół roku. Zbudowany na podwójnym wyświetlaczu LED oraz AtTiny 2313. Pozwala na kalibrację, wybór kranika z wodą (do gotowania/ do picia, do picia leci wolniej, bo musi się namineralizować). Zawsze włączony, pracuje przez ogromą ilość czasu w trybie power down mikrokontrolera.

Timer - Wodolej

Timer - wodolej

Sterownik ogrzewania 11-kanałowy

czwartek, 20 Maj 2010

Sterownik do ogrzewania w moim (i mojej żony) domu – prototyp powstał na płytce stykowej w jeden wieczór. Pozwalał na uruchamianie mikroprzyciskami poszczególnych obwodów na 1,2,3 lub 4 godziny.

Aktualna wersja jest zmontowana na płytce w technologii mieszanej: przewlekanej (terminale, mikrokontroler i darlingtony) oraz smd (rezystory i kondensatory) oraz umieszczona w obudowie na szynę din. Steruje 11 przekaźnikami umieszczonymi również na szynie din. Na razie zasilana jest z zewnętrznego zasilacza 5V.

Docelowo sterownik będzie wykonywał polecenia systemu nadzorującego, jednak przewidziany jest na działanie samodzielne w przypadku braku nadzorcy.

Sterownik ogrzewania

Sterownik Ogrzewania

xdb2usb – podłączenie klawiatury ADB do maca z USB

czwartek, 20 Maj 2010

Dnia 8 listopada 2007 roku stworzyyłem mój pierwszy tak skomplikowany projekt. Zawsze wiedziałem (tak, tak, to się wie!), że jestem w stanie nie tylko coś zaprogramować, ale też coś skonstruować.

I oto jest!

Pierwszy wolny (od wolności) interfejs adb2usb pozwalający podłączyć stare klawiatury makowe adb do niemal dowolnego komputera wyposażonego w złącze usb*. Projekt zainspirowany przez projekt kbdbabel.

Jest zupełnie używalna ( jako że cały ten tekst napisałem właśnie na Apple Extended Keyboard II. Używam jej od tego czasu z powodzeniem do dziś.

Układ składa się z dwóch części:

jedna (attiny13) odpowiada za dekodowanie protokołu adb i przesyłanie danych przez złącze szeregowe bez żadnej interpretacji (typowy konwerter adb na serial);

druga (atmega8) czyta dane przesyłane szeregowo, przetwarza kody klawiszy ze standardu adb na standard usb, po czym przesyła dane przez usb do komputera.

Nie ma możliwości przepełnienia łącza szeregowego – zaimplementowane jest sterowanie przepływem typu „można przesyłać!” – jeśli strona usb (atmega8) jest gotowa do pobierania i przetwarzania danych.

Buforowanie klawiszy odbywa się wewnętrznie w klawiaturze. Nie ma potrzeby powtórnej implementacji buforowania.

Co działa:

Wszystkie zwykłe klawisze, klawiatura jest przełączana do trybu „3” co oznacza odróżnianie lewych i prawych klawiszy funkcyjnych w klawiaturach obsługujących ten tryb (w pozostałych powinno działać rozpoznawanie lewych klawiszy funkcyjnych); tryb „3” jest włączany po chwilowej nieaktywności (np. po powtórnym podłączeniu klawiatury).
Klawisze funkcyjne: f13 – mute, f14 – volume down, f15 – volume up

Nie działają:

Klawisz Power, caps lock – bo w klawiaturze nie działa standardowo, oraz NIE CIERPIĘ caps lock (w pracy mam wydłubany, w mini macu zablokowany w systemie), budzenie klawiaturą – jest wyłączone (ale zaimplementowane), bo system myśli że zmieniono klawiaturę i przestawia ją tak, że ~ (tylda) nie działa.

Do zrobienia:

  • programowe przełączanie pomiędzy makowym układem klawiszy a pecetowym (dotyczy f13-f15 oraz keypad)
  • być może uda się opanować budzenie przez klawiaturę
  • zamiana klawiszy alt i jabłko; tu jest szkopuł, bo klawiatura jest w stanie odróżnić lewy alt od prawego, ale lewe jabłko od prawego już nie … dotyczy układu w Windowsach, bo te odróżniają systemowo klawisze funkcyjne prawe od lewych, zwłaszcza alty.
  • zapalanie diodek odpowiednio do trybu pracy klawiatury (num lock, caps lock, scroll lock)

Oto:

Obrazki do druku są w rozdzielczości 300dpi.

Fuse bity dla attiny13: lfuse=0x7a, hfuse=0xff (domyślny)

Fuse bity dla atmega8: lfuse=0xdf, hfuse=0x99 (domyślny)

Schemat i płytkę zaprojektowałem tak, aby była kompatybilna z przyszłymi wersjami oprogramowania.

Jedyne co wydaje się niewykonalne na pierwszy rzut oka, to sterowanie diodami świecącymi w klawiaturze ze względu na brak połączenia zwrotnego do procesora attiny13. Jednak wydaje się, że jeśli to będzie konieczne, to jeden dodatkowy przewód do starej płytki załatwi sprawę, podczas, gdy w nowej będzie to uwzględnione.

Nie odpowiadam za jakiekolwiek uszkodzenia sprzętu wynikłe w wyniku montowania powyższego interfejsu! Ja swój zmontowałem i właśnie na nim piszę ten tekst – znaczy działa!

Na razie nie podaję kodów źródłowych; ukażą się wkrótce, po uporządkowaniu prototypowego kodu (który powstał na kolanie, „aby tylko działał”).

Czas tworzenia powyższego projektu od zera do momentu działania bez zarzutu – ok. 3 tygodni (etap pośredni – półdziałający prototyp zmontowany na jednym procesorze atmega8 gubiący bity ze względu na długą obsługę przerwań USB)

W projekcie użyłem doskonałej biblioteki avrusb do wyłącznie programowej obsługi usb. Ze względu na licencję jestem zobowiązany więc do umieszczenia kodu źródłowego.

Koszt części – ok. 15 zł – 5 piw!

  • attiny13 – 3-4 zł
  • atmega8 – 4-5 zł
  • rezystory, diody i rezonator- ok. 2 zł
  • płytka – tutaj różnie, można zmontować na uniwersalnej – ok 1 zł.
  • gniazdka – usb ok. 2 zł, ew. sam kabelek ok. 1 zł (do obcięcia), svideo ok 1 zł.

*) – nie działa z FreeBSD 5.4 i prawdopodobnie z innymi wersjami. Testowany na Debianie, MacOS X, Windows XP, działa bez zarzutu.


Top view

Widok z góry

Overview

Widok

PCB soldered

Zlutowana płytka

Fit in ISDN case

Umieszczony w obudowie od ISDN

Ready to work

Gotowy do pracy

DVD Plotter

czwartek, 20 Maj 2010

Projekt DVD Plotter z dwóch padniętych nagrywarek DVD.

Pomysł zrobienia projektu pojawił się w wyniku rozważań, co możnaby zrobić z dwóch nagrywarek zakupionych na Allegro na części (nie było w nich lasera :(

Zamysł był taki: zbudować ploter wykorzystując wyłącznie mechaniczne elementy napędu. Nie znalazłem podobnego projektu (nie licząc projektu zrobionego w Lego Robotics(r))

Pomysł powstawał przez ok. 2 tygodnie (aby maksymalnie uprościć konstrukcję).

Wcielenie pomysłu – od rozpoczęcia prac do działającego prototypu plotera to ok. 5 godzin.

Przeróbka DVD1:

  1. wyjęcie mechanizmu lasera, zachowanie silnika krokowego głowicy, oraz wymontowanie elektroniki
  2. odwrotne zamontowanie silnika szpindla (do góry nogami)
  3. przyklejenie do metalowego korpusu, na którym poruszała się głowica, silnika krokowego pionowo, aby mógł obracać płytę; założyłem na niego też gumkę od wentyla rowerowego (ulubiony szpargał Adama Słodowego)
  4. dorobienie złączki do tegoż silnika krokowego.

Przeróbka DVD2:

  1. wymontowanie elektroniki – płyty głównej
  2. podpiłowanie suwaka przesuwanego silnikiem (tak, aby nie robił pełnego ruchu, wówczas wypadała zębatka, ale ruch wystarczający do podniesienia (tak tak) pisaka.
  3. wymontowanie elektroniki laserka, zostawienie wózka; wywiercenie w nim dziury na pisak
  4. wklejenie pisaka dorobienie złączek do silnika krokowego oraz płytki mechanizmu eject
  5. doklejenie krańcowego wyłącznika, aby było wiadomo, gdzie jest głowica.

Reszta to elektronika na atmega8 – wbudowany jest tam zakodowany (1 wektor to 1 bajt: 1 bit penup/pendown, 3 bity wsp. x, 4 bity wsp. y) generator czcionek ploterowych(700 bajtów) obsługa dwóch silników krokowych, przy czym silnik obrotu talerza sterowany mikrokrokowo (dwukrotnie większa rozdzielczość w poziomie), algorytm Bresenhama rysowania linii.

Układ pobiera około 1 A przy pracy, 30 mA przy oczekiwaniu na wejście (atmega + klawiatura PS2), obsługa tejże klawiatury, oraz wyświetlacza LCD.

Pilot do Nikona D70

czwartek, 20 Maj 2010

Projekt pilota do NIKON D70.

pilot D70

pilot D70

Pomysł zrobienia projektu pojawił się nagle; rozważałem kupno oryginalnego pilota, ale trochę trzeba zachodu, aby taki zdobyć, poza tym jest duży, drogi i nieporęczny. A gdzie radość z własnoręcznie wykonanego czegoś?

Znalazłem informacje i inne projekty w Internecie (pierwszy potraktowałem bardziej teoretycznie, drugi był dawcą pomysłu o wykorzystaniu połączonych linii kontrolera):

http://www.bigmike.it/ircontrol (po angielsku)

http://www.caxapa.ru/lib/dslr_rem.htm (po rosyjsku ;) )

następnie uprościłem rzeczy (nie budujemy przecież elektrowni atomowej !?) – chciałem zmieścić wszystko w oszukańczym pilocie rozdawanym na lewo i prawo przez sprzedawców samochodów. Posiadacz takiego pilota może sprawdzić, czy wygrał samochód (zapewne nie).

d70remote_sch

Schemat pilota D70

Oszukany pilot ma w środku dość miejsca by ukryć kontroler AtTiny 13 w obudowie DIL, dwie zegarkowe baterie SR41 (7.8×3.6 mm, 45 mAh każda!) oraz diodę podczerwoną.

Mamy tu:

  • schemat
  • wsad do kontrolera attiny13
  • źródło firmware
  • Makefile

Pobieraj źródła wybierając „Zapisz na dysku” przy pomocy prawego przycisku myszy. Obrazki do druku są w rozdzielczości 300dpi.

Fuse bity dla AtTiny13: lfuse=0x6a (domyślne), hfuse=0xff (domyślne)

Dioda podczerwona zasilana jest przez 5 linii PORTB procesora pracujących jako źródło prądowe; daje do wystarczającą moc by uruchomić migawkę z dystansu 8m (przetestowanego) 19m maksymalnie(!).

Użyłem wyjść kontrolera jako źródeł prądowych aby zachować czystość schematu (ta, schematu), jako że porty w attiny mają symetryczną charakterystykę w pracy jako źródło, jak i otwarty kolektor.

W ekstremalnych temperaturach możliwe jest, że pilot przestanie działać. Spowodowane jest to zależnością częstotliwości wbudowanego generatora RC od temperatury.

W temperaturze pokojowej działa wyśmienicie.

Obydwa projekty, z których czerpałem ostateczne pomysły (zasilanie 5 liniami) mają firmware zakodowane w asemblerze. Programowałem w asemblerze w latach 80/90, nie muszę sobie udowadniać, że umiem ;) programowanie w C jest znaaaacznie szybsze. Zawsze mogę użyć mikrokontrolera z większą ilością pamięci. Czas mój jest znacznie droższy niż scalak za 3 zł.

Firmware napisałem w C (avr-gcc) w 5 minut(!), po skompilowaniu zajmuje mniej niż 300 bajtów.

Testowanie zajęło ok. godziny. Użyłem timingów ze strony bigmike i zastosowałem sugestię ze skróceniem impulsów i wydłużeniem pauz.

Jedyna wstawka asemblerowa to seria nopów i wdrów aby dostroić nadajnik do 38.4 KHz.

pilot D70 zbliżenie

pilot D70 zbliżenie

Może się zdarzyć, że twój attiny będzie miał nieco inną częstotliwość. Będzie trzeba wtedy dostroić generowaną częstotliwość przez wstawienie/usunięcie części nopów/wdrów w funkcji „signal”.

Pobór prądu podczas świecenia diody jest duży (nie mierzyłem, wyzerowałem rezystory z projektu sachara ;) ale trwa milisekundy. Obliczyłem że na jednych bateriach można odpalić migawkę tysiące razy.

Biorąc pod uwagę brak rezystorów, dioda może tracić z czasem jasność świecenia. Pożyjemy – zobaczymy.

UŻYJ WYŁĄCZNIE 3 VOLTOWYCH BATERII, W PRZECIWNYM WYPADKU SZYBKO USZKODZISZ PROCESOR I DIODĘ!!!

Testowałem pilota z 2x akku NiMH (2.4V), działał ok (z maksymalnego dystansu około 4 metrów).

Ostatecznie na 3V działa jeszcze lepiej (z maksymalnego dystansu okolo 8 metrów)

Nie odpowiadam za jakiekolwiek uszkodzenia sprzętu powstałe podczas montażu i testowania pilota!

Koszt części – ok. 3 zł – 1 kiepskie piwo!

AtTiny13 – 3-4 zł
dioda podczerwona – walała się gdzieś wokoło. Dobra jest każda o prądzie 20 mA.

pilot D70 gotowy

pilot D70 gotowy

qlatrviewer – QuickLookowa wtyczka.

środa, 19 Maj 2010

Wtyczka QuickLook qlatrviewer pozwala na szybki podgląd zawartości obrazu dysku ośmiobitowego Atari. Takie obrazy mają rozszerzenie „.atr”. Plugin powstał z potrzeby chwili – potrzebne było narzędzie do zaglądania do pliku .atr, lecz na MacOS X nie znalazłem. Może zbyt krótko szukałem – postanowiłem już nie szukać, a właśnie napisać plugin.

Link do projektu