Úvod O mně Články Software Bastlírna < Foto ...a zbytek

Pandova bastlírna

Před rokem jsem se opět vrhnul na elektroniku. Nalákalo mě pohrát si trochu s programováním mikročipů Atmel. Ne že bych toho neměl v práci dost, ale přece jen, vlastní je vlastní. Bohužel mi to vydrželo jen 3/4 roku a zdá se že mám na pár let zas klid. Ne že by mě to nebavilo, ale vážně není možné všechno stíhat co by člověk chtěl. Takže se raději budu věnovat plněji čisté softwerařině. Něco vzniklo, ale většinou to jsou nedokončené projekty. Ale možná někomu přinesou inspiraci pro vlastní tvorbu.

Všechny programy jsou pro WinAVR-20100110 (překladač gcc-avr), pouze kódy pro AT89S52 jsou v Keil C51 (free verze). Plošné spoje a schémata jsou v Eagle 6.2 freeware, rozměry plošných spojů jsou proto omezené na 10x15 cm. Plošné spoje vytvářím vytištěním na fólii v laserové tiskárně, 2 výtisky pak slepím k sobě (kvůli lepšímu krytí), osvítím pomocí UV-LED osvitky na fotocuprextit (koupený v GM), vyvolám v hydroxidu sodném (Tesco) a leptám v kyselině solné s peroxidem vodíku (drogerie PeMi).

 

Vánoční osvětlení s 320 LED - asi tak nejdokončenější projekt z těchto mých pokusů. LEDky v 5 barvách jsou uspořádány do matice 8 x 8 segmentů a řízeny multiplexem. Programově lze ovládat kteroukoliv LED samostatně a dosahovat tak zajímavých efektů.

Více podrobností zde...

Zdrojový kód a schéma - Ukázkové video na YouTube - Ukázkové video download

PandaProg, univerzální programátor a tester procesorů, pamětí a logických obvodů - projekt, kterého si nejvíce cením a proto mě nejvíce mrzí, že jsem ho nedokončil. Měl to být univerzální levný programátor a tester na většinu procesorů, pamětí a logických obvodů pro napětí 3.3V/5V/12V (tj. včetně paralelního programování 12V), interface SPI, PPI, ICSP, JTAG. Pořizovací cena je kolem 500 Kč. První verze umožňovala programovat procesory Atmel (sériové i paralelní programování, 5V a 12V), poté jsem předělal firmware na skriptovací jazyk (aby bylo možné uživatelsky definovat nové součástky), ale k definici skriptů jsem se už nedostal.

Více podrobností zde...

UV expoziční hodiny - potřeboval jsem časový spínač ke své UV-LED expoziční osvitce, kterou jsem osvěcoval fotocuprextit. Použil jsem šuplíkové součástky a proto výsledek dopadl jinak než jsem čekal - namísto plánovaného ATmega162 jsem musel použít AT89S51, což znamenalo udělat změny v zapojení a použít jiný program. Bohužel úpravy nejsou ve schématu zanesené a tak z toho vznikl tak trochu paskvil za který se velmi stydím. :-(

Více podrobností zde...

Zdrojový kód a schéma

Mikroprocesorová stavebnice P84 - vývojové prostředí, překladač a programátor pro procesory Microchip PIC16F84. Tento projekt vznikl v roce 2000, v době kdy procesory PIC16F84 byly králem mezi mikročipy co do nízké ceny, výkonu a malé spotřeby. Základem je univerzální jednotka s PIC16F84, která se přes COM port připojí k PC a slouží jednak k naprogramování procesoru a jednak jako testovací vývojová deska. K výstupnímu konektoru lze připojovat další moduly - LCD displej, LED pole s tlačítky a reproduktorem. Pro programování modulu byl vytvořen kompilátor PicDev, překládající program v assembleru a umožňující zapsat program přes COM port do modulu.

Více podrobností zde...

CycloMet - je měřicí jednotka pro různá sportovní zařízení. Umožňuje měření uběhlé vzdálenosti, zobrazuje uběhlý čas, rychlost a vzdálenost celkem. Je napájena ze 2 tužkových monočlánků a osazena procesorem PIC16F84. K zobrazení využívá 3 1/2 místný LCD displej a je ovládána 1 tlačítkem.

Více podrobností zde...

EyeWatch - hlídač času stráveného u počítače. Modul (s procesorem PIC16F84) sleduje čas strávený u počítače a je-li překročen daný limit, upozorní na to signalizací. Na rozdíl od softwarového řešení nevznikají problémy kolizí s jinými běžícími programy (např. fullscreen). Při nepoužívání počítače se spustá spořič, který odečítání času pozastaví.

Více podrobností zde...

 

Další pokusy a náměty:

Jednoduchý stejnosměrný voltmetr - pomocí A/D převodníku se snímají 2 vstupy (rozsahy 10V a 100V) a zobrazují se jako 2 údaje na LCD displeji EL1602B. Plošňák není, jen schéma, zůstalo to jen ve formě vrabčího hnízda. :-)

Zdrojový kód a schéma: ATmega8.

Generátor sinusovky a trojúhelníku - Program vznikl jako pokus o řešení dotazu uživatele fóra www.mcontrollers.com o generování trojúhelníku a sinusovky daných parametrů na ATtiny2313 (20 MHz), s přepínáním pomocí tlačítka. S využitím assembleru a maker bylo dosaženo rozlišení vzorků 0.1us, tj. vzorkovací frekvence signálu 10 MHz. Neřeší se obsluha zákmitů tlačítka a v obsluze přerušení se neuchovává registr příznaků (program nepoužívá příznaky). Ke generování sinusovky se používá tabulka vypočtená pomocí Excelu. Program byl jen zkompilován, ale nebyl zkoušen v provozu, proto nemusí být funkční.

Zdrojový kód: ATtiny2313

RCL meter - návrh zapojení měřidla pro kondenzátory, cívky a odpory. Pro měření cívek a kondenzátorů se používá měření frekvence oscilátoru s LM311N. Odpory se měří měřením napětí z odporového děliče (s automatickým přepínáním rozsahu). Elektrolytické kondenzátory se měří měřením nabíjecí a vybíjecí konstanty komparací s hraničními úrovněmi z odporového děliče. Výstup je na dvouřádkový LCD displej. Bohužel k realizaci nedošlo a návrh skončil jen u schématu.

Schéma

Sportka - Návrh zapojení displeje pro zobrazení výsledků sportky. Jedním ze 49 tlačítek se rozsvítí příslušná jedna ze 49 LED, procesor si pamatuje rozsvícené LED. Resetovacím tlačítkem se všechny rozsvícené LED zhasnou. Návrh má několik variant. V první variantě se využívá multiplex. Tranzistory spínají jeden ze 7 řádků. Procesor čte stavy tlačítek zapojených do matice 7x7 a pomocí posuvného registru TPIC6C595 zobrazuje výstup na matici 7x7 LED. Druhá varianta využívá procesor ATmega169, který má dostatek pinů i výkon k buzení LED. Nesepnuté výstupy slouží současně jako vstupy ke čtení stavu tlačítek. Ve třetí variantě spíná procesor přímo výstupy na LED zapojené do matice 7x7. Nelze použít vysoce svítivé LED a program musí omezit počet současně rozsvícených LED.

Schémata

 

Drobnosti:

Blikání s LED - Jeden z nejjednodušších prográmků. Softwarová prodleva s _delay_ms a blikání LED. Tento prográmek zkouším vždy jako první u všech zařízení. Umožňuje ověřit, že procesor vůbec žije a podle frekvence blikání zkontrolovat frekvenci procesoru. LEDka je skvělý diagnostický výstup než se zfunkční ostatní zařízení - umožňuje zkontrolovat zda program prošel určitým bodem nebo (opakovaným voláním ve smyčce) měřit dobu provádění funkcí.

DDRB |= B4; /* PB4 output mode */
while (1) { PORTB ^= B4; _delay_ms(250); }

Zdrojové kódy: AT89S52, ATmega8, ATtiny12 (assembler), ATtiny13

Vstup z tlačítka - Nejjednodušší prográmek k vyzkoušení vstupu z portu. Jednoduše kopíruje v nekonečné smyčce vstupní pin do výstupního. Po připojení tlačítka a LED tak lze jednoduše ověřit, že nastavení vstupního portu je v pořádku a procesor z portu "něco" načítá. Pak už lze pokračovat dál bez pochybností typu "kde je asi chyba, procesor nečte vstup, špatně vyhodnocuje nebo nefunguje výstup?"

DDRB |= B4; /* PB4 output mode */
PORTB |= B5; /* PB5 pull-up input mode */
while (1) { if (PINB & B5) PORTB |= B4; else PORTB &= ~B4; }

Zdrojové kódy: ATmega8, ATtiny12 (assembler), ATtiny13

Generování tónu přerušením - Jednoduchý prográmek k výstupu tónu na reproduktor s využitím přerušení od časovače. Lze si tak snadno ověřit, že inicializace časovače a obsluhy přerušení je funkční.

TCCR0 |= BIT(CS01); /* prescaler = F_CPU/8 */
TIMSK |= BIT(TOIE0); /* enable overflow interrupt */
TCNT0 = 0; /* initialize counter */
DDRB |= B4; /* set PB4 to output mode */
sei(); /* enable global interrupt */
while (1); /* infinite loop */
...
ISR(TIMER0_OVF_vect) { PORTB ^= B4; } /* interrupt routine */

Zdrojové kódy: ATmega8, ATtiny12 (assembler), ATtiny13

Přehrání melodie přerušením - Není to můj program, původní zdroj je zde (jen jsem udělal drobné úpravy), ale je to dobrá rozcvička k pohrání si. Pomocí přerušení od časovače se přehrává melodie podle tabulky. Autor nahrál i ukázkové video.

Zdrojový kód: ATmega8

Generování PWM sinusovky s proměnlivou frekvenci - pomocí časovače se generuje PWM výstup na repro. Tabulkou se generuje sinusový průběh. Frekvence sinusovky se periodicky mění.

Zdrojový kód: ATmega8

Obsluha 2-řádkového LCD displeje EL1602B - ovladač displeje, vypíše na displej 2 řádky testovacího textu.

Zdrojový kód: ATmega8

Vstup do diskuze Bastlírny