USBASP z optoizolacją do 2,5KV, 1.8V-6V

usbasp_opto7Programator może się pomyślnie komunikować z układami AVR zasilanymi już od 1.8V, i aż do 6V, i o różnicy potencjałów do 2.5kV. Czegoż więcej chcieć? Rolę izolatora pełnią transoptory 6N137 znajdujące się na liniach MOSI, MISO, i SCK. Są to szybkie transoptory, o przepustowości do 10mbit/s. Na linii reset znajduje się zwykły transoptor typu PC817. Do strony „wtórnej” z układu docelowego należy doprowadzić jego napięcie zasilania.

Za pomocą zworki JP1 można połączyć masę obydwu stron jeśli nie jest wymagana izolacja, zworką JP2 można połączyć linie zasilające aby zasilić układ docelowy z programatora, a zworką JP3 włączamy programowanie układów z zegarem poniżej 1.5MHz. Z początku miała być to izolacja galwaniczna ale ze względu na trudnodostępność odpowiednich układów zdecydowałem się na izolację optyczną – a z pomocą przyszedł mi ten wątek. Usunięte zostały niepotrzebne linie Rx i Tx z racji tego że autor przez 4 lata nie wprowadził ich obsługi, i raczej się na to nie zapowiada. Usunięta też została zworka self-programming zajmująca miejsce, aktualizując firmware raz do roku można się pofatygować i zewrzeć linie ręcznie. Tutaj znajdue się szerszy opis programatora, a tutaj strona autora wraz z najnowszym firmware i innymi wersjami programatora. Płytka została przystosowana do pudełeczka po tzw. samplach.

Nowością natomiast (w firmware 2009.02.28) jest programowe wybieranie prędkości programowania, nie używając żadnej zworki, z poziomu avrdude można wybrać jedną z 12 prędkości SCK. Od 500Hz do 1.5MHz! Wyboru dokonujemy za pomocą dodatkowego przełącznika „-B wartość„. Więc od teraz można zaprogramować nawet układ z ustawionymi fusebitami 32KHz /8 (zegar 4096Hz), a wybierając prędkość 1.5MHz (wymagany zegar 8MHz) układ zaprogramujemy 4 razy szybciej niż w poprzedniej wersji firmware (375KHz). Poniżej znajduje się spis dostępnych prędkości (przykładowe użycie „-B 40.00” da nam prędkość 32KHz). Aby skorzystać z tego udogodnienia, należy przekompilować avrdude wraz z patchem avrdude.diff lub pobrać już przekompilowany w załączniku (dzięki Tomasz). Podane niżej liczby mają niewielki rozrzut w skrajnych wartościach, avrdude zawsze wyświetli informację z jaką prędkością rozpoczyna programowanie.

mniej niż 0.5 lub w ogóle – ustawienie domyślne zworką
0.5 – 1.0 -> 1.5 MHz
1.0 – 2.0 -> 750 kHz
2.0 – 4.0 -> 375 kHz
4.0 – 8.0 -> 187.5 kHz
8.0 – 20.96 -> 93.75 kHz
20.96 – 46.88 -> 32 kHz
46.88 – 93.75 -> 16 kHz
93.75 – 187.5 -> 8 kHz
187.5 – 375.0 -> 4 kHz
375.0 – 750.0 -> 2 kHz
750.0 – 1500.0 -> 1 Khz
więcej niż 1500.0 -> 500 Hz

UWAGA! Jeśli chcemy naprawdę używać programatora przy układach o różnicy potencjałów do 2.5kV, należy starannie odizolować obie połówki po stronie druku, zwracając szczególna uwagę na pady zworek do łączenia zasilania i masy. Są one bowiem bardzo blisko siebie, należy umieścić między nimi kawałek izolatora, a przy samym programowaniu także włożyć kawałek izolatora pomiędzy piny od strony elementów. Piny te są oddalone od siebie zaledwie o 1.5mm, więc przy wyższej wilgotności powietrza zachodzi ryzyko przebicia. Układ nie był testowany z takimi napięciami, i nie ponoszę żadnej odpowiedzialności za ewentualne szkody – robisz to na własne ryzyko!

Zobacz też: Programator USBTiny-MkII SLIM

POBIERZ – projekt płytki eagle+pdf, firmware 2008.02.28, avrdude5.6+isp_control
.

1.00 avg. rating (56% score) - 1 vote

24 komentarze

  1. FenFreefogy

    Hi, Congratulations to the site owner for this marvelous work you’ve done. It has lots of useful and interesting data.

  2. мишень

    Нечто остановили здесь?
    С уважением

  3. Hi! How you have made silkscreen?

    • In the same way as layout, printed eagle project top layer with laser printer (in mirror) and iron transfered to top of pcb. Next i sprayed top side with transparent varnish so it’s clear and shiny, and most of all toner will be resistant to scratching.

  4. Hi,
    one thing is: Vcc of 6N137 should be in range 4,5 – 5V. Will it work with 1,8V ? Propably not.
    another thing is: 2,5kV isolation ? 6N137 can handle this, but not your PCB.

    • I know about supply voltage of 6N137, but i tested it, and it works fine with 1.8V – no errors, working the same way as on 5V. If you get errors, you can always lower the SCK speed.

      I’ve isolated bottom side of pcb with mechanical and spray insulators, don’t have photo of this. And i know that gnd and vcc pins are too close but i could not find other solution for that. So, as i described, this was not tested with that voltages. I tested this successfully with ~300V.

  5. Czy mam rację, że jeżeli nie zewrzemy zworek zasilających vcc i gnd to odłączymy cały segment optoizolacji? Chyba nie będziemy mogli czegokolwiek zaprogramować?

    • Wtedy zasilanie do strony „wtórnej” dostarczamy z układu programowanego, poprzez złącze IDC10 (kanda).

  6. Zbudowałem ten programator no i działa bez zarzutu.
    Nawiązując do dyskusji jaka się wywiązała na temat podciągania MISO rezystorem 220 R
    w programowanym procku to rozwiązałem ten problem stosując bufor 74HC125 sterowany
    z wyjścia RST programatora (oczywiście z transoptora resetującego).
    Co do obsługi przez Bascom to działa bez zarzutu (mam wersję komercyjną i wszystkie
    aktualizacje).
    Jest wprawdzie małe niedociągnięcie – otóż nie działa a właściwie brak przycisku
    który resetuje procek z poziomu bascoma.
    Rozwiązałem ten problem tak:
    Zastosowałem małego Attiny13 który sterowany 2 przyciskami wykonuje przełączenie
    trybu pracy programatora slow / fast i generuje za każdym przełączeniem sygnał resetu
    do programowanego procka.
    Może przerost formy nad treścią :))) ale cytuję: „wolność wariacie w swoim warsztacie”

    • A to może pochwal się jak to wyszło. Jakieś zdjęcie, schemat (jeśli istnieje)

      Faktycznie trochę przekombinowane z tym tiny13, ale ważne że działa tak jak chciał autor :)

      Przycisk resetu spokojnie można dodać po stronie wtórnej, przy gnieździe – u mnie za bardzo miejsca nie było – ale zawsze taki przycisk daję na płytce prototypowej.

      Co do zworki slow SCK -już nie pamiętam kiedy jej używałem. Programowo prędkość wybieram, i jest to bardzo wygodne – kwestia przyzwyczajenia.

      Co do Bascoma – nie jest zbyt kompatybilny z USBASP. Nie działają te dodatkowe opcje które można sobie zaptaszkować. Wybór prędkości też chyba nie działa.

      I przy okazji… trochę się rozpiszę :)

      Wyszła właśnie nowa wersja softu do USBASP. Polecam wrzucić bo teraz programator obsługuje układy powyżej 128kB, oraz układy TPI (nowe attiny 4, 5, 9, i 10).

      Przy układach TPI, linia MOSI jest dwukierunkowa. Więc nici z izolacji. Trzeba tą linię wyprowadzić bezpośrednio z procka programatora.

      Nie wiem też czy ktoś zdaje sobie z tego sprawę, ale w tej optoizolowanej wersji nie ma aktualizacji softu przez gniazdo programujące – bo USBASP staje się układem docelowym i dane lecą w drugą stronę – „pod prąd” dla transoptorów – trzeba więc się podlutować do układu programatora.

      Pozdrawiam.

  7. Się poirytowałem :))) (aktualizacja softu)

    Cytuję: „Nie wiem też czy ktoś zdaje sobie z tego sprawę, ale w tej optoizolowanej wersji nie ma aktualizacji softu przez gniazdo programujące – bo USBASP staje się układem docelowym i dane lecą w drugą stronę – „pod prąd” dla transoptorów – trzeba więc się podlutować do układu programatora.”

    Nie dorastam tobie do pięt wiedzą – to wiem, ale schematy potrafię czytać.
    No tak ale to chyba nie było do mnie skierowane :))).

    Zgadzam się, że z tym attiny to przegina ale po co mają zalegać w szufladzie.
    Gdybym był dobry w języku C to można by było trochę przerobić soft i zamiast zworki zastosować przyciski do zmiany fast / slow. Oczywiście można też zwykły przerzutnik RS zastosować.

    Tak na marginesie to nie chciało mi się robić porządnej płytki drukowanej i zmontowałem całość na uniwersalnej i tak naprawdę to chyba zajęło więcej czasu :))

    Co do Bascoma to działa wybór prędkości programowania i opcje „ptaszkowe” też działają.
    Co ciekawe wszystko działa zarówno pod avrdude jak i pod bascomem.
    Może gdybym zainstalował AVR Studio to by się pokiełbasiło.

    Ps. Trochę na inny temat – wiem, że nie miejsce tutaj ale może mi odpowiesz.
    Chodzi o analizator stanów logicznych który masz na swojej stronie. Przecież na mój rozum tam wystarczy 74xxx244 – bufor jednokierunkowy – skąd więc jest 245 – chyba taki był w szufladzie :)))

    Pozdrawiam serdecznie
    Marek emeryt
    http://www.ma_cz.user.icpnet.pl/asp/usbasp.jpg

    • Nie dorastam tobie do pięt wiedzą – to wiem, ale schematy potrafię czytać.
      No tak ale to chyba nie było do mnie skierowane :))).

      To tylko tak dla potomnych, bo może tego nie widać na pierwszy rzut oka. Sam się z tym zakręciłem i zauważyłem to dopiero po publikacji układu :) Z tym niedorastaniem to nie był bym taki pewien ;)

      Co do Bascoma to działa wybór prędkości programowania i opcje „ptaszkowe” też działają.

      W takim razie muszę na nowszej wersji sprawdzić, bo sprawdzałem to chyba na pierwszej wersji 2.0.cośtam. Co do tego ptaszkowania opcji, to nie działa mi opcja „auto erase” czy jak jej tam. Po odznaczeniu, bascom i tak wymazywał pamięć przed zapisem – zmarnowałem chyba z 2 godziny na szukanie błędów w działającym bootloaderze :/

      Do tego bascom instaluje własne sterowniki – i USBASP automatycznie przestaje działać z AVRDUDE. Wywala że nie znaleziono urządzenia USB. Więc miałem dość i zainstalowałem oryginalne, i używam z AVRDUDE. Teraz bascom przestał widzieć programator. A może tylko ja mam takie jaja z tymi sterownikami?

      Ps. Trochę na inny temat – wiem, że nie miejsce tutaj ale może mi odpowiesz.
      Chodzi o analizator stanów logicznych który masz na swojej stronie. Przecież na mój rozum tam wystarczy 74xxx244 – bufor jednokierunkowy – skąd więc jest 245 – chyba taki był w szufladzie :)))

      W zasadzie można. Nie wiem już czemu dałem 245, chyba taki właśnie był pod ręką :)

  8. Ad. obsługi przez Bascom 2.0.5.0
    Celowo ustawiłem w Attiny13 zegar na 128 KHz i podział zegara na 8.
    Programator przestał widzieć procka. Zresztą STK200 też go nie widział.
    Ustawiłem we właściwościach USBASP prędkość na 500 Hz i zobaczył procka.
    Ptaszki przy opcjach działają.

    Pozdrawiam
    Marek emeryt :(

  9. Hi,

    is it compatible to the Original USBasp Firmare?

  10. Witam.
    Zrobiłem ten programator i nawet działa. Ale po podłączeniu go do attiny45 zasilanego z ogniwa li-ion lipa, nie działa. Oczywiście zworki GND CON i VCC CON zdjęte. Zwykły sk200 widzi procesor i nie ma żadnego problemu.
    Programator na pewno jest dobrze poskładany bo w innym urządzeniu z atmegą32 programator działa zasilany od strony „wtórnej” czyli musi być wszystko ok.
    O co kaman z tym rezystorem podciągającym MISO? Może to jest moim problemem.

    • Rezystory podciągające są niezbędne do prawidłowej pracy, zapewniają stan wysoki po drugiej stronie optoizolatora bowiem ten potrafi tylko ściągnąć linię w dół gdy jest aktywny.

      Spróbuj odłączyć akumulatorek i zasilić układ z programatora, ewentualnie połączyć tylko masy. Jakie jest napięcie ogniwa? Możesz zmniejszyć R9 na próbę, np dolutować drugi 220ohm równolegle, ale podejrzewam że zasilasz to z ogniwa 3.7V więc nie tu będzie problem.

  11. Manekinen to gdzie mają być te rezystory podciągające?
    Nie ma ich na tej płytce?
    Próbowałem kilkanaście razy programować i raz coś załapało ale do końca nie zaprogramował.
    Myślę że to linia miso coś niedomaga.
    Akumulatorek ma nominalnie 3.7V

  12. Witam.
    Odłączenie akumulatorka i podłączenie zasilania układu z programatora niczego nie zmienia.
    Dziwna sprawa bo STK200 gada bez problemu z układem.
    Manekinen ten rezystor podciągający linie miso ma ją podciągać do plusa zasilania po stronie układu programowanego?

  13. Spójrz na schemat, rezystor podciągający jest na każdej linii, jak już pisałem wymagają go optoizolatory. Nie szukaj błędu w układzie bo był powielany i działa ludziom bez problemu.

    Masz USBasp bez izolacji? Jeśli nie to podłącz wszystkie sygnały PRZED izolatorami i sprawdź wtedy. A może masz jakąś starszą wersję FW? Może trzeba zmniejszyć prędkość programowania?

    Zmontowałeś go z takich samych elementów jak na schemacie? Żadnych zamienników? Głównie chodzi mi o izolatory bo te muszą być szybkie.

  14. Sugerowałem się tym co pisze Marek o podciąganiu Miso rezystorem 220.

    Jeszcze spróbuje podłączyć zwykły Usbasp.
    Wszystkie elementy mam takie jak potrzeba żadnych zamienników.
    Próbowałem z założoną zworką slow_sck i też nie działa.

    Może rzeczywiście mam nieaktualny program w atmedze8.
    A podasz mi linka gdzie znaleźć najnowszy wsad do megi?

  15. Aktualny wsad jest zawsze dostępny na stronie autora usbasp – link także w opisie.

    Powiedz jeszcze jak masz obciążone linie ISP tej attiny45? Być może to jest problemem.

  16. Zmieniłem firmware atmegi i nie pomogło.

    A linie ISP to tak:
    MISO – Ta linia steruje wejściem enable AMC7135 (taki ogranicznik prądu 350mA dla led)
    MOSI – Tylko i wyłącznie podłączony do USBASP
    SCK – Tu podpięty jest microswitch który podczas programowania jest rozwarty, czyli jakby nic nie podłączone
    RESET – standardowo podciągnięty rezystorem 10k do plusa

  17. Wyczytałem na necie że to avrdude ma problem z attiny45. Pewnie tu jest problem.
    Nie będe już tego drążył. Zaprogramuje attiny na STK200.

    A ten programator oczywiście działa.

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ą: