Stránka 1 z 2

jak nastavit pin jako zem?

Napsal: 18 lis 2017, 15:56
od lastope1
Zdravím,
Nevím, zda je to možné, ale potřeboval bych nastavit pin jako zem, abych mohl v běhu programu měnít polaritu mezi děma vývody. Kdyby se našel někdo kdo se v tom vyzná, byl bych nadšen.
petr

Re: jak nastavit pin jako zem?

Napsal: 18 lis 2017, 19:41
od Wojta
Prakticky se to stane pokud nastavíte pin na LOW pomocí digitalWrite(cislopinu, LOW);
Ale nevím pro jakou přesně aplikaci to chcete. Co timy vývody řídíte atd.
Zkuste to víc popsat. Pokud je budete měnit pomocí pinMode tak to fungovat bude.

Re: jak nastavit pin jako zem?

Napsal: 18 lis 2017, 21:59
od martinius96
Mňa ešte napadlo (neviem či je to pri všetkých doskách):

Kód: Vybrat vše

pinMode(cislopinu, INPUT_PULLDOWN);   
ATMega (Arduino UNO) má iba interný PULLUP, PULLDOWN nemá, ani to kód neskompiluje.
Ak máte Arduino Uno, tak použite návod od Wojty :)
PullUP drží "za každú cenu" 1 (HIGH)
PullDown drží "za každú cenu" 0 (LOW)

Re: jak nastavit pin jako zem?

Napsal: 19 lis 2017, 17:54
od jankop
PullUp ani PullDown nedrží úroveň za každou cenu a pro zamýšlený účel je to nepoužitelné. Je to interní rezistor, jehož hodnota se často pohybuje v desítkách Kohm.
Prostě se nastaví výstupní pin digitalWrite(cislopinu, LOW);
Nic víc, nic míň. Lépe "zem" udělat nejde.

Re: jak nastavit pin jako zem?

Napsal: 20 lis 2017, 06:09
od martinius96
jankop píše:
19 lis 2017, 17:54
PullUp ani PullDown nedrží úroveň za každou cenu a pro zamýšlený účel je to nepoužitelné. Je to interní rezistor, jehož hodnota se často pohybuje v desítkách Kohm.
Prostě se nastaví výstupní pin digitalWrite(cislopinu, LOW);
Nic víc, nic míň. Lépe "zem" udělat nejde.
Obrázek
Určite? :-)
Obrázek

Re: jak nastavit pin jako zem?

Napsal: 20 lis 2017, 16:48
od Wojta
Nedá se souhlasit s oběma? Řekl bych to takhle:

Pokud napětí mezi piny jen měříte něčím co má vysoký vstupní odpor, řády Mohmů, dalo by se asi využít i pullupu a pulldownu.

Čím bude ale větší zátěž mezi těmi piny (menší odpor), tím bude stoupat úbytek napětí na pullupu a pulldownu. V tomhle případě je mnohem lepší využít digitalWrite.

Jde o to že pokud není potřeba se nějak extrémě starat o ochranu pinů (kterou zajišťuje 1 možnost) tak bych volil tu druhou.

Re: jak nastavit pin jako zem?

Napsal: 20 lis 2017, 19:46
od jankop
To co jsem napsal, pochopitelně platí. nemá smysl filozofovat, jestli je zátěž větší / menší. A už úplně irelevantní je, jaký pulldown si dám do řídící elektrody externího FETu. Přiznám se, že mě dokáže pobavit, když se mě snaží někdo přesvědčovat argumenty ze slabikáře elementární elektroniky. K čemu slouží pullup a pulldown rezistor jsem se dovtípil nejspíš dřív, než ses martinius96 narodil :D
Prostě lepší "zem" než

Kód: Vybrat vše

 digitalWrite(cislopinu, LOW)
udělat na I/O pinu nejde.

Re: jak nastavit pin jako zem?

Napsal: 20 lis 2017, 21:09
od petan
Taky nevím co řešíte... Pokud ze zapne pull-up rezistor, tak se připojí na výstupní pin rezistor (20 - 50 kOhm) pomocí pomocného tranzistoru - viz obrázek. (vychází z Atmel328)
Obrázek

Když je na výstupu hodnota HIGH, tak je hradlo (zde Logic) sepnuté - na výstup jde napětí otevřeným tranzistorem, když je na výstupu LOW, tak je nožička jakoby v luftu. Je třeba použít externí pull-down rezistor, aby byla zajištěna log. 0 na výstupu.


Čistě teoreticky by šlo přepólování výstupu řešit takto:
Je nutné však počítat s tím, že zátěž (RZ) je do série s pull-down rezistorem (Rd), který nesmí být moc malý, aby se nepřetížil výstup procesoru. Samozřejmě, že je lepší použít H-můstek. Nevím, co přesně od toho očekáváš...

Obrázek

Re: jak nastavit pin jako zem?

Napsal: 21 lis 2017, 10:06
od jankop
Dovolím si tvrdit petane, že se zásadně mýlíš. Vůbec celá diskuze je poněkud ujetá. To proto, že pullup / pulldown rezistory se uplatní pouze, když je pin v režimu vstupu. Při výstupu jsou interní rezistory prostě odpojeny, tudíž je nesmyslné je řešit. A prakticky vždy je výstup tvořen komplementárním budičem, který dává relativně "tvrdé" úrovně HIGH i LOW, tudíž není třeba žádného pulldown rezistoru pro dosažení úrovně LOW. Výstupy tedy pracují v obou módech - source i sink. Sem tam může mít MCU speciální output OC, pak je třeba pullup, ale to je naprosto výjímečné a určitě to nebylo předmětem otázky.

Re: jak nastavit pin jako zem?

Napsal: 21 lis 2017, 10:28
od SkullKeep
Mě napadlo jiné řešení posílat na určitý PIN HIGH a pak přes optočlen (např. PC817A) to uzemnit. A tak se vyhnete případnému odpálení Arduina.