Elektroniczna wizytówka 85 LED

wi8Elektroniczna wizytówka/wyświetlacz. W zależności od przyciśniętego przycisku wyświetla przesuwający się tekst za pomocą 85 multipleksowanych diod LED. Może służyć także jako zwykły wyświetlacz do dyskretnego przekazywania informacji, a ponieważ posiada niewielkie wymiary (24mm x 85mm), można go zabrać wszędzie. Dzięki zastosowaniu mikrokontrolera ATmega88V, pobór prądu i wymagane napięcie pracy zmniejszono do minimum. uProcesor ten pracuje już od 1.8V, a w trybie uśpienia pobiera jedynie 0.1uA (całe urządzenie ok 1.5uA). Diody LED pracują od 2V, więc w przypadku rozładowania baterii poniżej nominalnego poziomu 3V urządzenie może jeszcze bardzo długo pracować. Po włożeniu baterii zostaje wyświetlony komunikat powitalny, i stan baterii (pomiar do 3.44V z rozdzielczością i dokładnością 0.01V).

Programowanie napisów odbywa się za pomocą wbudowanego edytora, a same napisy przechowywane są w nieulotnej pamięci eeprom mikrokontrolera. 512B pamięć pozwala na zapamiętanie 4 napisów, 127 znaków każdy (128-a komórka użyta jest do przechowania znaku specjalnego, oznaczającego koniec napisu). Urządzenie posiada także kilka opcji, można je zmieniać poprzez krótkie przytrzymanie jednego z przycisków:

1 – zmiana szybkości przesuwającego się tekstu (szybciej/wolniej)
2 – umożliwia wyświetlanie tekstu w negatywie (normalnie/negatyw)
3 – zamiana każdej małej litery na wielką (zwyczajnie, małe i wielkie/wszystkie wielkie)
4 – edytor napisów, po wejściu ukaże się komunikat z informacją aby wybrać napis do edycji i wybieramy przycisk którego tekst chcemy edytować. Obsługa: przycisk 1 to poprzedni znak, przycisk 2 to następny znak, przycisk 3 to przeskoczenie do edycji kolejnego znaku. Nie trzeba wykorzystywać całej 127 znakowej pamięci, aby zakończyć edycje można nacisnąć przycisk 4 co spowoduje wpisanie końcowego znaku specjalnego i przejście w normalny tryb pracy. Opcje celowo nie są zapisywane w pamięci, po usunięciu baterii przybierają ustawienia domyślne.

Podczas bezczynności urządzenie śpi, po przyciśnięciu któregokolwiek z przycisków zacznie wyświetlać odpowiedni napis. Przyciśnięcie innego przycisku podczas wyświetlania spowoduje natychmiastowe, płynne rozpoczęcie wyświetlania innego odpowiedniego napisu. Przyciśnięcie tego samego przycisku spowoduje zatrzymanie się przesuwania tekstu (pauza) do czasu naciśnięcia któregokolwiek z przycisków. Po zakończeniu wyświetlania urządzenie przechodzi w stan bezczynności.

Ograniczenie prądu dla diod zostało wykonane programowo, po każdym wyjściu ze stanu bezczynności dokonywany jest pomiar napięcia baterii, i przez cały czas pracy urządzenie ogranicza prąd diod odpowiednio regulując wypełnienie, czyli czas trwania impulsów zaświecających diody (programowy PWM).

Sam wyświetlacz to 85 diod led w obudowach 0805. 5 rzędów po 17 diod. Wyświetlanie odbywa się poprzez multipleksowanie, to znaczy że w jednej chwili świeci się tylko jeden rząd odpowiednio zapalonych diod, przełączanie rzędów następuje tak szybko że migotanie nie jest widoczne dla ludzkiego oka ani żadnej zwykłej kamery cyfrowej.

Inne: Wymiary to 24mm x 85mm x 5mm (w najgrubszym miejscu). Trzy ścieżki po stronie diod należy wykonać cieniutkim drutem nawojowym (izolowanego lakierem), poprowadzenie ich ścieżkami/przelotkami nie było możliwe. Uchwyt baterii wykonałem z innego uchwytu mniejszej baterii, można go oczywiście zakupić (trudno dostępny w Polsce) lub wykonać z blaszki. Złącza programowania nie ma, uznałem że będzie ono zbędne. Linie mosi miso i sck to trzy pierwsze przelotki od strony baterii, linia reset wyprowadzona w postaci „testpointu”. Same przelotki wykonane cieniutkim drucikiem, otwory wiercone wiertłem 0.6mm (użycie większego niż 0.7mm zniszczy pady przelotek) i zalutowane po obydwu stronach. Większość przelotek ukryta jest pod padami diód i przycisków. Sama płytka zaprojektowana w darmowej wersji eagle, wykonana termotransferem, cynowana chemicznie (nie polecam). Program pisany w bascom’ie, kod wynikowy zajmuje około 6.2kB (z czego większość to sama obsługa przycisków i edytor, cała działająca reszta bez tego zajmuje tylko niecałe 3kB). Fusebity: wewnętrzny generator 8MHz. należy zadbać o to aby watchdog oraz brown-out detection były wyłączone, pobierają cenny prąd podczas bezczynności.

Dodałem kod źródłowy, wymaga jeszcze kilku poprawek.

POBIERZ – pliki projektu eagle 5.4.0, wsad HEX, BIN, źródło BAS, schemat i płytka w PDF.
.

3.00 avg. rating (71% score) - 2 votes

25 komentarzy

  1. Dlaczego nie polecasz cynowania chemicznego, sam wykonujesz odpowidnie preparaty?

  2. Zakup tanich preparatów do cynowania, bazujących na tiomoczniku, to pieniądze wyrzucone w błoto. Po idealnym przygotowaniu płytki i postępowaniu ściśle wg instrukcji, owszem, otrzymamy ładną powłokę. Jest jednak ona nie odporna na temperaturę i topniki, przy lutowaniu po prostu traci swoje właściwości od wysokiej temperatury, i już nie chroni miedzi przed śniedzeniem tak jak powinna. Nie ma to jak tradycyjne pocynowanie :)

  3. Mistrzowskie! Szczerze mówiąc nie wyobrażam sobie praktycznego zastosowania ale jako zabawka doskonałe, no i ten edytor :) Lutowanie tych wszystkich ledów chyba nie było zbyt ekscytujące :D

  4. Lutowanie tego ręcznie było męczarnią, tylko 5 pierwszych diod dało mi jakąś satysfakcje a potem… chociaż jak pomyśle jak bym miał robić to na diodach przewlekanych to… ehh

  5. Hey dude, great work! I saw this on tehnikservice.net… you know, its much better than that other business card, you have this text editor and stuff. Thanks for the sources, i try to make my own, BIG greetings!

    Oh and one question, how it looks in sunny day?

  6. Hi! You mean this one? -> http://www.youtube.com/watch?v=CxioR15PrL8 i don’t know if it has a text editor… but is much better designed and has nice casing with graphics :)

    And for the question, it looks very poorly, best results are after the sunset or in good shadow. You know, this is supplied just from one button battery…

  7. Gratuluje pomysłu!!! Naprawdę świetny projekt!!
    Jakie są parametry diod, których użyłeś (kąt świecenia, jasność)??

  8. Przepraszam, można użyć i Mega8 i Mega88? Firmware jeden dla obu kontrolerów?
    tłumaczone z Google

  9. Can smbdy port into mega8 (mega8ai) like in shematic version?
    Czy ktoś port w mega8 (mega8ai) jak w shematic wersji?
    Может кто-нибудь портировать на mega8 (mega8ai) ?

  10. może być bardziej parrallelno z portirogvaniem w języku angielskim, faktem jest, że chcę przetłumaczyć na język rosyjski(z Bascom), prawdopodobnie może być używany i port, ale ja jestem lepszy reasekuratorów, jako początkujący
    Lubię, dzięki za pracę!
    Tłumacz z Google

  11. Przykro mi, ale … można przetłumaczyć na angielski swoje uwagi w tej części kodu, gdzie utworzyć tabelę znaków?
    I’m sorry, but can you translate into English your comments in the part of source code where you create a table of characters?

  12. Witam, a mam takie pytanka.Czy ta atmega88V to ATMEGA88 TQFP32?I czy na tej PCB są jakieś wyprowadzenia do programowania?Jak kolega to zaprogramował(kabelki do płytki i do lpt?)I jak wyprasować te ścieżki żeby nachodziły na siebie?
    Bardzo proszę o pomoc i odpowiedź na moje pytania.

  13. Gdy klikam na dowolny przycisk, który może wyświetlać tekst, który jest przechowywany na innym. Czy to normalne? błąd w kodzie lub popełniłem błąd w systemie?(google translate)
    When I click on any button that can display text that is stored on another. Is this normal? error in the code or I made a mistake in the scheme?

    • When I click on any button that can display text that is stored on another

      Can you describe this better?

  14. for example i press first button, that must show first string, it show string1 or string2 or anything else

  15. oh, and sometimes after showing string, wizytowka not react on pressing of buttons, then i reboot it and work fine

    • I had the same problem. I cleaned up pcb around pushbuttons and it start to work good. Also, please try to not touch traces if pressing button.

      I know about issue when it won’t work after go sleep. The code is not perfect, there is a few things that should be fixed but i didn’t work with it because no one has built this device except me (and you, now).

      I don’t have this device anymore and don’t have much time to go back to this project, but i try to check the code. Meanwhile, please check my suggestions :)

    • i want to edit your source code, but i can’t do that. when i compile your source without any editions hex-file size 18.950 and your hex in archive 17.678, thats mean that it is not the final version or smth like that.
      When i download firmware that i compile from your bascom project (size 18.950) wizytowka work strange, it show characters not well.
      can you upload work version or explain what, maybe, i do not correctly
      thanks for attention

    • File size depends on compiler version (originally 1.11.9.0 was used) and on compiler „optimize code” setting – so don’t suggest with this.

      Do you have any errors when compile? I compiled it now with version 2.0.6.2 and i got 17,788 bytes with optimize code enabled.

    • use 1.11.9.8, after optimize code hello message looks strange, it show W ….(incorrect characters)… Witaj, stan bat… 3.45v. file size become 17.805. No errors detect.
      maybe i need to check anything else like swap words?

    • its very interesting story about how i built wizytowka, i made it in last summer, and i made mistake with fusebits, but due to you avr fuse bit doctor, that i built week later, i solve this problem. mega88 i ordered in another country, because i live in Belarus, and don’t find this uC in Minsk. When i made PCB i made it mirrored, than I rebuild it =).
      So I made hard job to built it. After 1 year, thats mean now, with new power, I want to fix bugs and add russian characters.
      After watching your code, i dont see code of avoid buttons bounce. maybe some errors placed here?

  16. Witam

    świetny efekt wizualny. Mam jednak pytanie : Czy dało by się wyświetlać na przemian godzinę i temperaturę albo samą godzine bo jako bajer na biurku prezentował by się nieźle.

    • Jasne że się da, trzeba zmodyfikować program :)

      Urządzenia już nie mam i nie będzie dalej rozwijane.

      Ponadto, w programie do tej pory nie poprawiłem błędów i już ich nie poprawię.

      Ale jak ktoś ma chęci i zaparcie to owszem, czemu nie, choć sądzę że łatwiej i szybciej będzie napisać taki program od nowa :)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę pozostawić te dwa pola tak jak są: