Nem, azt hittem, hogy Arduino alapon csináltál PID-et.
A Mini nekem mindig is eléggé logikátlan cucc volt... Úgy értem, nem tudom, hogy mi jó benne. :-)
Ne ilyen kütyüket vegyél, hanem valamilyen tisztességes programmert. AVR-MkII kompatibiliset, ami SPI-n tudja tolni a cuccokat. Aranyat ér, komolyan.
A DUE jó cucc, csak 3,3 V-os, vagyis illeszteni kell majd a relét, amihez majd kell egy külön táp... Valószínűleg...
DS1604 i2c kiolvasás megy. Nekem mondjuk nem ez van, hanem egy másik, de megy gond nélkül. Az i2c címzést könyvtárból meg tudod oldani (a .h-ban van rendszerint, ha épp nem a sketch paraméterezésében kell közvetlenül állítani, erre is, arra is van példa). Másodpercenkénti mintavételre kell készülni, de ilyen alkalmazásokhoz jóval ritkább is elég (azért szívok én a 0,1 mp alatti mintavételezési gyakorisággal és az 0,1 fokos felbontással)...
Én kiiktatnám a PC-t és vagy on-line oldanám meg (felhőbe logolással), vagy sd kártyával és egy RTC-vel. Aztán csókolom, jöhet bármi, működik mindentől függetlenül (mondjuk elvileg a laptop is, csak az ugye némileg más fogyasztást produkál)...
A pontos válasz „az attól függ”. Az Arduino termékcsomag csak egy a sok prototípus-rendszer közül. Sok előnye és sok hátránya van. Nem jó mindenre és nem jó mindenkinek. Teljesítményét tekintve nagyjából a 80-as évek közepének személyi számítógépeit veri kicsit, néhány alapvető eltéréssel, ami a hardverkomponenseket illeti (nincs pl. billentyűzet és monitor), így például videomegjelenítésre tökéletesen alkalmatlanok.
Az, hogy mire és hogyan akarod használni, meghatározza majd, hogy egyrészt jó-e neked az Arduino, másrészt azt, hogy azon belül (vagy ezen kívül) melyik. Sajnos az alapról felfelé ellépve (Due, Tre, Galileo stb.) már azért durva összegekkel találkozunk (ezért ezen a szinten inkább a Raspberry PI játszik kezdőknek).
Ha valaki cél nélkül akar belevágni, azt én kicsit lebeszélném, mert hamar el fog fogyni a lendület és/vagy a kitartás. De ha mégis: 2-3 nagy próbapanel (bedugós fajta), egy Arduino Nano, egy csomó jumper-kábel (flexibilis és merev is), ledek, ellenállások, motor(ok), kondenzátorok, diódák, timmer potenciométerek, egy 1602 kijelző, valami shift-regiszter szerűség, fotóérzékelő, meg még ami kell. Egy ilyen szett pár ezer forint, csodálkoznék, ha 15 ezer forint felett lenne a vége ebayen. A SainSmart csinál pár normális készletet, ezekbe érdemes beruházni, de van benne pár használhatatlan, emiatt felesleges alkatrész. Én kicsit pártolom a Nanot, mert baromi egyszerű vele próbapanelen dolgozni (nem kell kábelezni), cserébe nem fogad shield-eket.
A történet elébe annyit, hogy Pidet honnan túrtál? Mert amit én eddig leltem, az vagy nagyon régi (+2 év) vagy egyszerűen nincs meg a hivatkozás...
Az elképzelés nem rossz. Az összes ilyen prototípuson alapuló projektnek az a rákfenéje, hogy ha hüvelysorokkal, tüskesorokkal, jumper-kábelekkel ügyködsz, akkor egy idő után eléggé megbízhatatlan lesz a rendszer, különösen, ha nagy hőingású és/vagy magas páratartalmú helyen van. Plusz sem a rázkódást, sem a mozgatást nem igazán tolerálják. Más érdemi hátránya (a fogyasztáson és a lassúságon kívül) nincs.
Nem kell durván forrasztgatni és nyákot maratni. Elég egy próbanyák (fillérekből megvan), egy tisztességes páka, némi gyakorlás és menni fog. A kettőt (dugdosós proto + forrasztott proto) még egyesíteni sem felfoghatatlanul nagy feladat, nekem több elem van készre építve így (két soros MAX7221-gyel vezérelt 4×7 szegmenses kijelző például).
Én kezdőként egy Uno-t vettem, 16X2-es sima LCD-vel, meg egy-két kiegészítővel az Ebay-en. Arra jó, hogy ismerkedjem vele, a turbina ECU-hoz meg majd fölszívom magam, és összerakok valami spéci cuccot - de az még arréb van......
Eléggé tévútnak találom mindkettőt egy abszolút kezdő számára az alábbiak miatt:
1. A Mini nagyon jó, de inkább kész projektekbe való, mivel külön alkatrész (programozó [programmer], pl. AVR-MkII) kell ahhoz, hogy a szoftvert rátöltsd. Tudásban egy Micro kb. ugyanez, árban versenyképes, van rajta USB és alapból próbapanel-barát.
2. Az Uno kezdéshez nem rossz választás, tök egyszerű, pokoli olcsó. De a shieldként fölé rakható kijelző, pláne, ha ekkora, több gondot okoz, mint amennyit megold, például nem férsz hozzá a lábakhoz (vagy a shield van fent vagy be- és kimeneteket használsz), a nagy LCD programozása elég macerás, ráadásul viszonylag nagy, akár a memóriakorlátot meghaladó méretű sketch dobható össze vele viszonylag gyorsan bármiféle igazán használható eredmény nélkül. E helyett javaslok egy akár grafikus i2c oled kijelzőt vagy egy sima karakteres (16x2) vagy grafikus monokróm LCD-t, úgyszintén i2c meghajtóval. Ezek is filléres alkatrészek, barmi gyorsan lehet velük próbapanelen dolgozni és kvázi hülyebiztosak (mondjuk a grafikus oled már annyira nem, de az is gyorsan tanulható).
Sziasztok! Én most kezdem, azaz szeretnék egy kis arduinos programozást elsajátítani. A jövőben (egyre interaktívabb) művészeti projektekhez szeretném használni, a kezdeti ismerkedés után. A különféle szenzorok tetszenek nagyon, nem hinném, hogy a legnagyobb teljesítményű kütyüre lenne szükségem. Szerintetek melyik típus lenne a nekem való?
Alapokkal tisztában vagyok. A házunk riasztórendszerét is én telepítettem, a fűtési rendszer vezérlése valamint a faelgázosító kazánom vezérlése is az én munkám, 5 termosztát jele alapján működtetek 3 szivattyút, egy frekvenciaváltót és két váltószelepet. De ezek ugye egyszerű relés kapcsolások, átláthatatlan kábelkötegekkel... Ezért örülnék neki, ha esetleg ezt sikerülne egy program által vezérelt verzióra lecserélni.
Ezen kívül az informatika is "megy", igaz, eddig csak Delphiben meg PHP-ben kellett programoznom.
Kicsit meglibbentetted az önbizalmamat az arduino iránt, nem jó lenne az elképzelésem, miszerint egy arduino mini klón + MAX6675 Thermocouple Brekout megoldaná a füstgázhőfok mérést. Az adatokat pcre kellene logolni csv formában.
Szabályozásra egyelőre nem kellene.
Mennyivel stabilabb, időtállóbb egy elemeiből épített rendszer erre?
Jelzem, nagy munkákra nem vállalkoznék, némi huzalozás még csak-csak, de nyákkészítés, smd forrasztás nem a világom.
Eddig I2C buszon Ds1624 Ic-kel építettem ki 8 db mérési pontot 125 C-ig, PID-es controllerrel relés füstgázvezérlést, egyedül a magas füstgázhőfokot nem tudom logolni.
Egyrészt az SSR és a "sima" relé két külön történet. Más a felhasználás célja, illetve más dologra jó. Ezek közül az ár csak egy tétel, mellette van még pár.
Külső táp: nagyon egyszerűen és nagyon hosszan is bele lehet menni a témába. A lényeg kb. annyi, hogy a galvanikus leválasztás (optocsatoló) egyik felén az Arduino van mindenestül, beleértve a saját tápját is, a másik oldalon meg a relésor és a relék által vezérelt eszközök a saját tápjukkal. Hogy ez mi (régi számítógéptáp felújítva, kapcsolóüzemü táp, toroidos transzformátor egyenirányítóval és stabilizátorral), alapvetően irreleváns, de nyilván ésszerűen kell méretezni, hogy se túl nagy, se túl kicsi ne legyen.
Kb. annyi, hogy gyártasz egy csatlakozót a relésorra és rádugsz valamilyen külső tápot, ami beszélőviszonyban van a relésor tápigényével (úgy feszültségre mint áramfelvételre).
Kiteket felejtsd el. Az alap alkatrészeket pl. hestore.hu-ból tömegével be tudod szerezni, speciálisabb dolgok vannak a Lomexben és a Konthában, utóbbiban szerintem részint zombik dolgoznak, de a munkájukat elvégzik rendesen. Minden másra ott a MasterCard és az ebay, még nagyobb tételre meg az alibaba. Gyakorlatilag fillérekért. Példa: az arduino "agya", az Atmel 328p például ebayen kb. 30-40 cent, Magyarországon 1200-1500 forint.
Tanulás... Arduino fórum elsősorban. Első körben azt javaslom, hogy részekből rakd össze a dolgot, lépésről lépésre haladva egy-egy rendszerelemmel, mindegyikre külön kódot írva. Aztán kezd el integrálni az egyes részeket, például egy hőmérő mellé továbbiakat stb., amíg végül az egészet összerakod úgy hardver, mind szoftver oldaláról. Működő rendszerként az Arduino önnön magában szerintem kevésbé alkalmas (még a kicsi is), helyette egyszerűbb eleve fix központi vezérlést építeni saját alkatrészekből, aztán felrakni rá (akár egy ardiono modulon keresztül) magát a szoftvert. Gyorsabb, alacsonyabb a fogyasztása és üzembiztosabban működik.
A net egyébként el van látva könyv formájú szakirodalommal, ezzel kapcsolatban az O'Reilly Arduino Cookbook 2nd Edition kiadványt javaslom. Bár nem hibátlan és messze nem teljességre törekvő, alapvetően elég jó.
Kb 3 napja hallottam először az Arduinoról, belevágok, ismerkedni szeretnék vele. Amit szeretnék vele megvalósítani hirtelen az a hőmérsékletmérés, nagyjából 6 helyen valamint egy ezen hőmérsékletek függvényében reléket vezérelni.
Pont itt az utolsó kommentekben olvastam, hogy gond van a nagy áramfelvétellel, ennek a relésornak az össz 160 mA-es áramfelvételével lesz gondom szerintetek? Ha igen, akkor hogy lehet külső tápból táplálni a relésort? Ez azért is jobb lenne, eleve töredék áron van a "hagyományos" relésor, valamint ott van váltóérintkezős kivitel, ami előnyösebb lenne számomra.
Hőmérséklet mérésére még nem tudom mi lesz a jó, majd ennek még utánanézek.
Kit vásárlásán is gondolkodom, csak ott meg kapok annyi plusz dolgot, amit lehet sose használnék. Bár anyagilag meg lehet jobban megéri.
A másik kérdés, hogy tanulás céljából hol érdemes kezdeni az olvasgatást? Angol nem gond.
Nos, méricskéltem, mert másokból ígyis-úgyis elő kellett túrjam a cuccokat. Íme (SainSmart).
Két relés breakout (földelésre zár):
-- szimpla zárva: 67 mA
-- dupla zárva: 130 mA
--optocsatoló: 2 mA
Egy relés (+5 V-ra zár, fene sem tudja, hogy miért):
--szimpla zárva: 67 mA
-- optocsatoló: 4,6 mA
Namost. 67 mA nem a világ, ez önmagában csak akkor lehet probléma, ha a tápellátás olyan forrásról van megoldva, ami ennél is kisebb vagy akkora terhelésre van méretezve és/vagy nagyon rossz a stabilitása. Amit én ellenőriznék mindenképp:
-- áramok különböző felállásokban (külön a relésor fő tápján, az Arduino táp lábán, közvetlenül a tápon,
-- tápvonalak terhelhetősége (nekem volt gondom belőle, a rettenetes minőségő, 200 mA-re méretezett „mindenre jó” tápok kábele fabatkát sem ér,
-- feszültség az Arduino +5 V lábán különböző történések esetén (lemegy-e 4,5 V alá vagy sem),
-- teljes debug soros kiolvasással (mikor mi történik),
-- illetve tennék egy kísérletet arra, hogy a teljes vezérlést (gyak. a relésort, illetve ha van, mást) galvanikusan teljesen leválasztani az Arduinoról (alár külön táppal).
Ha már minden elöl volt, mértem egyet egy SSR modulra (tajvani semmilyen, nullponti kapcsolású). 5 mA volt a teljes áram, amit felvett (5V), ami összevethető a szimpla relé optocsatolójának 4,6 mA-ével.
Érdekes, köszi a linket. 3000 forintért meg pláne.
Én most a kvázi DIY Arduino vonalon mozgok, gyakorlatilag Arduino prototípusok után a nyers sketch (bootloader nélkül) megy fel ICSP porton egy nyers mikrokontrollerre, aztán csak táp és csókolom.
Arduino kompatibilis kiosztás. Lehet rá bootloadert tölteni, és akkor működik a soros feltöltés is. Ja, és a bootloader feltöltéshez nem kell semmilyen külső eszköz, mert a beépített 32u4 debugger/programozó/soros-usb illesztő EGYSZERRE.
Vargham jól beszél. Ezt ugyan nem kötik a jónép orrára, de az átlagos relésorok (saját mérés alapján, ha jól emlékszem, de nincs az az isten, hogy most összedugjam a tápot) 200-300 mA körüli áramot vesznek fel csatornánként, vagyis egy 8 elemes relésor simán leszipkáz 2-2,5 A körüli áramot. Erre vigyázni kell, mert az Arduinokon lévő stabilizátor még külső (12 V-os) áramforrás esetén sem tud ennyit (elvileg nagy vonalakban 1,5 A), az USB meg eleve megáll 1 A körül. Relét külső tápról, ha egy mód van rá... És legyen, mert a kártyát (is) véded vele.
Viszont megjelent egy számomra még ismeretlen probléma. Ugyanis hiába kapcsolom fel a távirányítóval az egyik relét (van egy 8modulos relésor rákötve) pár másodpercenként mintha újraindúlna az arduino és újra lekapcsolja az összes relét, törölve a beállításokat. Erre van valami megoldás, hogy ezt kihagyja?
Abban szeretném kérni a segítségetek, hogy beszereztem egy VS1838B Ir vevőt Arduino - hoz és miután a lib - et hozzáadtam az IDE - hez folyamatosan fordításnál ezt az üzenetet kapom:
In file included from sketch_dec10a.ino:2:0: C:UsersTjanosDocumentsArduinolibrariesIRremote/IRremoteInt.h:17:22: fatal error: WProgram.h: No such file or directory #include <WProgram.h> ^ compilation terminated. Hiba a fordítás során.
a Program így nézne ki:
int RECV_PIN = 11; //define input pin on Arduino IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } }
Remélem van ötletetek, hogy mi a lehet a probléma. Előre is köszönöm
// MAC address from Ethernet shield sticker under board byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x1E, 0x03}; IPAddress ip(192, 168, 1, 250); // IP address, may need to change depending on network EthernetServer server(80); // create a server at port 80
String HTTP_req; File webFile;
void setup() { Ethernet.begin(mac, ip); // initialize Ethernet device server.begin(); // start to listen for clients Serial.begin(9600); // for debugging
if (!SD.exists("style.css")) { Serial.println("ERROR - Can't find style.css file!"); return; // can't find index file } Serial.println("SUCCESS - Found style.css file.");
}
void loop() { EthernetClient client = server.available(); // try to get client
if (client) { // got client? boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { // client data available to read char c = client.read(); // read 1 byte (character) from client // last line of client request is blank and ends with n // respond to client only after last line received
HTTP_req += c;
if (c == 'n' && currentLineIsBlank) {
Serial.println(HTTP_req); HTTP_req = ""; // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println(); // send web page webFile = SD.open("demo.htm"); // open web page file if (webFile) { while(webFile.available()) { client.write(webFile.read()); // send web page to client } webFile.close(); } break; } // every line of text received from the client ends with rn if (c == 'n') { // last character on line of received text // starting new line with next character read currentLineIsBlank = true; } else if (c != 'r') { // a text character was received from client currentLineIsBlank = false; } } // end if (client.available()) } // end while (client.connected()) delay(1); // give the web browser time to receive the data
client.stop(); // close the connection } // end if (client) }