Obsah:

Mechanické sedmisegmentové hodiny zobrazení: 7 kroků (s obrázky)
Mechanické sedmisegmentové hodiny zobrazení: 7 kroků (s obrázky)

Video: Mechanické sedmisegmentové hodiny zobrazení: 7 kroků (s obrázky)

Video: Mechanické sedmisegmentové hodiny zobrazení: 7 kroků (s obrázky)
Video: Sedmisegmentový displej a Atmel AVR AT Mega 8 2024, Listopad
Anonim
Mechanické sedmisegmentové zobrazovací hodiny
Mechanické sedmisegmentové zobrazovací hodiny
Mechanické sedmisegmentové zobrazovací hodiny
Mechanické sedmisegmentové zobrazovací hodiny

Před pár měsíci jsem postavil dvouciferný mechanický 7segmentový displej, který jsem proměnil v odpočítávací časovač. Vyšlo to docela dobře a řada lidí navrhla zdvojnásobení na displeji, aby se vytvořily hodiny. Problém byl v tom, že už mi na Arduino Mega docházel PWM IO a neměl jsem k dispozici dostatek pro druhou nebo třetí číslici. Poté jsem byl nasměrován na směr těchto 16kanálových ovladačů PWM PCA9685, které fungují přes rozhraní I2C. Díky tomu bylo možné pohánět všech 28 serv, která jsem potřeboval, pomocí dvou pinů I2C na Arduinu. Takže jsem se pustil do stavby hodin, které nyní používají modul hodin reálného času DS1302 k udržení času a dva 16kanálové servomotory pro ovládání 28 serv používaných k sestavení displeje, všechny poháněné Arduino Uno.

Pokud vás tento Instructable baví, zvažte prosím jeho hlasování v Hodinové soutěži

Zásoby:

K sestavení hodin budete kromě některých základních nástrojů potřebovat následující zásoby:

  • Arduino Uno - Koupit zde
  • Hodinový modul DS1302 - kupte zde
  • 2 x 16A servo ovladače PCA9685 - kupte zde
  • 28 x Micro Servos - Koupit zde
  • Plochý kabel - Koupit zde
  • Pruhové hlavičkové proužky - kupte zde
  • Ženské kolíkové lišty - kupte zde
  • 3mm MDF - Koupit zde
  • Černá barva ve spreji - Koupit zde
  • Obvod pro odstranění baterie 5V 5A - kupte zde
  • Napájecí zdroj 12V - Koupit zde

Pro tento projekt budete také potřebovat nějaké 3D tištěné díly. Pokud ještě nemáte 3D tiskárnu a baví vás vyrábět věci, určitě byste měli zvážit její pořízení. Zde použitý Creality Ender 3 Pro je cenově dostupný a za svou cenu produkuje docela dobré výtisky.

  • Použitá 3D tiskárna - Koupit zde
  • Filament - Koupit zde

Krok 1: 3D tisk plastových součástí

3D tisk plastových součástí
3D tisk plastových součástí
3D tisk plastových komponent
3D tisk plastových komponent
3D tisk plastových komponent
3D tisk plastových komponent

Sedmi segmentové displeje jsem navrhl tak, aby byly co nejjednodušší. Servo je také podpůrný držák, který drží segment nad ním. Pro každý segment jsou vyžadovány dvě 3D tištěné komponenty, distanční blok pro podporu spodní strany serva a zobrazovací segment, který se lepí přímo na rameno serva.

Stáhněte si soubory 3D tisku - soubory mechanického 7segmentového displeje s hodinami 3D tisku

Vytiskněte segmenty a body serva pomocí jasně barevného PLA. Použil jsem průsvitnou zelenou, ale dobře by měla fungovat i červená, oranžová nebo žlutá. Použil jsem černé PLA pro distanční bloky a bodové podpěry, aby nebyly viditelné, když jsou segmenty otočeny do vypnuté polohy.

Pokud nemáte přístup k 3D tiskárně, vyzkoušejte některou ze služeb online tisku. K dispozici je řada cenově dostupných služeb, které součásti vytisknou a dodají vám je za pár dní až domů.

Krok 2: Připravte si ovládací desky a zapojení

Připravte si řídicí desky a zapojení
Připravte si řídicí desky a zapojení
Připravte si řídicí desky a zapojení
Připravte si řídicí desky a zapojení
Připravte si řídicí desky a zapojení
Připravte si řídicí desky a zapojení
Připravte si řídicí desky a zapojení
Připravte si řídicí desky a zapojení

K pohonu 28 hodinových serv budete potřebovat dva 16kanálové ovladače PWM PCA9685. Rozdělil jsem serva na číslice hodin a minut, přičemž každý pár číslic byl poháněn jednou deskou. Takže mám jednu desku ovládající serva pro dvouhodinové číslice a druhou ovládající serva pro dvouminutové číslice.

Chcete -li je spojit dohromady, budete muset vytvořit 6vodičový konektor plochého kabelu a pájet druhý pásek záhlaví na druhý konec první řídicí desky serva. Budete také muset změnit adresu I2C na druhé desce, aby byla odlišná od první a jednoznačně identifikovatelná.

Budete také muset vytvořit kabelový svazek pro připojení tří desek (dvě desky se servy a modul hodin) k vašemu Arduinu. Na každé desce budete potřebovat 5V a GND a také připojení I2C k vašim pinům Arduino A4 a A5 (I2C na Arduino Uno) a piny hodinového modulu CLK, DAT & RST na piny 6, 7 a 8 na vašem Arduinu resp.

Napájení je dodáváno do Arduina přímo z napájecího zdroje 12V a do serva pomocí 5V 5A BEC, který je poté připojen ke dvěma svorkám v horní části ovladače PWM. K napájení stačí připojit pouze jeden ovladač serva a druhý bude napájet pomocí 6vodičového kabelu.

Krok 3: Sestavte serva

Sestavte serva
Sestavte serva
Sestavte serva
Sestavte serva
Sestavte serva
Sestavte serva

Jakmile vytisknete své segmenty, budete muset nastříkat zadní část a boky na černo, aby byly méně viditelné, když budou otočeny o 90 stupňů do vypnuté polohy.

Poté musíte segmenty přilepit tavným lepidlem na servo ramena. Pomáhá je přilepit na servo s paží již na servu, tímto způsobem můžete zkontrolovat, zda je lepíte rovně a rovně.

Budete také muset na dno každého serva přilepit distanční blok.

Sestavte body tak, že do zadní části bodů a poté do základních bloků nalepíte malou hmoždinku nebo kebab. Tyto tyčinky jsem nastříkal také černě, aby byly méně viditelné při pohledu z úhlu.

Krok 4: Nastavení a testování

Nastavení a testování
Nastavení a testování
Nastavení a testování
Nastavení a testování

Očísloval jsem všechna serva a zapsal číslo na každý vodič, aby bylo snazší je sledovat. Začal jsem horním segmentem na číslici jednotek a pracoval jsem na středním segmentu na desítce. To je také pořadí, ve kterém jsem je zapojil do desek servopohonu, přičemž jsem si pamatoval, že identifikátory na deskách se počítají od 0 do 13 a ne od 1 do 14.

Segmenty jsem pak postavil na stůl s dostatečným prostorem mezi nimi pro testování, aby se při nastavování cestovních limitů a směrů nepohybovaly do jednoho a druhého. Pokud je zkusíte nastavit blízko sebe, pravděpodobně se v jedné fázi pokusíte jeden nebo dva pokusit o pohyb špatným směrem nebo o přejezd a zasáhnout další, což může poškodit segment, rameno serva nebo odizolovat převody na servu.

Krok 5: Nahrání kódu

Nahrání kódu
Nahrání kódu
Nahrání kódu
Nahrání kódu
Nahrání kódu
Nahrání kódu

Kód vypadá na první pohled složitě, ale ve skutečnosti je díky dvěma použitým knihovnám poměrně jednoduchý. Také se hodně opakuje, protože je třeba aktualizovat čtyři různé 7 segmentové displeje.

Zde je souhrnný popis kódu, podrobnější vysvětlení najdete v úplném průvodci a odkaz na stažení kódu - Mechanické 7segmentové zobrazovací hodiny

Začneme importem dvou knihoven, virtuabotixRTC.h pro modul hodin a Adafruit_PWMServoDriver.h pro ovladače servo. Knihovnu Adafruit lze stáhnout a nainstalovat přímo prostřednictvím správce knihovny v IDE.

Potom pro každou řídicí desku vytvoříme objekt s příslušnou adresou, jeden pro číslice hodin a jeden pro číslice minut.

Potom máme čtyři pole pro uložení pozic zapnutí a vypnutí pro každé servo. V následujících krocích budete muset tato čísla upravit, abyste se ujistili, že jsou vaše serva ve svislé poloze, když jsou vypnutá, otočená o 90 stupňů a nepřekračují cestování.

Číselné pole ukládá pozice každého segmentu pro každou zobrazovanou číslici.

Poté nastavíme modul hodin a vytvoříme proměnné pro uložení aktuálních a minulých jednotlivých číslic.

Ve funkci nastavení spustíme a nastavíme řídicí desky PWM a v případě potřeby aktualizujeme čas. Poté projdeme smyčkou a nastavíme displej na 8 8: 8 8, abychom znali počáteční polohu všech serv. To se také používá k nastavení serv tak, aby všechny směřovaly správně nahoru.

V hlavní smyčce získáme aktualizovaný čas z hodinového modulu, rozlil ho do čtyř číslic a poté zkontroloval, zda se čas od poslední kontroly nezměnil. Pokud se čas změnil, aktualizujeme displej a poté aktualizujeme předchozí číslice.

Ve funkci aktualizace zobrazení nejprve přesuneme prostřední segmenty. To se provádí nejprve, protože je zapotřebí určitá logika, aby se dva horní segmenty sousedící se středním segmentem trochu přesunuly z cesty, než se střední segment přesune, jinak do nich narazí. Jakmile jsou střední segmenty přesunuty, zbývající segmenty jsou přesunuty do správných poloh.

Krok 6: Sestavení hodin na zadní desce

Sestavení hodin na zadní desce
Sestavení hodin na zadní desce
Sestavení hodin na zadní desce
Sestavení hodin na zadní desce
Sestavení hodin na zadní desce
Sestavení hodin na zadní desce

Jakmile jsem skončil s testováním, sestavil jsem serva na zadní desku pomocí výše uvedeného rozložení jako vodítka.

Bílá oblast je celková velikost desky, světlejší šedá je oblast obklopující každou číslici, do které se pohybují segmenty serva, a obrys v tmavě šedé oblasti je středová čára pro vnějších 6 segmentů pro každou číslici.

Rozstříhal jsem desku, označil rozvržení a poté nalepil číslice na místo, aby se vytvořil ciferník.

Potom jsem vyvrtal otvory v blízkosti každého serva a přivedl dráty k zadní části desky tak, aby byly méně viditelné.

Elektroniku jsem namontoval na zadní stranu hodin oboustrannou páskou.

Krok 7: Konečné nastavení a provoz

Konečné nastavení a provoz
Konečné nastavení a provoz
Konečné nastavení a provoz
Konečné nastavení a provoz
Konečné nastavení a provoz
Konečné nastavení a provoz
Konečné nastavení a provoz
Konečné nastavení a provoz

Jakmile byla všechna serva připravena, odstranil jsem všechna ramena serva pro konečné úpravy poloh segmentů. V tomto stavu byste měli zapnout Arduino, aby se zobrazilo 8 8: 8 8, a poté odpojit napájení, tím se vycentrují všechna vaše serva, abyste mohli znovu nasadit ramena serva se segmenty směřujícími co nejblíže svislici jak je to možné.

Poté budete muset Arduino postupně zapínat a upravovat pozice zapínání a vypínání segmentu ve čtyřech polích, aby byla serva při zapnutí dokonale svislá a při vypnutí se otočila o 90 stupňů, aniž byste museli cestovat. Tento krok je poměrně časově náročný a vyžaduje trochu trpělivosti, ale konečný výsledek stojí za to!

Hodiny lze nechat napájet pomocí napájecího zdroje 12 V a k němu připojeného 5 V BEC. Pokud dojde k výpadku napájení, baterie v modulu RTC udrží čas, takže po obnovení napájení se hodiny automaticky resetují na správný čas.

Pokud se vám tento Instructable líbil, hlasujte pro něj v soutěži o hodiny a dejte mi vědět o všech vylepšeních nebo návrzích, se kterými můžete přijít v sekci komentáře níže.

Hodinová soutěž
Hodinová soutěž
Hodinová soutěž
Hodinová soutěž

Druhá cena v soutěži Hodiny

Doporučuje: