Jak zjistit polaritu

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
braun21
Příspěvky: 17
Registrován: 07 říj 2017, 22:02
Reputation: 0

Jak zjistit polaritu

Příspěvek od braun21 » 17 pro 2019, 00:33

Cau panove.
Potreboval bych co nejjednodusi reseni jak poznat smer toku proudu.
Z arduino uno mam vyveden vcc a gnd do sveho zarizeni kde jsou dva spinace a z tohoto zarizeni jsou dva vystupy.
Pokud stisknu prvni spinac , tak na vystupu1 je vcc a na vystupu2 gnd.
Pokud stisknu druhy spinac, tak na vystupu1 je gnd a na vystupu2 je vcc.
Pokud nemam stisknuto nic, vystupy jsou odpojeny.
Potreboval bych v programu zjistovat, ktery ten spinac je stisknuty.
Jde to nejak jednoduse? Dik za rady.

Uživatelský avatar
gilhad
Příspěvky: 786
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Jak zjistit polaritu

Příspěvek od gilhad » 17 pro 2019, 03:51

No, jeste by to chtelo vedet, co se stane, kdyz jsou stisknute oba spinace naraz :)

Jinak nejjednodussi asi je aspon na pochopeni), vzit tri stejne velke odpory (asi tak 10kOhm, at to moc nezere) a zapojit je vsechny na jeden analogovy pin.
pak jeden zapojit na VCC, druhy na GND a treti na VYSTUP1.

Pak uz jen nactes napeti na tom analogovem pinu a kdyz:
je tam asi tak 1/2 - tak je vystup1 nezapojeny (a mas jednoduchy delic 1:1)
je tam asi tak 2/3 - tak je vystup1 pripojeny k VCC (a ten delic je 1:2)
je tam asi tak 1/3 - tak je vystup1 pripojeny ke GND (a ten delic je 2:1)

nikdy to nebude presne (ruzne soucastky, prechodove odpory, sumy, ruseni,...), takze spis pouzit neco mezi, takze si to prevedu na spolecny jmenovatel, tedy nasobky 1/6 (2,3,4) a budu se preklapet asi tak v pulce mezi nima, tak pouziju 1/12 (4,6,8 jsou idealy, 5,7 jsou teda hranice) a dostanu cosi jako

Kód: Vybrat vše

const int MAX_INPUT=1024; //maximum co muzu nacist
const int low=5*MAX_INPUT/12; // asi 427
const int high=7*MAX_INPUT/12; // asi 597
# define ANALOG A1
//......
loop(){
	int hodnota=analogRead(ANALOG);
	if (hodnota <low) {
		Serial.println("vystup1 = GND");
	else if (hodnota>high) {
		Serial.println("vystup1 = VCC");
	} else {
		Serial.println("vystup1 NEZAPOJEN");
	};
	// .....
}




AstroMiK
Příspěvky: 593
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Jak zjistit polaritu

Příspěvek od AstroMiK » 17 pro 2019, 07:18

Trochu jednodušší by mohlo být, že se použijou dva volné vstupy v Arduinu (je jedno jestli analogové, nebo digitální).
Nastaví se vnitřní Pull_Upy, aby byly jasně definované stavy i při odpojení.
Výstup1 se připojí na jeden vstup, Výstup2 se připojí na druhý vstup a pak už se jen testuje kombinace logických stavů na těch dvou vstupech.

Kód: Vybrat vše

#define pin1       5     // prvni volny pin
#define pin2       A0    // druhy volny pin


void setup(void)
  {
    Serial.begin(9600);
    pinMode(pin1, INPUT_PULLUP);
    pinMode(pin2, INPUT_PULLUP);
  }



void loop(void)
  {

    boolean stav1 = digitalRead(pin1);
    boolean stav2 = digitalRead(pin2);

    if (stav1 == HIGH and stav2 == LOW ) Serial.println("1 = kladná, 2 = záporná");
    if (stav1 == LOW  and stav2 == HIGH) Serial.println("2 = kladná, 1 = záporná");
    if (stav1 == HIGH and stav2 == HIGH) Serial.println("Bez napětí");
    if (stav1 == LOW  and stav2 == LOW ) Serial.println("PORUCHA - oba výstupy na GND");
  }
Doufám, že to neděláš jen kvůli tomu, abys u kladné svorky rozsvítil červenou LED.

braun21
Příspěvky: 17
Registrován: 07 říj 2017, 22:02
Reputation: 0

Re: Jak zjistit polaritu

Příspěvek od braun21 » 17 pro 2019, 09:59

Díky moc za rady. Jak bude čas hned vyzkouším.

Ne, nemám to na rozsvícení diody :-)
Mám udělané a již druhým rokem funkční zařízení na automatické řízení otevírání a přivírání spalinové klapky do komína v mém aut.kotli na uhlí.
Hlídám si teplotu, protože tyto kotle, když modulují svůj výkon, tak často jedou malým výkonem a do komína jde nízká teplota a může to škodit nerezové vložce uvnitř.
Snažím se držet teplotu kolem 140st.
Vše jede automaticky a já teď chci dodělat dva spínače, kdy sám "ručně" posunu klapku zvoleným směrem a aut. režim se na půl minuty deaktivuje. ( bylo by zdlouhavé vysvětlovat proč to potřebuji..)
Tak bych v programu potřeboval číst, že jsem stiskl tlačítko (deaktivuj režim auto) a vědět jaké tlačítko to bylo (dle něho vykonej pohyb klapky)


Faktem je, že již teď mám připravenou krabičku se dvěma spínači. Dva vstupy, dva výstupy.
Pri stisku spínače1 -----vst1 = vyst1 ; vst2 = vyst2
pri stisku spínace2----- vst1 = vyst2 ; vst2 = vyst1
bez stisku = nic s ničím nepropojeno.
Oba stisknuté...přiznám se, že teď nevím co by se stalo... toto ale pořeším

Druhé vaše řešení mi na první pohled připadá pro můj již připravený dvojspínač snažší.
Co myslíte?

Hafajs
Příspěvky: 151
Registrován: 10 bře 2019, 10:19
Reputation: 0

Re: Jak zjistit polaritu

Příspěvek od Hafajs » 17 pro 2019, 14:29

Místo dvou spínačů by mohl být elegantnější jeden přepínač ( I0I ). Mechanicky je tak ošetřeno, že nedojde k sepnutí obou směrů zároveň.

Uživatelský avatar
kiRRow
Příspěvky: 1164
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Jak zjistit polaritu

Příspěvek od kiRRow » 17 pro 2019, 16:08

Počítám, že na výstupu bude H-Můstek ze dvou relétek.
Pokud jsou oba výstupy HIGH, bude na obou svorkách VCC - tudíž napětový potenciál 0. Pokud jsou oba LOW, bude na obou svorkách GND - napětový potenciál 0.

Pokud bych chtěl vědět jaká je doopravdy na výstupu polarita , asi bych šel metodou dvou optočlenů (počítám, že to ovládání klapky má nějaký svůj zdroj - tak ať se zachová galvanické oddělení zdrojů) zapojených paralerně k výstupu. Jeden optočlen bych zapojil v jednom směru, druhý optočlen v druhém směru. Pozor na předřadný odpor a odběr - vevnitř je dioda a fototranzistor.

braun21
Příspěvky: 17
Registrován: 07 říj 2017, 22:02
Reputation: 0

Re: Jak zjistit polaritu

Příspěvek od braun21 » 18 pro 2019, 10:12

Hafajs píše:
17 pro 2019, 14:29
Místo dvou spínačů by mohl být elegantnější jeden přepínač ( I0I ). Mechanicky je tak ošetřeno, že nedojde k sepnutí obou směrů zároveň.
Mám tak trochu v plánu, že využiju i stisku obou spínačů současně na funkci "kalibrace", kdy zadávám hlídanou teplotu na tu co je právě aktuální....

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů