Skocz do zawartości

HyperMod CANON 450 Da ver1


motoolo

Rekomendowane odpowiedzi

Będziesz poszczególne elementy obudowy jakoś uszczelniał? Ja podczas wykonywania swojego projektu zrobiłem sobie miejsce na pochłaniacz wilgoci wyjmowany z zewnątrz, masz też coś takiego, czy zdajesz się na ogrzewanie szybki? I jak to nie problem, to podaj jeszcze, jakie wyszły wymiary i waga obudowy.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...
  • 3 tygodnie później...

Żeby nie było że nic się nie dzieje , na dowód prowadzonych prac wrzuciłem zdjęcia "stanowiska badawczego"

Jestem w trakcie uruchamiania sterowania chłodzenia i uwierzcie mi że ten "pająk" już w pełni działa :yes:

 

1.JPG

2.JPG

Edytowane przez motoolo
  • Lubię 5
Odnośnik do komentarza
Udostępnij na innych stronach

No to koniec......
Nie koniec projektu a zakończenie wykonania układu elektronicznego sterującego pracą chłodzenia Canona.
Największe podziękowania należą się naszemu koledze forumowemu Łukaszowi " JOLO" za cierpliwość , wyrozumiałość , poświęcony czas i bezinteresowną pomoc w uruchomieniu układu.

Założeń było wiele , przemyśleń jeszcze więcej. Przejżałem setki stron z podobnymi projektami szukając odpowiedzi na nurtujące mnie pytania.
Nie wiedząc jeszcze czy układ będzie zabudowany w aparacie(miejsce,wprowadzane zakłócenia na Canona), czy np. w AstroHubie , czy sterowanie i odczyt warości będą w komputerze czy np na LCD ,
założyłem wersję uniwersalną która pozwoli na dowolne i proste modyfikowanie układu.

Znalazłem w sieci stronę:

https://ragnablade.myon.no/?page_id=10

Mogę powiedzieć że na tym przykładzie się wzorowałem i praktycznie wykonałem kopię tego układu wraz z wykorzystaniem zamieszczonego kodu ARDUINO.
Z opisu na podlinkowanej stronie wynikało że moduł ARDUINO odczytując temperaturę na matrycy przez czujnik DS18B20 tak steruje ogniwem peltiera aby utrzymać zadaną wartość.
Wykorzystano również czujnik DHT22 za pomocą którego z odczytanych parametrów , ARDUINO
oblicza kiedy wystąpi roszenie w obudowie.
Na podłączonym wyświetlaczu LCD można odczytać takie dane:
- w lewym górnym rogu - na zmianę temperaturę wnętrza obudowy/wilgotność/temperaturę punktu rosy (odczytane z DHT22 i wyliczone z algorytmu w ARDUINO)
- w prawym górnym rogu - zadana temperatura matrycy (wprowadzona przez użytkownika)
- w lewym dolnym rogu - moc PWM sterowania peltierem (wyliczona w algorytmie ARDUINO)
- w prawym dolnym rogu - odczytana temperatura z zimnego palca w okolicy matrycy (odczytane z DS18B20)

1.JPG

2.JPG

3.JPG

 

Temperaturę którą chcemy uzyskać na matrycy wprowadzamy podłączonym enkoderem obrotowym lub po przez monitor portu szeregowego np. ten w programie IDE ARDUINO.
W monitorze tym możemy również odczytać w/w wartości które widzimy na LCD.

 

4.JPG

Myślę że w niedalekiej przyszłości , jak tylko JOLO znajdzie chwilę czasu napisze mi prosty programik do sterowania chłodzeniem z komputera .
Wtedy będzie można zrezygnować z LCD i enkodera a wszystkie parametry odczytywać i wprowadzać z poziomu programu.
Kiedy do tego dojdzie będzie można pokusić się o zabudowanie całej elektroniki w obudowie aparatu wyprowadzając z niej tylko zasilanie 12V , usb Canon i usb Arduino.
Nie wiem jeszcze czy cały ten układ nie będzie wprowadzał zakłóceń w elektronice Canona ale to wykażą ewentualne testy....

No i przyszedł dzień kiedy dotarły do mnie zamówione elementy do budowy układu.
Podłączenie całości w wersji prototypowej na tzw. "pająka" zajęło mi może godzinkę i ściągnięty z podlinkowanej strony kod próbowałem wgrać do ARDUINO MINI PRO.
Ale żeby oczywiście nie było zbyt prosto , przy programowaniu wyskakiwał mi błąd już w trakcie samej kompilacji.

 

5.jpg

Doszedłem do tego że brakuje mi biblioteki do obsługi LCD - LCDI2C4Bit
Niestety nie potrafiłem znaleźć takiej która by nie powodowała błędu przy kompilacji.
Jolo wysłał mi przygotowaną bibliotekę libraries i kazał podmienić z tą którą posiadałem na swoim komputerze . Wtedy udało się przeprowadzić weryfikację w IDE bez błędu.
Ale programowanie nadal nie przechodziło.
Przeinstalowałem program IDE , wgrałem jego nową wersję , zmieniałem porty - nic nie pomagało - cały czas błąd programowania .

 

6.jpg

Nie wiem ile bym jeszcze nad tym siedział gdyby nie przypadek.
Siedząc nad chyba już setnym programowaniem modułu , podszedł do mnie syn i poprosił o wyłączenie karty Wi-Fi w moim komputerze , bo miał u siebie jakiś problem z internetem .
Karta OFF...........................programowanie przeszło bez błędu!!! Szok!!!
Nie wierzyłem że to karta ma taki wpływ i że to był tylko przypadek więc zrobiłem próbę i za każdym razem gdy:
- Karta Wi-Fi jest ON - błąd programowania
- Karta Wi-Fi jest OFF - programowanie bez błędu.
Do tego był ważny moment puszczenia przycisku reset na module ( jak już wcześniej sugerował mi JOLO) , w moim przypadku gdy po zakończeniu kompilacji szkicu i pojawieniu się
w oknie dialogowym informacji o jego wielkości muszę odczekać około 2 sek. i dopiero wtedy puścić przycisk reset na module ARDUINO.

Po wgraniu programu okazało się że niewyświetlają się żadne informację na LCD.
I znowu "JOLO RATUJ"
Czekając na wskazówki od Łukasza sam zacząłem grzebać w programie , wprowadzać zmiany i wpadłem na pomysł podmiany w "// global objects" linijki dotyczącej LCD na zawartą w JoloFokuserze ver.2 - bo tam mi LCD działał.
To był strzał w dziesiątkę! LCD ożył!

7.jpg

 

Pierwszą zmianą jaką zrobiłem było wprowadzenie własnego ekranu startowego który pojawia się po załączeniu zasilania

 

s1.JPG

s2.JPG

 

Gdy miałem już podgląd na pracę sterownika zacząłem testy z chłodzeniem .
Z monitora portu szeregowego IDE wprowadzałem temperaturę i sprawdzałem jak działa peltier , jak utrzymuje zadaną wartość.
Układ działał dość dziwnie tzn.
przy PWM 0%- pobór prądu przez ogniwo wynosił około 2,5A
przy PWM 80% - pobór prądu 0,0A
Okazało się że w oryginalnym kodzie linijkę " byte pwm_out = 255 - (byte)(out*255);" trzeba było zmienić na "byte pwm_out = (byte)(out*255);".
Doszliśmy do wniosku z Łukaszem że twórca oryginału sterował pracą Peltiera przez przetwornicę DC/DC i prawdopodobnie to ona potrzebowała odwrotnego sygnału PWM.
Niestety nie mogłem wykorzystać tego sposobu bo na podlinkowanej stronie nie ma schematu podłączenia przetwornicy. Wszelkie próby kontaktu z twórcą były nieudane.

Po wprowadzeniu tej zmiany chłodzenie zaczęło działać prawidłowo.
Zauważyłem jednak że przy ograniczeniu PWM do około 40-50% dosyć mocno grzeje się gorąca strona Peltiera a co za tym idzie spadała siła chłodzenia.
Czytając różne informacje w necie dowiedziałem się że ogniwa te nie lubią być sterowane bezpośrednio przez sygnał PWM i tranzysor MOSFET.
Skutkuje to właśnie przy ograniczeniu sygnału PWM nadmiernym wzrostem gorącej strony Peltiera.
Z tego właśnie powodu twórca oryginału zastosował sterowanie przez przetwornicę DC/DC.
Można również pomiędzy tranzystorem a ogniwem w celu wyeliminowania tego zjawiska zastosować prosty filtr LC którego zadaniem jest zasilenie peltiera
napięciem jak najbardziej stałym i wygładzenie sygnału prostokątnego.
Wartości cewki i kondensatora zależne są od częstotliwości sygnału PWM z ARDUINO.
Przy standartowych wartościach 490Hz należało by zastosować kondensator np 470uF i cewkę około 30-50mH , niestety cewki takie są trudno dostępne.
Możliwym rozwiązaniem jest zwiększenie częstotliwości PWM w ARDUINO do 31kHz co spowoduje zmniejszenie wartości cewki do około 68uH - cewka bezproblemowo dostępna i gabarytowo dużo mniejsza.

No to próby zwiększenia częstotlwości PWM
W tym celu należy zmienić wyjście PWM w Arduino z pinu 5 na np 9 , gdyż zmiana częstotliwości
na pinie 5 wprowadza również zmianę w zegarach systemowych modułu ARDUINO a tego musimy unikać gdyż może to zaburzać pracę całego układu.
Zacząłem wgrywać biblioteki i zmiany w programie podsyłane przez Łukasza mające na celu ustawienie PWM na 31kHz.
Żadne nie działały poprawnie , cały czas były jakieś problemy z pracą ogniwa , grzaniem się tranzystora .
Kilka razy na polecenie Łukasza wgrywałem nowy program z odłączonym filtrem LC , potem kolejno podłączałem jego elementy testując działanie układu.
Prostym testem sprawdzającym czy udało się zmienić częstotliwość jest słuchanie cewki LC...
tak tak .... cewka przy częstotliwości 490Hz delikatnie piszczy a przy częstotliwości 31kHz już tego nie słychać.
Moja cewka nawet gdy wydawało się że wszystko już działa prawidłowo cały czas piszczała.

I kolejny przypadek ...........

Koledzy jak już Łukasz wam pomaga i mówi przełącz sterowanie PWM z pinu 5 na 9 to zróbcie to!!!
Ja w ferworze walki pozmieniałem wszystko w programie zapominając przepiąć sterowanie na pin 9!!!
Zmarnowałem mnóstwo cennego czas Łukaszowi który za wszelką cenę starał się mi pomóc.

I właśnie przez przypadek spojrzałem na moduł i zauważyłem swoj błąd.
Po zmianie pinu wszystko zadziałało jak należy i cewka przestała do mnie piskać :-)

W celu zmiany częstotliwości PWM została dopisana do programu linijka

 

TCCR1B = TCCR1B & B11111000 | B00000001;

 

Dokładny opis na którym pinie i na jaką częstotliwość zmienić PWM znajdziecie tu :

 

https://arduino-info.wikispaces.com/Arduino-PWM-Frequency?responseToken=0be180100d858bdc85f549448a474bca1

 

No i tak dobrneliśmy z Łukaszem do końca.
Układ działa poprawnie , bardzo dokładnie , w zakresie kilku dziesiątych stopnia utrzymuje zadaną temperaturę , na peltierze wyraźnie zmniejszyła się temperatura po gorącej stronie.
A czy to się sprawdzi ? To już zobaczymy po złożeniu wszystkiego w jedną całość.....

Dla zainteresowanych schemat układu

 

8.jpg

 

A w załączniku program z bibliotekami

 

canoncool.rar

  • Lubię 7
Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.