Elektroda.pl
Elektroda.pl
X
TermoPasty.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

USBasp w wersji mini (ale łatwej do zrobienia w domu)

OldSkull 06 Kwi 2009 21:19 15805 24
  • USBasp w wersji mini (ale łatwej do zrobienia w domu)


    Jest to programator USB dla mikrokontrolerów AVR oparty o bardzo popularny projekt USBasp: http://www.fischl.de/usbasp/

    Z racji iż mój programator, którego uzywałem (również USBasp) do najwygodniejszych nie należał (i był brzydki jak noc, ale całe szczęście na programator się nie patrzy, tylko na programowany układ i na kod ;) ), postanowiłem zaprojektować i wykonac nowy.

    Celem było zbudowanie programatora, który bylby zarówno funkcjonalny, łatwy w lutowaniu, oraz przede wszystkim: łatwy do zrobienia w warunkach domowych. Cel myślę, że udało się osiągnąć: jest on mniej więcej rozmiaru popularnych pendrive'ów, zamiast zworek ma przełączniki (zworki mogą się zgubić, przełącznik nie ;) ), wszelkie przelotki zostały wyprowadzone w bezpiecznej odległości od mikrokontrolera, oraz nie znajdują sie pod żadnym elementem.
    Pierwsze zdjęcie przedstawia programator w wersji 1.1, która miała pewien defekt, którego nie ma w zamieszczonej przeze mnie wersji 1.2. Stąd też na zdjęciu widać jedną przelotkę zrobioną kynarem oraz 2 nieużywane pady od diody (uzyłem diody w obudowie mmelf).
    Jak również widać, gniazdo do ISP jest przylutowane na krawędzi płytki: było to możliwe, gdyż uzyłem płytki o glubości 1.5mm, jednakże spowodowało, że miałem problem przylutować wtyczkę USB, gdyż okazało się, że jej nóżki są za krótkie i nie przechodzą na drugą stronę płytki, dlatego też jeśli ktoś chce wykorzystać mój projekt (do czego szczerze zachęcam), to musi albo kupić odpowiedni wtyk, albo zrobić to samo co ja, czyli wyszlifować wiertarką wgłębienie, aby nóżki od wtyczki bardziej wystawały.

    Z programatora jestem zadowolony, testuję go już chyba około miesiąca i doskonale działa - na pełnej prędkości za pomocą 2m przewodu 10 żyłowego bezbłędnie programuje, a rusza już przy zasilaniu około 3V (tak mam z takiego huba PCMCIA - USB). Dało by się go pewnie zrobić (przy zachowaniu wymienionych przeze mnie warunków) o 2-3 mm krótszym przy obecnie wykorzystywanych elementach, ale jego wymiary i tak mi się podobają.

    USBasp w wersji mini (ale łatwej do zrobienia w domu)
    USBasp w wersji mini (ale łatwej do zrobienia w domu)

    Załączam pdfy z wydrukami (2 zwykłe i 2 odbicia lustrzane), schematem i fotką.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    OldSkull
    Poziom 27  
    Offline 
    Specjalizuje się w: elektronika, rfid, air
    OldSkull napisał 1034 postów o ocenie 118, pomógł 61 razy. Mieszka w mieście P-ń. Jest z nami od 2007 roku.
  • TermoPasty.pl
  • #2
    markovip
    Poziom 34  
    Super sprawa, tylko czy nie znalazła by się na to jakaś obudowa? Cała płytka wraz z przewodem trzyma się tylko na przylutowanych nóżkach wtyczki USB.

    Mógłbyś pokazać zdjęcie v1.2?
  • #3
    OldSkull
    Poziom 27  
    Obudowę pominąłem, gdyż nie mogłem znaleźć małej płaskiej obudowy, poza tym i tak zawsze będzie wisieć na wtyczce: 4 piny + 2 nóżki obudowy wtyczki.
    Wersji 1.2 nie wykonywałem, gdyż przeróbki (które różniły 2 wersje) wykonałem na tej - chodziło tylko o zamianę ścieżek (stąd widać kynar - zużyłem go w sumie mniej niż 5mm, przeróbki nie były duże). Poza tym musiałbym wylutować ATmegę, gdyż błąd zauważyłem już kiedy całość była polutowana.
    Aby ochronić przed przypadkowym zwarciem przez jakiś leżący kabelek itd. druga strona jest oblana kalafonią.
  • #4
    filipzyz
    Poziom 10  
    Też ostatnio złożyłem ten programator, jednak moja wersja z przyczyn estetycznych nie jest godna osobnego wątku, dlatego pozwolę sobie wrzucić tutaj kilka zdjęć:

    USBasp w wersji mini (ale łatwej do zrobienia w domu) USBasp w wersji mini (ale łatwej do zrobienia w domu) USBasp w wersji mini (ale łatwej do zrobienia w domu) USBasp w wersji mini (ale łatwej do zrobienia w domu) USBasp w wersji mini (ale łatwej do zrobienia w domu)

    Polecam ramkę z drutu jako mechaniczne wzmocnienie konstrukcji.
    Jak widać, przesadziłem z obsmyczeniem płytki przed rozpoczęciem montażu.
    Rozważam zalanie strony ścieżek bezbarwnym poxipolem.
  • #5
    mavin
    Poziom 13  
    OldSkull napisał:
    Obudowę pominąłem, gdyż nie mogłem znaleźć małej płaskiej obudowy, poza tym i tak zawsze będzie wisieć na wtyczce: 4 piny + 2 nóżki obudowy wtyczki.


    Witam!!

    Tu: http://www.maszczyk.pl/sklep.php?kat=32&szczegoly=125&strona=2&key= znajduje się rozwiązanie problemu obudowy. Jej zaletą są rozmiary: 62x33x16 i to że krótszym boku znajduje się wycięcie 6x13mm w które pasuje USB. Pozostaje tylko wykonać otwór po przeciwległej stronie na złącze ISP. Dodatkowo obudowa wykonana jest z ABS. Cena netto dla czarnego koloru to 2.29zł a dla jasnoszarego 2,59zł. Poniżej fotka i rysunek poglądowy tej obudowy.

    Pozdrawiam!!

    USBasp w wersji mini (ale łatwej do zrobienia w domu)

    USBasp w wersji mini (ale łatwej do zrobienia w domu)
  • #6
    gen999
    Poziom 23  
    Zamiast wtyku USB proponowałbym autorowi zaprojektowanie nowej płytki i na niej zrobienie złącza takiego jak na obrazku USBasp w wersji mini (ale łatwej do zrobienia w domu)
  • #7
    kulpina
    Poziom 14  
    A działa to to pod vistą x64?
  • TermoPasty.pl
  • #8
    OldSkull
    Poziom 27  
    @Mavin: ciekawe, nie znałem tej strony, obudowa bardzo fajna, aczkolwiek niestety ma pewną poważną wadę: układ w takiej obudowie po włożeniu do USB będzie blokował w większości przypadków sąsiednie porty. Doskonała jako obudowa do płytki z gniazdem USB (płaskim).

    @gen999: na takie rozwiązanie nie wpadłem, oszczędne i wygodne. Jeżeli będę wykonywać wersję 1.3, to zapewne tak zrobię.
  • #10
    perry2006
    Poziom 1  
    super!! na pewno się przyda.gen999 dobrze podpowiada podpowiada z wtykiem bezpośrednio na płytce a ja jeszcze dorzucę że można by było to w sylikonie zalać tak jak te wodoodporne pendrive tylko że one w gumie czy czymś ale to nie ma takiej dużej różnicy
  • #11
    dominon
    Poziom 18  
    gratulacje dla autora. Projekt bardzo użyteczny i działa a do tego w SMD. Mam takie pytanko. Jak robiłeś płytkę znaczy termo-transferem czy metodą foto i czym lutowałeś elementy.(luty można troche poprawić :/ )
  • #13
    MStaniszczak
    Poziom 11  
    kulpina napisał:
    A działa to to pod vistą x64?


    Pewnie będzie problem. Miałem programator który był zrobiony na podstawie tego ze strony http://www.fischl.de/usbasp/ jednak odpuściłem. Na laptopie z XP działał, na komputerze z Vistą x64 nie. W końcu poszedłem na łatwiznę i kupiłem taki który mi na Viście działa:D
  • #14
    OldSkull
    Poziom 27  
    @dominon: Dziękuję, płytkę robiłem termotransferem, lutowałem zwykłą lutownicą kolbową za 15zł - niektóre luty wyszły niezbyt ładne, gdyż nie mam dużej wprawy w lutowaniu przelotek. Luty od ISP wyszły grube, gdyż był pewien luz między płytką a pinami. Płytkę cynowałem mechanicznie.

    @rasz: do mikrokontrolera trzeba wgrać 3.7kB kodu, ATTiny 23113 ma 2kB pamięci flash - więc się nie da. Zresztą ATTiny2313 i ATmega 8 kosztują prawie tyle samo.
  • #15
    rasz
    Poziom 21  
    OldSkull napisał:

    @rasz: do mikrokontrolera trzeba wgrać 3.7kB kodu, ATTiny 23113 ma 2kB pamięci flash - więc się nie da. Zresztą ATTiny2313 i ATmega 8 kosztują prawie tyle samo.


    attiny23 można juz prawie upchać we wtyczce USB (mniejszy).
    Hmm może ATtiny45? zostają 4 wolne piny na reset mosi miso i clock. Odpada rezonator.

    Fajnie by wyglądało gdyby dało sie zrobić to w formie po prostu kabla z wtyczka usb z jednej strony i wtyczka ISP z drugiej.
  • #16
    sylwek_b86

    Poziom 15  
    Ja mam takie pytanie, czy np ISPprog poradzi sobie z tym programatorem?
    Jaki kwarc jest do niego potrzebny?
  • #17
    sheeeep
    Poziom 25  
    12MHz

    Przeglądając schemat, w poszukiwaniu zworek znalazłem połączenie lini zasilania programatora z lini usb do programowanego urządzenia. W przypadku programowania większego systemu przy zwartej zworce popłynie jakiś prąd wyrównawczy czego komputer chyba nie chce. Nie mówiąc o przykładach takich że jak zasilania nie będzie w urządzeniu to będzie się chciało zasilać z usb. Trzeba na to uważać.
  • #18
    spearhead
    Poziom 12  
    przepraszam za głupie pytanie, ale jak to się łączy z mikrokontrolerem, oraz czy system sam go wykryje
  • #19
    OldSkull
    Poziom 27  
    @rasz: Trzeba by bardzo mocno pozmieniać kod - o ile było by to w ogóle możliwe. USBasp ma obsługę USB przez biblioteki AVR-USB, które musi mieć podpięte INT0 bądź INT1 do jednej z nóżek od USB (nie musi być oddzielnie, ale obługa nóżki od przerwania jako nóżki danych to kolejne komplikacje). A oba te przerwania korzystają z nóżek od SPI. Nie twierdzę, że się nie da, ale wymagało by to mnóstwo pracy i być może wykorzystania ATTiny85.

    @sheeeep: owszem, na to trzeba uważać - całe szczęście płyty główne komputerów mają zabezpieczenia. W oryginalnych projekcie tak było, więc zostawiłem. Koniec końców nie trzeba zasilać urządzenia docelowego z USB.

    @spearhead: łączy się przez to czarne gniazdo od ISP (Is System Programming), system go wykryje i poprosi o sterowniki (przynajmniej jesli chodzi o XP).

    Przy okazji pytanie: czy ktoś próbował programować z USBasp na Windows7? Udało się?
  • #20
    rasz
    Poziom 21  
    OldSkull napisał:
    @rasz: Trzeba by bardzo mocno pozmieniać kod - o ile było by to w ogóle możliwe. USBasp ma obsługę USB przez biblioteki AVR-USB, które musi mieć podpięte INT0 bądź INT1 do jednej z nóżek od USB (nie musi być oddzielnie, ale obługa nóżki od przerwania jako nóżki danych to kolejne komplikacje). A oba te przerwania korzystają z nóżek od SPI. Nie twierdzę, że się nie da, ale wymagało by to mnóstwo pracy i być może wykorzystania ATTiny85.



    Masz racje. Teraz doczytałem i posprawdzałem nogologie. Zachęcający jest fragment :
    Cytat:
    Other interrupts than INT0 for USB

    AVR-USB uses hardware interrupt INT0 by default because it must have the highest priority among all used interrupts. You can configure it to use another interrupt if you make sure that higher level interrupts are never enabled.


    Na początku myślałem ze ten programator po prostu robi bit banging, ale jeśli używa sprzętowego SPI to chyba można przesunąć USB na wyższe przerwanie.Na razie nie mam czasu testować, ale nie omieszkam te kiedyś sprawdzić.
  • #21
    mariaszek
    Poziom 11  
    Witam mam pytanie czy żeby zaprogramować atmega musze mieć inny programator ??? A jezeli nie to jak to zrobić przez usb i czym ??? Bo ten plik o nazwie zaprogramuj to mi tego nie robi albo ja coś źle robie
  • #22
    OldSkull
    Poziom 27  
    musisz mieć inny programator. Ten plik "zaprogramuj.bat" jest do programowania innym usbasp (możesz pożyczyć od kogoś). Jeśli byś używał innego programatora do zaprogramowania go, musisz otworzyć go notatnikiem i zmienić "usbasp" na identyfikator odpowiedniego programatora.
  • #23
    rasta.
    Poziom 10  
    Witam.
    Mam dość ogólne pytanie, ale tutaj też to 'zjawisko' występuję, więc myślę, że mogę zapytać.
    Na schemacie na stronie http://www.fischl.de/usbasp/ dodatkowo do układu programowanego wyprowadzone są nóżki PD0 i PD1, natomiast w większości programatorów jest tam po prostu podana masa. Do czego w oryginale służą piny PD0 i PD1?

    edit: OldSkull: Dzięki, tak mi coś nie grało z tym właśnie :]
  • #24
    OldSkull
    Poziom 27  
    miały służyć powiększeniu funkcjonalności programatora - być może o działanie jako wolna przejściówka do komunikacji szeregowej. Funkcjonalności nie dodano przez te kilka lat, więc wszyscy uznali, że nie trzeba ciągnąć tych kilku linii. Poza tym w oryginalnym ISP w tamtym miejscu rzeczywiście jest masa.
  • #25
    rasta.
    Poziom 10  
    To może jeszcze jedno pytanie.
    Chciałbym do programatora zrobić kabelek, tak z 1m przynajmniej, czy programator to wytrzyma? Kabel z myszki A4 Tech'a, więc zakładam, że nie najgorszej jakości.
    I teraz czy:
    - kabel wlutować w płytkę programatora (na drugim końcu wtyk USB-a już jest),
    - na płytce zrobić wtyk/gniazdo USB-a/b (wtyk czy gniazdo, i które?) i zastosować normalny kabel z USB na obu końcach?