10. srpna 2014

Programátor ATTiny4/5/9/10/20/40

ATTiny4/5/9/10/20/40 jsou nejmenší procesory z rodiny AVR od firmy ATMEL. Občas se hodí nějaký úplně malinký MCU v malém pouzdře třeba SOT23-6. Pro tvorbu SW je možné použit assemblem v AVR studiu. Trošku problém je, že tyto MCU využívají programovací rozhraní TPI. Na internetu je návod jak naprogramovat tyto MCU jen pomocí FTDI převodníku a AVRDude. Programování je velmi pomalé (desítky vteřin na 1kb) a funguje jen pod linuxem se speciální verzí AVRDude. Já jsem využil jinou možnost  a to programovaní pomocí dnes hodně rozšířeného Arduina. Vytvořil jsem destičku (shield), která jde nasadit přímo na Arduino UNO. Umožňuje připojit ATTiny4/5/9/10 přimo položením na desku  (přichycením např kolíčkem) nebe přes redukci na DIP. Pro větší  MCU s rozhraním TPI jsou vyvedeny signály na konektoru.



Schéma zapojení

Plošný spoj

Konstrukce je velmi jednoduchá. Pokud chceme použít všechny vývody je třeba zakázat RESET na MCU. Pro opětovné programovaní pak musíme použít HV programovaní. Přepínač mezi LV a HV programováním je umístěn na desce. Arduino je třeba pak napájet z 12V.

Programovací SW pro Arduino umí jen několik základních příkazů. Po připojení MCU by se měl na sériové lince (rychlost 9600) objevit:
NVM enabled

Potom jsou zadávat příkazy:
D = dump memory, vypíše paměť MCU
E = erase chip. Smaže MCU
P = write program. Programuje MCU, po zadaní tohoto příkazu pošlete HEX soubor po sériové lince (stačí vložit ze schránky)
S = set fuse. Nastavuje pojistky
C = clear fuse.Maže pojistky
H = zapne HV programování
T = přepíná jestli je HV programovaní při log 0 nebo 1
R/r = reset

Kompletní balík s programem pro Arduino a soubory pro Eagle si můžete stáhnout zde.
Stavebnici je možné zakoupit na Hamshop.cz.


23. května 2014

Kde vyrábím plošné spoje ?

Poslední dobou přišlo větší množství dotazů na to jak a kde  si nechávám vyrábět  plošné spoje. Zkusím tady popsat jednotlivé služby, které využívám. Jedná se  výhradně o zahraniční služby. Bohužel vzhledem k cenám  a různým poplatkům za přípravu výroby už žádné české výrobce nepoužívám. Pro srovnání ceny budu uvádět cenu dvouvrstvé prokovené desky  5x5 cm s potiskem a maskou včetně dopravy do ČR.



Americký výrobce. Produkuje plošné spoje ve výborné kvalitě. Objednání online na https://oshpark.com/.
Vstupní data bere ve formátu EAGLE nebo GERBER.

Cena 5 USD za čtvereční palec (2.54 x 2.54cm) a 3 ks. V ceně je i poštovné.
Cena  za 1 desku 5x5 cm je 6.4 USD včetně poštovného.

Výhody:

  1. kvalita - špičková kvalita, desky jsou zlacené
  2. rychlost dodání - od objednání po doručení do ČR se doba pohybuje kolem 10-12 dní
  3. výroba umožňuje frézování uvnitř desky (sloty)
  4. bere rovnou formát EAGLE
  5. není hranice minimální velikosti desky, opravdu platíme jen za přesnou plochu
Nevýhody:
  1. vyšší cena 
  2. k dispozici pouze fialová maska
Zhodnocení: Výborná služba, vhodná pro prototypy a velmi malé desky. Malé destičky vycházejí výborně cenově.


Výroba v Číně. Dobrá kvalita. Vstupní formát GERBER.  Objednání online na https://www.seeedstudio.com/service/index.php?r=site/pcbService


Cena 9.9 USD za 5 x 5 cm a 10 ks. Poštovné se platí zvlášť. Cena poštovného pro tuto zásilku 8.13 USD
Cena  za 1 desku 5x5 cm je 1.83 USD včetně poštovného.

Výhody:

  1. nízká cena
  2. dobrá kvalita
  3. lze objednat i věší množství desek a cena pak mírně klesá
Nevýhody:
  1. doba dodání může dosáhnout i 1 měsíce
  2. vyšší cena poštovného
  3. zlacení, jiná barva masky jsou za příplatek
  4. pokud je deska menší než 5x5cm stejně zaplatíme jako za 5x5cm
  5. minimální odběr 10ks 
Zhodnocení: Kvalitní služba vhodná pro menší série. 




Výroba v Číně. Dobrá kvalita. Vstupní formát GERBER.  Objednání online na 

Cena 9.9 USD za 5 x 5 cm a 10 ks. Poštovné se platí zvlášť. Cena poštovného pro tuto zásilku 3.9 USD
Cena  za 1 desku 5x5 cm je 1.38 USD včetně poštovného.

Výhody:

  1. nízká cena
  2. nízká cena poštovného
  3. dobrá kvalita
  4. lze objednat i věší množství desek a cena pak mírně klesá
  5. při objednání Open source desky dostanete 2 ks navíc zdarma
Nevýhody:
  1. doba dodání 3 týdny
  2. zlacení, jiná barva masky jsou za příplatek
  3. pokud je deska menší než 5x5cm stejně zaplatíme jako za 5x5cm
  4. minimální odběr 10ks 
Zhodnocení: Shodná služba jako u Seeed studia, cena se liší pouze o cenu poštovného.
Seeed studio a Itead studio zřejmě používají stejnou továrnu pro výrobu. Kvalita desek je shodná.


Výroba v Číně. Nová služba. Zatím jsem ji použil 2x. Dle informací z internetu je občas problém s přesností soutisku potisku. Vstupní formát GERBER.  Objednání online na http://dirtypcbs.com/
Zajímavé je, že barvy masky jsou bez příplatku. Dále se pak nemusíte nikde registrovat. O stavu objednávky chodí SMS nebo informace na Twitter.


Cena 14 USD za 5 x 5 cm a 10 ks. Poštovné v ceně.
Cena  za 1 desku 5x5 cm je 1.4 USD včetně poštovného.

Výhody:

  1. nízká cena
  2. poštovné v ceně
  3. možnost výběru libovolné barvy masky za stejnou cenu
  4. možnost výroby šablony pro SMD k desce za 30 USD
Nevýhody:
  1. doba dodání 3 týdny
  2. pokud je deska menší než 5x5cm stejně zaplatíme jako za 5x5cm
  3. občas problematická kvalita potisku
  4. minimální odběr 10ks 
Zhodnocení: Služba srovnatelná s ostatními. Pokud potřebujete levné desky s jinou barvou masky než zelenou tak doporučuji.

Celkově se tady ceny pohybují od 128 Kč do 28Kč za jednu desku 5x5 cm včetně dopravy do ČR. Nejrychlejší, nejkvalitnější, ale i nejdražší je Ohspark. Ceny čínských výrobců jsou prakticky vyrovnané. Při objednání z Číny je třeba počítat s delší dobou dodání. Samozřejmě je možné si připlatit za expresní přepravu, ale to už zase posouvá cenu hodně nahoru. Data pro čínské výrobce je třeba důkladně kontrolovat GERBER data. Pokud v nich bude nějaká chyba nikdo Vás na nic neupozorní a může se stát, že desky budou nepoužitelné.


23. dubna 2014

ARDUINO UNO DDS Shield verze 1.1

Před pár měsící jsem zde popsal DDS shield pro Arduino UNO. Teď je k dispozici nová verze, která přináší několik vylepšení. By přidán jumper JP2 pro uvolnění externího přerušení. Na tento problém, jsem narazil při vývoji SW pro WSPR maják, kde externí přerušení potřebuji. Dále byla přidána možnost možnost volby napájení jumperem, nyní lze napájet výstupní zesilovač přímo z pinu VIN Ardunina.



Schéma zapojení


Plošný spoj

Stavebnici je možné zakoupit na Hamshop.cz.

1. dubna 2014

Paperduino Tiny

Paperduino Tiny je velmi levná a snadno postavitelná Arduino kompatibilní deska s USB.

Paperduino Tiny nepoužívá plošný spoj, ale je celé postavené na tvrdém papíře. Místo plošného spoje si vytisknete šablonu a tu nalepíte na tvrdší papír a můžete stavět.

Kompletní návod, jak na to, najdete na paperduino.eu.

16. března 2014

Přijímač ADS-B z DVB-T tuneru (RTL-SDR) na Raspberry Pi

Vývoj SW pro  SDR přijímače z DVB-T tunerů s čipem Realtek RTL2832U  (RTLSDR) se poslední dobou posouvá velmi dopředu a je k dispozi spousta SW pro dekódování různých služeb. Tunery jsou k dostání velmi levně jak na eBay tak i v našich obchodech. Ve spojení s Raspberry Pi může vzniknout velmi levný přijímač ADS-B s www rozhraním. Já jsem použil tuner Sencor SDB 522RT. Pozor, ne každý tuner na 1090 MHz funguje.

Nejdříve je třeba rozchodit na Raspberry RTL-SDR.
Editujte /etc/modprobe.d/raspi-blacklist.conf a přidejte tam následující řádky:

blacklist dvb_usb_rtl28xxu
blacklist rtl_2832
blacklist rtl_2830


Tím se se zbavíme ovladačů z kernelu pro DVB-T. Je třeba udělat reboot.

Dále je třeba na instalovat potřebný SW pro běh a kompilaci:

sudo apt-get -y install git cmake build-essential libusb-1.0 libusb-1.0-0-dev libpulse-dev libx11-dev libpulse-dev libx11-dev python-pkg-resources qtcreator libtool autoconf automake libfftw3-dev

Nyní budeme kompilovat RTL-SDR:
cd ~/
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig

Stáhneme a zkompilujeme dump1090:
cd ~/
git clone https://github.com/antirez/dump1090.git
cd dump1090
make

 Spustíme příkazem:
 ./dump1090 --net --enable-agc --interactive --metric

Na obrazovce terminálu uvidíme přijímaná letadla. 

Sejmutá obrazovka při příjmu (originální anténa od tuneru umístěná v místnosti)

Do www rozhraní se připojíme IP_adresa:8080. Tam pak vidíme letadla na mapě a po kliknutí na šipku se nám zobrazí podrobné informace.


Samozřejmě leze spustit dump1090 i na pozadí. Mě to zatím na Rapsberry poměrně často padá, ale jak jsem se dočetl na internetu je to problém napájení přes USB přímo z Rapsberry. Někdo to reší napájeným USB hubem. Někdo upravuje napájení přímo v Raspberry. Až toto vyřeším tak řešení popíšu...  Určitě bude také dobré vyrobit anténu přímo pro pásmo ADS-B. Pokud máte někdo s příjmem ADS-B na RTL-SDR zkušenosti tak prosím pište do komentářů...

9. března 2014

AVR ATtiny fusebit doktor

Docela často pracuji s mikroprocesory AVR řady ATtiny. Občas se stává, že potřebuji použít vývod resetu jako I/O port (RSTDISBL) a pak procesor už nejde naprogramovat a nebo si špatně spočítám hodnoty pojistek a procesor také přestane komunikovat s programátorem. K resetu pojistek je třeba použít programátor, který podporuje HVP.Na internetu jsem objevil jednoduchý přípravek, který umí vrátit pojistky do výchozího stavu. Podporuje většinu obvodů řady ATtiny. Zapojení je velice jednoduché. Srdcem je ATtiny2313 a okolo je jen pár součástek.


Přidat popisek

Přidat popisek
Ovládání je velmi jednoduché. Stačí připojit procesor, který chceme vrátit do původního stavu a stisknout tlačítko START. Pokud vše proběhne jak má, rozsvítí se zelená LED.
Obsah procesoru včetně zdrojových kódů je na stránkách autora. Přípravek jsem si vyráběl hlavně por svoji potřebu, ale zbylo mi pár plošných spojů. Pokud by měl někdo zájem, je možné plošný spoj zakoupit na hamshop.cz.


12. ledna 2014

ARDUINO UNO DDS Shield

Momentálně se dají koupit levné osazené DDS moduly s AD9850. Tak vznikl tento Shield s DDS pro Arduino UNO.  Kromě prostoru pro DDS modul je zde také oddělovací zesilovač, který je schopný dát podle kmitočtu 2-3 Vpp do 50 Ohm zátěže. Dále je zde dělička s 74AC74 plánovaná pro IQ výstup pro SDR (plánuji další desku  s jednoduchým SDR podobným Softrocku). Shield jde přímo nasadit na Arduino UNO. Je možné ho použít jako signální generátor, VFO nebo třeba jako QRSS nebo WSPR maják. Tento DDS Shield je také kompatibilní s projektem OCCAM od M0XPD, který vyšel v minulém SPRATu.

Osazení je jednoduché. Nejdříve je třeba začít s SMD součástkami na spodní straně desky. Pak je třeba osadit všechny konektory a nakonec zapájet DDS modul. Pro DDS modul není možné použít konektory a je třeba ho zapájet co nejníže nad plošný spoj. Jinak ztratíme možnost přidávat nad desku další moduly (shieldy).

Schéma zapojení
Plošný spoj
Pohled na spodní stranu plošného spoje
Seznam součástek:


SoučástkaHodnota
C1100nF
C2100nF
C3100nF
C4100nF
IC174AC74D
M1DDS Module
OUTBNC konektor
Q12n2222
Q22n2222
R11k
R2100
R31k
R4470

Zde je ukázkový kód, který zinicializuje DDS modul a začne generovat 10 MHz. Další programy budou v budoucnu následovat. Je možné jich získat spoustu také na internetu.

Ukázkový kód pro Arduino:
/* 
 * A simple single freq AD9850 Arduino test script
 * Original AD9851 DDS sketch by Andrew Smallbone at www.rocketnumbernine.com
 * Modified for testing the inexpensive AD9850 DDS modules
 * 9850 datasheet at http://www.analog.com/static/imported-files/data_sheets/AD9850.pdf
 * Use freely
 */

#define W_CLK 2 // Pin 2 - connect to AD9850 module word load clock pin (CLK)
#define FQ_UD 3 // Pin 3 - connect to freq update pin (FQ)
#define DATA 4  // Pin 4 - connect to serial data load pin (DATA)
#define RESET 5 // Pin 5 - connect to reset pin (RST).

#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }

// transfers a byte, a bit at a time, LSB first to the 9850 via serial DATA line
void tfr_byte(byte data)
{
  for (int i=0; i<8; i++, data>>=1) {
    digitalWrite(DATA, data & 0x01);
    pulseHigh(W_CLK);   //after each bit sent, CLK is pulsed high
  }
}

// frequency calc from datasheet page 8 = <sys clock> * <frequency tuning //word>/2^32
void sendFrequency(double frequency) {
  int32_t freq = frequency * 4294967295/125000000;  // note 125 MHz clock on 9850
  for (int b=0; b<4; b++, freq>>=8) {
    tfr_byte(freq & 0xFF);
  }
  tfr_byte(0x000);   // Final control byte, all 0 for 9850 chip
  pulseHigh(FQ_UD);  // Done!  Should see output
}

void setup() {
  // configure arduino data pins for output
  pinMode(FQ_UD, OUTPUT);
  pinMode(W_CLK, OUTPUT);
  pinMode(DATA, OUTPUT);
  pinMode(RESET, OUTPUT);

  pulseHigh(RESET);
  pulseHigh(W_CLK);
  pulseHigh(FQ_UD);  // this pulse enables serial mode - Datasheet page 12 figure //10
}

void loop() {
  sendFrequency(10.e6);  // freq 10.00000 MHz
  while(1);
}

Stavebnici je možné zakoupit na Hamshop.cz.