Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Mikroprocesorowa wytrawiarka PCB

ZBIQ 21 Oct 2012 19:53 17178 26
Renex
  • Mikroprocesorowa wytrawiarka PCB

    Witam,

    Dziś chciałem przedstawić moją konstrukcję - wytrawiarkę mikroprocesorową do PCB.
    Był to projekt wakacyjny wykonywany wieczorami.
    Wiem, że takich trawiarek jest już kilka na forum. Tym niemniej, w moją konstrukcję włożyłem bardzo dużo pracy i uważam, że oddzielny temat mi się należy. :)

    Zacznijmy od części "nieelektronicznej".
    Szkło 4mm cięte u szklarza. Miałem zamiar sam pociąć materiał, jednak jedyne, co miałem w domu to tafla 6mm. Dla laika jest to ciężki orzech do zgryzienia.
    Wymiary "akwarium" 300x255x30mm. Arkusz A4 się mieści spokojnie.
    Na samym początku postanowiłem, że wszystkie przewody będą wychodziły z boku. Miałem również dużo dławnic kablowych, które postanowiłem wykorzystać. Otwory w tafli szkła zrobiłem szlifierką proxxona + frez z napyłem diamentowym. Wychodzi 15min/otwór. Frezowałem w kuwecie z wodą (cały element zanurzony).

    Wszystko klejone klejem akwarystycznym. Jest to bardzo dobry materiał łączeniowy. U mnie jest gruba warstwa, estetyka stoi na drugim miejscu. I moja rada: sylikon sanitarny zostawcie do uszczelniania zlewów.
    Dławnice solidnie posilikonwane i przykręcone przez ściankę.
    Nóżki z demontażu, też klejone do podstawy.
    Do tego popularna grzałka SKALAR 300W. Bardzo przyzwoity, polski produkt. Grzałka weszła mi na styk do zbiornika (nawet kawałek wsunąłem do dławnicy). Roztwór (zależnie od objętości) nagrzewa w około 15 min do 45C.
    Napowietrzałka z akwarystycznego. Mieści się akurat w obudowę. Musiałem tylko trochę przyfrezować górę obudowy. Ilość powietrza na wyjściu jest zadowalająca.
    Do tego giętki wężyk napowietrzający. Ze środka trzeba usunąć ołowiany drut. Aby wężyk się nie unosił i nie wyginał pod wpływem pompowania powietrza, do środka wsunąłem cieniutki pręt z laminatu. Była to przeszlifowana część stelaża od namiotu.
    Konieczny jest również zaworek zwrotny. Trzeba uważać, bo są rożne rodzaje i niektóre po prostu nie działają lub po czasie przestają działać (wytrawiacz zjada sprężynkę ze środka).
    Całość - wężyk i grzałka spoczywają w "łożu" z plexy przyklejonym na dnie.

    Obudowa metalowa wykonana samodzielnie. Za materiał posłużyła obudowa od komputera. Nie posiadam giętarki, więc wszystkie zgięcia nacinałem szlifierką i giąłem w imadle. Następnie łączenia obudowy zostały zgrzane zgrzewarką zrobioną z transformatora od mikrofalówki (zrobione "na jeden raz", nie ma się czym chwalić). Wyszło na 3.5, krzywo, ale działa. Malowane sprayem.
    Front panel drukowany na niebieskim papierze. Zalaminowany i przyklejony do blachy. Klawiatura to tak naprawdę microswitche, nad którymi przylepiony jest "dystans". Na tyle wysoki, że guziki się same nie wcisną :).

    Płytki zanurzam w roztworze w siatce z tworzywa. Proste i praktyczne.


    Teraz czas na coś bardziej elektronicznego.
    Program pisany w C na Atmege8. Zajmuje około 90-95% pamięci. Termometr na ds18b20, porządnie upaćkany silikonem i zamknięty w rurce termokurczliwej. W razie awarii, dławnice pozwalają się odkręcić i wymienić element.
    Nie będę się za bardzo rozpisywał, najlepiej funkcjonalność pokaże filmik. Jednak podczas nagrywania wydaje się, że na wyświetlaczu jest słaby kontrast. Możliwe, że jest to wina cienkiej folii. W rzeczywistości napisy są ja żyleta.
    Kodu nie udostępniam.

    Na płytce jest detektor zera sieci. Włączenie następuje przy przejściu przez zero. W fazie testów (jeszcze bez detektora fazy) procek potrafił się restartować.
    Jako triak dla grzałki wykorzystałem coś mocniejszego od BT136. Nie pamiętam dokładnego oznaczenia( w każdym razie 8A, 600V). Nic się nie grzeje, mimo to zastosowałem radiator. Triaki musiałem położyć, bo przy zamkniętej obudowie miałem tylko 10mm zapasu.
    Pytka projektowana w KiCadzie. Na mojej płytce zamienione są nóżki triaków. W dołączonych plikach jest już wszystko ok.
    Bezpiecznik 3A, obudowa połączona z bolcem ochronnym w gniazdku.
    Blacha na front panel okazała się zbyt giętka, wiec zastosowałem kawałek laminatu jako usztywnienie/montaż płytki/montaż guzików klawiatury. Było to wykonane na szybko i z ręki, więc wygląda paskudnie.


    Ogólnie jestem bardzo zadowolony. Urządzenie spełnia swoje zadanie.
    Przy trawieniu jednej płytki można się zacząć zastanawiać nad sensem posiadania trawiarki. Jednak jak zauważyłem, że przy trawieniu małych serii ( >=3 ) jest to rzecz zbawienna.

    Z czego nie jestem do końca zadowolony:
    -zamiast histerezy sterowanie PWM, grzałka po wyłączeniu przy swojej bezwładności potrafi pojechać dt=5C,
    -grubsza blacha na obudowę, giętarka i malowanie proszkowe,
    -trochę większa obudowa,
    -bardziej uważne zaprojektowanie płytki,

    Wiecie, kto nie popełnia błędów? Ten, co nic nie robi. :)

    Kosztorys:
    -materiał na akwarium (z cięciem) 20zł,
    -silikon 20zł,
    -grzałka 50zł,
    -napowietrzanie (wężyk + pompka) 65zł,
    -elektronika 25 zł,
    -resztę (moje własne zapasy) szacuję na 20zł.

    Razem około 200zł. Tanio? Drogo? Oceńcie sami, dla mnie było warto popełnić tą konstrukcję.

    Mikroprocesorowa wytrawiarka PCB
    Mikroprocesorowa wytrawiarka PCB Mikroprocesorowa wytrawiarka PCB Mikroprocesorowa wytrawiarka PCB Mikroprocesorowa wytrawiarka PCB Mikroprocesorowa wytrawiarka PCB

    Widok środka (przepraszam za jakość zdjęć).
    Mocowanie napowietrzałki jest elastyczne. Wszędzie między obudową a pompką jest guma lub gąbka (tu mocowanie z góry jest z wężyka igielitowego, brzydkie, ale mocne i trwałe).
    Na płytce widać, jak nóżki triaka są wygięte tak, aby były w odpowiednich miejscach.

    Mikroprocesorowa wytrawiarka PCB Mikroprocesorowa wytrawiarka PCB Mikroprocesorowa wytrawiarka PCB

    Tu widać mały transformator do zasilania sterownik.
    Mamy również widok na płytkę z guzikami do klawiatury. Microswitche są przylutowane i dodatkowo przyklejone do laminatu.

    Mikroprocesorowa wytrawiarka PCB Mikroprocesorowa wytrawiarka PCB

    Film z akcji (jeszcze raz zaznaczam - w rzeczywistości kontrast jest dużo lepszy):





    W plikach: wszystkie pliki z kicada, front panel w formacie .fpl (front designer), .hex.

    Pozdrawiam!

    Cool? Ranking DIY
    About Author
    ZBIQ
    Level 17  
    Offline 
    Has specialization in: technika impulsowa, układy w.cz.
    ZBIQ wrote 336 posts with rating 61, helped 3 times. Live in city Halinów. Been with us since 2006 year.
  • Renex
  • #2
    george2002

    Level 21  
    Quote:
    Płytki zanurzam w roztworze w siatce z tworzywa. Proste i praktyczne
    sam miałem zagwozdkę z czego zrobić koszyczek na płytki aby fajnie działał i nie był zjadalny przez kwas a tu taka prostota a za razem funkcjonalność + dla kolegi :) można tylko wiedzieć gdzie taką siatkę można dostać ? jak się zwie ? :)

    Pozdrawiam
    George2002
  • Renex
  • #3
    FoxTech
    Level 20  
    george2002 wrote:
    można tylko wiedzieć gdzie taką siatkę można dostać ? jak się zwie?


    To zwykła siatki ogrodzeniowa plastikowa do kupienia w każdym centrum ogrodniczym.
  • #4
    noel79
    Level 21  
    Sam używałem takiej siatki ale po około 6 miesięcy siatka poszła do kosza .Została solidnie pod trawiona.
  • #5
    Anonymous
    Anonymous  
  • #6
    ZBIQ
    Level 17  
    rafal.220 wrote:
    w razie jakiś poprawek, albo dodatkowych opcji 5% rezerwy pamięci, to naprawdę mało, no chyba że kolega wszystko dopracował na 100%


    To zależy. Na chwilę obecną program zajmuje około 92%. Ten przedział 90-95% jest właśnie z czasu kiedy dopracowywałem program.
    Gdyby jednak pamięci było mało, stałe napisowe wrzucę do eepromu.
  • #8
    SylwekK
    Level 32  
    Kurcze, program w C i zajmuje prawie całą pamięć ?? Jak ty to pisałeś, co tam zajmuje tyle miejsca ? O ile do wykonania i działania wytrawiarki przyczepić się nie można to jako programista mam już pewne wątpliwości co do użytych przez Ciebie algorytmów w programie. Napisałeś:

    ZBIQ wrote:
    Z czego nie jestem do końca zadowolony:
    -zamiast histerezy sterowanie PWM , grzałka po wyłączeniu przy swojej bezwładności potrafi pojechać dt=5C,


    Stosując detekcję zera i sterowanie PWM (chodzi tu chyba o sterowanie fazowe) uzyskujesz aż o 5 stopni więcej ?? Wg mnie to niedopuszczalne. Dlaczego nie zrobiłeś łatwiejszego w okiełznaniu sterowania grupowego i algorytmu obcinającego dopływ prądu w miarę zbliżania się do temperatury docelowej (co w sumie i na fazowym da się zrobić) ?

    Wiem że te 5 stopni wielkiego znaczenia nie ma ale skoro porywamy się na mikrokontroler to wypadałoby żeby wszystko było dokręcone do ostatniej śrubki.
    Osobiście nie mam nic przeciwko rozbudowanym wytrawiarkom i nie raz już powtarzałem, że do tego typu konstrukcji wystarczyłby zwykły termostat z histerezą wyłączający grzałkę.
    Pozdrawiam
  • #9
    ZBIQ
    Level 17  
    Źle mnie kolega zrozumiał.

    Nie stosuję PWM. Odcinam triakiem i tyle.

    Co do zajętości programu. Miałem tyle miejsca do wykorzystania i je wykorzystuje.
    Dużo miejsca zajmują biblioteki LCD oraz ds18b20.
    Resztę miejsca zajmują mi napisy. Gdybym wykorzystał eeprom na napisy to jeszcze zmieścić można dużo.

    Teraz jestem na etapie pisania algorytmu PID do trawiarki . Jak zrobię to się pochwalę.
  • #10
    gh00st
    Level 13  
    A jakiego środowiska kolega używał do pisania oprogramowania?
  • #13
    gh00st
    Level 13  
    A sprawdzałeś w projekcie ustawienia optymalizacji kodu?
    Zwykle jest ustawione na brak optymalizacji, co powoduje, że nasz program zajmuje więcej niż powinien.
  • #14
    SylwekK
    Level 32  
    Normalnie to ten program nawet w Bascomie nie powinien zająć więcej niż 2kb z napisami... Coś jest na rzeczy. Szkoda że go nie chcesz pokazać.
  • #15
    akajarz
    Level 23  
    ZBIQ wrote:
    AVR Studio 5.

    Też miałem problem z objętością kodu w tym środowisku, włączałem optymalizacje, wyłączałem debug symbols i nic to nie dawało.
    W końcu zainstalowałem WinAVR i po skompilowaniu plik wynikowy z wsadem zmniejszył się kilkukrotnie.
  • #17
    Anonymous
    Anonymous  
  • #18
    ZBIQ
    Level 17  
    Coś w tym jest. Tak dla porównania (i tylko do porównania, a nie oceniania wyższości jednego nad drugim) wspomnę o projekcie kol. Mastermaniek : https://www.elektroda.pl/rtvforum/topic1117145.html
    Tam program zajmuje około 8k.

    Czyli już mamy 2-0 dla twierdzenia, że program dla takiej trawiarki i o takiej funkcjonalności ważył będzie więcej od 2k programu napisanego w BASCOMIE.

    Pozdrawiam
  • #19
    gh00st
    Level 13  
    Problem leży w ustawieniach projektu.
    Trzeba uruchomić projekt, klinknąć prawym klawiszem na nazwę projektu w Solution Explorerze i wybrać Properties. Tam zakładka Toolchain, wybrać Optimization i ustawić Optimization level na Optimize for size lub w razie potrzeby jakiś inny. Wtedy generowany hex będzie dużo mniejszy.

    A co do bascoma - zachwalacie tak, ale nie znacie możliwości języka C. :)
  • #21
    gh00st
    Level 13  
    U mnie w AVR studio ustawienie optimization level na Os (Optimize for size) daje bardzo dobre rezultaty.
    Bardzo dużo miejsca zajmują także delaye. Najlepej w miejscu gdzie chcemy mieć delay wykonać inną operację która jest nam przydatna.
  • #22
    SylwekK
    Level 32  
    rafal.220 wrote:
    Naprawdę nie wiem o co się kłócicie? przecież samo aktywowanie wyświetlacza zajmuje już pewien obszar pamięci związany bynajmniej ze sterownikiem wyświetlacza, nie mówiąc o wyświetlanym tekście.

    SylwekK wrote:
    Normalnie to ten program nawet w Bascomie nie powinien zająć więcej niż 2kb z napisami... Coś jest na rzeczy. Szkoda że go nie chcesz pokazać.

    Być może programowe menu użytkownika związane jest z innymi "bardziej" zaawansowanymi procedurami wymagającymi większych zasobów pamięci.


    No bez jaj. Program do tego urządzenia: SLIDER zajmuje około 16kb tylko, że jest tam 60(!) zmiennych gdzie 80% z nich to WORD oraz kilka BYTE, INTEGER, SINGLE no i parę znaczników BIT. Menu 15-o pozycyjne ze sporą ilością tekstu; jest też kilka komunikatów roboczych; mnóstwo obliczeń w czasie rzeczywistym na tych zmiennych i wiele, wiele zależności. Chyba nikt mi nie powie, że wytrawiarka, z jednym termometrem i wyświetlaczem jest porównywalnie skomplikowanym urządzeniem co mój sterownik i zajmuje tylko dwa razy mniej miejsca w pamięci operując pewnie na kilku zmiennych i posiadających kilka prostych warunków.
    Specjalnie obejrzałem z uwagą jeszcze raz film z prezentacją z myślą, że może przeoczyłem jakąś ważną opcję i ...zdziwienie mnie nie opuszcza. Nadal twierdzę, że ten program jest za długi. No sorry, takie są fakty.
    Oczywiście bez urazy, jeśli program działa i spełnia swoje zadanie to ok :-) Zatem powodzenia przy większych projektach :D
    Pozdrawiam
  • #23
    rafcio363
    Level 30  
    Fajne.
    Ale nie ściągaj radiatora plastikowymi opaskami, jak już musisz to użyj zwykłego druta. Plastik + ciepło nigdy dobrze nie wróży.
  • #24
    ZBIQ
    Level 17  
    Postawiłem sobie kilka założeń:
    -termostat
    -czasomierz + alarm

    Z tego wynikło użycie małego procesora.
    A właśnie, poszedłem za radą kolegów. Pogrzebałem w programie i okazało się, że bibliotek do ds18b20 (swojego czasu niezdarnie napisana) wraz z odczytem zajmuje 3k!!! Bibliotekę napisałem na czysto, specjalnie pod wytrawiarkę. Teraz mam program zajmujący 4k :). Więcej grzebać nie ma sensu na tak proste urządzenie.
    Tzn. jeszcze został mi algorytm PID.

    Warto drążyć temat.

    Pozdrawiam
  • #25
    SylwekK
    Level 32  
    Czyli mówiłem, że kiepskie algorytmy :D
    Teraz małe porównanko. Zrobiłem stosunkowo niedawno sterownik do grzałki z grupową regulację mocy na ds18b20 + 2x8seg. Posiada, oczywiście regulację temperatury, zadawana moc jest zależna od aktualnej temperatury i spada wraz ze wzrostem tej temperatury. Można zmieniać histerezę czułości tej regulacji w zakresie 0-9 stopni. Jest regulacja startowa maksymalnej mocy (czyli ustawiam sobie limit np. na 50% i nigdy ster nie poda więcej niż 50% mocy na grzałkę), jest ustawiana temperatura alarmu przy której ster będzie się wydzierał, że przekroczona, a do tego wygodne menu. To wszystko w BASCOM zajmuje mi dokładnie 3730 bajtów (45%), i nie piszę tu o jego wyższości nad C bo tak nie jest, a chcę tylko zwrócić uwagę na sposób pisania programu. Sam zaznaczyłeś że warto drążyć temat - więc drążymy dalej :D
    Bierz się za optymalizację algorytmów, bo coś mi mówi, że jeszcze jest z czego ciąć, a na pewno wyjdzie Ci to na lepsze :D
  • #26
    Anonymous
    Anonymous  
  • #27
    ZBIQ
    Level 17  
    R-MIK wrote:
    W razie czego masz procki Mega168, Mega328, fakt, ze timery są trochę inne niż w Mega8, ale to nieduży problem.


    Już trochę nie aktualne. Program po drobnych poprawkach zajmuje 4k .
    Pozdrawiam