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

Zegar z HDD - własny układ sterowania BLDC

Gustin 21 Gru 2010 16:00 5518 4
  • Zegar z HDD - własny układ sterowania BLDC

    Witam wszystkich.
    Na początku chcę zaznaczyć, że elektronika to dla mnie hobby i sposób na odprężenie oraz nauczenie czegoś nowego, jestem osobą początkującą w tej dziedzine.

    Pragnę podzielić się moim projektem zegara z HDD, który konstruuję. Projekt nie jest jeszcze skończony w 100%, ale powiedzmy w 90 :) Przepraszam za zdjęcia niskiej jakości, obecnie dysponuję jedynie komórką.

    Od początku - postanowiłem zrobić sobie taki zegar po przeczytaniu tego wątku na elektrodzie - tutaj wielkie podziękowania dla autora, który udostępnił dużo ciekawych pomysłów. Postanowiłem jednakże, że chcę samemu zrobić sterownik BLDC - układ sterowania z tego projektu jest trudno dostępny a używanie elektroniki dysku mnie nie satysfakcjonowało (brak kontroli szybkości obrotów, mało eleganckie rozwiązanie), zacząłem więc od prób ze sterowaniem BLDC.

    Na początku zaznaczam, że sterownik konstruowałem pod konkretny model dysku i dla innego dysku być może będą potrzebne jakieś modyfikacje. Dysk to Quantum Fireball AS Plus 30GB. Silnik posiada 4 wyprowadzenia i jest - jak udało mi się ustalić - w układzie gwiazdy. W moim sterowaniu wyprowadzenie wspólne nie jest używane.

    Sterownik BLDC składa się z:
    * 3x IRF7389 - N/P mosfet w jednej obudowie
    * 3x TC4428 - mosfet driver
    * 2x 74HC08 - bramy AND
    * rezystory do mosfetów i driverów

    dodatkowo płytka sterownika zawiera układy wygładzające sygnał back-EMF (rezystory+kondensatory), złącze zasilania 12V, regulator napięcia 78S05 z kondensatorami oraz złącza do silnika i płyty kontrolera. Układ ma za zadanie zapewnić możliwość sterowania obrotami silnika przy pomocy PWM dlatego wydajność prądowa przeładowania pojemności bramy mosfetów policzyłem na ok. 0,5A. Układ działa tak, jak należy, mosfety się nie grzeją, także przy sterowaniu PWM. Obecnie w projekcie PWM jeszcze nie jest zaimplementowany, testowany był na tej płycie, tylko, że po podłączeniu do zestawu uruchomieniowego z atmegą 32.

    Na projekcie PCB są dwa błędy (a w zasadzie braki), które nie zostały przeze mnie zauważone na etapie projektowania (brak doświadczenia...), poprawki naniosłem na już zmontowaną płytę:

    1. pozostawione wolne wejścia bram AND (poprawione poprzez dołączenie rezystorów SMD i podciągnięcie do Vcc)
    2. brak podciągnięć na liniach sterujących idących do złącza procesora (zaprojektowałem jedynie na linii PWM) co skutkowało drganiem silnika podczas programowania AVR-a i teoretycznie mogło spowodować przerwanie programowania (poprawione przez dodanie rezystorów do masy)

    Próby z silnikiem rozpocząłem od "ślepego" sterowania i różnymi sposobami zwiększania prędkości obrotowej dysku za pomocą różnych funkcji itp. ta metoda jest niestety mocno kulawa, silnik często traci synchronizację a rozkręcanie trwa bardzo długo. Poczytałem trochę info o sterowaniu "sensorless" i okazało się, że ta metoda jest dobra. W porównaniu z oryginalnym datasheetem atmela wprowadziłem modyfikacje polegające na zastąpieniu detekcji przejścia przez zero za pomocą układu konwersji A/D przez detekcję tego przejścia przy pomocy komparatora analogowego otrzymującego sygnał do porównania z dzielnika napięcia (10kOhm/10kOhm). Układ jest zaprojektowany tak, że silnik jest zasilany napięciem 5V z 78S05, więc mogłem przyjąć taką uproszczoną technikę. Oprogramowanie sterujące w C - w załączniku.

    Silnik osiąga prędkość obrotową 67-68 rps, rozkręcia się od zera do pełnej prędkości w kilka sekund.

    Ze względu na spore obciążenie układu 78S05 zaopatrzyłem go w radiator z miedzianych pasków, który dobrze spełnia swoje zadanie.

    Płyta podświetlenia składa się z:
    * 12x LED RGB Super Flux OSTA71A1D-A
    * 3x mosfet IRLL014N
    * 2x TC427 mosfet driver
    * rezystory SMD do mosfetów i LEDów

    diody są umieszczone na obwodzie płytki prostopadle do powierzchni skierowane do wewnątrz. Płyta z założenia również sterowana jest z użyciem PWM, więc zastosowałem drivery do mosfetów aby uniknąć problemów z pojemnością bramy.

    Płyta kontrolera składa się z:
    * Atmega 128 - główny procesor zegara, komunikacja z układem RTC, sterowanie LEDami, odbiór sygnału z czujnika położenia talerza, TODO: komunikacja z czujnikiem temperatury, pomiar natężenia światła otoczenia, komunikacja z procesorem sterującym BLDC, odbieranie sygnałów z pilota IR

    * Atmega 8 - procesor sterujący silnikiem BLDC

    Początkowo chciałem użyć tylko A128, ale mi zegarów zabrakło i musiałem dołożyć drugi procesor. Oba procesory mają interfejs ISP wciśnięty na jedną 10-pin szynę.

    * Układ RTC DS1307 wraz z kwarcem zegarkowym oraz baterią podtrzymującą
    * Układ MCP9803-M - czujnik temperatury (jeszcze nie napisane oprogramowanie)
    * Układ TSOP34838 - odbiornik podczerwieni (jeszcze nie napisane oprogramowanie)
    * Fotorezystor do detekcji natężenia światła (jeszcze nie napisane oprogramowanie)

    * Klawiaturę 3 klawiszową z podświetleniem (z prawej strony obudowy dysku) z której można ustawić godzinę.

    * Układ wykrywania szczeliny składa się z czujnika odbiciowego QRD1114 oraz komparatora analogowego LM339 wraz z rezystorami. Sygnał z czujnika przetwarzany jest na komparatorze z użyciem histerezy, sygnał jest dobrej jakości.

    Na płycie kontrolera obie atmegi oraz rtc i czujnik temp połączone są szyną TWI. Chcę w następnej kolejności dodać obsługę TWI do procesora Atmega8 celem umożliwienia sterowania prędkością obrotową silnika aby urządzenie stało się cichsze.

    Wszystkie PCB wykonane metodą termotransferu, jednakże nie jestem zadowolony z wyglądu płyty kontrolera, która posiada dość wąskie ścieżki i dla tego wstrzymałem na chwilę konstruowanie zegara i zabrałem się za zmajstrowanie naświetlarki UV aby zrobić płytę kontrolera metodą fotochemiczną :)

    Zegar z HDD - własny układ sterowania BLDC Zegar z HDD - własny układ sterowania BLDC Zegar z HDD - własny układ sterowania BLDC Zegar z HDD - własny układ sterowania BLDC Zegar z HDD - własny układ sterowania BLDC Zegar z HDD - własny układ sterowania BLDC

    tutaj film z działającego zegara na YouTube

    Wszystkie płytki załączam w plikach źródłowych programu GEDA PCB.

    Schematów nie mogę załączyć, ponieważ ich nie narysowałem :cry:
    Dziękuję za cierpliwość w czytaniu mojej epistoły oraz za wszelkie uwagi, pozdrawiam i życzę wszystkim Wesołych Świąt!


    Dlaczego Kolega nie zapoznał się z zasadami działów DIY (ogłoszenie)?
    Proszę zamieścić fotkę na początku postu, pomiędzy linkami do pozostałych fotek muszą być spacje. [Mirek Z.]

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Zasilacze UPS
  • #2
    Karol8526
    Poziom 10  
    zegar pełen wypas :) ale czy nie za głośno chodzi??
  • Zasilacze UPS
  • #3
    Gustin
    Poziom 10  
    Tak, chodzi nieco głośno, ale planuję zbudować dość solidną obudowę i do tego dodać tą kontrolę obrotów aby zegar mógł je zmniejszyć do ok 50 rps a w nocy (po ciemku) ewentualnie jeszcze mniej. W tej chwili jest bez obudowy i kręci się prawie 70 rps.
  • #4
    Palmoster
    Poziom 10  
    Super projekt! Jakie koszty? Interesuje mnie wykonanie takiego sterownika do hdd bo nie znalazłem działającego jeszcze po za tymi co wykorzystują układ którego nie da się kupić. Mógłbyś narysować schemat tego sterownika? Może być na kartce i zeskanowane ;)
    Oraz czy możesz udostępnić PCB w PDF lub Egale?
  • #5
    Gustin
    Poziom 10  
    Dodałem do pierwszego postu załącznik bldcdrv.zip zawierający płytkę w formacie PDF oraz schemat uwzględniający podłączenia do Atmegi (miałem tylko symbol atmegi DIP).

    Części kupowałem w TME: IRF7389 jakieś 4.50 zł, TC4428 3.80zł, 74HC08 około 0.80 zł do tego parę rezystorów, kondensatorów i płytka czyli razem koszt układu sterownika BLDC (bez AVRa) trzydzieści kilka zł.

    Można to zrobić taniej, pierwszy prototyp jaki zbudowałem na płytce stykowej składał się z tranzystorów 6x BD140 i 6x BD139 i kilku rezystorów. Problem był tylko taki, że ten układ pobierał około 600mA prądu podczas ustalonej pracy a układ na mosfetach bierze około 200mA, dodatkowo całość (rezystory) grzała się tak, że był wentylator potrzebny :) Jeśli nie chce się PWM-a a jedynie prędkość maksymalną to można podarować sobie TC4428 oraz 74HC08 i dać odpowiednio większe rezystory zamiast 10 Ohm (powiedzmy 200 Ohm) - częstotliwość przełączania mosfetów jest wtedy na tyle mała, że drivery nie są konieczne. Zmieni się tylko program wtedy troszkę, ponieważ TC4428 ma jeden kanał z inwerterem i obecnie działa tak, że zarówno mosfet N jak i mosfet P są załączane stanem wysokim portu procesora a po takiej zmianie mosfety P będą załączane stanem niskim.

    Ps. Nie miałem czasu nanieść poprawek na płytkę PCB sterownika (konieczne poprawki opisane w 1 poście), jak będę miał chwilę to zrobię to i umieszczę poprawioną płytkę w geda pcb i pdf-ie.

    Ps2. GEDA PCB jest darmowy do pobrania z internetu tylko, że trzeba sobie najnowszą wersję skompilować ze źródeł, pod Ubuntu 10.04 kompiluje się OK :)