Hotfix release available: 2025-05-14b "Librarian".
upgrade now! [56.2] (what's this?)
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
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
users:prommisse [2017/04/05 20:09] – [Karel Hynek] prommisse | users:prommisse [2017/04/21 20:57] (current) – [Analog] prommisse | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ~~DISCUSSION: | ||
+ | |||
+ | |||
+ | ====== PELTIER ====== | ||
+ | {{ : | ||
+ | Pro ovládání je možné použít sériové rozhraní RS232 a mechanického rotačního enkodéru. | ||
+ | |||
+ | ===== Literatura ===== | ||
+ | |||
+ | *[[https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * NORDIC nRF51822 mkit | ||
+ | |||
+ | |||
+ | |||
+ | ===== Zapojení a ovládání HW ===== | ||
+ | ==== 1-Wire ==== | ||
+ | Zapojení 1 - Wire | ||
+ | ^ Pin ^ Funkce ^ Poznámka | ||
+ | | P0_29 | ||
+ | |||
+ | 1 - Wire teploměry | ||
+ | Zapojení 1 - Wire | ||
+ | ^ Adresa | ||
+ | | 0x28, | ||
+ | | 0x28, 0xFF, 0x15, 0xe6, 0x64, 0x15, 0x03, 0x6c | DS18B20 | ||
+ | |||
+ | ==== 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 | ||
+ | | Vstupní napětí | ||
+ | | Hodnota měřícího resistoru | ||
+ | | Zesílení operačního zesilovače | < | ||
+ | |||
+ | <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é. | ||
+ | </ | ||
+ | |||
+ | Výpočet napětí na teplotním senzoru < | ||
+ | |||
+ | < | ||
+ | U_{PT} = \frac{V_{adc} \cdot U_{VCC}}{A} | ||
+ | </ | ||
+ | |||
+ | kde < | ||
+ | |||
+ | Výpočet elektrického odporu teplotního senzoru < | ||
+ | |||
+ | < | ||
+ | R_{T} = \frac{U_{PT} \cdot R_m }{U_{VCC} - U_{PT}} | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Ovládací prvky ==== | ||
+ | |||
+ | ^ Pin | ||
+ | | 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 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%. | ||
+ | </ | ||
+ | |||
+ | ^ Pin | ||
+ | | P0_24 (OUT) | Ovládání výkonu článku pomocí PWM | Žádný výkon | ||
+ | | ::: | ::: | Maximální výkon | 1 | | ||
+ | | P0_29 (OUT) | Přepínání polarity proudu | ||
+ | | ::: | ::: | Ohřev | ||
+ | | P0_30 (OUT) | Ovládání ventilátoru | ||
+ | | ::: | ::: | Vypnuto | ||
+ | |||
+ | ===== 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ů. | ||
+ | <code cpp> | ||
+ | Serial s(p9, p11); | ||
+ | CSENSOR * sensor = new CDS18B20(p29, | ||
+ | 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, | ||
+ | |||
+ | 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. | ||
+ | <code cpp> | ||
+ | //callback pro udalost na kvadraturnim dekoderu. | ||
+ | Serial s(p9, p11); | ||
+ | |||
+ | void event( int counter_value ); | ||
+ | { | ||
+ | s.printf(" | ||
+ | } | ||
+ | |||
+ | int main( void ) | ||
+ | { | ||
+ | CQdec * QDec1 = Get_Instance(p21, | ||
+ | while(1); | ||
+ | } | ||
+ | </ |