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   149 / 864
(#) tomat5 válasza kvic hozzászólására (») Szept 2, 2015 /
 
Szia
Csak egy ötlet: Használd az 1db IO-dat órajelként egy 4017-eshez. A kimeneteit meg diódázd meg ellenállásozd össze az igényeid szerint.
(#) kissi válasza tomat5 hozzászólására (») Szept 2, 2015 /
 
Nincs helye, akkor használhatna több lábas kontrollert is !
(#) Kovidivi válasza kvic hozzászólására (») Szept 2, 2015 1 /
 
Akkor hogy jönnek ide a feszültség szintek? Kicsit félrevezettél minket...
Egyébként biztos találnál plusz 1 kimenetet. Pl ha van 1 gombod, akkor az egyszer bemenet (pl.50mS-ként), aztán meg kimenet, ezt váltogatod eléfg gyorsan, és már kész is.
A hozzászólás módosítva: Szept 2, 2015
(#) erdeidominik1999 hozzászólása Szept 3, 2015 /
 
Sziasztok! Az lenne a kérdésem, hogy ha arduval i2c ic-t szeretnék vezérelni, de a kettő között van 15m utp kábel, akkor a jel nem veszik el? Elvileg az ic megy 5v alatt is tehát az áram nem gond csak az i2c jel. Illetve ha az ic külön tápról megy akkor a gnd-ot össze kell kötni au arduval?
(#) kvic válasza Kovidivi hozzászólására (») Szept 3, 2015 /
 
OK, kösz a tippeket! 1.7 / 2.5V onnan jött, hogy ha outputként ekkora fesz.-t adok (jó tudom, PWM, szóval ~130/190-es érték analogWrite()-nak), akkor azt még bírja a LED és megkülönböztethető lesz a fényerő (hátsó világítás vs féklámpa), de azóta olvastam hogy nem érdemes párhuzamba kötni a LEDeket, mivel eltérő lehet a nyitófesz. még azonos típus esetén is, bár nekem eddig nem volt belőle gondom. A bemenet-kimenet váltás jó ötlet, sztem ez lesz... Amúgy a többi 4 IO lábra ezek vannak kötve: 1x motor tranzisztoron keresztül, 1x omnipoláris + 1x lineáris Hall szenzor, 1x indexpár (ez is bemenet-kimenet váltással működik irányonként).
Nincs helyem tényleg, szóval a 4017-es nem játszik meg extra ATTiny sem. A max. méret mikrokontrollerre Arduino Pro Mini, ami 33mm x 18mm, csak praktikusabb a Trinket, az USB miatt.
(#) Kovidivi válasza kvic hozzászólására (») Szept 3, 2015 /
 
És hol marad a skicc?
LED-et párhuzamosan tényleg ne köss! Ha van két IO-d, akkor már meg is van oldva a probléma. LED-et tudsz párhuzamosan kötni, ha mindegyik előtt van soros ellenállás.
(#) k3gy3tl3n hozzászólása Szept 3, 2015 /
 
Sziasztok, rendeltem 2 arduino nano-t, ezen ATmega328 uc van 6 db pwm lábbal eddig ok. Ha jól tudom ebből a hatból kettő jár 16 bites timerről amivel pontosan belehet állítani a servóhoz szükséges 20ms periódusidejű pwm jelet. A kérdés: a másik 4 lábra is köthetek servo-t? Mert elvileg 8 bites timerrel nem lehet pontosan 20ms-es PWM jelet csinálni.
(#) kissi válasza erdeidominik1999 hozzászólására (») Szept 3, 2015 /
 
I2C --> Inter IC ( IC-k közötti kapcsolat a PANELEN ! ), ez nem a méteres kapcsolatokra van kitalálva, hanem 10-15 cm-re ( alacsony sebességgel, jó kábellel, szerencsével megnövekedhet, de akkor sem jó a 15 m-es összeköttetésre! ) !
(#) teglascs válasza kissi hozzászólására (») Szept 3, 2015 /
 
Ilyenkor a 1Wire játszik?
(#) kissi válasza teglascs hozzászólására (») Szept 3, 2015 /
 
10-15 m-t simán lehet 1-wire-el vagy RS485-el !
(#) erdeidominik1999 válasza kissi hozzászólására (») Szept 3, 2015 /
 
De az 1Wire nem ugyan az, mint a sima wire, ugye? Én sima wire libre gondoltam.
(#) kissi válasza erdeidominik1999 hozzászólására (») Szept 3, 2015 /
 
Nem használtam az Arduino könyvtárait még , csak PIC-el a Dallas cuccait !
(#) teglascs válasza erdeidominik1999 hozzászólására (») Szept 3, 2015 /
 
Itt az I2C 4 kábele helyett csak 3 kell, de távolságban többet tud.
Google képek.
Könyvtár nyilván kell hozzá.
(#) teglascs válasza erdeidominik1999 hozzászólására (») Szept 3, 2015 /
 
Figyi, annyi mindent csináltál már Arduinoval: pl. DS18B20-szal nem mértél még hőmérsékletet?
Sztem ez lehet az egyik leggyakrabban használt 1Wire eszköz.
(#) erdeidominik1999 válasza teglascs hozzászólására (») Szept 3, 2015 /
 
Nem mértem még, viszont 1 wire-hez is van I/0 ic? Nekem 8 és 16 bites is kéne. Illetve analóg ic is van hozzá?
(#) teglascs válasza erdeidominik1999 hozzászólására (») Szept 3, 2015 /
 
Erre válaszoljanak a nálam nagyobb tudásúak: kezdő vagyok még. (értsd: fogalmam sincs...)
(#) kisedison válasza erdeidominik1999 hozzászólására (») Szept 3, 2015 /
 
Akassz a 1wire busz másik végére is egy arduinot, ott meg azt csinálsz amit akarsz, pl teleaggathatod i2c io expanderekkel.
(#) Kovidivi válasza kisedison hozzászólására (») Szept 3, 2015 /
 
De ha már ott az Arduino, akkor máris kapott tizenvalahány kimenetet!
(#) morgo hozzászólása Szept 3, 2015 /
 
Sziasztok! Egy hőmérővel szenvedek. DS1820 szenzorral semmi gondom, viszont 18B20 semmi hajlandóságot nem mutat. A DallasTemperature és az OnWire több verzióját is próbáltam, de nincs eredmény. Az *.ino-ba kell valami plusz, hogy kommunikáljon a B szenzorral?
Két hőmérő működik egy vezetéken.
A hozzászólás módosítva: Szept 3, 2015
(#) Balázs válasza morgo hozzászólására (») Szept 3, 2015 /
 
Én egyszer írtam saját drivert 18B20-hoz, ugyan nem Arduinohoz, de talán segít, a parancsok látszanak benne.

  1. float ds18b20GetTemperature(){
  2.         int16_t reg;
  3.         ds18b20Reset();
  4.         ds18b20SendByte(0xCC); //skip ROM (csak 1-eszkoz van, nem kell cimezni)
  5.         ds18b20SendByte(0x44); //konverzio elinditasa
  6.         while(!ds18b20ReadBit()) ; //megvarjuk a konverzio veget
  7.         ds18b20Reset();
  8.         ds18b20SendByte(0xCC); //skip ROM
  9.         ds18b20SendByte(0xBE); //kiolvassuk az erteket a DS18B20 regisztereibol
  10.         reg=ds18b20ReadByte();
  11.         reg+=ds18b20ReadByte()<<8;
  12.         return reg*0.0625;
  13. }


Szerintem kicsit zavaró, hogy a kódban is kiemeli a fórummotor a HEStore-os ajánlatokat...
A hozzászólás módosítva: Szept 3, 2015
(#) saua válasza morgo hozzászólására (») Szept 3, 2015 /
 
próbáld ki esetleg ezt:

  1. #include <OneWire.h>
  2.  
  3. // OneWire DS18S20, DS18B20, DS1822 Temperature Example
  4. //
  5. //
  6. // The DallasTemperature library can do all this work for you!
  7.  
  8. OneWire  ds(10);  // on pin 10
  9.  
  10. void setup(void) {
  11.   Serial.begin(9600);
  12. }
  13.  
  14. void loop(void) {
  15.   byte i;
  16.   byte present = 0;
  17.   byte type_s;
  18.   byte data[12];
  19.   byte addr[8];
  20.   float celsius, fahrenheit;
  21.  
  22.   if ( !ds.search(addr)) {
  23.     Serial.println("No more addresses.");
  24.     Serial.println();
  25.     ds.reset_search();
  26.     delay(250);
  27.     return;
  28.   }
  29.  
  30.   Serial.print("ROM =");
  31.   for( i = 0; i < 8; i++) {
  32.     Serial.write(' ');
  33.     Serial.print(addr[i], HEX);
  34.   }
  35.  
  36.   if (OneWire::crc8(addr, 7) != addr[7]) {
  37.       Serial.println("CRC is not valid!");
  38.       return;
  39.   }
  40.   Serial.println();
  41.  
  42.   // the first ROM byte indicates which chip
  43.   switch (addr[0]) {
  44.     case 0x10:
  45.       Serial.println("  Chip = DS18S20");  // or old DS1820
  46.       type_s = 1;
  47.       break;
  48.     case 0x28:
  49.       Serial.println("  Chip = DS18B20");
  50.       type_s = 0;
  51.       break;
  52.     case 0x22:
  53.       Serial.println("  Chip = DS1822");
  54.       type_s = 0;
  55.       break;
  56.     default:
  57.       Serial.println("Device is not a DS18x20 family device.");
  58.       return;
  59.   }
  60.  
  61.   ds.reset();
  62.   ds.select(addr);
  63.   ds.write(0x44,1);         // start conversion, with parasite power on at the end
  64.  
  65.   delay(1000);     // maybe 750ms is enough, maybe not
  66.   // we might do a ds.depower() here, but the reset will take care of it.
  67.  
  68.   present = ds.reset();
  69.   ds.select(addr);    
  70.   ds.write(0xBE);         // Read Scratchpad
  71.  
  72.   Serial.print("  Data = ");
  73.   Serial.print(present,HEX);
  74.   Serial.print(" ");
  75.   for ( i = 0; i < 9; i++) {           // we need 9 bytes
  76.     data[i] = ds.read();
  77.     Serial.print(data[i], HEX);
  78.     Serial.print(" ");
  79.   }
  80.   Serial.print(" CRC=");
  81.   Serial.print(OneWire::crc8(data, 8), HEX);
  82.   Serial.println();
  83.  
  84.   // convert the data to actual temperature
  85.  
  86.   unsigned int raw = (data[1] << 8) | data[0];
  87.   if (type_s) {
  88.     raw = raw << 3; // 9 bit resolution default
  89.     if (data[7] == 0x10) {
  90.       // count remain gives full 12 bit resolution
  91.       raw = (raw & 0xFFF0) + 12 - data[6];
  92.     }
  93.   } else {
  94.     byte cfg = (data[4] & 0x60);
  95.     if (cfg == 0x00) raw = raw << 3;  // 9 bit resolution, 93.75 ms
  96.     else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
  97.     else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
  98.     // default is 12 bit resolution, 750 ms conversion time
  99.   }
  100.   celsius = (float)raw / 16.0;
  101.   fahrenheit = celsius * 1.8 + 32.0;
  102.   Serial.print("  Temperature = ");
  103.   Serial.print(celsius);
  104.   Serial.print(" Celsius, ");
  105.   Serial.print(fahrenheit);
  106.   Serial.println(" Fahrenheit");
  107. }


ez tulajdonképpen a Minták/ OneWire/ Ds18x20_Temperature példa
(#) morgo válasza saua hozzászólására (») Szept 3, 2015 /
 
Köszi, de ezzel nem tudok mit kezdeni. Sík hülye vagyok a programozáshoz, az arduinos programot is találtam valami orosz oldalon, azt alakítottam át. Na meg nem is arduinora van feltöltve, csak egy mezei mega8-ra, így ki se tudnám próbálni a soros porttal. Inkább arra szeretnék tanácsot kapni, hogy mi okozhatja a "B"-s problémát. Pedig elvileg mennie kéne tudtommal.
(#) saua válasza morgo hozzászólására (») Szept 3, 2015 /
 
egy érdekes cikk: DS1820 vagy DS18B20?

"A DS18B20 és a DS1820 chipek gyakorlatilag egymás helyettesítésére is használhatóak"
A hozzászólás módosítva: Szept 3, 2015
(#) morgo válasza saua hozzászólására (») Szept 3, 2015 /
 
A 1820 megy rendesen. A 18B20 ki van akadva, hol 85 fokra, hol 127-re.
(#) Balázs válasza morgo hozzászólására (») Szept 3, 2015 /
 
A 85 fok az inicializálás után a regiszterben lévő érték, ezt írja is az adatlap. Ez azt jelzi, hogy a kommunikáció működik, de a konverzió elindítása (0x44) parancs kimaradt. Viszont a bizonytalanság jelezhet időzítési problémát is.
(#) morgo válasza Balázs hozzászólására (») Szept 3, 2015 /
 
Igen, de ezeknek a DallasTemperature-ben kéne lenni. Vagy az OnWire-ben. A dallas helpje azt írja, hogy jó a B-hez is.
(#) Balázs válasza morgo hozzászólására (») Szept 3, 2015 /
 
A OneWire-ben semmiképp, az csak a protokollt implementálja, a szenzor belső lelkivilágához nincs köze. Itt van egy jó kis leírás erről a szenzorról Arduinóhoz.
(#) morgo válasza Balázs hozzászólására (») Szept 3, 2015 /
 
Átnézem, aztán reggel folytatom. Köszi!
(#) teglascs válasza Balázs hozzászólására (») Szept 3, 2015 /
 
...127 pedig a 8 bit végig 1-essel feltöltve, azaz szintén nem valós/mért adat.
(#) erdeidominik1999 válasza Kovidivi hozzászólására (») Szept 3, 2015 /
 
Akkor a legjobb megoldás: 1wire, és egy nano a másik végére, és megvan a digitális és az anlóg is. A másik kérdésem, tudom már volt róla szó, de nem kaptam kielégítő választ, hogy azt csinálja a due-m, hogy ha áramot adok nek, és 5mp-nél többet volt áram nélkül, akkor nem indul el a progi rajta, csak ha nyomok egy resetet. Olvastam már egy csomót az arduinó fórumon, sok embernek ez a problémája, de nem találtam működő megoldást, viszont egyet nem tudtam kipróbálni, azt írták, hogy töltsem fel külső programozóval a progit rá, mert így nem indul el a bootloader. Kérdésem: van különbség a külső programozóval töltött program és az usb-n keresztül töltött között? És lehet-e egy másik arduval feltölteni külső programozó helyett, mert akkor nem vennék... Előre is köszi!
Következő: »»   149 / 864
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