Close

posjirka

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 15 příspěvků - 1. až 15. (celkem z 481)
  • Autor
    Příspěvky
  • odpověď na: řízení ohřevu bazénu #12097
    posjirka
    Účastník

    nemáš zač, jsem rád že jsem pomohl. S tím nahráváním: je třeba se podívat i na napě´tovné úrovně převodníku. může se to lišit. NEvím jestli jde snížit komunikační rychlost ale zkusil bych 9600 baudů. Mohlo by to pomoct. návod yjsou spíš pro AT komunikaci, kde se nastavuje komunikační rychlost pro programování …. nevím

    Setup wifi EPS8266 & Arduino Uno3

    odpověď na: řízení ohřevu bazénu #12081
    posjirka
    Účastník

    máš tam definované nak terých pinech máš nastavené I2C (SDA, SCL) ?
    ESP8266 jej může mít na jakémkoliv pinu. Tady jsem našel jednoduchý skener, který to analyzuje:
    http://www.instructables.com/id/ESP8266-I2C-PORT-and-Address-Scanner/

    odpověď na: řízení ohřevu bazénu #12080
    posjirka
    Účastník

    v ESP8266 nejsem moc kovaný, takže to ti asi neporadím. jen takový dotaz:
    používáš převodník nap. úrovní? jak LCD, tak PCF8570 používá napájení 5V a ESP8266 jede na 3,3V….

    odpověď na: Měření doby stisku tlačítka #12077
    posjirka
    Účastník

    pouzij funkci pulsein()
    https://www.arduino.cc/en/Reference/PulseIn

    má parametry :
    číslo pinu (1-xx)
    na jakou hodnotu reagovat (LOW / HIGH)
    a případně max. dobu čekání na konec pulzu v ms.

    takže např:

    `unsigned long delkaStisku = pulseIn(5, LOW, 500);‘

    ti do proměnné delkaStisku typu unsigned long zapíše dobu úrovně LOW na pinu 5.
    Max doba čekání je 0,5s (500ms). Je třeba si uvědomit, že na tu dobu se ovšem arduino „zastaví“ a čeká na konec pulzu. Stejně tak když na začátku této funkce bude pin 5 v log. 1 (HIGH) tak ti napíše „0“ a pokračuje dál….

    pomocí millis to jde řešit elegantnějí, záleží na přesnosti měření.
    Ve výsledku to jde pomocí millis řešit 3 způsoby:
    – ve smyčce loop() budeš při každém průchodu testovat zde je nebo není stisknuto tlačítko (zapíšeš do proměné „start“) a po změně stavu (po uvolnění tlačítka) si vyhodnotíš aktuální stav millis()-start . Ten rozdíl je doba stisku. Vše je ale závislé na čase potřebném k vykonání 1 smyčky. To je vlastně 1 krok/stupeń rozlišení měření.
    – druhá varinta je použít přerušení. Na nějákém pinu (defaultně je to tuším 2 a 3, ale dají se i přesunout na jiné piny) si nastavíš, že když se změní stav na tomto pinu tak si zapíšeš do proměnné opět strat (stisk) případně aktuální stav millis (uvolněno tl.) a do proměnné si zapíšeš rozdíl. Tady je přesnost na 1ms a dá se zvýšit i na 1us použitím funkce micros(). Reaguje okamžitě jen proměnná musí mít přívlastek violetile aby šla jeho hodnota použít i v hlavní smyčce.
    https://www.arduino.cc/en/Reference/Volatile
    – 3 varinata je vlastně kombinace. můžeš třeba pomocí časovače timer2 nastavit přerušení každé 2ms a otestovat si tvůj pin. … vše ostatní už jsem psal výše.

    Každé má svoje a je důležité podívat se na to jako na celek. Když totiž zabereš 1 funkci na něco (třeba časovač timer 2) už jí nemůžeš použít na neco jiného (servo, tone, SW serial, …). když použiješ hlavní smyčku (var.1) tak jí nesmíš dlouho ničím zdržovat, jinak si nakopáváš měření. Varinta 2 je zase omezena defaultně na max. 2 piny. ty se dají přesouvat, můžeš dokonce i zvětšit počet pinů na 16 (2 porty po 8 pinech), ale pak třídíš a hodnotíš každý pin zvláš´t…

    snad jsem pomohl

    odpověď na: řízení ohřevu bazénu #12074
    posjirka
    Účastník

    tne timer není ve funkci dela. je to postavené tak, aby progrma běžel pořád dokola. Až přesáhne uečitý čas, tak spustí funkci blikání a pokračuje zas dál …. jen se mi nezdá to řešení.

    odpověď na: Měření napětí arduinem přes rezistory. #12073
    posjirka
    Účastník

    nechapu dotaz. zkus to lépe zformulovat …

    odpověď na: Uspání arduina pomocí LowPower #12026
    posjirka
    Účastník

    arduino se uspí, ale LCD si stále pamatuje poslední stav a ten zobrazuje. Jestli chceš smazat text tak před uspáním dej lcd.clear() a je to.
    Pokud chcešvypnout podsvícení, tak vypni pin podsvícení pokud jej máš vyvedený.
    Takhle bez schématu se těžko radí…

    odpověď na: řízení ohřevu bazénu #12022
    posjirka
    Účastník

    add optiboot: to vypadá na chybu programátoru. Předpokládám, že to flashuješ přes nějáký programátor a né přes USB samotného flashovaného arduina. TO by nešlo a musíš použít ISP programátor, nebo druhé arduino v této roli.

    add Watchdog: tady není moc věcí co by nemělo fungovat. Maximálně ten delay na konci o 3s. Když k tomu připočteš čas na načtení teplot z čidel (2×0,75 s) tak seš na 5s a do 8 je ještě daleko,… takže by to neměl být problém. To zatuhnutí ti může udělat i LCD display. nevěřil bych tomu, kdyby nám to na medometu takto nezatuhlo taky. 2 hodiny jsem si hráli s programem, vypnuli, za hodinu zapnuli a přesně jak píšeš. čtvrečky a procesor tuhý. Tak jsem zkoušeli změřit napětí, komunikace s PC nulová, napětí v pořádku 🙂 až jsem se dostal na krystal, tak s broukal na nějákých 5 kHz místo 16MHz, tak jsem jeje vymenili, po hodině zas zátuh, až jsem se nas.. vytáhnul LCd a začla znovu uživovoat. No a byl to LCD. Nevím jak ale n 2 arduinech jeden a na 3 ne. Prstě zátuh. Nikde kapka cinu, žádný zkrat, napěťové úrovně signálu v pohodě a za 2 hod. zátuh. Dali jsem nový LCD a už to šlape.

    ad Webserver: záleží co od něj čekáš. chceš webserver pro vlastní potřebu uvnitř domu, nebo to chceš monitorovat případě ovládat z venku (práce, druhý konec světa, .. 🙂 )
    Pokud jen doma je to v pohodě. Taky jsem tento víkend nad tím ztrávil pár hodin, rozchodil jsem ESP8266 v01. celkem mi pomohlo toto:
    https://www.arduinotech.cz/inpage/jak-na-iot-dil-ii-web-na-javascriptu-s-esp8266/

    pak jsem to zkoušel dát na thingspeak pomocí tohoto návodu:
    http://navody.arduino-shop.cz/navody-k-produktum/esp8266-a-thingspeak.html

    aktivoval jsem 1 kanál, nahrál data, pak jsem to chtěl poupravit a nepájivé pole mi při manipulaci opustil drát GND a po zapojení jsem si odpálil ESP- Tak jsem objednal NODEMCU a uvidíme.

    posjirka
    Účastník

    ještě je možnost použít sw PWM ale myslím, že přepojit 2 piny vs zabrat zbytečně pamět a strojový čas procesoru je jasný vítěz přehodit 2 pin.

    Pro sw řešení můžeš použít knihovnu:
    https://github.com/Palatis/arduino-softpwm

    ta ti umožní udělat pwm signal na libovolném pinu, jen to zabere kus místa ve flash paměti, časovač tuším timer2 a neustálé přerušení hlavní smyčky programu aby se vykonala pwm funkce.

    u HW řešení jen pošleš na pin hodnotu a o ostatní se stará samotný čip a program běží nezávisle …

    posjirka
    Účastník

    princip máš správný, jen máš špatné zapojení.
    Předpokládám, že stejný problém máš i u „pravý motor vpřed“.
    Proč:
    né všechny piny na Arduinu Uno mají možnost PWM regulace. Ty které to umožňují jsou na desce označeny vlnovkou. Jedná se o piny č. 3, 5, 6, 9, 10, 11.
    Některé jiné desky mají PWM i na jiných pinech.
    Řešení:
    přepoj to na správné piny a uprav si program….

    pozn. chválím za popis problému, schéma zaopjení a kod programu. Takto se dá najít problém během chvilky a dá se nad problémem v klidu zamyslet. víc takových popisů a forum se nám zkrátí na polovinu 🙂

    odpověď na: Bezdrátové čidlo teploty z meteostanice #11965
    posjirka
    Účastník

    tady bych šel cestou předem připravené knihovny. Zkus „Sensortransmiter“.
    Tady je k ní tutorial:
    https://www.root.cz/clanky/arduino-na-433-mhz-komunikuje-s-bazenovym-teplomerem/

    odpověď na: řízení ohřevu bazénu #11964
    posjirka
    Účastník

    a je něco co ti nefunguje?

    Když se dívám na program tak vpadá vcelku schopně. Jednoduchý, přehledný, bez zbytečných kudrlinek.

    Co tam vidím za prostor ke zlepšení:
    – nemáš vyřešeno nastavení RTC. Lze udělat auto nastavení po připojení k PC. Jinak po výměně baterie o ten čas přijdeš, nebo musíš měnit baterii za chodu.

    – 10 bit rozlišení na čidle DS18B20 j nesmysl. Jeho tolerance je 0,5 st.C tudíž nějáké průměrování není nic moc. Já tyhle čidla používám pro celé st.C = nepoužívám float ale int nebo lépe byte pro kladné hodnoty. zbytečně nezabíráš paměť procesoru.

    -pro nastavení zapniA, vypniA, … můžeš do podmínky dát i rovná se:
    if (datumCas.hour() => zapniB && datumCas.hour() =< vypniB) {
    lépe ta využiješ formát času. Teď to nepotřebuješ, ale kdyby si šel až do 23 hod, tak ti nepůjde podmínka vypni, protože další hodina je 00.

    – v popisech nepoužívej diakritiku. Stejně tyto znaky překlopí anglická sada znaků na „?“

    co víc napsat? Mě se tenhle sparťanský přístup líbí a pokud ti vše funguje jak má, nevidím v tom problém. Dobrá práce. Jestli budeš mít dobrou vůli, tak sem prosím dej i schéma případě nějákou fotku ať se ostatní můžou inspirovat …

    odpověď na: Otáčení solárního panelu za sluncem #11931
    posjirka
    Účastník

    to vojtech: používám diagram designer.je až primitivně funkční:
    https://www.zive.cz/clanky/diagram-designer-rychla-tvorba-diagramu-zdarma/sc-3-a-167191/default.aspx

    to marvik: z těch pevných fotoodporů mám trochu osypky. startovat proces při východu slunce je velmi nešťastné. nezapomeň, že i krátkodobý výpadek napájení (špička) ti může resetovat procesor. Ten pak „ztratí nit“ a musí se něják znovu chytit. jinak ti může spinkat do dalšího rána. proto se mi to řešení moc nelíbí. Rozhodně schavaluju koncáky jako vymezení max. polohy otáčení panelu. Nastavení na nejlepší hodnoty samozřejmě jde.

    Zatím bych se vykašlal na „solární chlazení“ při překročení 28 st.C.

    V příloze máš upravený algoritmus. je to už trochu hybrid a nejsme z něj moc nadšený. Radši bych celý proces regulace řešil „real time“ bez zpoždění. No pro začátek by ti toale mohlo vcelku vyhovovat…

    odpověď na: Otáčení solárního panelu za sluncem #11925
    posjirka
    Účastník

    asi tě nechám v dobrých rukou ch Vojtěcha, a´t na tebe nesypeme rady ze 2 stran. Kdyby byl problém ozvi se …

    odpověď na: Otáčení solárního panelu za sluncem #11922
    posjirka
    Účastník

    DS18B20 je digitální čídlo se sběrnicí 1-wire. Tzn. že si veškerou komunikaci posílá přes 1 digitální pin. čte z čidla ovšem aktuální teplotu (-55 … +125 st.C) i když přes digitální pin.

    4 fotorezistory jsou podle mě zbytečné když nebudeš panel ještě naklánět. právě se dávají 2 fotorezistory oddělené vertikální přepážkou a někdy se polepují třeba alobalem aby brali i světlo z druhé strany. Právě pro měření min. intenzity světla.

    napsal jsem ti jednoduchý algoritmus jak by to mohlo celé fungovat, i když už dost velkou část máš …

    používej prosím párové značky CODE. zachová se ti i formátování kodu a bude přehlednější. Formátováním teď myslím odstazením např. závorek…

Aktuálně je na stránce zobrazeno 15 příspěvků - 1. až 15. (celkem z 481)