Operácie

Blik!: Rozdiel medzi revíziami

Z SensorWiki

(Software)
(Software)
Riadok 171: Riadok 171:
 
| style="background-color:#dae8fc;" | PB5
 
| style="background-color:#dae8fc;" | PB5
 
|}
 
|}
 +
 +
 +
Najjednoduchší program je naozaj obyčajné blikanie jednou z trojice LED diód
 +
 +
[[Súbor:Blik_Program01.png|center]]
 +
 +
<tabs>
 +
<tab name="Arduino"><source lang="c++">
 +
/*  pin0 - Red LED / 1 - Green / 4 - Blue  */
 +
 +
void setup()
 +
{
 +
  pinMode(0, OUTPUT);
 +
}
 +
 +
void loop()
 +
{
 +
  digitalWrite(0, LOW);  // LED On (common Anode)
 +
  delay(200);            // Wait for 200 ms
 +
  digitalWrite(0, HIGH); // LED Off
 +
  delay(200);            // Wait for 200 ms
 +
}
 +
 +
 +
 +
</source></tab>
 +
 +
<tab name="AVR C-code"><source lang="c++" style="background: LightYellow;">
 +
##define F_CPU 8000000UL  // toto je lepsie vlozit do parametrov pre kompilator
 +
 +
#include <avr/io.h>
 +
#include <util/delay.h>
 +
 +
#define LED1  PB2  // pripojena dioda
 +
 +
int main(void)
 +
{
 +
    DDRB |= (1 << LED1);  // set pin as OUTPUT
 +
 +
    while(1)
 +
    {
 +
        PORTB |=  (1<<LED1);          // ... tak rozsviet LED, t.j. set PB5 na log. 1
 +
    _delay_ms(200);
 +
        PORTB &= ~(1<<LED1);        // zhasni LED, t.j. clear PB5 na log. 0
 +
  _delay_ms(2000);
 +
    }
 +
}
 +
</source></tab>
 +
</tabs>
  
  

Verzia zo dňa a času 20:47, 6. máj 2023

Programovateľný astabilný multivibrátor

Typický elektronický obvod, ktorý si postaví každý začiatočník je nejaké jednoduché blikátko, obvykle s dvoma tranzistormi, alebo s populárnym časovačom NE555. V roku 2023 však máme predsa len viac možností. Jednou z nich je namiesto obvodu 555 použiť rovnako veľký mikroprocesor ATtiny45, ktorý však môže okrem samotného blikania realizovať aj náročnejšie funkcie. Keďže procesor má možnosť budiť viac ako jednu jedinú LED diódu, využili sme to a v zapojení je použitá trojfarebná RGB dióda OSTAMA51A5A. Pripojená je na tie tri vývody mikroprocesora, ktoré majú okrem bežného digitálneho výstupu aj alternatívnu funkciu s výstupom PWM signálu. Týmto spôsobom môžeme ovládať všetky tri farby spojito (nielen zapni/vypni, ale aj rôzne stupne intenzity a dosiahnuť tak mnoho farebných kombinácií.

Obvody zrealizované študentmi na predmete DTV v roku 2023.


Opis a schéma zapojenia

Srdcom celého zariadenia je 8-bitový mikroprocesor ATtiny45V v DIL-8 puzdre. Okrem dvoch napájacích vývodov máme k dispozícii celkom 6 vstupov/výstupov ak použijeme menej presný interný oscilátor. Pre naše účely je celkom dostačujúci. Napájanie je zabezpečené lítiovou batériou Bt1 typu CR2032 s priemerom 20 mm a kapacitou 220mAh. Na plošný spoj umiestnime vhodný držiak, ktorý je umiestnený zo spodnej časti. Vypínač sme do zapojenia nezaradili zámerne, jednak aby sme znížili náklady, ale aj preto, lebo batéria sa dá jednoducho vybrať, alebo aspoň odizolovať malým kúskom plastu priamo v držiaku.

Jediným vstupom je tlačidlo SW1, ktoré spína vstup voči zemi. Aby zapojenie správne fungovalo, musí mať príslušný vstup PB3 mikroprocesora zapnutý interný pull-up rezistor, inak zapojenie nebude fungovať.

Na výstupoch PB0, 1 a 4 sú zapojené tri LED diódy (resp. jedna RGB dióda v ktorej sú všetky tri integrované). Všetky tri diódy majú zapojený aj predradný rezistor R1-3, ktorý obmedzuje maximálny prúd cez diódu. Pri oživovaní sa ukázalo, že intenzita jednotlivých farebných zložiek je ľudským okom vnímaná rozlične, preto sú odpory R1 a R3 menšie (680R) ako R1 (1k) - je to preto, aby subjektívne vnímaná intenzita bola vyrovnaná u všetkých troch diód. Keďže použitá RGB dióda má spoločnú anódu, programátor ju musí ovládať s inverznou logikou, teda zápis log. 0 na výstup LED diódu rozsvieti a log. 1 ju zhasne.


Schéma zapojenia.

Plošný spoj

Blik01.jpg

Plošný spoj je obojstranný, rozmerov AxB mm navrhnutý v programe KiCAD7. Na obrázku je rozmiestnenie súčiastok a obrazec plošného spoja, ktorý bol napokon vyrobený vo firme JLC PCB (China). Pri návrhu sme zohľadnili najmä to, že výrobok je určený pre začiatočníkov a tak sú všetky súčiastky v prevedení s vývodmi, namiesto miniatúrnych SMD prvkov. Okrem jednoduchšieho spájkovania sa tak zjednoduší aj prípadné meranie alebo výmena prvkov. Snažili sme sa dosiahnuť čo najmenšie rozmery plošného spoja, aby cena ostala primeraná. Plošný spoj je pripravený aj na osadenie alternatívnych prevedení, ktoré sú opísané nižšie.


Plošný spoj - strana súčiastok, strana spojov a osadzovací plán.

Osadzovanie súčiastkami začneme päticou na procesor DIL8, ktorá je najnižšia. Dáme pritom pozor na orientáciu výrezom nahor. Potom osadíme tlačidlo a rezistory R1-R3, tu na orientácii súčiastok nezáleží. Napokon osadíme trojfarebnú LED diódu D1 (najkratší vývod 1 je na plošnom spoji označený štvorčekom) a pozície D2, D3 ostanú prázdne. Ako posledný spájkujeme z opačnej strany držiak na gombíkovú batériu. Ak by sme ho osadili skôr, nedostali by sme sa k vývodom ostatných súčiastok. Osadený plošný spoj je na obrázku X.


Zoznam súčiastok

Amount Product / Datasheet Reference Value Názov Footprint
1 GOLD-8P Conn1 DIL8 Pätica na integrovaný obvod DIL8 nie je
1 1-1825910-0 SW1 Mikrospinac TACT Mikrospínač do plošného spoja Button_Switch_THT:SW_PUSH_6mm_H4.3mm
1 CF1/4W-180R R1 180R Rezistor 1/8W Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal
1 CF1/4W-180R R2 180R Rezistor 1/8W Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal
1 CF1/4W-180R R3 180R Rezistor 1/8W Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal
1 OSTAMA51A5A D1 OSTAMA51A5A LED 5mm trojfarebná, RGB LED_THT:LED_D5.0mm-4_RGB_Staggered_Pins
1 L-7113F3BT D2 L-7113F3BT LED 5mm infračervená LED_THT:LED_D5.0mm
1 L-53LID D3 L53-LID LED 5mm červená, nízkopríkonová LED_THT:LED_D5.0mm
1 ATTINY45-20PU IC1 ATtiny45-20P Mikroprocesor Attiny45 DIL8 Package_DIP:DIP-8_W7.62mm
1 KEYS1066 BT1 [Keystone1016] Držiak gombíkovej batérie Battery:BatteryHolder_Keystone_103_1x20mm
1 BAT-CR2032/A Batt1 CR2023 Gombíková batéria 3V typ CR2032 nie je
1 GOLD-8P Conn1 DIL8 Pätica na integrovaný obvod DIL8 nie je


Pri osádzaní vám môže pomôcť tento interaktívny diagram, v ktorom sa okrem ľahkej orientácie na doske môžete aj začiarkovať, ktoré súčiastky už máte pripravené a ktoré sú už aj osadené.

Software

Pre programátora je potrebné vedieť, kam je ktorý komponent pripojený, pozri nasledujúcu tabuľku.

Component Pin Arduino
Red 5 PB0
Green 6 PB1
-- 7 PB2
SW1 2 PB3
Blue 3 PB4
-- 1 PB5


Najjednoduchší program je naozaj obyčajné blikanie jednou z trojice LED diód

Blik Program01.png
/*  pin0 - Red LED / 1 - Green / 4 - Blue   */

void setup()
{
  pinMode(0, OUTPUT);
}

void loop()
{
  digitalWrite(0, LOW);  // LED On (common Anode)
  delay(200);            // Wait for 200 ms
  digitalWrite(0, HIGH); // LED Off 
  delay(200);            // Wait for 200 ms
}
##define F_CPU 8000000UL  // toto je lepsie vlozit do parametrov pre kompilator

#include <avr/io.h>
#include <util/delay.h>

#define LED1  PB2  // pripojena dioda 

int main(void)
{
    DDRB |= (1 << LED1);  // set pin as OUTPUT	
	
    while(1)
    {
         PORTB |=  (1<<LED1);          // ... tak rozsviet LED, t.j. set PB5 na log. 1 
	     _delay_ms(200);
         PORTB &= ~(1<<LED1);         // zhasni LED, t.j. clear PB5 na log. 0
	  	 _delay_ms(2000);
    }
}


FSManimation.gif

Programovanie

Napokon potrebujeme preložený .hex súbor nahrať do pamäte mikroprocesora. Na otestovanie môžeme použiť už preložený súbor demo.hex, ktorý do procesora nahráme buď profesionálnym programátorom (napr. Elnec BeeProgXY), alebo použijeme ako programátor Arduino.


Varianty

Semafor

Blik02.jpg


Namiesto trojfarebnej RGB diódy osadíme tri samostatné diódy - červenú, žltú a zelenú. Dostaneme tak jednoduchý semafor. Tlačítko v tomto prípade nemá žianu funkciu, mohlo by slúžiť ako vypínač prepínajúci procesor do sleep modu.











Infračervený ovládač

Blik03.jpg


Namiesto trojfarebnej RGB diódy osadíme infračervenú diódu (napr. VISHAY XXXX) a po stlačení tlačidla odvysielame nejaký špeciálny kód, napr. na vypnutie zariadenia. Získame tak jednoduchý diaľkový ovládač. Aby sme vedeli skontrolovať funkciu zariadenia, pridáme na dosku aj jednu bežnú červenú LED diódu na pozíciu D2. Aby ovládač fungoval spoľahlivo aj na väčšiu vzdialenosť, zameníme rezistor Rx za iný s menšou hodnotou, napr. 47 alebo 51 Ohm.









Všetky tri varianty osadenia plošného spoja.

Podklady

Ak by si zariadenie chcel niekto postaviť, na GitHube sú k dispozícii všetky zdrojáky pre KiCAD ako aj vygenerované Gerber súbory.