Wszystkie wpisy, których autorem jest ZbeeGin

Niekompatybilność plików z wersji testowych

Rozwinięcie problemu

Niektórzy użytkownicy wersji testowych (jak i tzw. Nightlies) z pewnością zauważyli, że próby otwarcia plików .kicad_pcb zapisanych przez nie w wersjach stabilnych są skazane na niepowodzenie. Jest to związane z drobnymi zmianami w formatach plików, które uwzględniają nowe opcje pojawiające się w wersjach testowych, których wersje wersje stabilne po prostu nie rozumieją.

Problem nr. 1 – Parametry trasowania par różnicowych

Pierwszy problem może wystąpić podczas odczytu plików, które tylko zostały otwarte i ponownie zapisane przez wersję testową. Dodaje ona do każdej sekcji net_class dwa dodatkowe parametry określające reguły trasowania par różnicowych (wartości mogą się różnić):

(diff_pair_gap 0.25) 
(diff_pair_width 0.2)

Aby wyeliminować ten problem, należy odszukać te parametry we wszystkich sekcjach net_class i po prostu całkowicie usunąć te linie. Po tej operacji pliki powinny dać się odczytać ponownie w wersjach stabilnych.

Problem nr. 2 – Parametry pól lutowniczych

Drugi problem jest znacznie poważniejszy, gdyż wymaga nieco większej interwencji w pliku .kicad_pcb a możliwe, że także w plikach .kicad_mod.

Okazuje się, że do kształtów pól lutowniczych został dodany nowy kształt w postaci zaokrąglonego prostokąta. Dlatego edycja samego pliku z obwodem drukowanym może nie wystarczyć, jeśli takie pola występują również w bibliotekach footprintów. Poniżej znajduje się przykład takiego pola:

(pad 1 thru_hole roundrect (at -1.905 0) (size 2.0 2.0) (drill 0.8) (layers *.Cu *.Mask)(roundrect_rratio 0.25))

Aby wyeliminować ten problem można skasować taką linię, ale pozbywamy się wtedy pola lutowniczego, które po ponownym otwarciu piku należy dodać. Lepiej jest zamienić treść linii na taką, która zostanie poprawnie zinterpretowana. Pierwszą możliwością, jest zamiana pola z zaokrąglonego prostokąta na zwykły prostokąt:

(pad 1 thru_hole rect (at -1.905 0) (size 2.0 2.0) (drill 0.8) (layers *.Cu *.Mask))

Zamieniamy w tym celu słowo roundrect na rect i wycinamy ostatni parametr roundrect_rratio.  Druga możliwość to zamiana pola na okrągły:

(pad 1 thru_hole circle (at 1.905 0) (size 2.0 2.0) (drill 0.8) (layers *.Cu *.Mask))

Tym razem zamieniając słowo roundrect na circle i tak jak wyżej pozbywając się ostatniego parametru.

Przy tego typu problemie warto też przeanalizować footprinty w bibliotekach jakie zostały wykorzystane w tym projekcie, aby ustrzec się przed dalszymi błędami wynikłymi z użycia tej biblioteki. Dlatego przy tej edycji warto spojrzeć na linię znajdującą się nieco wyżej:

(module Wire_Pads:SolderWirePad_RR_2x_0-8mmDrill ...

Wskaże ona nam w jakiej bibliotece i w jakim footprincie znajdziemy problematyczne pole.

Po edycji typu pól lutowniczych w pliku .kicad_pcb obowiązkowe jest przeprowadzenie ponownego procesu wypełniania stref oraz przeprowadzenia kontroli reguł projektowych DRC.

Problem nr. 3 – Dodatkowy parametr hide

Ten błąd może się pojawić po zapisaniu projektu z obwodem drukowanym w testowej kompilacji BZR7525. W sekcji module może pojawić się dodatkowy parmetr hide występujący na końcu linii. Zwykłe usunięcie tego parametru rozwiązuje problem.

Ponieważ parametr ten należy także do prawidłowej składni formatu plików .kicad_pcb w wersji 4.0.x i jego wystąpienie w innych miejscach zwykle jest prawidłowe należy bardzo uważać aby nie usunąć całkowicie poprawnego parametru. Dlatego należy się bezwzględnie posiłkować danymi z okna błędu, gdzie wskazano w której linii występuje niezrozumiały parametr.

ps. Błąd ten został zgłoszony i obecnie może już nie występować. Osoby, które zainstalowały ostatnio wersję stabilna programu mogły zainstalować już wersję odporną na ten błąd.

Na zakończenie

Każda modyfikacja plików za pomocą edytora powinna odbywać się po uprzednim zapisaniu kopii zapasowej (!!!) edytowanych plików.

Należy również pamiętać, by do edycji plików używać edytora, który poprawnie rozpoznaje pliki z kodowaniem UTF-8 (bez BOM), np. Notepad++. Inaczej edycja może zakończyć się komunikatem o rzekomym błędzie w pierwszej linii.

 

Interfejs ISO+CAN USB

Niniejszy projekt PCB powstał dla jednego z użytkowników forum Elektroda.pl, który chciał zbudować własny interfejs diagnostyczny podłączany do portu USB. Jest to implementacja interfejsu VAG-COM 805.

Urządzenie składa się z trzech części:

  1. Konwertera USB na RS232 opartego na popularnym układzie FT232BM. Tą część można zastąpić również odpowiednio pre-programowanym modułem Bluetooth™ pracującym jako interfejs szeregowy SPP albo klasycznym konwerterem RS232-TTL na układzie MAX 232. (Obecny projekt nie przewiduje ich montażu.)
  2. Mikrokontrolera sterującego ATmega162 z układem wspomagającym w postaci logiki programowalnej zawartej w układzie GAL ATF16v8.
  3. Interfejsów fizycznych w postaci scalonego kontrolera szyny CAN z dedykowanym driverem oraz dwóch scalonych driverów dla linii K i L.

isocan-usb-sch

Uwaga! Złącze ISP pomimo, iż jest 6-pinowe nie jest zgodne pod względem położenia sygnałów ze złączem programatora Atmel AVR-ISP MKII. Bezpośrednie podłączenie takiego programatora do płytki uszkodzi programator!

Płytka z obwodem drukowanym została zaprojektowana jako obwód dwustronny by zminimalizować wymiary, ale z założeniem, by w dalszym ciągu można ją było wykonać w warunkach amatorskich. Dlatego nie zdecydowałem się na projekt PCB, który mieścił by się we wtyczce OBD.

isocan-usb

Z uwagi na to, iż większość kluczowych elementów występuje tylko w obudowach do montażu powierzchniowego (SMD), całość projektu – z małymi wyjątkami – została wykonana również dla tej technologii.

Ważna Informacja! Nie posiadam zawartości pamięci układu ATmega162 ani pliku JEDEC dla ATF16V8, a także programów diagnostycznych współpracujących z tym interfejsem, dlatego proszę o to nie pytać.

Kompletny projekt obwodu drukowanego wykonanego w programie KiCAD 4.0 znajduje się w archiwum: isocan-usb.zip.

Miniaturowy przedwzmacniacz z wejściem gramofonowym

Niniejszy projekt powstał dla mojego znajomego, który chciał rozszerzyć możliwości swojego zestawu głośników 2.1 przeznaczonych do komputera.

Układ miał zawierać trzy przełączane wejścia, z czego jedno miało być przeznaczone do gramofonu analogowego z wkładką magnetyczną (typu MM). Generalnie układ miał być również jak najbardziej przenośny, zatem jest zasilany z dwóch baterii 9V.

Kompletne urządzenie składa się z następujących stopni:

  • Stopień przedwzmacniacza przeznaczonego do wzmocnienia i korekcji sygnału z wkładki magnetycznej gramofonu. Zdecydowałem się na stopień typowo tranzystorowy z uwagi na niesymetryczne źródło zasilania.
  • Przełącznika wejść za pomocą którego, można zmienić źródło sygnału.
  • Stopnia wyjściowego w formie dwutranzystorowego przedwzmacniacza z aktywną dwuzakresową regulacją barwy tonów oraz regulator wzmocnienia.

phono_pre_schSygnały wejściowe oraz wyjściowe są wyprowadzone na podwójne gniazda RCA montowane wprost do płytki. Baterie razem z ich “koszyczkiem” są montowane w wycięciu na płytce. W obudowie przewidziano w tym celu odpowiednią zaślepkę montowaną od spodu.

Obwód drukowany ma formę dużej płytki zajmującej całą przestrzeń obudowy, gdzie wszystkie gniazda i regulatory są montowane bezpośrednio na laminacie.

phono_pre_pcb

Projekt powstał na podstawie schematu zamieszczonego na stronie: http://mirley.firlej.org/przedwzm_reg_tonow

Kompletny projekt dla programu KiCad w wersji 4.0 znajduje się w archiwum stereo_pre_phono.zip.

Schemat oraz zaprojektowany na jego podstawie obwód drukowany jest publikowany za zgodą Mirosława Firleja, właściciela strony http://mirley.firlej.org/ za co jeszcze raz serdecznie dziękuję.

IceZUM Alhambra

IceZUM Alhambra to otwartoźródłowy projekt płytki prototypowej w formacie Arduino One opartej o układ FPGA z rodziny iCE40[1] firmy Lattice.

icezum_alechambra

Jest to jedna z pierwszych płytek formatu Arduino z układem FPGA zamiast mikroprocesora. Z uwagi na dość rozbudowany układ programowalny (1280 bloków logicznych) pozwala ona na implementację dość rozbudowanych projektów logiki programowalnej, nie wykluczając prostych soft-procesorów.

Logikę można zaprojektować używając do tego otwartoźródłowego toolchaina icestorm[2] lub też oprogramowania dostarczanego przez firmę Lattice (Lattice iCEcube2).

Kompletny projekt płytki wraz z materiałami dodatkowymi znajduje się w repozytorium icezum na serwerach Github[3].

Przejdź do strony z projektem


[1] http://www.latticesemi.com/Products/FPGAandCPLD/iCE40.aspx
[2] http://www.clifford.at/icestorm/
[3] https://github.com/FPGAwars/icezum

Jak pozbyć się wielokrotnych pinów zasilania z symboli?

Rozwinięcie problemu

Ostatnio zadano Mi pytanie czy można narysować symbol w ten sposób by kilka pinów stanowiących piny zasilania układu odnosiło się do jednego pinu. Eeschema nie posiada tego typu opcji, ale można problem obejść w nieco niestandardowy sposób.

Jak wiadomo, w niektórych elementach bibliotecznych – takich jak bramki logiczne – piny zasilania nie są jawnie wyprowadzane. Jest to wynik przyjętej ogólnie konwencji ich rysowania na schematach. Pod względem elektrycznym jednak piny te istnieją i są rysowane w symbolach, lecz ich widoczność jest specjalnie wyłączana. Wystarczy włączyć opcję Pokazuj ukryte piny by przekonać się o ich istnieniu.

Eeschema, by trzymać się przyjętej konwencji traktuje w specjalny sposób tego typu piny, które dodatkowo mają w swoich właściwościach zaznaczoną opcję Wejście zasilania. Eeschema na podstawie nazwy tych pinów dołącza je do sieci nazwanej tak samo jak nazwa pinu. Dlatego, jeśli narysujemy taki pin i nazwiemy go GND, to program dołączy ten pin do istniejącej sieci GND.

Właśnie ten mechanizm działania programu Eeschema pomoże obejść problem.

Obejście problemu

Jeśli chcemy pozbyć się wielu pinów zasilania z symboli powinniśmy narysować wszystkie tego typu piny i w opcjach każdego z nich wybrać opcję Wejście zasilania. Następnie pozostawić widoczne tylko te z nich, które chcemy mieć jawnie narysowane na schemacie, a pozostałe ukryć odznaczając właściwość Widoczny w ich właściwościach.

Jeśli narysujemy schemat z takim symbolem i nie popełniliśmy żadnego błędu, to piny jawne utworzą poszczególne sieci zasilania, a piny ukryte zostaną do niej dodane automatycznie. Przykładowy obrazek pokazuje całą ideę oraz jej rezultat na obwodzie drukowanym. Górny schemat będzie widoczny gdy piny ukryte nie będą pokazywane; dolny zaś po włączeniu tej opcji.

pinyukryte

Aby zmniejszyć ilość zajmowanego miejsca przez piny ukryte można ustawić je na węższej siatce zmniejszając im rozmiar opisów jak i samą długość pinów. W przypadku tego ostatniego parametru nawet do zera.

Czego nie robić w tym przypadku

Nie warto umieszczać pinów widocznych i niewidocznych w tym samym miejscu dla danej szyny zasilania. Takie podejście, choć wydaje się właściwe jest jednak błędne, gdyż narzędzie do testowania poprawności symbolu od razu zgłosi błąd.

Nie warto też układać pinów ukrytych daleko poza obrysem symbolu, gdyż na drodze takiego pinu może pojawić się późniejsza nitka połączenia, która może być błędnie połączona z takim pinem.