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   538 / 839
(#) zaza99 hozzászólása Jún 11, 2019 /
 
Sziasztok!
Tudnátok nekem ajánlani egy aránylag egyszerű emulátort?
(#) pipi válasza Jacksonps2 hozzászólására (») Jún 11, 2019 /
 
Hali!
Kérdés az arduino-pc kapcsolat....
Ha az arduinón van a soros-usb konverter amit használsz, az nyilván minden arduino bekapcsolásnál soros port detektet jelent, kikapcsolásnál meg eldobja a soros portot, ezen nyilván elhasalnak a programok...
Használj külső usb-soros konvertert, ez az usbről kapjá a tápját, így folyamatosan megvan a PC soros port, nem dobálja el, a program sem hasal el. Az usb soros tx/rx-ét meg kösd az arduino tx/rx-ére, esetleg le kell választani a helyből rajtalévő konvertert...
(#) ardukato válasza pipi hozzászólására (») Jún 11, 2019 /
 
Legegyszerűbb az air tcp megoldás ez lehet bt vagy wifin is ez nem érzékeny a uart szint különbségre egy uart több eszköz is párhuzamosan működik ha kell....
arduino+bt hc05=pc virtual (win bt port nem megbízható ) USR-VCOM_Virtual_Serial free
arduino+esp01(wifi serial példa) = pc virtual tcp/com tibbo vsp manager free
(#) KoblogPerGyok válasza Jacksonps2 hozzászólására (») Jún 11, 2019 /
 
Szia!

USB vagy a régi? Nem mindegy, de gondolom USB-s a kapcsolat. Azzal lehet mit kezdeni.
(#) proba válasza pipi hozzászólására (») Jún 11, 2019 /
 
Vagy a rajta lévő konvertert ellátni folyamatosan árammal az USB-ről. Csak a processzort lekapcsolni. Ezeknek egy hátulütője lehet, a soros vonal vezetéke magas szinten lehet, és az egyébként lekapcsolt processzor innét szed áramot, így nem resetelődik rendesen.
(#) alfa008 hozzászólása Jún 12, 2019 /
 
Sziasztok!
Csak néhány hónapja foglalkozom Arduinoval. Az alábbi programban mit kellene átírnom, hogy az lcd-n kijelzett feszültség értéket tizedes jel nélkül jelenítse meg?
  1. #include <LiquidCrystal.h>
  2.  
  3. // number of analog samples to take per reading, per channel
  4. #define NUM_SAMPLES 10
  5. // voltage divider calibration values
  6. #define DIV_1    11.1346
  7. #define DIV_2    11.1969
  8. #define DIV_3    11.0718
  9. #define DIV_4    11.0718
  10. // ADC reference voltage / calibration value
  11. #define V_REF    4.991
  12.  
  13. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  14. int sum[4] = {0};                // sums of samples taken
  15. unsigned char sample_count = 0;  // current sample number
  16. float voltage[4] = {0.0};        // calculated voltages
  17. char l_cnt = 0;                  // used in 'for' loops
  18.  
  19. void setup()
  20. {
  21.     lcd.begin(16, 2);
  22. }
  23.  
  24. void loop()
  25. {
  26.     // take a number of analog samples and add them up
  27.     while (sample_count < NUM_SAMPLES) {
  28.         // sample each channel A2 to A5
  29.         for (l_cnt = 0; l_cnt < 4; l_cnt++) {
  30.             sum[l_cnt] += analogRead(A2 + l_cnt);
  31.         }
  32.         sample_count++;
  33.         delay(10);
  34.     }
  35.     // calculate the voltage for each channel
  36.     for (l_cnt = 0; l_cnt < 4; l_cnt++) {
  37.         voltage[l_cnt] = ((float)sum[l_cnt] / (float)NUM_SAMPLES * V_REF) / 1024.0;
  38.     }
  39.     // display voltages on LCD
  40.     // each voltage is multiplied by the resistor network
  41.     // division factor to calculate the actual voltage
  42.     // voltage 1 - A (pin A2)
  43.     lcd.setCursor(0, 0);
  44.     lcd.print("A ");
  45.     lcd.print(voltage[0] * DIV_1, 1);
  46.     lcd.print("V ");
  47.     // voltage 2 - B (pin A3)
  48.     lcd.setCursor(8, 0);
  49.     lcd.print("B ");
  50.     lcd.print(voltage[1] * DIV_2, 1);
  51.     lcd.print("V ");
  52.     // voltge 3 - C (pin A4)
  53.     lcd.setCursor(0, 1);
  54.     lcd.print("C ");
  55.     lcd.print(voltage[2] * DIV_3, 1);
  56.     lcd.print("V ");
  57.     // voltage 4 - D (pin A5)
  58.     lcd.setCursor(8, 1);
  59.     lcd.print("D ");
  60.     lcd.print(voltage[3] * DIV_4, 1);
  61.     lcd.print("V ");
  62.     // reset count and sums
  63.     sample_count = 0;
  64.     for (l_cnt = 0; l_cnt < 4; l_cnt++) {
  65.         sum[l_cnt] = 0;
  66.     }
  67. }
(#) Nanok hozzászólása Jún 12, 2019 /
 
Sziasztok!

Frekvenciagenerátort szeretnék építeni Arduino-val. 1Mhz-ig kéne működnie, lehetőleg szinusz hullámformával. Megoldható ez, találok ilyen projektet valahol?
(#) Kera_Will válasza Nanok hozzászólására (») Jún 12, 2019 / 1
 
Ahhoz elég gyors órajel kéne , hogy saját maga tudjon szép szinuszt generálni 1 MHz körül.
Jobban jársz ha egy arduino / valamilyen DDS generátor házasságáról szóló projektet keresel.
Ott igazán az arduino meséli el (soros/párhuzamos buszon) a DDS részére azt hogy milyen frekin / hullámformában kellene megszólalnia a DDS kimenetének.Miközben kezeli a kijelzőt és a tekerő gombok állapotát.
Pár kHzig talán tudsz valamennyire szinuszra utaló jelet generálni arduino-val is.
R-2R létrával vagy esetleg PWM-el amit aztán némi R-C vagy L-C szűrés kerekíthet szinusz szerűvé.
Van 1 2 projekt erre , de MHz-es szinusz jelet ne várjál el egy kicsi ATMEGA procitól
A hozzászólás módosítva: Jún 12, 2019
(#) Kovidivi válasza Nanok hozzászólására (») Jún 12, 2019 / 1
 
16MHz órajellel 8MHz-es négyszögjelet tudsz készíteni, 1MHz szinuszra nincs elég prociidő!
(#) Nanok válasza Kovidivi hozzászólására (») Jún 12, 2019 /
 
Értem, valahol sejtettem. Négyszögjelre tudnátok projekt linket ajánlani?
(#) KoblogPerGyok válasza alfa008 hozzászólására (») Jún 12, 2019 /
 
Szia!

Ha csak kiíratásoknál ezt próbáld meg:

lcd.print( (int) (voltage[3] * DIV_4), 1) ; Persze mindenhol. A zárójelek nem tutik. Nézz utána a 'CAST'-nak.

https://www.arduino.cc/en/Reference/Cast

Ennek azonban ára van. 1, lassabb lesz. 2 Nem kerekít egyszerűen levágja. Ha nem tetszenek a round() és a többi, akkor simán írhatsz egy függvényt ami megoldja és a kiíratásnál azt használod.

Én az utóbbit választanám.
(#) Bell hozzászólása Jún 12, 2019 /
 
Sziasztok!
Két bluetooth modullal szeretnék PC-t Arduinoval használni 9600 Baud-al.
Ezt az Arduino oldalra:
  1. AT + BOUD4 //9600 Baud
  2. AT + HOSTEN0 // slave
  3. AT + ADVEN1 // broadcast be
  4. AT + ADVIN0 // 100msec ismétlődési idő
  5. AT + POWR0 // max power
  6. AT + NAMEJDY-08 // név
  7. AT + PASS1234 // jelszó beállítás
  8. AT + MAC // ez a slave MAC címe: 01830EA0662

Ezt a PC-oldalra:
  1. AT + BOUD4 //9600 Baud
  2. AT + HOSTEN1 // master
  3. AT + POWR0 // max power
  4. AT + PASS1234 // jelszó beállítás
  5. AT + BAND001830EA0662 //ez a slave MAC címe

Azt gondolom, hogy a PC bekapcsolása után a két modul kapcsolatba lép egymással és minden egyéb beavatkozás nélkül, oda-vissza lehet 9600 Baud-al adatokat küldeni.
Fog ez így működni?
(#) mateatek válasza Nanok hozzászólására (») Jún 12, 2019 /
 
LGT8F328P-s kontroller 32 MHz-en megy és van benne DAC, illetve Arduino kompatibilis. Azzal tudsz szinuszféle jelet generálni, de 1 MHz-ig nem fogsz tudni elmenni vele.
(#) kapu48 válasza Nanok hozzászólására (») Jún 12, 2019 /
 
Arduino DUE-ben van dac! Azzal megoldható.
(#) kapu48 válasza kapu48 hozzászólására (») Jún 12, 2019 /
 
Lehet, hogy azért az 1MHz megsem közelítették?
Bővebben: Link
(#) Nanok válasza kapu48 hozzászólására (») Jún 12, 2019 /
 
Nekem egy Arduino UNO-m van kijelzővel. Legalább négyszögjelet össze kéne hozni. De nem tudom, hogy lehetne leprogramozni. Nem találok ilyen projektet. Gondolom nem a delay-el kell várakoztatni. Olyasmire gondolok, amin két gombbal lehet állítani a frekvenciát és ki is jelzi.

tone(pin, frequency)
tone(pin, frequency, duration)

A tone parancsot találtam eddig. Ha duration nélkül kiadom, akkor megy folyamatosan?
Most látom ez is csak 65kHz-ig működik.
A hozzászólás módosítva: Jún 12, 2019
(#) KoblogPerGyok válasza Nanok hozzászólására (») Jún 12, 2019 /
 
Négyszögjelnek nem jó az 50% kitöltésű PWM?
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Jún 12, 2019 /
 
De az 1MHz ennek sem kevés.
(#) alfa008 válasza KoblogPerGyok hozzászólására (») Jún 12, 2019 /
 
Köszönöm, de sajnos az első megoldás nem működött megfelelően. A másikat holnap kipróbálom. Egyébként eredetileg arra volna szükségem, hogy 2db potenciométer értékét kijelezzem 0-tól, 100-ig tizedes értékek nélkül.
(#) kapu48 válasza Nanok hozzászólására (») Jún 12, 2019 / 1
 
Az UNOval max: tone(32767)Hz-et érhetsz el!

Közel se jutsz az 1MHz-hez!
A hozzászólás módosítva: Jún 12, 2019
(#) icserny válasza alfa008 hozzászólására (») Jún 13, 2019 / 1
 
Idézet:
„mit kellene átírnom, hogy az lcd-n kijelzett feszültség értéket tizedes jel nélkül jelenítse meg?”


A 45., 50., 55. és 60. sorban az lcd.pint() második paramétere 0 legyen (ez a kiírandó tizedesjegyek száma)!
(#) Nanok válasza kapu48 hozzászólására (») Jún 13, 2019 /
 
De mérni viszont tudna? Itt a képeken éppen egy 7Mhz-es kvarcot mérnek vele. Úgy látom, hogy egészen pontos.

Arduino Frequency Counter
(#) mateatek válasza kapu48 hozzászólására (») Jún 13, 2019 /
 
A tone paranccsal az a max. De a timerek ennél sokkal többet tudnak.
(#) kapu48 válasza mateatek hozzászólására (») Jún 13, 2019 /
 
Ez igaz!
De Nanoknak kész alkalmazás kellene, mivel nem tudja megírni magának!
(#) Jacksonps2 válasza pipi hozzászólására (») Jún 13, 2019 /
 
Szia!

Köszi a tippet! Már ki is tudtam próbálni (volt egy ilyen konverterem egy másik kütyühöz, de ez nem jutott eszmbe...) Köszönöm szépen, szuperül működik!!!
Már csak olyan kérdésem van, hogy most Coolterm nevű serial terminál programmal jelenítem meg az adatokat, ami automatikusan tudja is menteni a gépre egy txt fájlba az adatokat, de vajon van erre valami webserveres megoldás? Vagy az a lényeg , hogy interneten keresztül küldje az adatokat és a gépen vagy neten valahogy automatikusan mentésre kerüljön ami bejön a soros porton.
Még egyszer nagyon köszi!
(#) Jacksonps2 válasza KoblogPerGyok hozzászólására (») Jún 13, 2019 /
 
Igen, USB kapcsolat, de most ezzel a külső konverteres dologgal megoldódott a problémám.
Köszi a segítséget!
(#) pipi válasza Jacksonps2 hozzászólására (») Jún 13, 2019 /
 
Hali!
A kérdésedből "valami" és a "valahová/valahogy" pontosítás tárgyát képezi
(#) Kovidivi válasza Nanok hozzászólására (») Jún 13, 2019 /
 
Gondolom nem egy periódusidőt mér az Arduino, hanem rengeteget egymás után, méri közben az időt, és pl. 100 (vagy ezer) periódusból már elég pontosan meg tudja mondani, hány Hz-es a beérkező jel. 7MHz-nél már csak két prociórajele van az AVR-nek, vagyis kb. két utasítás. Nem elég valami sokra. Egyszer számolni kell az eltelt periódusokat, más részt if-fel össze kell hasonlítani, hogy meg van-e már a mondjuk 100db mérés. Kész, mást nem tud a proci csinálni. Az időt pedig az egyik timer számolja.
Mérésnél lehet így trükközni, de jelet generálni sokkalta nehezebb, és nincsenej kiskapuk sem.
A hozzászólás módosítva: Jún 13, 2019
(#) Jacksonps2 válasza pipi hozzászólására (») Jún 13, 2019 /
 
Hát ez az!
Szóval az lenne a lényeg, hogy most soros porton az arduino és pc között a következőképpen zajlik az áthidalás: arduino - ttl/rs485 átalakító - 20 méter vezeték - rs485/USB konverter - PC. És is az rs485 helyett interneten szeretném küldeni az adatokat az arduinoból a PC-hez. Gondolom, hogy kéne valami ETHERNET modul az arduinohoz, valamint a PC oldalon vagy egy webszerverre mentse el mindig az adatokat vagy a gépen egy fájlba. Van erre valami jó megoldás?
(#) pipi válasza Jacksonps2 hozzászólására (») Jún 13, 2019 /
 
Hali!
Kész megoldásról nem tudok.
Nem mindegy hogy ethernet vagy internet, illetve helyi hálózat...
Ha ethernet, akkor ahhoz úgyanúgy kábel kell, nem egyszerűbb maradni az rs485-nél?
Ha mindenáron hálózatot akarsz, de a PC-re nem akarsz új szoftvert írni, akkor két arduinó ethernet modullal. Az egyik a jelenlegi, de a hálón tcp vagy udp csomagokat küld a PC oldali arduinónak, amit ez visszatesz a soros portra. Webszervert nem kell ide belekeverni.
Következő: »»   538 / 839
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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