Skocz do zawartości
Tucha

Regulator temperatury cieczy

Pomocna odpowiedź

Witam,

Na wstępie chciałbym zaznaczyć, że jestem raczej początkującym w tych tematach.

Zabrałem się do wykonania regulatora temperatury cieczy. Wykorzystałem do tego Leonardo z zapiętym shieldem VNH5019. Motor driver steruje ogniwem Peltiera TEC1-12706. Dodatkowo dane są wyświetlane na wyświetlaczu Nokia 5110. VNH5019 zasilany jest zasilaczem impulsowym 12V 20A, z regulacją napięcia od ± 10%.

schemat_bb.thumb.png.9f3ffe2b39691e2180c33b55f47a81d0.png
Tak, na zdjęciu jest inny motor driver, ale układ jest praktycznie bliźniaczy, więc w celach demonstracyjnych wystarczy. Potencjometr służy do ustalania temperatury żądanej.

Problem mam taki, że jak już układ jest włączony, to VNH zapodaje na ogniwo przy 10V - 2.7A. Testując ogniwo pod zasilaczem laboratoryjnym fajnie działał przy 10V 5A.
Gdzieś wyczytałem, że połączenie ogniwa i PWM nie jest najbardziej efektywnym rozwiązaniem.

Prosiłbym o wszelkie pomysły, propozycje jak ten problem rozwiązać. Zadaniem ogniwa jest chłodzenie cieczy, która przepływa cały czas przez zbiorniczek, na chwilę obecną nie jest on w stanie cokolwiek zdziałać. Trochę lepiej wygląda to jeśli chodzi o grzanie, ale nie o to chodzi... 😞

Udostępnij ten post


Link to post
Share on other sites

Jak zasilasz Arduino, masz masy połączone z VNH? I jak nim sterujesz? Jakbyś dał jakieś wycinki kodu byłoby łatwiej 😉.

To ma być taki przepływowy ochładzacz wody? Ta woda tam cały czas się zmienia czy stoi? Jak ma dążyć do utrzymania konkretnej temperatury przydała by się jakaś informacja zwrotna, czyli czujnik temperatury jakiś. Wtedy w zależności od tego czy temperatura wody jest niższa czy wyższa od żądanej mógłbyś po prostu ogniwo włączać na 100% bądź wyłączać. Taki termostat jak w piekarniku.

I co tam robią te tranzystory na płytce stykowej (bądź inne urządzenia, nie widać napisów)?

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
//screen
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
//sensor
#include <DallasTemperature.h>
#include <OneWire.h>
//shield
#include "DualVNH5019MotorShield.h"

//Adafruit_PCD8544 display = Adafruit_PCD8544(SCLK, DIN, D/C, CS, RST);
Adafruit_PCD8544 display = Adafruit_PCD8544(13, 11, 5, 3, 1);

OneWire oneWire(A5); 						//Temperature sensor OneWire
DallasTemperature sensors(&oneWire); 		//Forward data to bib
int DevCount = 0;
DualVNH5019MotorShield vnh;					//Shield constructor dual channel
float Temp = 0;
int amp;

void setup() {
	display.begin();                          	
	display.setContrast(40);                 	
	display.clearDisplay();                  	//Clear screen data buffer

	sensors.begin(); 							//Initialize sensors
	DevCount = sensors.getDeviceCount();

	vnh.init();									//Initialize VNH5019
}

void lcdtemp() {fragment nieistotny}

void peltier() {
	int OutletTemp = abs(sensors.getTempCByIndex(2)); 
	float SetTemp = Temp-OutletTemp;
	
	if (SetTemp>=1)							vnh.setM1Speed(-400);
	else if (SetTemp<=-1)					vnh.setM1Speed(400);
}

void loop(){
	int Target = analogRead(A3);
	Temp=(Target*0.0224)+10;
	
	peltier();
	lcdtemp();
}

Wygląda to tak. Jest pewnie trochę błędów, ale jestem nowicjuszem. :) To nie są tranzystory, a czujniki temperatury właśnie - DS18B20. Zapomniałem o nich wspomnieć. Mea culpa.

Ten kod niby działa, ale prąd pobierany przez VNH jest wg. mnie zbyt mały, zadowoliłoby mnie 4A. Woda cały czas przepływa przez zbiornik.
Dodatkowo dzisiaj próbowałem pominąć bibliotekę VNH i samemu ustalać stany Low/High, ale na nic się to zdało. Nie przekracza 2.5A.

Udostępnij ten post


Link to post
Share on other sites

Te ogniwa optymalnie pracują na 12V, więc tak jak napisał @kaczakat podnieś napięcie. Dodatkowo jeżeli sterujesz nim za pomocą PWM pamiętaj że maksymalna częstotliwość jaka ma sens to 400Hz, przy wyższej bezwładność układu po prostu sprawia że jest to bezcelowe. Jak chcesz uzyskać taki sam pobór prądu jak na zasilaczu to ustaw PWM na 100%.

Udostępnij ten post


Link to post
Share on other sites

Tak też robiłem.

Dodatkowo napisałem kod, który zastępuje bibliotekę VNH. Samemu włączyłem stan niski/wysoki na wyjściu PWM. Zwiększyłem napięcie na zasilaczu do 12V. Pomimo tego ogniwo nadal pobierało ok. 2-2.5A.

Wczoraj postanowiłem na chwilę porzucic tą ideę na rzecz MOSFETu. Ale na razie testowałem kod tylko na silniku, więc jeszcze nie wiem jak będzie się zachowywało ogniwo.

Udostępnij ten post


Link to post
Share on other sites
Dnia 15.04.2019 o 08:06, szczawiosław napisał:

Dodatkowo jeżeli sterujesz nim za pomocą PWM pamiętaj że maksymalna częstotliwość jaka ma sens to 400Hz, przy wyższej bezwładność układu po prostu sprawia że jest to bezcelowe.

Możesz to rozjaśnić?

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

@Harnas Ogniwo Peltiera ma swoją bezwładność termiczną, czyli pomiędzy kolejnymi impulsami ogniwo nie zdąży zareagować na stan niski wychładzaniem się. Najzwyczajniej w świecie uzyskamy taki sam efekt sterując z częstotliwością 400Hz (gdzieś czytałem że to maks, chyba trzeba zacząć zapisywać takie rzeczy) jak i 4kHz bo ogniwo i tak nie zdąży zareagować. Więc można sterować z o wiele mniejszą częstotliwością bez strat wydajności. Sądzę że nawet 10Hz spełni swoją rolę, najniższa częstotliwość jakiej używałem to było 20Hz i nie zauważyłem różnicy w działaniu w porównaniu z 200Hz czy z 1000Hz.

Edytowano przez szczawiosław
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@szczawiosław no to sterowanie PWM z częstotliwością 10kHz ma taki sam sens jak 1kHz czy 400Hz. I żadne z nich nie jest bezcelowe :)

Udostępnij ten post


Link to post
Share on other sites

Tylko czy jest sens dawać dużą częstotliwość kiedy identyczny efekt uzyskamy z kilkukrotnie niższą?

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...