czwartek, 21 sierpnia 2014

Old & Trash


Postanowiłem wrzucić coś zgodnego z tytułem bloga, nie mam ani obiektywu do robienia makr, ani też nie miałem artystycznego zapału – będzie kilka czysto roboczych zdjęć. Są to zdjęcia „prototypów prototypów” czyli płytek drukowanych które: działały, ale potem zrobiłem lepsze (a elementy odzyskałem) nie działały, więc robiłem następne, czy z rzadka zrobiłem i nawet nie sprawdziłem czy działały ;] Oczywiście kategorii jest znacznie więcej, tak jak i samych zrobionych przeze mnie płytek – jednak w tym właśnie pudełku lądują płytki do których sięgam w ostatniej desperacji jeśli brakuje mi elementów :P Przeglądając je przychodziły mi często myśli „zaraz , zaraz , zaraz … a gdzie jest wersja pośrednia” albo „z tym było zabawy”.

Patrząc na te zdjęcia przychodzi mi do głowy parę rzeczy:
→ Pierwsza i najważniejsza, zawsze należy dać malutki rezystor ograniczający pomiędzy driverem i mosfetem, zadziwiające że ten ogromny prąd lecący przez ułamek sekundy potrafi za pierwszym włączeniem spalić nasz biedny driver. Zwykle stosuje jeden 47R lub dwa szeregowo. Jeszcze przy mosfetach – zawsze warto jest dać duży opornik „pasożytniczy” który będzie powodował rozładowanie bramki. Przy większych mosach zawsze warto jest też dać diodę flyback'ową równolegle do obciążenia, odwrotnie od kierunku pracy mosfetu.
→ Ciągle przy mosfetach – budując jakikolwiek mostek dwufazowy (trójfazowy etc) warto zadbać by na starcie dolne tranzystory były otwarte.
→ Projektując pierwsze wersje dwustronnego PCB warto jak najbardziej ograniczać ilość przelotek, czy zamiast przelotek używać elementów przewlekanych (np. takie goldpiny świetnie się tak sprawują) robienie 40 przelotek wiertłem 0.6 w domu bez małego CNC do płytek to męczarnia.
→ Co do przelotek ogólnie – nie są one wielkim problemem, wymagane do tego minimum to: jakiś odpowiednik dremela (u mnie futerko proxxon + stojak wiertniczy) + odpowiednio małe wiertła. Jeśli nie ma się stojaka wiertniczego i robi się otworki z ręki warto kupić szczęki do miniwiertełek (sprzedaje je proxxon, pasowały do multiszlifierki z biedronki i do dremela) i zestaw wierteł 0.8 x10 , 0.6 x10 , 0.9 x10, (zestaw minimum) komplet 10 wiertełek to jakieś 8zł, a jedno specjalistyczne wiertło 0.6 to 10zł na np. TME. Wiertła specjalistyczne są naprawdę boskie... o ile posiadamy stojak lub małe CNC – wierci się nimi na wysokich obrotach, naprawdę multum razy. Tanie wiertełka wymienia się co max 50 otworków. Z tym że wiertło za 10zł wiercąc z ręki złamiemy max za 10 otworkiem :) (Złamałem kilka...)
→ Uważam że małe CNC jest przyjacielem elektronika. Niestety sam posiadam jedynie drukarkę 3D (*która też jest przyjacielem elektronika :P) a ta jest zbyt mało sztywna do wiercenia płytek (przede wszystkim) nie mówiąc o cięciu czy grawerowaniu. Mając zrobione otworki na CNC zrobienie płytki dwustronnej nawet z 80 przelotkami nie powinno być ogromnym wyzwaniem, a i będzie znacznie mniej czasochłonne. Mając opcje grawerowania ścieżek i tak po wykonaniu otworków robił bym termotransfer i dalej wytrawiał bym płytki, z dobrą techniką ścieżki 8 milsów to norma, a i myślę że dało by radę zrobić 6 (pytanie po co się z nimi męczyć).
→ Laminator + dobry papier kredowy + wytrawiarka to must have. Bez tego się nie obejdzie jeśli chce się robić płytki. Laminator to 50zł, przy czym można przerobić grzałkę z drukarki laserowej (ma świetny docisk ale bardzo łatwo ją spalić – wymaga dedykowanej elektroniki, przy wykorzystaniu zasilacza z drukarki wystarczy podpiąć PWM do jednego z transoptorów, dodać pomiar temperatury na epcosie i już prawie gotowe – jak dorwę się do jakiejś drukarki to wrzucę tu reengineering takowej). Do tego przyda się spirytus + gąbeczka do oczyszczenia płytki z tłuszczu. Jeśli dobrze odtłuścimy płytkę to naprawdę 8 milsów to nie problem. Jeśli delikatnie zmatowimy powierzchnię, nawet twardą częścią gąbki, toner nie będzie tak odchodził. Combo zmatowienie + odtłuszczenie to gwarancja zadowolenia ;] Potem max 10 min w wytrawiarce i mamy płytkę – w skrócie. Można znaleźć dobre write up'y w internecie – zostawię to innym :) Może kiedyś wrzucę „wytrawianie dla średnio zaawansowanych” ;]
→ Zawsze należy sprawdzić maski przed zrobieniem płytek – ile razy okazało się że mam element na elemencie, bo nie patrzyłem na wielkość obudowy... Podpowiem że kilka. W KiCAD'zie jest opcja podglądu 3D z której trzeba korzystać. Tak samo warto nauczyć się od samego początku używać reguł projektowych. KiCAD ma zresztą kilka świetnych smaczków. Np pracując na 2 monitorach na jednym schemat na drugim layout wskazując na element na dowolnym z programów, element zostaje wskazany w drugim. To naprawdę dużo daje. Super jest też zbudować sobie Cern KiCAD ;] Długo używałem Eagle'a, ciężko było mi się na początku przestawić, ale jednego jestem pewien – dla mnie KiCAD to prawdziwy CAD, Eagle jest prosty do ogarnięcia i … to ostatnia z jego zalet.
→ Jeśli nie chcemy się męczyć z programowaniem to zawsze należy dać wyjścia do programatora innaczej albo trzeba odlutowywać procesor, albo lepiej podpinać się do nóżek na procku (o ile do TQPF jeszcze się da to już do żadnego procka w BGA nikt się tak nie podepnie) ew. do używanych przez procka linii. Warto czasem zostawić pady w SMD nawet jeśli będziemy mieli pewność że softu i tak nie będziemy zmieniali. (Licho nie śpi)
→ Robiąc coś w jakikolwiek komercyjny sposób musimy mieć pewność że będzie działało. Niby proste ale w czasach gdy wystarczy przeczytać książkę o C dla AVR by umieć już coś zrobić, wcale nie koniecznie. Przykład z życia wzięty: przy długim przewodzie od włącznika należy dać filtr, zwłaszcza w miejscu gdzie występują duże zakłócenia – proste, a jednak dojście do tego „dlaczego moja elektronika działa w domu, a nie działa na miejscu” zajeło mi sporo czasu. Takich i innych smaczków nie wyciągnie się z książki „programowania dla początkujących” , chociaż można na nie wpaść po dobrej lekturze „Sztuki elektroniki” Horwitza i Hilla.
→ Warto skończyć każdy projekt. Nawet głupi może się kiedyś przydać.
→ Zawsze przed wysyłką płytek do produkcji należy: sprawdzić je w 3D w kicadzie, sprawdzić maski, zwyczajnie je drukując na papierze i np. kładąc na nim elementy. Przykład z życia wzięty: 200 złych płytek, ze względu na przeskalowaną paczkę procesora. Najlepiej wykonać jedną sztukę w domu i przetestować (o ile jeszcze się da) albo zamówić najpierw dwie sztuki np. na prototypy.com.pl i je sprawdzić. Standardowa produkcja płytek w Polsce trwa ponad 3 tygodnie, właściwie tyle samo co produkcja + wysyłka za granicą. Polska jest droższa, jednak można się spodziewać że nasze gerbery nie będą potem masowo powielone, ew. niektórzy spodziewają się lepszej jakości. Chiny natomiast są szybkie, miłe i tanie. Jeśli projekt i tak chcemy robić np. open source czy nie robimy technologii rakietowych i nie dbamy o lokalnych biznesmenów – smart-prototyping.com to adres z którego zamówimy 10 płytek 5x5 w łącznej cenie ~40zł . (mają oczywiście jeszcze inne rozmiary – np. 100 płytek 10x10 to ~300/400zł) płytki dwustronne, z dwustronnym opisem, soldermaską etc. Jako że lubię mieć dobre finalne płytki, jestem już ich „stałym” klientem. Kiedyś może napiszę o nich więcej :)
→ Na projekcie zawsze warto od razu dawać wartości komponentów – potem się o nich zwyczajnie zapomina.
→ Tak samo zawsze warto ustawić warstwę opisową, zarówno do późniejszej dokumentacji, jak i produkcji płytek.
→ To na razie wszystko :) Mógłbym pewnie jeszcze pisać i pisać ale... jak mnie najdzie to napiszę oddzielnego posta. Teraz czas na zdjęcia!







 ps. jak sobie pomyśle że np takiej optoizolacji do SPI w życiu nie używałem, a jednak spędziłem dobrych kilka godzin żeby ją dopieścić to mi trochę jednak szkoda tego czasu :P

sobota, 21 czerwca 2014

Sesja, sesja, sesja...


    A tu odkrycie roku: instalacja i użytkowanie Wine, od czasu gdy próbowałem po raz ostatni stała się naprawdę prosta. Powód odkrycia był równie trywialny: po przedstawieniu młodszemu bratu gry mej wciąż jeszcze trwającej młodości ( Fallout tactics ) odkryłem że nie będę mógł się od niej oderwać przez dłuższą chwile i nic, a zwłaszcza brak Falouta na linuxa nas nie rozdzieli. Psucie mojego biednego laptopa też jednak nie było opcją. Co gorsza pożyczałem grę młodszemu bratu...

Sudo apt-get install wine wpisane w terminalu, po wpisaniu hasła, załatwiło w sposób
komfortowy instalację Wine.

Zgranie płyt do postaci .iso na dysk twardy było obowiązkowe. Na to sposobów jest wiele i nie będę się roztkliwiał – wystarczy wpisać „iso” w Centrum Oprogramowania Ubuntu, zainstalować pierwszy z brzegu program i kolejno zgrać płytki.

sudo mount /Sciezka do iso z gra/Fto2.iso /media/isoimage/ -o loop - Montuje nam naszą płytkę jako napęd w miejscu /media/isoimage/ Zamontowany napęd jest widoczny podczas przeglądania folderów. W moim przypadku jak widać jest to iso o pięknej nazwie Fto2.iso.

→ Przejście do zamontowanego iso Odbywa się poprzez przejście do katalogu isoimage widoczny jest on w tej samej kolumnie, jednak n elementów niżej.

→ Kliknięcie prawym klawiszem na plik exe który chcesz odpalić, następnie wybrane „Otwórz za pomocą → Wine windows („ … ”) daje ten sam efekt co dwukrotne kliknięcie na plik .exe w Windowsie.

→ Gdy podczas instalacji potrzebujesz zmienić płytkę to należy wpisać
sudo umount /media/isoimage/ i zamontować kolejną płytkę w tym samym miejscu. Czemu nie w innym? Bo większość gier wymaga płyty w napędzie i jak doczytałem się gdzieś w czeluściach internetu zamontowanie kilku płyt naraz może spowodować że będziesz musiała/musiał instalować gierkę jeszcze raz.

→ Osobiście pozwoliłem na stworzenie skrótu na pulpicie. I o dziwo skrót nie pojawił mi się w symulowanym Windowsowskim katalogu, a normalnie na pulpicie Ubuntu a co lepsze – normalnie działa.

→ Wiola – dwuklik i gramy ;]

Oczywiście Wine może służyć ważniejszym celom – np. instalacji Autodesk Inventora czy innych profesjonalnych programów, których wsparcia na linuxa nie ma. Osobiście optował bym jednak z użytkowaniem linuxowych, darmowych programów ile się da / gdzie się da. Np Free CAD moim zdaniem jest lepszy od zwykłego AutoCAD'a i mimo że do Inventora nie dorasta – to nie trzeba wydawać na niego ekwiwalentu małego auta :)

ps. Ciekawostka – szukając informacji „co i jak” z Wine, dowiedziałem się też że Gry na linuxie potrafią nie raz chodzić szybciej na dokładnie tym samym sprzęcie i tak poprawa dla Fallouta potrafi być nawet 1,5 krotna!

piątek, 30 maja 2014

Mała, duża przyjemność.


Czasem małe rzeczy sprawiają dużą przyjemność.

Kupiłem (dokładniej - mój brat mi kupił) za 10zł chińskiego pilota do nikona D80. Okazuje się że pilot do tego aparatu to zwykły pilot na IR i kod już dawno został przez nich skopiowany. Sam pilot działa na guzik zwierający dwie nóżki scalaka o nieznanej mi nazwie, jako że została skrzętnie zmyta, szkoda bo z wiedzą jaki to scalak zabawa poszła by szybciej.

A zabawa była następująca - trzeba zrobić timer do timelaps'ów. Czemu zrobić, a nie kupić? Bo równie chiński timer jest odpowiednio droższy, a ja zawsze mam Atmegę8 pod ręką i... mam ochotę się pobawi :)

Od strony hardvare'u sytuacja wyglądała następująco:
→ Zasilanie 3V → Podczepiłem się od mojej płytki z zasilaniem 3.2V (Wahania
napięcia baterii są większe niż to.)
→ Zidentyfikowałem kierunek napięcia na nóżkach scalaka → Zdarłem soldermaskę → Wlutowałem p-mosfet. → Wyprowadziłem bramkę.
→ Zacisnąłem 3 konektorki - viola, mogę sterować tym ustrojstwem choćby attinym13.

By sprawdzić czy działa podpiąłem się do zasilania, załączyłem mosfeta i nakierowałem kamerę w komórce na diodę IR - okazuje się że kamera w telefonie spokojnie odbierze ten sygnał "na niebiesko".

Zostaje jeszcze kawałek softu. Odmierzanie czasu - zwykły _delay_ms(n) i wyświetlanie "Pstryk!" na ekranie - ot taki bajer ;] Naprawdę proste a cieszy, ustawienia jak widać są na zdjęcie co 1.5 min , w wolnym czasie dodam jeszcze potencjometr, do regulacji czasu (a wtedy same odmierzanie czasu będzie na timerze 1 lub 2. )


#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "ascii.h"
#include "spi.h"
#include "n5110.h"
#include "adc.h"
#define on(n) PORTC|=(1<<n)
#define off(n) PORTC&=~(1<<n)

int main()
{
  DDRC|=(1<<PC5);
  PORTC&=~(1<<PC5);
  spi_init();
  lcd_init();
  lcd_place(0,0);
   while(1)
   {
     lcd_clear();
     lcd_place(0,3);
     lcd_string("Pstryk! ");
     on(PC5);
     _delay_ms(200);
     off(PC5);
     lcd_clear();
    _delay_ms(900);
     _delay_ms(400);
  }
}

Zadziwiające jest to że nie znalazłem w necie nikogo kto zrobił by to wcześniej i się pochwalił. Nawet za pomocą arduino i przekaźnika :P



sobota, 1 marca 2014

ARM-GCC a ARM-G++

Po udanych kompilacjach i blinkaniu diodką z eclips'owego debuggera zachciało mi się więcej. Jak to mówią głód rośnie w miarę jedzenia, tak więc stwierdziłem że przydało by się napisać coś w C++ a nie w C.
Zrobiłem nowy projekt, klasę etc. wszystko pięknie dopóki... nie załączyłem wszystkiego w main'ie. Skracając moją przydługawą przygodę z googlem, gdzie nie dowiedziałem się nic ciekawego, odkrywczo wpadłem na to że eclipse by default stworzył plik main.c, nie main.cpp skąd interpretował go jako plik w c.

Krótki wniosek - trzeba pamiętać by pliki korzystające z C++ były z rozszerzeniem .cpp ...