jak nastavit pin jako zem?
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
jak nastavit pin jako zem?
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
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?
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.
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.
-
- Příspěvky: 585
- Registrován: 01 srp 2017, 19:29
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: jak nastavit pin jako zem?
Mňa ešte napadlo (neviem či je to pri všetkých doskách):
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)
Kód: Vybrat vše
pinMode(cislopinu, INPUT_PULLDOWN);
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?
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.
Prostě se nastaví výstupní pin digitalWrite(cislopinu, LOW);
Nic víc, nic míň. Lépe "zem" udělat nejde.
-
- Příspěvky: 585
- Registrován: 01 srp 2017, 19:29
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: jak nastavit pin jako zem?
jankop píše: ↑19 lis 2017, 17:54PullUp 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.
Určite?

Re: jak nastavit pin jako zem?
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.
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?
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
Prostě lepší "zem" než udělat na I/O pinu nejde.

Prostě lepší "zem" než
Kód: Vybrat vše
digitalWrite(cislopinu, LOW)
Re: jak nastavit pin jako zem?
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)

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áš...


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áš...

Re: jak nastavit pin jako zem?
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?
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.




Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti