Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   847 / 850
(#) Bakman válasza Sanyoo8 hozzászólására (») Aug 11, 2024 /
 
4.5 bar-ig: 2066.2103
10 bar-ig: 2066.3101

Ezeket egyszerű Arduino környezetbe illeszteni (feszültség kimeneteik vannak) és olcsók. A hozzá való csatlakozók egyszer használatosak, préselés után nem nagyon lehet szétszedni őket, ettől függetlenül jó ár/érték aránnyal bírnak. A csatlakozót nem lehet szétszedni, a szenzorról egy mozdulattal lejön, nem keverendő a kettő.
A hozzászólás módosítva: Aug 11, 2024
(#) zosza18 válasza Sanyoo8 hozzászólására (») Aug 11, 2024 /
 
Szia!

Bármi is létezik...

Bármit is tudsz csatolni arduino-hoz, a megfelelő szintillesztéssel, vagy kommunikációval.

A gugli a barátod Neked is... Water pressure sensor for arduino és egy kazal megoldást kínál.

Vízállótlan nyomásmérő elég érdekes lenne... Értelem szerűen mind "vízálló" ,a külseje meg IP xx.. de az már más téma.
(#) kameleon2 válasza sargarigo hozzászólására (») Aug 11, 2024 /
 
Én is ezt tenném, de az adatlap alapján nem találtam ilyet. Még átvizslatom mikroszkóp alatt, mert a szemem már nem a régi.
(#) sargarigo válasza kameleon2 hozzászólására (») Aug 11, 2024 /
 
Hát pedig szép megoldást nem tudok.. Analóg kapcsoló nem jöhet szóba? Vagy egy mux esetleg? Odataknyolod a panelre, elfér. Egyik bemenet a jel, másik a test. A'zt csókolom.
A hozzászólás módosítva: Aug 11, 2024
(#) andyka hozzászólása Aug 12, 2024 /
 
Sziasztok, esteleg tudtok ajánlani négy csatornás DAC modult SPI-re ?
(#) morzsa15 hozzászólása Aug 18, 2024 /
 
Sziasztok!

Van egy victron energy mppt-n arduinoval szeretnék kiolvasni soros porton az adatokat. Össze is legoztam a programot de olyan problémám van vele hogy csak egyszer fut le. Mi okozhatja ezt a hibát? Sajnos a find nélkül nem tudom máshogy megkeresni az adatot ami nekem kell ugyanis egy adagba dobja ki ezeket az mppt.

Szerintetek mi lehet a hiba vagy hogyan lehetne orvosolni?

  1. #include <SoftwareSerial.h>
  2.  
  3. SoftwareSerial mySerial(7, -1); // RX on pin 7, no TX pin
  4.  
  5. int v;
  6. int i;
  7. int vpv;
  8. int ppv;
  9. int cs;
  10. int mppt;
  11. int err;
  12. char load[10];
  13. int il;
  14. int h19;
  15. int h20;
  16. int h21;
  17. int h22;
  18. int h23;
  19. int h6;
  20. char hsds[10];
  21.  
  22. void setup() {
  23.   Serial.begin(9600);
  24.   mySerial.begin(19200);
  25. }
  26.  
  27. void test() {
  28.   mySerial.flush();
  29.     while (mySerial.available() > 0) {
  30.  
  31.     if (mySerial.find("V")) {
  32.       v = mySerial.parseInt();
  33.       Serial.print("Akku fesz: ");
  34.       Serial.println(v);
  35.     }
  36.     if (mySerial.find("I")) {
  37.       i = mySerial.parseInt();
  38.       Serial.print("Töltő áram: ");
  39.       Serial.println(i);
  40.     }
  41.     if (mySerial.find("VPV")) {
  42.       vpv = mySerial.parseInt();
  43.       Serial.print("Panel fesz: ");
  44.       Serial.println(vpv);
  45.     }
  46.     if (mySerial.find("PPV")) {
  47.       ppv = mySerial.parseInt();
  48.       Serial.print("panel telj.: ");
  49.       Serial.println(ppv);
  50.     }
  51.     if (mySerial.find("CS")) {
  52.       cs = mySerial.parseInt();
  53.       Serial.print("Állapot: ");
  54.       Serial.println(cs);
  55.     }
  56.     if (mySerial.find("MPPT")) {
  57.       mppt = mySerial.parseInt();
  58.       Serial.print("MPPT: ");
  59.       Serial.println(mppt);
  60.     }
  61.  
  62.     if (mySerial.find("ERR")) {
  63.       err = mySerial.parseInt();
  64.       Serial.print("Hiba: ");
  65.       Serial.println(err);
  66.     }
  67.     if (mySerial.find("LOAD")) {
  68.       mySerial.readBytesUntil('\n', load, 10);
  69.       Serial.print("LOAD: ");
  70.       Serial.println(load);
  71.     }
  72.     if (mySerial.find("IL")) {
  73.       il = mySerial.parseInt();
  74.       Serial.print("Kimeneti telj: ");
  75.       Serial.println(il);
  76.     }
  77.     if (mySerial.find("H19")) {
  78.       h19 = mySerial.parseInt();
  79.       Serial.print("Összes megtermelt: ");
  80.       Serial.println(h19);
  81.     }
  82.     if (mySerial.find("H20")) {
  83.       h20 = mySerial.parseInt();
  84.       Serial.print("Ma megtermelt: ");
  85.       Serial.println(h20);
  86.     }
  87.     if (mySerial.find("H21")) {
  88.       h21 = mySerial.parseInt();
  89.       Serial.print("Max ma: ");
  90.       Serial.println(h21);
  91.     }
  92.     if (mySerial.find("H22")) {
  93.       h22 = mySerial.parseInt();
  94.       Serial.print("Tegnap megtermelt: ");
  95.       Serial.println(h22);
  96.     }
  97.     if (mySerial.find("H23")) {
  98.       h23 = mySerial.parseInt();
  99.       Serial.print("Max tegnap: ");
  100.       Serial.println(h23);
  101.     }
  102.     if (mySerial.find("H6")) {
  103.       h6 = mySerial.parseInt();
  104.       Serial.print("H6: ");
  105.       Serial.println(h6);
  106.     }
  107.     if (mySerial.find("HSDS")) {
  108.       mySerial.readBytesUntil('\n', hsds, 10);
  109.       Serial.print("Napok: ");
  110.       Serial.println(hsds);
  111.     }
  112.   }
  113.  
  114. }
  115.  
  116. void loop() {
  117.   test();
  118.   delay(1000);
  119. }
(#) sargarigo válasza morzsa15 hozzászólására (») Aug 18, 2024 /
 
Nem biztos hogy segít, de egy gondolat felmerült. Amikor a mySerial-ból kikeresed a find()-del ami érdekel, akkor nem teszi tönkre az adatodat? Vagy folyamatosan érkeznek és egyszercsak talál egy megfelelő if-et? Ha csak egyszer fut le, nekem gyanús hogy valamibe beleragad, esetleg túlcsordul a puffer. Érdemes lenne naplózni hogy mi történik! Például ugyanott akad-e el.
(#) Bakman válasza andyka hozzászólására (») Aug 18, 2024 / 1
 
Itt egy lista, szűkítsd magadnak, ahogy tetszik: Bővebben: Link.
(#) proba válasza morzsa15 hozzászólására (») Aug 18, 2024 /
 
Az nem probléma, hogy a fogadó bitráta 19200, a küldő meg 9600 ? Van elég idő elküldeni?
(#) proba válasza proba hozzászólására (») Aug 18, 2024 /
 
A vételt is valami elválasztó karakter szerint indítanám. A /n-t csak egy helyen nézed, pedig szerintem a többi adat között is van. Esetleg egy az egyben fordítsd át a bemenetet a kimenetre lehet logolni, mi az amit benézel. Átjön e minden, mennyi extra karakter van... ( ja és ne karakteres terminálba vizsgáld, hanem a hexa karakterként ( csak így látod az esetleges láthatatlan karaktereket)
(#) morzsa15 válasza proba hozzászólására (») Aug 18, 2024 /
 
Nem tudom mennyire jó vagy rossz megoldás a legutolsó if be tettem egy return-t így megy folyamatosan. Azt tapasztaltam ha ugyan az a bitráta van valamiért megakad azért választottam mást, bár lehetett volna magasabb is igaz ami igaz
(#) Lamprologus hozzászólása Aug 29, 2024 /
 
Két ESP kérdezgeti le egymást wifin keresztül ... (Egyik hőmérsékletet mér, a másikon digitális be/kimenetek vannak amiket nézi/kapcsolni kell)
Fejlesztés közben néha az egyik programját módosítom, néha a másikét, van hogy mindkettőt egyszerre, Arduino IDE-ben...
Van valakinek valami frappáns ötlete arra, hogyan tudom leg egyszerűbben azonosítani az összetartozó verziókat?
Alapból úgy szoktsam, hogy ahogy haladok a fejlesztéssel időnként újabb névvel mentek, növekvő számmal jelölöm az egyre újabb változatot (pl: homero_01 ... homero_02 ... )

De most ugye két "projekt" fut párhuzamosan ...
(#) pipi válasza Lamprologus hozzászólására (») Aug 29, 2024 /
 
homero20240829... digit20240829
amúgy meg a forrásba is beteszem pl:
Serial.print("Compile time: ");
Serial.print(__DATE__ " ");
Serial.println(__TIME__);
--
Serial.println("Compile date: " __DATE__ " " __TIME__ "\r\n" __FILE__);
A hozzászólás módosítva: Aug 29, 2024
(#) pavikpeter hozzászólása Szept 1, 2024 /
 
Arduinoval szeretnék hőfokmérésre használni egy ismert karakterisztikájú NTC-t és az a kérdésem, hogy hogyan tudom megoldani, hogy az elérhető legpontosabb mérést tudjam megvalósítani vele? Magyarul, milyen programozási technikák vannak arra, hogy az arduino le tudja követni egy random NTC nemlineáris karakterisztikáját?
A hozzászólás módosítva: Szept 1, 2024
(#) moltam válasza pavikpeter hozzászólására (») Szept 2, 2024 /
 
Két módszer van, megkeresed a karakterisztikát leíró függvényt és kiszámolod, vagy lookup table, előre eltárolt táblázatból kiolvasod az adc értékhez tartozó hőmérsékletet. Persze ha két érték közé esik akkor interpolálni kell. Minél nagyobb felbontású a táblázat, annál jobb az eredmény.
(#) tufatofu hozzászólása Szept 2, 2024 /
 
Sziasztok! Tizedes pontosságú izolált DC mA(mV) szeretnék mérni Arduinoval. Létezik erre valami modul?
Sajnos csak olyanokat találtam, ami 4-5 mA(mV) mérésére alkalmatlanok.
(#) pavikpeter válasza moltam hozzászólására (») Szept 2, 2024 /
 
Idézet:
„megkeresed a karakterisztikát leíró függvényt”

Az ezen módszer mögötti matek érdekelne.

Idézet:
„vagy lookup table, előre eltárolt táblázatból kiolvasod az adc értékhez tartozó hőmérsékletet”

Tekintve, hogy jelenleg a hőmérsékletekhez tartozó ellenállás értékeim vannak meg kellene ismételnem a karakterisztika felvételét úgy, hogy egy feszültségosztóba teszem az NTC-t, 5V-ra kötöm és mérem a feszültséget?
(#) bbatka válasza pavikpeter hozzászólására (») Szept 2, 2024 /
 
Ha fv-t akarod leírni, akkor "regresszió" néven találod meg a matekban.
(#) pavikpeter válasza bbatka hozzászólására (») Szept 2, 2024 /
 
Köszönöm. Még egy kérdés. Lehet-e egyáltalán feszültségosztóval analóg bemenetre kötve direktben egy ilyen NTC által szolgáltatott jelet megfelelő pontossággal mérni? Mire gondolok?

A -10C-tól +40-ig tartó tartományt szeretném mérni. Ebben a tartományban az NTC ellenállása 56K-tól 3k-ig változik. Ha 10K-val húzom 5V-ra akkor az analóg bemeneten ebben a hőmérsékleti tartományban 4,3-1,3 V között változik a feszültség. Ez a kb 3 Voltnyi változás írja le a hőmérséklet 51 C-nyi változását ami azt jelenti, hogy 1C fok változáshoz 0.06V !!! változás társul. Szerintem ez extrastabil 5V-ot igényel anélkül ez a mérés a sacc/kb kategória. Ha a teljes -55-től 127-ig terjedő tartományt szeretném mérni akkor még rosszabb a helyzet. Mi erre a problémára a megoldás?
(#) Massawa válasza pavikpeter hozzászólására (») Szept 2, 2024 /
 
Nem lesz optimális mert rossz lesz az illesztés. Az Arduino bemeneti impedanciája kb 10 KOhm körül van azaz sokkal kisebb mint az NTC-é. Ezërt egy közbüsö fokozat kell oda - elég egy tranyo is, és annak kisebb munkaellenállásán már mérheted az oszto feszültségét.
(#) morgo válasza tufatofu hozzászólására (») Szept 2, 2024 /
 
Szia! ADS1115-nek nézz utána.
(#) Skori válasza pavikpeter hozzászólására (») Szept 2, 2024 /
 
10bites A/D esetén (1024 lépés) 5V-os tápról, kb 5mv-os felbontásod lesz, azaz 10x jobb mint az említett 0,06V. a valóságban persze sokkal rosszabb lesz a helyzet, mert általában nemlineáris az NTC karakterisztikája.

Persze léteznek másféle hőszenzorok is, pl. az LM35 kimenő feszültsége 10mV/°C, és MCP9700 is, de ez utóbbi azthiszem -40°C-ról indul.
A hozzászólás módosítva: Szept 2, 2024
(#) GPeti1977 válasza pavikpeter hozzászólására (») Szept 2, 2024 / 1
 
ntc.ino mint főprogram
  1. #include "setup.h"
  2. #include "NTC.h"
  3.  
  4. NTC ntc(0);
  5.  
  6. void setup() {
  7.   Serial.begin(9600);
  8.  
  9. }
  10. void loop() {
  11.     float temp = ntc.Get_tempNTC(0);
  12.         Serial.println(temp);
  13.         delay(1000);
  14. }


setup.h
  1. #define THERMISTORNOMINAL 10000
  2. #define BCOEFFICIENT 3950
  3. #define TEMPERATURENOMINAL 25
  4. #define SERIESRESISTOR 10000
  5. #define ntcin A0
  6. #define nsump 10

ntc.cpp
  1. #include <Arduino.h>
  2. #include "NTC.h"
  3. #include "setup.h"
  4.  
  5. float NTC::Get_tempNTC(byte nn){
  6.         float tempraw = 0;
  7.   for (int i=0; i< nsump; i++) {
  8.       tempraw += analogRead(nn);
  9.       delay(1);
  10.     }
  11.    tempraw /= nsump;
  12.    tempraw = 1023 / tempraw - 1;
  13.    tempraw = SERIESRESISTOR / tempraw;
  14.    float temp;
  15.     temp = tempraw / THERMISTORNOMINAL;     // (R/Ro)
  16.     temp = log(temp);                  // ln(R/Ro)
  17.     temp /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)
  18.     temp += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
  19.     temp = 1.0 / temp;                 // Invert
  20.     temp -= 273.15;                         // convert to C
  21.     return (temp);
  22. }


ntc.h
  1. #ifndef __NTC_H__
  2. #define __NTC_H__
  3. #include <Arduino.h>
  4.  
  5. class NTC {
  6.  
  7.   public:
  8.     NTC();
  9.     NTC(byte nn){
  10.     }
  11.           float Get_tempNTC(byte nn);
  12. };
  13. #endif


Kérdezz ha valami nem világos!
A hozzászólás módosítva: Szept 2, 2024
(#) Lamprologus válasza pavikpeter hozzászólására (») Szept 2, 2024 /
 
Biztos NTC-t akarsz használni? Fillérekért lehet kapni pl. DS18B20-at...
(#) GPeti1977 válasza GPeti1977 hozzászólására (») Szept 2, 2024 /
 
A setup.h fájlban #define ntcin A0 ki kell törölni.
Ahány analóg bemenet van annyi helyen lehet a hőmérsékletet mérni
  1. #include "setup.h"
  2. #include "NTC.h"
  3.  
  4. NTC ntc(0);
  5.  
  6. void setup() {
  7.   Serial.begin(9600);
  8.  
  9. }
  10. void loop() {
  11.     float temp1 = ntc.Get_tempNTC(0);
  12.     float temp2 = ntc.Get_tempNTC(1);
  13.         Serial.print(temp1);
  14.   Serial.print(",");
  15.   Serial.println(temp2);
  16.         delay(50);
  17. }
(#) Josi777 válasza pavikpeter hozzászólására (») Szept 2, 2024 / 1
 
Az NTC illesztése a Steinhart-Hart egyenlettel számítható ki.
GPeti1977 pedig közzétette Arduinora való implementációját.
Viszont egy mérés nem mérés, ezért célszerű valamilyen eljárást használni az esetleges zajok, zavarok kiszűrésére. Talán az egyik legegyszerűbb a statisztikai átlagolás, kicsit bonyolultabb, de gyorsabb a csúszó átlagolás.
Az átlagolással amúgy a pontossága is nő.
(#) pavikpeter válasza Josi777 hozzászólására (») Szept 2, 2024 /
 
Köszönöm mindenkinek a tippeket és az infókat.
(#) tufatofu válasza morgo hozzászólására (») Szept 2, 2024 /
 
Az van itthon, de az nem izolált.
(#) mnyugger válasza Josi777 hozzászólására (») Szept 2, 2024 /
 
Idézet:
„közzétette Arduinora való implementációját.”


Tudnál adni hozzá egy linket?
(#) kapu48 válasza mnyugger hozzászólására (») Szept 2, 2024 /
 
Feljebb van 6. hozzászólásban!
Következő: »»   847 / 850
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem