Ceko
Vytvořené odpovědi
-
AutorPříspěvky
-
robofu7
Účastníknakonec byla chyba v komunikaci FTDI , takže jsem nahrál nastavení pro multiwii 2.4 , trošku pátral po netu a donastavil v GUI ,kalibroval jsem ESC a Gyro, ale dron je nestabilní a pořád osciluje nahrál jsem video jak se chová
mildis
ÚčastníkKluci děkuji za příspěvky, nemám to na běžné používání . Mám to pouze jako výukovou pomůcku . Ten můj sketch z prvního příspěvku jsem objevil na youtube a funguje neomylně, jen tam bohužel není ta možnost vypnutí druhým tlačítkem . Vypnutí resetem mě nepříjde moc profi :). Nicméně kdybych propojil hlavní napájení přes tepelné relé a jedním relátkem a tlačítkem bych samozřejmě mohl celí systém taky odstavit . Chtěl jsem jen stávajíci program vylepšit o pouhé vypnutí . Přikládám video kde jsem čerpal .
delta starpetan
ÚčastníkRomanB má pravdu. Signál pro relé je LOW, ne HIGH. To není moc dobré, pokud Arduino vypadne a nenaběhne. Tak se všechny zapnou? WTF?
V mým programu by mělo stačit přehodit LOW za HIGH a opačně. Ale tím že relé je sepnuto v log. 0 me nepřijde úplně nejlepší varianta.Pokud je rozběh řízen pomocí PLC, tak je často vhodné zapojit první stykač za reléovou logiku (popřípadě bezpečnostní modul) a ostatní spínat pomocí PLC (nahradí v podstatě časový spínač). Stejně jako to je v tomto článku: https://www.mylms.cz/text-rozbeh-hvezda-trojuhelnik-s-modulem-siemens-logo/ Stykač KM1 je ovládán přímo tlačítky (včetně nouzového vypnutí) a zbylé dva stykače (běh do Y a do D) je ovládán z PLC.
RomanB
ÚčastníkZdravím, použití Arduina pro tuto funkci není moc vhodné, držel bych se raději logiky pomocí relátek a časového relé. Já osobně mám na cirkuli jenom otočný přepínač + ochrany a je to dostačující.
Pokud se podíváš na schéma spouštění s relátky, uvidíš, že cívky stykačů jsou vzájemně blokovány a to je velmi důležité i v případě použití Arduina. To aby stykače „nešly do sebe“. Dále doporučuji použít nadproudovou ochranu (pomocný kontakt propojit s cívky stykačů) nebo motorový spouštěč a ten může zároveň plnit funkci hlavního vypínače. V logice by měl být také použitý nouzový STOP, ale ne jako vstup do Arduina.
Funkce delay() bych se nebál a signál pro sepnutí relátek je LOW ne HIGH.
Zbyšek Voda
ÚčastníkDobrý den, jak se chyba projevuje?
Píše něco IDE? Nějakou chybovou hlášku?mildis
ÚčastníkAhoj, moc děkuji. Odzkoušel jsem to, ale nastává jeden problém, po naprogramování a spušění Una se okamžitě spustí všechny tři relé . Možná dělám někde chybu
petan
ÚčastníkSnad to bude pochopitelný. Nezkoušel jsem to, ale mělo by to snad fungovat.
Samozřejmě, není nutný po celou dobu zapínat digitální výstupy, ale ničemu to nevadí. Doporučuji vyvarovat se použití příkazu delay();//Rozběh Y-D //Je nutné elektricky a nejlépe i mechanicky blokovat stykače Y a D #define tlStart A0 #define tlStop A1 #define stStart 1 #define stStar 2 #define stDelta 3 int systemState; //stav systému 0 - vypnuto, 1 - provoz Y, 2 - přepínání, 3 - provoz D long casBehu; //čas po který je motor spuštěn do hvězdy void setup() { pinMode(tlStart, INPUT); //tlačítko START pinMode(tlStop, INPUT); //tlačítko STOP pinMode(stStart, OUTPUT); //hlavní stykač pinMode(stStar, OUTPUT); //stakač pro hvězdu pinMode(stDelta, OUTPUT); //stakač pro trojuhelník } void loop() { if (digitalRead(tlStop)){ //stisknuto tlačítko STOP systemState = 0; //vypnout motor } switch (systemState) { case 0: //motor je vypnut digitalWrite(stStart, LOW); //pro sichr vypnout stykač digitalWrite(stStar, LOW); //pro sichr vypnout stykač digitalWrite(stDelta, LOW); //pro sichr vypnout stykač if (digitalRead(tlStart)){ systemState = 1; //zapnout motor casBehu = millis(); //uložit čas sepnití motoru } break; case 1: //motor se rozbíhá zadaný čas v konfiguraci Y digitalWrite(stStart, HIGH); //zapnout hlavní stykač digitalWrite(stStar, HIGH); //zapnout stykač Y if (millis() >= casBehu + 5000){ //pokud motor běží už 5s tak přepni stav systému na 2 systemState = 2; //další krok casBehu = millis(); //uložení aktuálního času } break; case 2: //před přepnutím do D je nutné vypnout stykač pro běh do Y a počkat digitalWrite(stStart, HIGH); //zapnout hlavní stykač digitalWrite(stStar, LOW); //pro sichr vypnout stykač if (millis() >= casBehu + 500){ //pokud od vypnutí stykače uplynulo 0,5s zapni stykač pro běh do trojuhelníka systemState = 3; //další krok } break; case 3: //provoz do D digitalWrite(stStart, HIGH); //zapnout hlavní stykač digitalWrite(stStar, LOW); //pro sichr vypnout stykač break; } }
Jerry
ÚčastníkAhoj trochu jinak RFID.
Umím načíst kód čipů a použít je v jiném programu. Vzhledem k tomu že programování až tolik není moje silná stránka se obracím sem s prosbou o pomoc zdali je to vůbec možné.
Mám např. přístupový systém pro X lidí, ale potřebuji čipy přidávat či odebírat z kódu. Je možné např. abych si vybral jeden čip který mi přepne program do stavu načítání nových čipů nebo resp. odebírání a pak se vrátil do režimu čtení. Jde o to, že by se kód čipu musel přidat nebo odebrat z kódu a tam už nevím jak.Díky
Jarda_1
ÚčastníkPro inspiraci moje sondy, nerezový drát průměr 2mm (koupené v cyklo prodejně – dráty do výpletu kola, 1ks délky 290mm za 3Kč). Držák a krytka vytištěné na 3D tiskárně, kablík/dvoulinka na dráty přiletován, jde to blbě ale jde to.
Attachments:
GARDUINOCZ
ÚčastníkS tím čidlem máš asi pravdu. já tedy ty kontakty ještě výrazně pocínoval, ale tak uvidím jak dlouho vydrží v praxi a paralelně budu hledat jiný způsob řešení. Třeba ten, který zmiňuješ. Co se týká senzoru HC-SR04, tak zrovna dnes na něj budu psát krátký článek. Tedy bude prakticky připojen právě v sudu ve venkovním prostředí a uvidíme jakou bude mít životnost. Co jsem tak mrknul na netu, tak se dělají i vodotěsné. Tedy desku umístit do nějaké krabičky a nechat koukat jen vodotěsná čidla. Ale nejdříve otestuji ten HC-SR04.
Jarda_1
ÚčastníkPůvodně jsem to také tak chtěl řešit, ale mám několik odrůd a každá rostlinka je jinak velká takže mají naprosto rozdílný požadavek na množství vody. Naštěstí jich mám pouze 8 – 10 tak to snad zvládnu zalévat samostatně. Jsem ve fázi pokusů s různými čerpadélky a elektromagnetickými ventily.
Ke snímání vlhkosti je určitě nepoužitelné čidlo které máš na stránkách, poměrně rychle zkoroduje a asi je zbytečný i ten modul YL-38. Chce to použít nerezové sondy a dají se připojit přímo na vstup Arduina a pouštět na ně napětí jen při měření.
Docela by mě zajímalo, zda modul HC-SR04 vydrží venku ve venkovním prostředí v sudu nad vodou delší dobu, měří docela dobře, ale nevěřím že vydrží celou sezonu. A vodotěsný modul je použitelný až asi od 60cm.GARDUINOCZ
ÚčastníkAhoj, tak paráda. Já mám zatím takovou menší terasu a ze začátku bych rád řešil pouze jeden okruh, kde bude u každé rostliny nastavitelná kapková závlaha. tedy můžu jí u některé rostliny přiškrtit a u některé pustit na plno podle velikosti květináče apod. Je mi ale jasné, že do budoucna to bude chtít minimálně dva okruhy. Pro menší květináče s bylinkami a pro velké truhlíky, které dokážou vypít i několik litrů denně. Dnes přidám na stránky projektu fotografie mé terasy a nějaké detaily jak bych to rád řešil. Mám výhodu v tom, že jsem tu na WIFI, tedy pro přenos na server využiji nějaký modul ESP8266. Rozhodně ale můžeme paralelně pracovat i na nějaké GSM variantě :). Doporučuji se zaregistrovat na stránkách projektu pro aktuální informace.
Jarda_1
ÚčastníkAhoj, rád se přidám, vyřešit automatickou závlahu mám v plánu asi už rok a pořád to nějak vázne. Na balkoně mám chilli a tam mám v plánu měřit každou rostlinu zvlášť a i závlahu ovládat jednotlivě ke každému květináči.
Na zahradě zvlášť ovládat závlahu ve foliáku a venku jednotlivé záhony. Bohužel nemám tam možnost připojit přes WiFi takže připadá pouze GSM.
JardaGARDUINOCZ
ÚčastníkPředstava prvního projektu je následující. Vytvořit automatický závlahový systém který bude zcela autonomní a připojený k internetu. Ráno a večer se spustí automatické zavlažování. Doba zavlažování však bude záviset na více parametrech. Například aktuální vlhkosti v referenčním květináči, kterou budeme měřit čidlem půdní vlhkosti, na předpovědi počasí, kterou si zkusíme vypočítat na základě změn atmosférického tlaku pomocí senzoru BMP180 a na dalších parametrech, které si do projektu přidáme. Rád bych měřil například výšku hladiny ve 300l sudu s vodou abych byl včas informovaný o nutnosti doplnit novou vodu. Můžeme přidat detektor srážek, teploty, vzdušné vlhkosti a všechny tyto hodnoty přenášet přes WIFI modul ESP8266 na server thingspeak. Možností je tedy skutečně noho a já budu moc rád, pokud v tom nebudu sám a s tvorbou mi někdo pomůže, poradí, nasměruje atd. Mějte bezva den a těším se na případnou spolupráci. Lukáš
Luke_CZ
ÚčastníkJelikož je 1264 grafický, tak v něm žádný charset natvrdo není(aby se ti tam při restartu cpal) a font se musí řešit za pomoci SW. Tohle bych tipnul na 99% rušení.
Zkontroluj zapojení a uvidíš.L.
petouf
ÚčastníkTak to bylo tím převodníkem, už to fachá, jak má 🙂
Díky za rady, přeji prima den!Axamith
ÚčastníkNemyslel jsem další kabel, ale nový.
To vyjde na stejno, musel bych kopnout do zahrady, tedy si neoficiálně říci o rozvod 😀Tak pro GND využij ochranný zelenožlutý vodič PE a máš k dispozici všech 5 vodičů pro ventily.
To by mohlo být naprosto ideální řešení. Využití PE je jen funkční řešení, nebo odpovídá i normě? Přiznám se, že už mám vyhl. 50 nějakou dobu propadlou …Zacatecnik359
ÚčastníkDíky 🙂
posjirka
Účastníkjelikož nemám OLED display tak jednu po paměti a tutoriálu.
Kdyby něco nešlo, napiš/popiš problém a opravíme. V každém případě si musíš upravit piny kam máš připojený OLED:// 16.5.2017 - by JP - iprava pro OLED display // připojení knihovny U8glib - http://navody.arduino-shop.cz/docs/texty/0/18/u8glib_oled.zip #include "U8glib.h" // nastavení propojovacích pinů #define D0 13 #define D1 11 #define DC 9 #define CS 8 #define RES 10 // inicializace OLED displeje z knihovny U8glib U8GLIB_SSD1306_128X64 mujOled(D0, D1, CS, DC, RES); const int buttonA = 2; //PIN NA INDIKACI CÍVKY A const int buttonB = 3; //PIN NA INDIKACI CÍVKY B const int civkaA = 4; //PIN NA CÍVKU A const int civkaB = 5; //PIN NA CÍVKU B int StateA = 0; //STAV INDIKACE CÍVKY A int StateB = 0; //STAV INDIKACE CÍVKY B int ax = 1; //POČET SEPNUTÍ CÍVKY A int ay = 1; //POČET NESEPNUTÍ CÍVKY A int bx = 1; //POČET SEPNUTÍ CÍVKY B int by = 1; //POČET NESEPNUTÍ CÍVKY B int t1 = 1200; //ČAS SEPNUTI 1,2 vteřiny int t2 = 800; //ČAS ROZEPNUTI 0,8 vteřiny int t3 = 10000; //ČAS ROZBĚHU PROGRAMU 10 vteřin int i1 = 0; //POČET CYKLŮ NA KONCI 0 int i2 = 30000; //POČET CYKLŮ NA KONCI 30.000 void setup() { Serial.begin(9600); //ZAHÁJENÍ KOMUNIKACE NA SERIOVÉ LINCE Serial.println("PROGAM EVM"); Serial.println("30.000 CYKLU"); Serial.println("CEKAM 10 VTERIN A ZACNU CYKLOVAT"); intro(); // UVODNI OBRAZOVKA delay(t3); pinMode(buttonA, INPUT_PULLUP); //indikace cívky A pinMode(buttonB, INPUT_PULLUP); //indikace cívky B pinMode(civkaA, OUTPUT); //sepnuté cívky A pinMode(civkaB, OUTPUT); //sepnuté cívky B for(int i1=1; i1 <= i2; i1++){ Serial.print("CYKLUS "); Serial.println(i1); //cívka A digitalWrite(civkaA, HIGH); StateA = digitalRead(buttonA); if (StateA == HIGH){ Serial.print("A – ON "); } else { Serial.print("A – OFF "); } if (StateA == HIGH){ Serial.println(ax++); } else { Serial.println(ay++); } menu(); // zobrazeni menu delay(t1); digitalWrite(civkaA, LOW); delay(t2); //cívka B digitalWrite(civkaB, HIGH); StateB = digitalRead(buttonB); if (StateB == HIGH){ Serial.print("B – ON "); } else { Serial.print("B – OFF "); } if (StateB == HIGH){ Serial.println(bx++); } else { Serial.println(by++); } menu(); // zobrazeni menu delay(t1); digitalWrite(civkaB, LOW); delay(t2); } Serial.println(""); Serial.print("POCET CYKLU "); Serial.println(i2); Serial.print("A – ON "); Serial.println(ax-1); Serial.print("A – OFF "); Serial.println(ay-1); Serial.print("B – ON "); Serial.println(bx-1); Serial.print("B – OFF "); Serial.println(by-1); menu(); // zobrazeni menu } void loop () { } void intro() { // uvodni obrazovka mujOled.setFont(u8g_font_unifont); mujOled.setPrintPos(0, 10); // výpis textu na zadanou souřadnici mujOled.print("PROGRAM EVM"); mujOled.setPrintPos(0, 25); mujOled.print("30.000 CYKLU"); mujOled.setPrintPos(0, 40); mujOled.print("CEKAM 10 VTERIN"); mujOled.setPrintPos(0, 55); mujOled.print("A ZACNU CYKLOVAT"); } void menu(){ // zobrazeni menu mujOled.setFont(u8g_font_unifont); mujOled.setPrintPos(0, 10); // výpis textu na zadanou souřadnici mujOled.print("CYKLUS "); mujOled.print(i1); mujOled.setPrintPos(16, 25); mujOled.print("ON"); mujOled.setPrintPos(72, 25); mujOled.print("OFF"); mujOled.setPrintPos(0, 40); mujOled.print("A"); mujOled.setPrintPos(16, 40); mujOled.print(ax); mujOled.setPrintPos(72, 40); mujOled.print(ay); mujOled.setPrintPos(0, 55); mujOled.print("B"); mujOled.setPrintPos(16, 55); mujOled.print(bx); mujOled.setPrintPos(72, 55); mujOled.print(by); }
BlindP
ÚčastníkNemyslel jsem další kabel, ale nový.
RomanB
ÚčastníkTak pro GND využij ochranný zelenožlutý vodič PE a máš k dispozici všech 5 vodičů pro ventily.
Axamith
ÚčastníkDalší kabel neprotáhnu, je to takový hrubý krk a blbě se to tahalo i když to bylo relativně rovný, před zahrabáním do výkopu, bez zatáček. Nyní jsem bez šance. Samozřejmě by to bylo nejjednodušší řešení, ale mám smůlu, znovu to kopat nebudu (byl bych mrtvý muž …). Proto hledám další cestu. Vedení jsou jednotlivé žíly 1 mm2. Vedle tohoto krku leží druhý krk s vedením 230V na napájení čerpadla. Nemám představu, jak moc to může ovlivňovat indukce.
Co využít třeba takového bezdrátového modulu, to by na ten kousek mohlo šlapat relativně spolehlivě.Dreamer
ÚčastníkNa 20 m když jsou tam ohyby? Tak do toho bych se nepouštěl. Jasně že to není ideální řešení ale přijde mi nejjednoduší. A o přesnost až tolik nejde. Když se proměří kolik z toho leze na konci a patřičně se stanoví rozhodovací úrovně tak by to podle mě mohlo celkem spolehlivě chodit. Samozřejmě jestli ten kabel za něco stojí. Kdyby byl zateklej nebo někde nakopnutej tak se bude chovat pokaždý jinak a pomohla by jedině výměna nebo ho použít jen jako silovej a přenos logiky řešit bezdrátově. No a cpát arduino všude kde to jen trochu jde o tom tohle fórum přeci je ne? 🙂
lil_bow_wuw
ÚčastníkZjednodušený program bez displeje mi už funguje cca 3 měsíce. Jen vždy musel být puštěný počítač aby byly vidět hodnoty na seriovém monitoru. Až se dostanu na montáž pokusím se udělat foto.
Displej by mohl vypadat tak jak si navrhl.
Očekávám že ventil nesepne nebo že se kotva přilepí na jednu či druhou stranu.posjirka
Účastníkjestli chceš jen přidat display navrhnul jsem toto rozložení :
http://www.imgup.cz/image/LXAC
je to to co chceš ?posjirka
Účastníktupec nejsi. Každý něják začínal. spíš ti dávám kladné body za odavhu a snahu pustit se do něčeho neznámého.
Podle toho co píšeš, tak ten program nebude fungovat. rozhodně se kotva cívky nepřitáhne na 1us (1 krok/příkaz). a tak ti asi nebude správně indikovat přitáhnutí kotvy.
Připadá mi to jako testování bipolárních/paměťových relé 🙂
Reakční čas relé je v řádech ms. takže asi nebude správně vyhodnocovat stav kontaktu.
právě proto se používá smyčkování loop() aby měl ten mechanický svět čas dojet a my ho mohli odchytat.
Neboj i smyčka loop() se dá zastavit 🙂
pauzu mezi sepnutím/rozepnutím chápu. co očekáváš?
a/ že bude kontakt zakmitávat (spínat/rozpínat)
b/ že se nesepneBlindP
ÚčastníkNebude jednodušší protáhnout nový kabel? (přivázat na starý a protáhnout) Přenášet 0-5v na takovou dálku nebude nejpřesnější… Nemusíte to arduino cpát za každou cenu všude. :)))
lil_bow_wuw
Účastníkzdravím.
1/ Je to program na zkoušení elektromagnetických cívek kdy se musí každí cívka zkontrolovat 30.000 cykly. Každý cyklus musí mít 1200 milisekund sepnutí a 800 milisekund rozepnuti a v rozepnutí se musí kotva cívky vrátit zpět.
2/ Měl jsem tentýž program zobrazován přes ethernet shield a koukal jsem na to přes webové rozhraní. To ale nebylo ideální protože se muselo tahat moc kabelu k zařízení. Nakonec jsem chtěl udělat krabičku s displejem kde budou zobrazeny všechny hodnoty stejně jak v seriovém monitoru. Jsem v tomto úplně začáteční a nemám ani páru o programování (jsem čistokrevný strojař bez elektro vzdělání :-))
3/ Musí to být v loopu celý ten program?? Když je to totiž v setupu tak se celý program udělá 30.000 a „zastaví se“. Když je to v loopu tak dojede na hodnotu 30.000 a opakuje se což nechci.
4/ Zkoušel jsi ten program nahrát do arduina? On takhle úplně v pohodě běží a díky pinu 2 a 3 indikuje sepnutí cívky, respektive mechanické přitáhnutí kotvy cívky.
5/ mělo by to na tom displeji vypadat stejně jak na tom seriovem monitoru. Vždy po jenom cyklu cívky A a B obnova displeje a znova dokola 30.000 krát a na konci celé to vyhodnocení a už neobnovovat displej a zastavit se.Asi to píšu jak nějaký tupec co??? 😀
posjirka
Účastníkz pohledu přístupu není rozdíl mezi LCD a OLED, je to jen v technologii zobrazení, ale komunikační protokoly jsou podobné/stejné.
zkus si ještě jednou přečíst co jsem ti psal v předchozím příspěvku.
Musíš si představit jak by to na tom OLED display mohlo vypadat a podle toho napsat program. je vhodné si program rozdělit na základní funkční celky:
– nastavení ( setup() )
– měření
– vyhodnocení
– regulace
– zobrazenívšechny 4 poslední body musí být ve smčce loop() aby se průběžně aktualizovali
Když to dodržíš, tak budeš mít výstup pro zobrazení na 1 místě a nemusíš to vyzobávat z celého programu. Pak není problém zobrazovat ty údaje na serial monitoru a zároveň na LCD.Co má ten tvůj program vlastně dělat?
lil_bow_wuw
ÚčastníkZdar, já mám oled display ne LCD. Spustit ho umím ale nevím jak tam vypsat data „duplicitně “ jak v seriovem monitoru.
-
AutorPříspěvky