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

Mikroprocesorowa wytrawiarka PCB

ZBIQ 21 Paź 2012 19:53 16308 26
  • 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):


    Link


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

    Pozdrawiam!


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • #2 21 Paź 2012 23:16
    george2002

    Poziom 19  

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

  • #3 21 Paź 2012 23:42
    FoxTech
    Poziom 20  

    george2002 napisał:
    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 21 Paź 2012 23:59
    noel79
    Poziom 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 22 Paź 2012 00:33
    1224807
    Użytkownik usunął konto  
  • #6 22 Paź 2012 08:38
    ZBIQ
    Poziom 17  

    rafal.220 napisał:
    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.

  • #7 22 Paź 2012 09:09
    george2002

    Poziom 19  

    Cytat:
    Sam używałem takiej siatki ale po około 6 miesięcy siatka poszła do kosza .Została solidnie pod trawiona.
    a polecić coś wytrzymalszego kolega mógłby:) ?

  • #8 22 Paź 2012 09:39
    SylwekK
    Poziom 29  

    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 napisał:
    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 22 Paź 2012 11:12
    ZBIQ
    Poziom 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 22 Paź 2012 14:11
    gh00st
    Poziom 13  

    A jakiego środowiska kolega używał do pisania oprogramowania?

  • #13 22 Paź 2012 19:48
    gh00st
    Poziom 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 22 Paź 2012 19:50
    SylwekK
    Poziom 29  

    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 22 Paź 2012 19:55
    akajarz
    Poziom 23  

    ZBIQ napisał:
    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 22 Paź 2012 21:41
    1224807
    Użytkownik usunął konto  
  • #18 22 Paź 2012 21:55
    ZBIQ
    Poziom 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 22 Paź 2012 22:54
    gh00st
    Poziom 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. :)

  • #20 22 Paź 2012 23:29
    ZBIQ
    Poziom 17  

    Nie w tym rzecz. W przypadku AVRStudio plik wynikowy z optymalizacją -s jest znacznie większy od tego z WinAVR.
    Nic nie daje zmiana optymalizacji.
    Nie wiem co jest przyczyną takiego stanu rzeczy.

  • #21 22 Paź 2012 23:36
    gh00st
    Poziom 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 23 Paź 2012 09:28
    SylwekK
    Poziom 29  

    rafal.220 napisał:
    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 napisał:
    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 23 Paź 2012 11:37
    rafcio363
    Poziom 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 23 Paź 2012 15:04
    ZBIQ
    Poziom 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 23 Paź 2012 16:07
    SylwekK
    Poziom 29  

    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 25 Paź 2012 10:34
    22053
    Użytkownik usunął konto  
  • #27 25 Paź 2012 17:45
    ZBIQ
    Poziom 17  

    R-MIK napisał:
    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