logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Electric Chair - Open-source HVPP programator dla AVR

rolnik666 13 Lis 2023 15:50 573 4
  • #1 20813326
    rolnik666
    Poziom 11  
    Dzień dobry,

    Szukałem okazji do pobawienia się nowymi AVRami z UPDI i nadarzyła się... chwila nieuwagi z PICKITem 5 i trzy sztuki ATmegi32 skończyły z przestawionymi fusebitami. Wiem, że istnieje znany Fuse Doctor, ale oprogramowanie jest zamknięte, zdecydowałem że zrobię coś podobnego (niekoniecznie lepszego, jak się okazało, na pewno droższego) od nowa, w pełni open-source. Zarówno PCB, jak i kod źródłowy programu (w fazie mocno wstępnej) są na githubie. Licencja GPL-3.0 - proszę o uszanowanie mojej pracy (mimo, że włożyłem w to całe 30% ;).

    Na schemacie jest błąd, ostatecznie zastosowany procesor to AVR128DB32 w obudowie TQFP-32.

    PCB dwuwarstwowy, zamawiałem z pewnej chińskiej wytwórni, lutowane z ręki kolbą/hotairem.

    Electric Chair - Open-source HVPP programator dla AVR

    Programator jest zasilany z PC poprzez złącze Mini USB, komunikuje się za pośrednictwem układu MCP2221A (wirtualny port szeregowy). Wyjścia I2C (bo mostek ten ma również funkcję USB-I2C) tego układu są połączone z I2C AVRa oraz ze znajdującą się na płytce podstawką pod EEPROM do ewentualnego wykorzystania (jest przycisk "PROGRAM", można np. zrobić flashowanie pacjenta wsadem wgranym do EEPROMu).

    Można zbudować "budżetową wersję" płytki bez przetwornicy (to chyba najdroższy element), podając 12V z zewnątrz na wyprowadzone pola testowe. Przetwornica w obecnej wersji i tak nie do końca spełnia moje wymagania, powoduje dość spore (ok. 100 mV) tętnienia na wejściu i będzie przeprojektowana, jak tylko dotrze nowy oscyloskop. W planach mam zresztą drugą rewizję, z przetwornicą opartą o MAX662, podstawki ZIF i wyrzucenie podstawki 20 pin (nie do końca chce mi się robić drugi wariant procedur programowania specjalnie pod jeden układ), oraz ze zmienionym podłączeniem linii do AVRa - chciałbym wykorzystać wyjście waveform do umożliwienia regulowanego taktowania pacjenta, oraz podpięcie przycisku pod CCL - debouncing w oparciu o CCL z filtrem bardzo fajnie działa w moim innym projekcie.

    Uprzejmie proszę Forumowiczów o konstruktywne uwagi i opinie.

    https://github.com/bderleta/electric-chair
    https://github.com/bderleta/electric-chair-firmware
  • #2 20814922
    rolnik666
    Poziom 11  
    Zanim dopracuję software, chciałbym mieć w miarę ogarniętą kwestię sprzętową, i proszę o opinię.
    Jeden prototyp (żółty wykres) ma na wejściu Lx przetwornicy cewkę wurth 7447709151 (150 uH), drugi (różowy) - wurth 7447709331 (330 uH).
    Zgodnie z przewidywaniem, niższa indukcyjność mniej obciąża linię 5V, ale za to występują większe tętnienia na wyjściu 12V. Pojemności po stronie 5V nie mogę niskim nakładem pracy zwiększyć - wzrośnie prąd rozruchowy i prawdopodobnie przekroczy dopuszczone przez specyfikację USB wartości. Skłaniam się ku wariantowi z cewką 150 uH i zwiększeniu pojemności po stronie wyjścia przetwornicy, obecnie jest tam 47 uF tantal (zamiana na 100 uF) + małe ceramiki. Dobrze myślę?

    Jeśli coś pomierzyłem źle, albo mógłbym lepiej, proszę dajcie znać - pierwszy dzień z tym sprzętem, wcześniej używałem analoga Philipsa.
    (ok, widzę że mogłem zamiast użyć kanałów 1 i 3 i miałbym pełną rozdzielczość :D )

    Electric Chair - Open-source HVPP programator dla AVR

    Electric Chair - Open-source HVPP programator dla AVR
  • #3 20815691
    rb401
    Poziom 39  
    rolnik666 napisał:
    Skłaniam się ku wariantowi z cewką 150 uH i zwiększeniu pojemności po stronie wyjścia przetwornicy, obecnie jest tam 47 uF tantal (zamiana na 100 uF) + małe ceramiki. Dobrze myślę?


    Bardziej skuteczny byłby prosty filtr dolnoprzepustowy po przetwornicy typu RC lub LC. Ale nie za bardzo widzę sens jakieś większej walki z tętnieniami gdzie nie zasila się jakieś analogówki i gdzie te 12V nawet nie jest zasilaniem a tylko sygnałem informacyjnym dla programowanej kostki. W dokumentacjach Atmela nie spotkałem też żadnych specjalnych wymogów dotyczących tego sygnału, ponad to że ma być w granicach 11,5-12,5V.


    rolnik666 napisał:
    W planach mam zresztą drugą rewizję, z przetwornicą opartą o MAX662, podstawki ZIF i wyrzucenie podstawki 20 pin (nie do końca chce mi się robić drugi wariant procedur programowania specjalnie pod jeden układ)


    Jak dla mnie osobiście, to szkoda że w Twoim programatorze brak podstawki pod ośmiopinowe atmele, konkretnie ATtiny13/25/45/85, choćby tylko z ograniczoną funkcjonalnością przywracania fusebitów do fabrycznych ustawień.
    A to dlatego że konieczność programowania HV przy większych kostkach, występuje w większości jako konsekwencja błędów w ustawianiu fusebitów.
    Przy tych małych ośmiopinowych jest inaczej. Często świadomie ustawia się RSTDISBL by zyskać cenny pin i/O. Ale by użyć takiej kostki ponownie (przez ISP) trzeba mieć osobny sprzęt pracujący w trybie HV.
    A u Ciebie wszystko co potrzeba jest, brak tylko podstawki.
  • #4 20816260
    rolnik666
    Poziom 11  
    rb401 napisał:

    Bardziej skuteczny byłby prosty filtr dolnoprzepustowy po przetwornicy typu RC lub LC. Ale nie za bardzo widzę sens jakieś większej walki z tętnieniami gdzie nie zasila się jakieś analogówki i gdzie te 12V nawet nie jest zasilaniem a tylko sygnałem informacyjnym dla programowanej kostki. W dokumentacjach Atmela nie spotkałem też żadnych specjalnych wymogów dotyczących tego sygnału, ponad to że ma być w granicach 11,5-12,5V.


    Głównie zależało mi na obniżeniu zakłóceń na zasilaniu 5V w obawie przed niestabilnością któregoś z układów (AVR, MCP). Tętnienia na 12V nie są w sumie aż tak spore i nie wygląda na to, żeby powodowały jakiś problem. Zwiększę ten kondensator dla spokoju sumienia i zostawię 150 uH, w tej aplikacji ta przetwornica to i tak przerost formy i będę eksperymentował, tak jak wspomniałem, z MAX662.

    rb401 napisał:
    Jak dla mnie osobiście, to szkoda że w Twoim programatorze brak podstawki pod ośmiopinowe atmele, konkretnie ATtiny13/25/45/85, choćby tylko z ograniczoną funkcjonalnością przywracania fusebitów do fabrycznych ustawień.
    A to dlatego że konieczność programowania HV przy większych kostkach, występuje w większości jako konsekwencja błędów w ustawianiu fusebitów.
    Przy tych małych ośmiopinowych jest inaczej. Często świadomie ustawia się RSTDISBL by zyskać cenny pin i/O. Ale by użyć takiej kostki ponownie (przez ISP) trzeba mieć osobny sprzęt pracujący w trybie HV.
    A u Ciebie wszystko co potrzeba jest, brak tylko podstawki.


    Nie myślałem w ogóle o HVSP z prostej przyczyny - w odróżnieniu od HVPP jest ona wspierana przez sporo programatorów ISP, np. używany przeze mnie Pickit 5, do tego wyprowadzeń jest na tyle mało że można połączyć nawet na stykówce, ale biorę tę opinię pod uwagę i zmieniam ciutkę założenia na drugą wersję - DIP40 pod atmega16/32/*4 i DIP28 pod mega8/*8 etc będą w wersji ZIF, podstawka pod tiny*313 zostanie tak jak jest, dołożę normalną podstawkę DIP8 pod te tiny13/x5 (sam ich w sumie używam), reszta egzotyki - ATmega162 i podobne w DIP40, ATtiny26 i pokrewne (DIP20) oraz ATtiny*4 (DIP14) zapraszam na stykówkę lub dodatkowy adapter i tyle (i tak softu specjalnie pod nie raczej nie będzie, nie mam żadnego z nich na stanie, więc modyfikacja ewentualnie we własnym zakresie). Myślałem nad zrobieniem "dynamicznego" podłączania linii pod podstawkę, ale nie mam pomysłu jak to zrobić żeby się nie narobić, albo żeby nie zdublować kosztów elementów, a żeby nie wyszła lipa albo jakaś plątanina.
  • #5 20817478
    rolnik666
    Poziom 11  

    >>20815691
    Co do tych tętnień, czuję się winny sprostowanie - bzdury mi jednak wyszły i głupoty powymyślałem. W jednym egzemplarzu miałem na wejściu PTC 100 mA, a w drugim został opornik 0.1 Ω. Zamontowałem zamiast niego taki sam PTC i w przypadku cewki 150 µH wyszły tętnienia ponad 0.5 V na linii 5 V - odpada. 330 µH jest w porządku i takiego należy użyć. Ale i tak mi się to wszystko nie do końca podoba.

    Wejście - 5 V (żółty 150 µH, niebieski 330 µH):
    Electric Chair - Open-source HVPP programator dla AVR

    Wyjście - 12 V:
    Electric Chair - Open-source HVPP programator dla AVR
REKLAMA