Tlačítkový spínač

Potřeboval jsem ovládat osvětlení kolem rodinného domu z min. čtyř míst. Standardně by to šlo udělat pomocí křížových spínačů, ale po zvážení ceny spínačů a několika desítek metrů min. tří žilového kabelu CYKY jsem se rozhodl vymyslet vlastní řešení pomocí čipu Attiny13. Můj první prototyp vypadal asi takto (obr. níže), udělal jsem chybu v pájení a proto jsou LED dioda a rezistor skrouceny.

Druhý prototyp vypadá lépe, už obsahuje všechny součástky.

Čip Attiny13 jsem si vybral kvůli malé ceně(cca 30 Kč) a malému odběru proudu(mA). Celkový odběr při sepnutém relé je cca 54 mA a při vypnutém relé je odběr cca 4mA. K napájení jsem použil nepoužívanou 5V nabíječku na mobil. Čip Attiny13 jsem naprogramoval přes Arduino UNO přes SPI (piny 13,12,11 a 10). Pro programování jsem si vyrobil malý Arduino shield.

Programování Attiny13:

1 – Stáhněte si soubor s čipem ATtiny13 a dejte ho do složky hardware

       (odkaz na stránku s návodem: http://elabz.com/arduino-shrunk-how-to-use-attiny13-with-arduino-ide/, soubory ATtiny13 ATtiny13_files )

2 ­– Nahrajte do Arduino program ArduinoISP

3 – Nahrajte do čipu program (nezapomeňte ve složce Nástroje změnit desku na čip Attiny 13 a nastavte programátor z AVR ISP na Arduino as ISP)

Zapojení je možné i na Arduinu (např. PRO MINI), ale z důvodu nízké spotřeby jsem raději zvolil Attiny13.

//vytvoření variabilní hodnoty 
int led=LOW;
//základní nastavení programu
void setup()
{
  //nastavení pinu 3 jako vstup 
  pinMode(3, INPUT);
  //nastavení pinu 4 jako výstup
  pinMode(4, OUTPUT);
}
//opakovaní programu
void loop()
{
  //funkce "když"
  //když je pin 3 zapnutý a hodnota led je "LOW" nebo 0 tak:
  if(digitalRead(3)==HIGH && led==LOW)
  {
    //zapne pin 4
    digitalWrite(4, HIGH);
    //zmení hodnotu led z "LOW" na "HIGH"
    led=HIGH;
    
    while(digitalRead(3)==HIGH)
    {
      delay(10);
    }
  }
  //funkce "když"
  //když je pin 3 zapnutý a hodnota led je "HIGH" nebo 1 tak:
  if(digitalRead(3)==HIGH && led==HIGH)
  {
    //vypne pin 4
    digitalWrite(4, LOW);
    //zmení hodnotu led z "HIGH" na "LOW"
    led=LOW;
    
    while(digitalRead(3)==HIGH)
    {
      delay(10);
    }
  }
}

Schéma zapojení:

Celé jsem to nainstaloval do krabičky na DIN lištu. Takhle vypadá hotové zařízení, přidal jsem ještě tlačítko pro ovládání přímo z krabičky.

Srovnání od prvního prototypu až po hotový výrobek.

Zařízení mám v provozu asi tak měsíc. Zatím mám připojeny 3 tlačítka (paralelně), ale plánuji dodělat další dvě. Spolehlivě by mělo fungovat i na delší vzdálenost, úbytek je např. 1,2V na 500m dvojlinkou 0.15 mm2, takže by to mělo fungovat. Testoval jsem 3,3V přes tlačítko a pak do čipu a fungovalo to, takže úbytek na kabelech při 5V napájení může být až 1,7V. Úbytek max. 1,7V aby se alespoň 3,3V vrátilo do čipu. Záleží na průřezu kabelu a jeho délce.

 

Seznam použitých komponent:

http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://dratek.cz/arduino/1032-led-dioda-zelena-5mm-1434544279.html

http://dratek.cz/arduino/919-arduino-tlacitko-1421009050.html

http://dratek.cz/arduino/843-arduino-vyvojova-deska.html

Další podobné články

ROBOTICKÉ RAMENO

Stavebnice obsahuje všechny potřebné díly na sestavení robotnického ramene včetně spojovacího materiálu, pouze je nutné dokoupit čtyři kusy MIKRO SERV SG90. Dále je nutné dokoupit řídící jednotku já jsem použil domácí zásoby ARDUINO NANO a pro něho pak modul ARDUINO NANO IO SHIELD pro jednoduchost zapojení. Díly pro sestavení ramene jdou dobře tzv. vylamovat „vypadávají skoro sami. K servům pokud použijete nové tak doporučuji je před montáží odzkoušet zda jsou funkční v plném rozsahu tj. od 0° do 180°, po namontování a zjištění že servo nefunguje to pak opravdu dost zahýbá s nervy. 

Electronic TiltMaze

Cílem tohoto projektu je vytvoření jednoduchého ovládacího systému, který umožňuje naklápění dvou servomotorů pomocí analogového joysticku. Platforma řízená servomotory může simulovat pohyb například v ose X a Y — tedy naklánění doleva/doprava a dopředu/dozadu. Tento systém může sloužit jako základ pro různé aplikace:

- Manuální ovládání kamery nebo senzoru (např. na pohyblivé konstrukci nebo robotovi)
- Interaktivní ovládací panel pro školní projekty nebo herní ovladač