Arduino - teplotní čidlo DHT22
Dobrý den.
Mam par těchto čidel připojených na delším kabliku (kolem 5m).
Občas se stane že se čidloi sekne.
Jsem zkoušel a po rozpojení 5V nebo GND na vteřinku se znovu rozjede.
Bych chtěl těch 5V nebo GND připojít přes nějaký tranzistor, který bych ovladal přes arduino a vždy když se nějake čidlo sekne, čidla resetnout.
Je jedno jestli 5V nebo to zem?
Na zem by mi měl postačít bipolární tranzistor BC337-25 ale pokud těch 5V?
Čidlo môžeš napájať aj priamo z portu (napájacie napätie čidla je povolené od 3,3 až 6V, odber je 0,2mA a to dátový výstup bohato splňuje). Ak tam chceš mať tranzistor, tak na spínanie 5V použi akýkoľvek spínací NPN v zapojení ako emitorový sledovač, medzi E a B daj pre istotu nejaký odpor cca 10k a medzi E a B tiež cca 50k. Odpájanie zeme by mohlo tiež fungovať, ale z technického hľadiska je to veľmi nepekné riešenie. Zem má byť zem, a nie niečo, čo pláva.
Teraz som si všimol, že tam máš niekoľko čidiel, ale len jeden kábel. Každé čidlo musí mať svoj dátový výstup pripojený na iný dátový vstup arduina.
Měl jsem za to, že to je sběrnice i2c. Ovšem ani tam by jich nemohlo být víc, protože budou mít stejnou adresu (jako třeba https://www.gme.cz/modul-gyroskop-akcelerometr-i2c a https://www.gme.cz/modul-rtc-ds1307-s-32k-flash ... a pak se člověk diví, že mu jdou hodiny divně).
Pokud jde jen o teplotu, tak na jednu sběrnici lze připojit víc třeba čidel DS18B20 a programů pro arduino je na ně víc než dost i těch, které komunikují s více čidly.
Jinak je potřeba zjistit, kde program vytuhne a podle toho se zařídit. Ale prvotní příčina je celkem jasná. Takže buď použít jiná čidla, nebo více sběrnic (mega328 a většina dalších avr má jen jedno hw spi, muselo by se emulovat, což programy k arduinu umí) a nebo nějaký opakovač, který bude arduinu odpovídat na jiné adrese a ten bude komunikovat s čidlem.
Ještě takový detail, sběrnice i2c nepočítá s moc velkými vzdálenostmi, má být na propojení obvodů uvnitř zařízení (do cca 20 cm), nad metr bych nečekal rozumnou funkci.
Ano, je možné použít tranzistor k ovládání napájení čidel a tím je resetovat, pokud se nějaké z nich sekne. Jakýkoliv NPN tranzistor by měl být vhodný pro tento účel, včetně tranzistoru BC337-25, který jste zmínil.
Pokud chcete ovládat napájení, můžete použít NPN tranzistor jako spínač. Připojte emitor tranzistoru k zemi (GND), kolektor připojte ke společnému napájení (5V) a báze tranzistoru připojte k výstupnímu pinu Arduina.
Zde je jednoduchý popis, jak by to mohlo vypadat:
E = Emitter (GND)
C = Kolektor (5V napájení čidel)
B = Báze (připojená k výstupnímu pinu Arduina)
Pomocí digitálního výstupního pinu na Arduinu můžete ovládat bázi tranzistoru. Když je tento pin vysoký (logická 1), tranzistor se otevře a umožní proudit proudu z napájení (5V) do čidel. Když je pin nízký (logická 0), tranzistor se zavře a průchod proudu je přerušen, což může mít za následek resetování čidel.
Jedinou věcí, na kterou byste měl dávat pozor, je, abyste nepřetěžovali digitální výstupní pin Arduina. Ujistěte se, že proud, kterým ovládáte bázi tranzistoru, je v rámci povoleného limitu pro daný pin (obvykle kolem 20 mA).
Ve skutečnosti můžete vytvořit projekt Raspberry Pi Temperature and Humidity Sensor pomocí DHT22, bude to jednodušší.
Po 5 letech už to asi vyřešil.
jen porouchaný člověk může cpát 20mA do báze tranzistoru, který má jen uzemnit signál.
dnes zas bylo horko.
Úplně stejnou dikci a blbé kecy má umělák (chatGPT), když mi odpovídá na různé odborné dotazy.
Většinou se alespoň částečně (pokud ne zcela) mýlí ...
Autor už to asi nějak za ta léta vyřešil, ale když už sem píšu, tak
- I2C je určené na centimetry, nikoli na metry
- pokud už to teda na ty metry táhne, tak aspoň nastavit nižší rychlost přenosu
- dát tomu co nejtvrdší napájení - určitě ne pin Arduina, já bych to ani nenapájel ze stabilizátoru Arduina, ale ze samostatného zdroje/modulu
- nesnižovat tomu napájecí napětí klasickým tranzistorem, použít MOSFET, který má ubytek v řádu jednotek milivoltů - do napájení P-channel, já koupil nedávno AO3401, který je na to prima https://www.aliexpress.com/item/1005002277633223.html 100 kusů za 36Kč i s dopravou (to už pak člověk cpe kamkoli se to jen trochu hodí - což je mimo jiné cokoli 5V ovládané 5V Arduinem)
- skoro všechny senzory na I2C mají (jako chipy) možnost nastavit jednu z 8 adres, aby se jich dalo použít víc stejných snadno. Ale ne všechny Arduino moduly to mají hezky vyvedené, natož označené. Ale to neznamená, že člověk nemůže vzít datasheet a zjistit, jak si to nastavit na tom modulu sám.