Každý, kdo ve volném čase navrhuje a vyrábí různá zařízení, potřebuje mít nemalou zásobu elektronických a mechanických součástek. Já se dostal do stavu, kde začal být problém s jejich skladováním a katalogizací.
Dlouholetá zkušenost
Od počátku jsem neměl žádný systém na jejich třídění, protože mně při malém počtu vyhovoval sklad ve formě několika krabic s pytlíčky všeho možného. Problém ale nastal, pokud jsem v nějakou chvíli potřeboval konkrétní součástku, o níž jsem s určitostí věděl, že ji „někde“ mám. Ale kde? Po několika pokusech o její vyhledání byl cíl další cesty jasný… návštěva některého z dodavatelů a zakoupení nového kusu.
Jedná-li se o projekt, který je v procesu delší dobu, lze si BOM (Bill Of Materials) objednat u některého z distributorů (osobně používám Farnell – kvůli možnosti nákupu mnoha cizokrajných kusů, které v našich podmínkách jinak nelze sehnat; případně eBay/Aliexpress). Pokud ale potřebuji postavit něco ihned, lze narazit na nemalý problém. V případě pasivních součástek typu kondenzátor/odpor použijeme trochu matematiky a chybějící součástku „vyrobíme“ složením dostupného, ale s polovodiči to tak jednoduché není.
Úkol: vymyslet, co vlastně chci
Situace se s přísunem nových komponent stala neudržitelnou, a proto jsem se rozhodl využít prostředků moderní doby, nasadit katalogizační systém, a vytvořit systém skladování. Celou prvotní myšlenku jsem rozdělil do několika kroků:
- Vybrat/vytvořit katalogizační systém,
- vytvořit systém skladování.
Katalogizační systém
Pravda, zmínil jsem se o dlouholeté zkušenosti s krabicemi pytlíků, nicméně pro některé komponenty (povětšinou nářadí a mechaniku) jsem používal jeden z nejlepších vymožeností – Excel. Pro jednoduchou evidenci výborný nástroj, ale pokud si chce člověk ukládat datové listy, schémata a obrázky, je zde zakopaný pes – potřeba vytvoření vhodného úložiště s přesně definovanou a pevnou strukturou. Proto jsem chtěl něco, kde budu mít katalog a možnost přidávat datové soubory.
Podobných systémů určených pro skladové hospodářství je velké množství. V případě, že budu chtít vést seznam projektů, ke kterým budu alokovat příslušné zdroje, se dostávám do sféry velkých komerčních projektů. A jaké byly požadavky?
- Přehledná grafická podoba se stromovou strukturou,
- podpora drag-and-drop,
- karta komponenty s možností zadání popisu, výrobce, typu pouzdra a příloh,
- správa skladu – umístění,
- databáze s neomezeným přístupem pro čtení i zápis,
- datové soubory umístěné na diskovém prostoru,
- pokud možno webový frontend neuzamykající uživatele na jedné platformě,
- možnost vložení projektů a alokace příslušných komponent (BOM),
- bez omezení počtu vložených objektů,
- výhoda, ale ne podmínka, – Open Source.
Systém skladování
Jak skladovat elektronické součástky? Vcelku jednoduchá otázka, nicméně existuje nepřeberné množství možností, ze kterých je však možné vybrat to nejlepší a vytvořit jakýsi průnik řešení. Co ale od takového systému skladování očekávat?
- Ochrana proti vlhkosti,
- ochrana proti ESD (elektrostatický výboj),
- sdružování podobných komponent do skupin,
- jednoduchý, výstižný a nematoucí popis,
- skladování nenáročné na místo.
Řešení: víceméně kompromis
Po zhruba týdenním přemítání, a zkoušení různých variant všeho možného, jsem ze všech víceméně povedených aplikací vybral PartKeepr, která je vyvíjena Timem A. Hummelem (felicitus). Jedná se o Open Source produkt, využívající MySQL (MariaDB)/PostgreSQL databázi PHP a framework Doctrine2. Ze všech požadavků zvládá vše bez problému + obsahuje další vlastnosti, které mohou práci se systémem ulehčit.
Instalace vyžaduje nakonfigurovaný databázový server, PHP a internetový server. Pokud je během konfigurace zjištěna neexistence některé ze závislostí (doctrine2, imagemagick, php-xsl), je správce okamžitě informován a je vyžadováno její doinstalování. Rozhodně není čeho se obávat – konfigurace je jednoduchá a rychlá. V mém případě používám vlastní virtuální server Arch Linux ve VMware Workstation. Frontend je navržen jednoduše a přehledně. Obsahuje vše co má – stromovou strukturu, seznam komponent v jednotlivých větvích, náhled na vybraný záznam a jednoduchou správu umístění.
A právě umístění komponent a sklad je dalším z kroků, které jsem musel nějakým způsobem vyřešit. Ve stručnosti, každá součástka musí být umístěna tak, aby ji bylo možno jednoduše vyhledat, a zároveň musí být splněny určité fyzikální podmínky pro její uchování. Fyzikálními podmínkami se rozumí hlavně ochrana proti vlhkosti, ESD a radiaci. V mém případě nemusím radiaci řešit, tedy maximálně UV záření, ale určitě nebudu nechávat citlivé součástky (zejména LCD a optické senzory) na přímém slunečním světle.
Vlhkost je ale závažnější problém. Součástku nám, až na výjimky, nezničí, ale vzdušná vlhkost společně s kyslíkem působí na kontakty, které pomalu oxidují. Po nějaké době můžeme mít problém takovou součástku kvalitně zapájet na plošný spoj. Proto vzniklo množství doporučení a norem, jak součástky skladovat, chránit, detekovat vlhkost a následně se jí zbavit. Takovým příkladem může být IPC/JEDEC J-STD-033C. Obecně lže napsat, že je důležité zabránit průniku vzdušné vlhkosti k příslušné součástce a pokud se tak stane, použít některý z dostupných absorbentů vlhkosti. Při detekci vlhkosti se můžeme setkat s různými papírky obsahujícími barevné kapky chemických sloučenin. Pokud překročí vlhkost určitý práh, kapka/terčík změní barvu.
Vlhkost ale pravděpodobně součástku nezničí, ale připraví nás na zdlouhavý proces odstraňování oxidů z pájecích plošek. Elektrostatický výboj (ESD) má pro zejména polovodičové součástky likvidační účinek. Dochází k nevratnému „propálení“ PN přechodů. Na příslušné součástce opticky neuvidíme žádnou známku zničení, ale po zapájení nám zařízení nebude pracovat vůbec nebo omezeně. V dnešní době obsahuje velké množství produktů vnitřní ESD ochrany, ale já budu raději opatrný a laxní přístup přenechám jiným „kapacitám“.
Můj systém uskladnění součástek je relativně jednoduchý. Součástky uchovávám v antistatických pytlíčcích se zajišťovacím otvorem (ZIP) a vloženým absorbentem vlhkosti. Jeden pytlíček na jeden typ (P/N, SKU). Nemixuji různé rozměry. Označuji lihovým fixem na fólie patřičným označením (ISO1540DR, EFM32GG942F1024-QFP64, LTC5510IUF#PBF, …) a identifikací umístění. Umístění rozlišuji dle určení součástky (IC-Audio, IC-MCU, Wireless-A, Wireless-L, …). Skupinu součástek se stejným umístění ukládám do větších antistatických pytlíků s větším absorbentem a indikátorem vlhkosti. A to celé do papírových laminovaných krabic s popisem.
Tak, a to jsou vesměs polovodičové součástky. Sice mám několik malých plastikových boxů, které se běžně
pro součástky používají, ale u nich je problém s velikostí a umístěním v antistatických pytlech, ach ta cena…, a vlhkostí. Nepožívám je ani pro pasivní komponenty SMD. Mám raději nastříhané a popsané pásky umístěné kde jinde než v pytlíku a krabici.
Co se změnilo?
Mám vlastní katalog obsahující spoustu příloh a logicky řešené uchování komponent. Samozřejmě nemusím mít obavu ze zničení vlivem nějaké události, kromě odcizení a ohně.
Poznámky
Začátky s PartKeepr
Přidání první součástky
Ve stromu Categories klikneme pravým tlačítkem myši na Root, vybereme z menu „Add Category“, novou kategorii vytvoříme a uložíme. Takto můžeme vytvořit celý strom kategorií. S výběrem vhodných kategorií jsem měl zpočátku problém, a využil jsem již hotového a vytvářím kategorie podle prezentací výrobců a distributorů:
http://www.ti.com/
http://www.digikey.com/product-search/en/integrated-circuits-ics
http://cz.farnell.com/semiconductors-ics
http://en.wikipedia.org/wiki/Electronic_component
Kategorie je vytvořena, jdeme vytvářet komponenty. K tomu slouží tlačítko „Add Part“ v části Parts List. Po výběru nám systém zobrazí dialogové okno s možností definice mnoha padametrů. V záložce Basic Data zadávám název, popis, počáteční počet (Initial Stock Level), komentář, umístění (Storage Location) a typ pouzdra (Footprint). Umístění a typ pouzdra můžeme bez uzavření dialogu definovat přes menu Edit v hlavním okně. Pro název a umístění volím takový text, který přepíšu na sáček s komponenty. Pro název používám P/N, SKU výrobce. Protože se mi několikrát stalo, že jsem měl několik stejných součástek od různých výrobců, vyplňuji kartu Manufacturers s přesným kódem příslušného výrobce (měl by být podobný názvu). Karta Attachments je pro mě jedna z nejdůležitějších. Zde přidávám katalogové listy, obrázky, doporučená schémata, S parametry a příručky. Ne vždy na internetu dokumentace vydrží, ale v mém systému je pro ni místo vždy. Pokud výrobce dodává EDA CAD/CAE knihovny ve formát . bxl, tím lépe. Jedná se o univerzální datový formát, ve kterém bývají uloženy schématické značky a definice pouzdra pro návrh schémat a PCB (např. pomocí programů Eagle, Altium PCAD). Takže soubory .bxl přidávat vždy. A kde je stáhnout? Na internetových stránkách výrobců součástek (např. Maxim Integrated, Texas Instruments, Silicon Laboratories, Analog Devices). Bohužel ne všichni výrobci je poskytují. Pro konverzi do formátu našeho oblíbeného návrhového systému slouží aplikace Ultra Librarian.
Možná jedna poznámka, první obrázek mezi přílohami bude zobrazen v hlavním okně, v části Part Details příslušné součástky.
Kategorie
Práce se systémem PartKeepr je jednoduchá a intuitivní, ale není problém z počátku tápat. Nejdůležitější věcí, která uživatele nemine, je definice kategorií komponent. Vše záleží zcela na nás. Nicméně, pokud na začátku zvolíme špatný model, nic nebrání tomu jej časem přepracovat. Díky podpoře drag-and-drop můžeme jednoduše přemístit existující záznamy z jedné kategorie do druhé.
Zde je část mého stromu vytvořených kategorií:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
Root Root ? 1. Active Root ? 1. Active ? Discrete Root ? 1. Active ? Display technologies Root ? 1. Active ? Display technologies ? LCD Root ? 1. Active ? Display technologies ? LED Root ? 1. Active ? Display technologies ? Vacuum fluorescent display Root ? 1. Active ? Semiconductors Root ? 1. Active ? Semiconductors ? Diodes Root ? 1. Active ? Semiconductors ? Diodes ? Constant-current diode Root ? 1. Active ? Semiconductors ? Diodes ? DIAC Root ? 1. Active ? Semiconductors ? Diodes ? General Root ? 1. Active ? Semiconductors ? Diodes ? LED Root ? 1. Active ? Semiconductors ? Diodes ? Photodiode Root ? 1. Active ? Semiconductors ? Diodes ? Shottky Root ? 1. Active ? Semiconductors ? Diodes ? Transient voltage suppression diode (TVS) Root ? 1. Active ? Semiconductors ? Diodes ? Varactor, Tuning diode, Varicap, Variable capacitance diode Root ? 1. Active ? Semiconductors ? Diodes ? Zener Root ? 1. Active ? Semiconductors ? IC Root ? 1. Active ? Semiconductors ? IC ? Audio Root ? 1. Active ? Semiconductors ? IC ? Audio ? Active Noise Cancellation Root ? 1. Active ? Semiconductors ? IC ? Audio ? Amplifiers Root ? 1. Active ? Semiconductors ? IC ? Audio ? Codecs Root ? 1. Active ? Semiconductors ? IC ? Audio ? Digital Audio Transceiver (Tx_Rx) Root ? 1. Active ? Semiconductors ? IC ? Audio ? PWM Processors Root ? 1. Active ? Semiconductors ? IC ? Audio ? Volume Control Root ? 1. Active ? Semiconductors ? IC ? Clock,Timing, Frequency Management Root ? 1. Active ? Semiconductors ? IC ? Clock,Timing, Frequency Management ? Buffers Root ? 1. Active ? Semiconductors ? IC ? Clock,Timing, Frequency Management ? Oscillators Root ? 1. Active ? Semiconductors ? IC ? Controllers Root ? 1. Active ? Semiconductors ? IC ? Controllers ? Network Root ? 1. Active ? Semiconductors ? IC ? Data, Signal Conversion Root ? 1. Active ? Semiconductors ? IC ? Data, Signal Conversion ? Analog-to-Digital Converters (ADC) Root ? 1. Active ? Semiconductors ? IC ? Data, Signal Conversion ? Digital-to-Analog Converters (DAC) Root ? 1. Active ? Semiconductors ? IC ? Drivers, Interfaces Root ? 1. Active ? Semiconductors ? IC ? Drivers, Interfaces ? Haptic Drivers Root ? 1. Active ? Semiconductors ? IC ? Drivers, Interfaces ? LED Drivers Root ? 1. Active ? Semiconductors ? IC ? Drivers, Interfaces ? Motor Control Root ? 1. Active ? Semiconductors ? IC ? Drivers, Interfaces ? RS-232, RS-485 Root ? 1. Active ? Semiconductors ? IC ? Drivers, Interfaces ? USB Bridges Root ? 1. Active ? Semiconductors ? IC ? Logic Root ? 1. Active ? Semiconductors ? IC ? Logic ? Flip Flop Root ? 1. Active ? Semiconductors ? IC ? Logic ? Gate, Inverter Root ? 1. Active ? Semiconductors ? IC ? Logic ? Latche Root ? 1. Active ? Semiconductors ? IC ? Logic ? Signal Switch, Multiplexer, Decoder Root ? 1. Active ? Semiconductors ? IC ? Memories Root ? 1. Active ? Semiconductors ? IC ? Memories ? DRAM, SRAM Root ? 1. Active ? Semiconductors ? IC ? Memories ? EEPROM Root ? 1. Active ? Semiconductors ? IC ? Memories ? FLASH Root ? 1. Active ? Semiconductors ? IC ? Operational Amplifiers Root ? 1. Active ? Semiconductors ? IC ? Power Management Root ? 1. Active ? Semiconductors ? IC ? Power Management ? Linear Voltage Regulators, LDOs Root ? 1. Active ? Semiconductors ? IC ? Power Management ? Power Multiplexer (MUX) Root ? 1. Active ? Semiconductors ? IC ? Processors Root ? 1. Active ? Semiconductors ? IC ? Processors ? Digital Signal Processor (DSP) Root ? 1. Active ? Semiconductors ? IC ? Processors ? Microcontroller (MCU) Root ? 1. Active ? Semiconductors ? IC ? Processors ? Microprocessor (MPU) Root ? 1. Active ? Semiconductors ? Optoelectronics Root ? 1. Active ? Semiconductors ? RF (Wireless) Root ? 1. Active ? Semiconductors ? RF (Wireless) ? 6LoWPAN Root ? 1. Active ? Semiconductors ? RF (Wireless) ? Amplifiers Root ? 1. Active ? Semiconductors ? RF (Wireless) ? Attenuators Root ? 1. Active ? Semiconductors ? RF (Wireless) ? Demodulators Root ? 1. Active ? Semiconductors ? RF (Wireless) ? Detectors Root ? 1. Active ? Semiconductors ? RF (Wireless) ? Low Noise Amplifiers (LNA) Root ? 1. Active ? Semiconductors ? RF (Wireless) ? Mixers Root ? 1. Active ? Semiconductors ? RF (Wireless) ? Switches Root ? 1. Active ? Semiconductors ? RF (Wireless) ? Transceivers Root ? 1. Active ? Semiconductors ? RF (Wireless) ? Transistors RF MOSFET Root ? 1. Active ? Semiconductors ? RF (Wireless) ? Transmitters Root ? 1. Active ? Semiconductors ? RF (Wireless) ? Wireless Audio Root ? 1. Active ? Semiconductors ? Transistors Root ? 1. Active ? Semiconductors ? Transistors ? Bipolar junction transistor Root ? 1. Active ? Semiconductors ? Transistors ? Bipolar junction transistor ? NPN Root ? 1. Active ? Semiconductors ? Transistors ? Bipolar junction transistor ? PNP Root ? 1. Active ? Semiconductors ? Transistors ? Darlington Root ? 1. Active ? Semiconductors ? Transistors ? FET Root ? 1. Active ? Semiconductors ? Transistors ? IGBT Root ? 1. Active ? Semiconductors ? Transistors ? Thyristors Root ? 1. Active ? Semiconductors ? Transistors ? Thyristors ? TRIAC Root ? 1. Active ? Sensors Root ? 1. Active ? Sensors ? Ambient Light (ALS) Root ? 1. Active ? Sensors ? Inertial Measurement Unit (IMU) Root ? 1. Active ? Sensors ? Microphones Root ? 1. Active ? Sensors ? Pressure Root ? 1. Active ? Sensors ? Specialized Root ? 1. Active ? Vacuum tubes Root ? 2. Passive Root ? 2. Passive ? Antennas Root ? 2. Passive ? Buzzers Root ? 2. Passive ? Capacitors Root ? 2. Passive ? Capacitors ? Fixed Root ? 2. Passive ? EMI/RFI Components Root ? 2. Passive ? Ferrite impedances, beads Root ? 2. Passive ? Inductors Root ? 2. Passive ? Loudspeakers Root ? 2. Passive ? Motors Root ? 2. Passive ? Resistors Root ? 2. Passive ? Resistors ? Fixed Root ? 2. Passive ? Sensors Root ? 2. Passive ? Thermistors Root ? 2. Passive ? Transformers Root ? 2. Passive ? Varistors Root ? 3. Electromechanical Root ? 3. Electromechanical ? Cable assemblies Root ? 3. Electromechanical ? Mechanical accessories Root ? 3. Electromechanical ? PCB Root ? 3. Electromechanical ? Piezoelectric devices Root ? 3. Electromechanical ? Piezoelectric devices ? Crystals Root ? 3. Electromechanical ? Protection devices Root ? 3. Electromechanical ? Protection devices ? Discharge devices Root ? 3. Electromechanical ? Protection devices ? Discharge devices ? Gas discharge tube Root ? 3. Electromechanical ? Switches Root ? 3. Electromechanical ? Terminals and connectors Root ? 4. Embedded Root ? Documentation Root ? Documentation ? _PartKeepr |
SQL a datové soubory
SQL je opět jednoduchou záležitostí. Podmínkou je přístup na server, na kterém je spuštěn databázový systém a vlastnictví příslušných oprávnění. Veškeré tabulky mají logické názvy a strukturu.
MariaDB [partkpr]> show tables;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
+--------------------------+ | Tables_in_partkpr | +--------------------------+ | CachedImage | | CronLogger | | Distributor | | Event | | Footprint | | FootprintAttachment | | FootprintCategory | | FootprintImage | | LastNotification | | Manufacturer | | ManufacturerICLogo | | PageBasicLayout | | Part | | PartAttachment | | PartCategory | | PartDistributor | | PartImage | | PartKeeprUser | | PartManufacturer | | PartParameter | | PartUnit | | PrintingJob | | PrintingJobConfiguration | | Project | | ProjectAttachment | | ProjectPart | | Session | | SiPrefix | | StatisticSnapshot | | StatisticSnapshotUnit | | StockEntry | | StorageLocation | | StorageLocationImage | | SystemNotice | | TempImage | | TempUploadedFile | | TipOfTheDay | | TipOfTheDayHistory | | Unit | | UnitSiPrefixes | | UserPreference | +--------------------------+ 41 rows in set (0.00 sec) |
Příklad dotazu:
SELECT ALL Part.name, Footprint.name, Part.description, PartCategory.categoryPath
FROM PartCategory, Part LEFT JOIN Footprint ON Part.footprint_id = Footprint.id
WHERE Part.category_id = PartCategory.id
ORDER BY PartCategory.categoryPath;
S datovými soubory je situace jiná. Jsou umístěny v adresáři /data
kořene našeho webového serveru. Názvy těchto souborů jsou při kopírování na server (přes rozhraní PartKeepr) změněny na formát podobný fb359cd0-7d73-48cd-9dc2-026e83888bab.pdf
. Proto je při vyhledávání konkrétního souboru nutné zapátrat v SQL databázi.
Jaké součástky vybírat
V první řadě záleží na možnostech, jaké máme při výrobě a osazování PCB. Pokud si necháme plošné spoje vyrábět profesionální firmou, je možné vyrobit nejtenčí spoj s přesností 4 mils (mil je délková jednotka běžně používaná v elektronice, 1 mil = 1/1000 palce, 1 mm = 39,37 mils). Možnosti osazování jsou dány technickým zázemím a zkušenostmi.
Při výběru je nutné brát ohledy na cílový projekt. Bude provozován za extrémních podmínek (teplota, radiace)? Existuje několik řad komponent, které jsou cíleny pro vesmírný provoz, armádní účely, automobilový průmysl a spotřební elektroniku. Právě součástky určené pro automobilový průmysl musí splňovat velké kvalitativní nároky. Jsou odolné vůči extrémním teplotám a ESD. Důvod je logický, pokud se v automobilu porouchá řídící jednotka, může vzniklá situace způsobit újmy na majetku a hlavně životech. Pokud se nám to stane u televize nebo mobilu, nic podobného pravděpodobně nehrozí. Tyto součástky bývají označovány jako AEC-Q100 Qualified (u některých výrobců se v P/N, na rozdíl od ostatních řad, přidává písmenko Q).