Site Tools


Hotfix release available: 2025-05-14a "Librarian". upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian". upgrade now! [56] (what's this?)
Hotfix release available: 2024-02-06b "Kaos". upgrade now! [55.2] (what's this?)
Hotfix release available: 2024-02-06a "Kaos". upgrade now! [55.1] (what's this?)
New release available: 2024-02-06 "Kaos". upgrade now! [55] (what's this?)
Hotfix release available: 2023-04-04b "Jack Jackrum". upgrade now! [54.2] (what's this?)
users:prommisse

~~DISCUSSION:off~~

PELTIER

Přípravek MI-PVS-PELT představuje jednoduchý regulační obvod pro regulaci teploty kapaliny. Tato kapalina je umístěna uvnitř v hliníkové nádobě a její teplota je ovlivňována pomocí peltiérova článku. Po přípravku jsou rozmístěny tři druhy teplotních senzorů, které pomáhají kontrolovat teplotu článku a samotné kapaliny. Pro ovládání je možné použít sériové rozhraní RS232 a mechanického rotačního enkodéru.

Literatura

Zapojení a ovládání HW

1-Wire

Zapojení 1 - Wire

Pin Funkce Poznámka
P0_29 (IN/OUT) DATA Žádné zařízení není napájené z datového vodiče

1 - Wire teploměry Zapojení 1 - Wire

Adresa Zařízení Specifikace Umístění
0x28,0xee,0x63, 0x73, 0x1f,0x16, 0x02, 0xb4 DS18B20 spec Peltiérův článek, uvnitř boxu
0x28, 0xFF, 0x15, 0xe6, 0x64, 0x15, 0x03, 0x6c DS18B20 spec Uvnitř kapaliny

I2C

Zapojení I2C

Pin Funkce
P0_22 (IN/OUT) SDA
P0_20 (IN/OUT) SCL
P0_12 (IN/OUT) Výstup teplotního hlídače LM75A umístěného na chladiči
Adresa Zařízení Specifikace Umístění
0x48 LM75A spec Chladič
0x49 LM75A spec DPS (není osazen)

Analog

Zapojení analogových zařízení

Pin Zařízení Specifikace Umístění
P0_1 (ANALOG IN) PT100 spec Peltérův článek, vně boxu
P0_3 (ANALOG IN) PT100 spec Chladič

Hodnoty nutné k výpočtu elektrického odporu teplotního senzoru:

Název Značení Hodnota
Vstupní napětí <math>U_{VCC}</math> 2,9 V
Hodnota měřícího resistoru <math>R_m</math> 4600 Ω
Zesílení operačního zesilovače <math>A</math> 23

<WRAP center round info 60%> Pro korekci případného offsetu operačního zesilovače byly na DPS umístěny dva trimry. Měřící piny offsetu jsou umístěny pod mini usb konektorem. Pro správnou funkčnost by napětí na pinech PT1 a PT1- (PT2 a PT2-) mělo být stejné. </WRAP>

Výpočet napětí na teplotním senzoru <math>U_{PT}</math> provedeme následujícím vztahem

<math> U_{PT} = \frac{V_{adc} \cdot U_{VCC}}{A} </math>

kde <math>V_{adc}</math> je hodnota z AD převodníku mezi 0 a 1.

Výpočet elektrického odporu teplotního senzoru <math>R_T</math>:

<math> R_{T} = \frac{U_{PT} \cdot R_m }{U_{VCC} - U_{PT}} </math>

Ovládací prvky

Pin Funkce
P0_9 TX Sériové rozhraní RS232
P0_11 RX
P0_21 Kanál A Kvadraturní dekodér
P0_23 Kanál B

Řízení Peltiérova článku

<WRAP center round important 60%> Pozor na přehřívání článku! V módu chlazení dojde k přehřátí článku přibližně za 10 minut, pokud není zapnutý ventilátor. Při módu ohřevu může dojít k přehřátí už po několika sekundách, pokud nebude uvnitř vložená hliníková nádoba na vodu. </WRAP>

<WRAP center round alert 60%> Nikdy nezapínejte ohřev na 100 % výkon. Dojde k přehřátí článku, které by mohlo vést k jeho zničení. Bezpečný výkon v režimu ohřevu je pro ladění 40%. </WRAP>

Pin Funkce Ovládání
P0_24 (OUT) Ovládání výkonu článku pomocí PWM Žádný výkon 0
Maximální výkon 1
P0_29 (OUT) Přepínání polarity proudu Chlazení 0
Ohřev 1
P0_30 (OUT) Ovládání ventilátoru Zapnuto 0
Vypnuto 1

API

Čtení senzorů

Pro ovládání senzorů byla vytvořen abstraktní třída CSensor a třídy reprezentující teplotní senzory z této třídy dědí. Jedná se o:

  • CDS18B20
  • CLM75A
  • CPT100

Ukázka použití API pro čtení ze senzorů.

Serial s(p9, p11);
CSENSOR * sensor = new CDS18B20(p29, "DS18B20", & s);
float temperature = sensor -> Read();

Kvadraturní Dekodér

Kvadraturní dekodér je reprezentován třídou CQdec. Tato třída je vytořena pomocí návrhového vzoru singleton. Tím je zajištěno, že nedojde k výskytu dvou instancí této třídy v jednom kódu. Její inicializace probíhá pomocí metody CQdec * Get_Instance( PinName channel_A, PinName channel_B, uint32_t prescaler, void (* callback)( int ) = NULL)); Jedná se o tzv. singleton konstruktor. Při druhém zavolání této funkce v jednom programu bude vrácen nulový ukazatel.

Dekodér je reprezentován pomocí vnitřního čítače. Při otáčení napravo hodnota v čítači roste, nalevo zase klesá. Jelikož enkodér vygeneruje při otočení o jednu pozici více pulsů, je třeba v singleton konstruktoru předat také hodnotu předděličky pulsů.

V signleton konstruktoru je předáván také ukazatel na callback funkci, která se zavolá v přerušovací rutině od dekodéru při otočení. Jako parametr je této funkci předána změněná hodnota vnitřního čítače.

//callback pro udalost na kvadraturnim dekoderu.
Serial s(p9, p11);
 
void event( int counter_value );
{
  s.printf("Hodnota citace dekoderu je: %d\r\n", counter_value);
}
 
int main( void )
{
  CQdec * QDec1 = Get_Instance(p21, p23, 2, event);
  while(1);
}
users/prommisse.txt · Last modified: 2017/04/21 20:57 by prommisse