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   678 / 845
(#) SzilCsong válasza Pethical hozzászólására (») Feb 17, 2021 /
 
Köszi
(#) SzakiLaci hozzászólása Feb 17, 2021 /
 
Sziasztok!

Van nekem 2db 3-csatornás komoly 12 Voltos LED dimmerem, ami 0-10 Voltot vár szabályozáshoz.
Hogyan tudnám a LEGEGYSZERŰBBEN egy Arduino Nano 6db Analog-Out portjával ezeket stabilan szabályozni?

Az sem baj, ha 0-12Voltot kap a dimmer, bírni fogja.
(Legfeljebb majd szoftveresen (0-255) visszább veszem kb 80%-ra.)
Természetesen 12V rendelkezésre áll a "környéken".
Tehát csak valahogy azt a 0-5Voltot kellene "arányában feltolnom".

(Csak olyan agyonkomplikált leírásokat találtam, ahol mindenféle külön chippekkel PWM-et alakítanak át és nem is használják az Ardu analóg portját. Nem értem...)

Előre is köszönöm a segítséget!
A hozzászólás módosítva: Feb 17, 2021
(#) GPeti1977 válasza SzakiLaci hozzászólására (») Feb 17, 2021 /
 
Aluláteresztő szűrő majd LM358 műveleti erősítővel egy fázist nem fordító 2x -es erősítésű alapkapcsolás.

A010V.png
    
(#) Elektro.on válasza SzakiLaci hozzászólására (») Feb 17, 2021 /
 
Szia!

Azért találsz PWM-es megoldásokat, mert az Arduino analóg portjai csak bemenetek.
Az Arduino nem rendelkezik beépített digitális-analóg átalakítóval. Ezért Analóg kimenetet csak PWM -el, vagy létrás feszültség osztóval tudsz készíteni.
Esetleg, ha találsz hozzá valami soros portos DAC bővítőt.

GPeti1977 megoldása jó az 5V -> 12V átalakításra.
A hozzászólás módosítva: Feb 17, 2021
(#) DJ Tacki hozzászólása Feb 17, 2021 /
 
Szia,
Az Arduino Nano-ban nincs Analog-Out port, hiszen a mikrovezérlő nem tartalmaz közvetlen D/A átalakítót. Legegyszerűbben a PWM kimenete használható D/A átalakítóként, a képet látható kapcsolás pl. pont megoldja a problémád.
Bővebben: Link
(#) mateatek válasza SzakiLaci hozzászólására (») Feb 17, 2021 / 2
 
Én csináltam hasonlót. Úgy oldottam meg, hogy a timer kimenetére tettem egy diódás-kondis feszültség többszörözőt. A timer ezt meghajtotta négyzög jellel és lőn többszörözött feszültség. A konverter kimenetére tettem egy ellenállást, ami állandóan terhelte. A timer kimenetén lévő négyszögjel kitöltési tényezőjével pedig a feszültséget állítottam. Nagyon keskeny tűimpulzusoknál alig volt feszültség, 50-50%-os kitöltésnél pedig a legnagyobb volt a fesz. A 16 bites timerrel ezt nagyon finoman lehet állítani. Az ADC pedig méri egy feszültség osztón keresztül.
Én ezt egy li-ion celláról működő karakteres LCD kontraszt állításánál használtam. Csak ott negatív tápot állított elő a konverter.
(#) SzakiLaci hozzászólása Feb 17, 2021 /
 
Nagyon szépen köszönöm a gyors válaszokat!!!

Sajnos ettől féltem. Nekem ezek a megoldások már az "egy kicsit túlkomplikált" kategóriába esnek.
Azaz mire 1 csatornát összerakok, hozzá szoftveresen megoldom a PWM-et, amit Node-RED-el kellene vezérelni ... ez nem "5 perces munka". Nemhogy 6db esetén forrasztásokkal, alkatrész válogatással, stb. Azt hittem max 1-2 "izét" hozzáforrasztok és kész is.

Keresgéltem Magyar boltból vásárolható, raktáron lévő KÉSZ DAC-ot,
de főként csak Arduino UNO-hoz vannak kész shield-ek.

Tehát az Arduino ebből a szempontból felejtős.

Van esetleg valakinek valamilyen javaslata, mit lehetne (leginkább a hestore -ből) venni, ami KÉSZEN ellátja ezt a feladatot, és egyszerűen rá tudom dugni egy 5 méteres kábellel egy Raspberi Pi 4-re, amin Node-RED fut?

(Leginkább valami RS485 / USB / ethernet kütyü lenne jó, mert az I2C nem visz el 5 métert.
Arra sem találtam eddig kész .INO fájlt, amivel egy Nano-t átalakíthatnék USB-I2C adapterré.)
(#) mateatek válasza SzakiLaci hozzászólására (») Feb 17, 2021 /
 
Ugyancsak a timerek PWM kimeneteit használva csinálhatsz PWM-DAC-ot. Csatornánként 4053-as egy kapcsolója, egy ellenállás és egy kondi. Ennél egyszerűbbet már nem lehet.
(#) mnyugger válasza SzakiLaci hozzászólására (») Feb 17, 2021 /
 
Idézet:
„Tehát az Arduino ebből a szempontból felejtős.

Nem, nem!

LGT8F328D Arduino nano v3 kompatibilis

Idézet:
„Two 8-bit DACs that can be used to generate a reference voltage source”
A hozzászólás módosítva: Feb 17, 2021
(#) SzakiLaci válasza mnyugger hozzászólására (») Feb 18, 2021 /
 
Igen, valami ilyesmit kerestem volna,
csak legalább 6 vagy több csatornásat.
A 2 DAC nem elég. És akkor még azt is fel kell konvertálni gondolom 5V-ról?

Azért fura, hogy senki nem gyárt ilyesmit?
A 0-10V az egy ipari szabvány!
Az egyetlen, amit találtam, az 1 csatornás és 40 Euró.
(#) vargham válasza SzakiLaci hozzászólására (») Feb 18, 2021 /
 
Azért nem gyártanak, mert mindenki PWM-et használ. Tökéletesen megfelel a célra. Ide nem kell DAC.
A hozzászólás módosítva: Feb 18, 2021
(#) Action2K válasza SzakiLaci hozzászólására (») Feb 18, 2021 / 1
 
Idézet:
„A 0-10V az egy ipari szabvány!”


De már elavult. Régen a keverőpultokból így vitték át a jeleket a sokeres (8, 16, 32...) csoportkábeleken a színházi vezérlőből a színpadnál lévő dimmerekhez. Ez akár 100 m is lehetett. Nem kis anyagi költség. Később már robotlámpákat is lehetett a 0-10V-os jellel vezérelni, persze "szűk" tudással. Aztán megszületett a DMX512, hogy egy mezei mikrofonkábelen 512 csatorna átvihető legyen. Ráadásul digitálisan, ami stabil pontosságot és széles felhasználhatóságot eredményez a sima dimmertől az intelligens lámpák vezérléséig.


Azért megnézném a dimmer elektronikáját, hogy nem-e a 0-10V-ból PWM-et csinál, mert akkor csak le kell választani az átalakítót és becsatlakozni a PWM jellel. Én ezt tartanám észszerűnek. Ha TTL-es, akkor még alkatrész sem kell.
Ha megírod a dimmer típusát, rákeresek és lehet, hogy találok rá megoldást, a PWM-es meghajthatóságra.
(#) Action2K válasza Action2K hozzászólására (») Feb 18, 2021 / 1
 
Egyébként, ha nem sürgős, nem akarsz építeni, és a dimmert sem akarod megbütykölni, akkor:
Itt a megoldás! 3,949.27HUF-ért kapsz 6db "PWM to Voltage converter"-t. Vigyáz, itt voltage to PWM is van, a jót válaszd ki. (persze máshol is kapható, kicsit drágábban.)
A hozzászólás módosítva: Feb 18, 2021
(#) matyas98 hozzászólása Feb 18, 2021 /
 
Sztiasztok!

Arduinoval szeretnék magas hőmérsékleteket mérni K-típusú szenzor segítségével. Abba a problémába ütköztem, hogy a szenzor illesztője (MAX6675-M) maximum 1024C fokot tud mérni. Van valakinek valami ötlete a megoldásra?

Előre is köszi a segítséget!
(#) Action2K válasza matyas98 hozzászólására (») Feb 18, 2021 / 1
 
Szia!

Tegyél be egy feszültségosztót a szenzor és az áramkör közé, majd a mért értéket szorozd fel/arányosítsd az osztóval. (Nem százas, hogy bejön, de egy próbát megér.)
(#) mnyugger válasza matyas98 hozzászólására (») Feb 19, 2021 / 1
 
Mennyi hőfokot szeretnél mérni?
A NiCr-Ni csak 1200-ig mér.
Idézet:
„K Típus – Nikkel-Króm/Nikkel-Alumínium, MSZ EN 60584-1 (IEC 60584-1)

K Típusú Hőelem, másnéven Chromel-Alumel, de sokszor Nikkelkróm-Nikkel néven keresik nálunk, és a mai napig a leggyakoribb hőelemtípus az iparban. Elsődlegesen oxidáló közegek mérésére tervezték. A maximális folyamatosan mérhető hőmérséklet 1100°C környékén található, habár 800°C felett az oxidáció fokozottan növeli driftet. Rövid idejű mérésekre viszont van egy kis kiterjesztési lehetőség 1200°C-ig. Az eszköz szintén alkalmas kriogenikus alkalmazásokra is, egészen –250°C-ig.”

A PtRh-Pt talán 1600°-ig
E fölött már valami infrás mérő kell.

hőelemek
(#) Lamprologus válasza matyas98 hozzászólására (») Feb 19, 2021 / 1
 
(#) GPeti1977 válasza matyas98 hozzászólására (») Feb 19, 2021 / 1
 
Műveleti erősítő nem invertáló alapkapcsolásban 90 szeres erősítéssel, így akár 1370C-t tudsz mérni, egy termisztor esetleg a hidegpont mérésére.
(#) matyas98 válasza mnyugger hozzászólására (») Feb 19, 2021 /
 
1200 elég lenne nem is ezzel van a baj hanem a hőelem erősítőjével, ami felerősíti a jelet az arduino analog portjának. De gondolkodtam a fesz osztós kommenten, akár az is működhet.
(#) matyas98 válasza Lamprologus hozzászólására (») Feb 19, 2021 /
 
Hmm. Utána fogok számolgatni amint lesz egy kis időm. Mert itt igazából az arduino a limitáció. Értem ez alatt, hogy az analóg port max 5V-ig tudja mérni a beolvasott értéket. Szóval ezen belül kell vagy finomabb besztással felvenni, vagy talán simán egy fesz osztó.

Megnéztem és sajnos azt írja, hogy 10mV/C a kimenet. Az feltételezem azt jelenti, hogy 1000C esetén 10V. Ez már sajnos nem fér bele az 5V-ba.
A hozzászólás módosítva: Feb 19, 2021
(#) matyas98 válasza GPeti1977 hozzászólására (») Feb 19, 2021 /
 
És ebben az esetben be is férne a kimenet 0V és 5V közé 1370C-ig? Ez lenne a legelegánsabb megoldás, csak még nem igazán van sok tapasztalatom műveleti erősítőkkel. Van esetleg valami konkrét kapcsolásod?
(#) GPeti1977 válasza matyas98 hozzászólására (») Feb 19, 2021 / 1
 
Benne van a szövegben, nem invertáló alapkapcsolás, ezek alap dolgok aki elektronikával foglalkozik. Viszont a műveleti erősítő típusa nem mindegy, olyan kell aminek a bemenete rail to rail esetleg a kimenete is, legyen kicsi az offszetje. Az LM358 olcsó, a bemenete 0V körül jól működik, viszont a kimeneti feszültsége kisebb mint a tápfesz kb 1,5V-tal. Ez nem baj mert az arduino AD konverterét jobb a belső referenciafeszültségről táplálni, ez névlegesen 2,56V, illetve ilyenkor 50 szeres erősítés az optimális. Hidegpont kompenzálás nem is kell mert nagyon nagy hőfokot szeretnél mérni.
Itt egy precíz megoldás:
Bővebben: Analóg mérés
A hozzászólás módosítva: Feb 19, 2021
(#) GPeti1977 válasza GPeti1977 hozzászólására (») Feb 19, 2021 / 1
 
Van egy egyszerűbb megoldás:
Bővebben: ktLM358
Az R2 értékét kell csökkenteni hogy 1370C on is mérjen, ami nehéz hogy egy kalibrált hőmérővel kell hitelesíteni ebben a magas hőtartományban.
A hozzászólás módosítva: Feb 19, 2021
(#) Bakman válasza matyas98 hozzászólására (») Feb 19, 2021 / 1
 
Ezt keresd: MAX31855. Vigyázat! Több változata létezik, a típuskód utáni betű mondja meg, milyen hőelemre van kiképezve, adatlapot tessék átnyálazni.

Csak azt kell megnézned, milyen szenzort és IC-t tudsz beszerezni. Attól mert a hőelem tud pl. 1300 °C-ot mérni, nem jelenti azt, hogy a burkolata is, erre figyelni kell.

MAX31855.png
    
(#) meddu hozzászólása Feb 19, 2021 /
 
Sziasztok!
Segítséget szeretnék kérni.
Elkezdtem egy bojler fűtés, (cirkulációs) vezérlést ami egy pufferből fűti fel ha megvannak az adott hőmérsékletek. 2db relé, 4db DS18b20 hőmérséklet érzékelő és egy négysoros LCD van.
Ha mind a négy érzékelő rákötöm a lapra (Arduino NANO) akkor nem jelzi ki a hőmérsékletet.
Ha csak három van rajta akkor random valamelyik érzékelő valamilyen mínusz előjelű értéket mutat pár pillanatra.
  1. #include <LiquidCrystal_I2C.h>
  2. #include <OneWire.h>
  3. #include <DallasTemperature.h>
  4. #include <Wire.h>
  5.  
  6. #define ONE_WIRE_BUS 2    // Hőmérők az 2 lábon
  7.  
  8. OneWire oneWire(ONE_WIRE_BUS);
  9. LiquidCrystal_I2C lcd(0x27,20,4); //lcd a A4,A5 lábon
  10.  
  11. // Convert normal decimal numbers to binary coded decimal
  12. byte decToBcd(byte val)
  13. {
  14. return( (val/10*16) + (val%10) );
  15. }
  16. // Convert binary coded decimal to normal decimal numbers
  17. byte bcdToDec(byte val)
  18. {
  19. return( (val/16*10) + (val%16) );
  20. }
  21.  
  22. // Sznzorok azonosítása
  23. DallasTemperature sensors(&oneWire);
  24.  
  25. DeviceAddress pufferfent = { 0x28, 0x08, 0xD7, 0x45, 0x92, 0x04, 0x02, 0x31 };// "T1"
  26. DeviceAddress pufferlent = { 0x28, 0xFD, 0x2D, 0x45, 0x92, 0x0E, 0x02, 0x54 };// "T2"
  27. DeviceAddress bojlerfent = { 0x28, 0x13, 0x78, 0x45, 0x92, 0x13, 0x02, 0x4C };// "T3"
  28. DeviceAddress bojlerlent = { 0x28, 0x9F, 0xD1, 0x45, 0x92, 0x11, 0x02, 0x8A };// "T4"
  29. float T1 = 0;
  30. float T2 = 0;
  31. float T3 = 0;
  32. float T4 = 0;
  33.  
  34. // Változók
  35.  
  36. int Relay1 = 11;
  37. int Relay2 = 12;
  38.  
  39. void setup()
  40. {
  41. // Relék definiálása a portokon
  42.   pinMode (Relay1, OUTPUT);   // bojler fütés
  43.   pinMode (Relay2, OUTPUT);   // cirkuláció bekapcsolása
  44.  
  45.   digitalWrite(11, HIGH);
  46.   digitalWrite(12, HIGH);
  47.  
  48.   //hőmérők beállítása
  49.   sensors.begin();
  50.   sensors.setResolution(pufferfent, 9);  //hőmérők beállítása, pontosság 9-12 bit
  51.   sensors.setResolution(pufferlent, 9);
  52.   sensors.setResolution(bojlerfent, 9);
  53.   sensors.setResolution(bojlerlent, 9);
  54.  
  55.  /*  A fix szöveg megjelentse
  56.     A kiírás beállitsa, balfelső sarok 0,0
  57.     1 oszlop s 0 sor */
  58.   lcd.init();  
  59.   lcd.backlight();
  60.   lcd.setCursor(6,0);
  61.   lcd.print("Bojler ");
  62.   lcd.setCursor(13,0);
  63.   lcd.print("Puffer ");
  64.   lcd.setCursor(1,1);
  65.   lcd.print("Felul:");
  66.   lcd.setCursor(1,2);
  67.   lcd.print("Alul :");
  68.  
  69. }
  70.  
  71. void printTemperature(DeviceAddress deviceAddress)
  72. {
  73.                               //ha nem látja a hömérséklet szenzort
  74.   float tempC = sensors.getTempC(deviceAddress);
  75.   if (tempC == -127.00) {
  76.     lcd.print("?");
  77.   } else {
  78.     lcd.print(tempC,0); // "1" :tizedes értékig irja "2" : szazas értékig
  79.   }
  80.   }
  81. void loop()
  82. {
  83.    
  84.   sensors.requestTemperatures(); // Adatkérés a hőmérőtől
  85.    T1 = sensors.getTempC(pufferfent);
  86.    T2 = sensors.getTempC(pufferlent);
  87.    T3 = sensors.getTempC(bojlerfent);
  88.    T4 = sensors.getTempC(bojlerlent);
  89.  
  90. delay(2000);
  91.                       // hovairjuk a hőmérsékletet
  92.    /*  Hömrséklet kiírsa */
  93.  
  94.           lcd.setCursor(7,1);         // A kiírás bellítsa, balfelső sarok 0,0
  95.           printTemperature(bojlerfent); // Hömérsklet kiíratsa
  96.           lcd.print("\337C  ");
  97.    
  98.           lcd.setCursor(7,2);        
  99.           printTemperature(bojlerlent);
  100.           lcd.print("\337C  ");
  101.    
  102.           lcd.setCursor(13,1);        
  103.           printTemperature(pufferfent);
  104.           lcd.print("\337C  ");
  105.    
  106.           lcd.setCursor(13,2);        
  107.           printTemperature(pufferlent);
  108.           lcd.print("\337C  ");
  109.  
  110.  
  111.  //szabalyozas()
  112. {
  113.  if((T3 < 50) && (T2 > 35))  
  114. digitalWrite(11, LOW);   //kapcsoljon BE bojler fütés50 hőmérsékleten csak akkor ha a T2 nagyobb mint 35
  115.  
  116. }
  117. if(( T2 < 35) && (T1 < 64))
  118.  
  119.   digitalWrite(11, HIGH); //kapcsoljon KI ha T2 hőmérséklete neméri el a 35 et és T1 hőmérséklete neméri el a 64
  120.  
  121. {
  122.   if(T3 > 60 )
  123.   {
  124. digitalWrite(11, HIGH); //kapcsoljon KI ezen a hőmérsékleten
  125.  
  126.    }
  127. }
  128. if(digitalRead(Relay1) == LOW) //relé 1 állapot kiiratása
  129.  
  130. {
  131.    lcd.setCursor(1,3);
  132.   lcd.print("Bojler Futes: BE");
  133. }
  134. else
  135. {
  136.   lcd.setCursor(1,3);
  137.   lcd.print("Bojler Futes: KI");
  138.  }
  139. }
(#) GPeti1977 válasza meddu hozzászólására (») Feb 20, 2021 /
 
Az id-k jól vannak beirva? Esetleg delay a lekérdezések között.
(#) KoblogPerGyok válasza meddu hozzászólására (») Feb 20, 2021 /
 
Helló!

Szerintem {} problémád van.
112. sortól kezdve, nem is egy hanem több, de lehet félre néztem.
112,113,117 sorokban, nekem nem világosak a {} jelek.
(#) meddu válasza KoblogPerGyok hozzászólására (») Feb 20, 2021 /
 
Arduino IDE -vel az ellenőrzés hiba nélkül lefutott. A feltöltésnél sem mutat hibát.
(#) sargarigo válasza meddu hozzászólására (») Feb 20, 2021 /
 
Attól hogy darabra párban vannak, még lehetnek rosszak! A 112. sorban felesleges a nyitó zárójel, aminek a párja a 116. Ez még nem lenne baj. De a 117- sorba lévő "if" csak a következő digitalWrite felől rendelkezik, és utána jön a 121. sorban egy zárójeles blokk, ami a 127-tel ér véget. Ez csak van, az if nem szól bele. Nem tudom ezt így akartad-e.
szerk: Mellesleg tessék nyomogatni bőszen a Ctrl+T gombokat, újraformázza a kódot, és máris látszik aminek látszania kell (általában).
A hozzászólás módosítva: Feb 20, 2021
(#) SzilCsong válasza meddu hozzászólására (») Feb 20, 2021 /
 
A DS szenzorok megkapják normálisan a tápot? Nem csak az adatlábról eteted?
Következő: »»   678 / 845
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