1 Wire adatküldés

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

1 Wire adatküldés

Hozzászólás Szerző: kukuri »

Üdvözletem!

Azt szeretném ha egy arduino lapka úgy küldene adatot mint pl a hőmérő szenzorok.
A cél az hogy bármilyen mért értéket úgy letudjak kezelni mint ahogyan azt a DS18B20 esetében megoldottak.
Csinált már valaki ilyent?
Vagy tud valaki egy teljes leírást ami esetleg magyar és könnyebben olvasható mint az angol?
Elsősorban több barométert akarok kiolvasni. Minden barométer mellé raknék egy nano 2.0-át és nem lenne gond több 10 méterről sem a kiolvasás.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 1 Wire adatküldés

Hozzászólás Szerző: Robert »

A probléma:
1-Wire slave eszköz licenszdíjas.... De nem ad el licenszet a MaximDallas.
Következmény: Csak tanulási céllal használható, termék nem lehet belőle!

Arduino alá létezik 1wire slave könyvtár. DE: instabil és nem fedi le teljesen a szabványt :(

Nem jó az I2C?
- visszább vett sebességgel (twi.h-ban 100k helyett 10k)
- kisebb felhúóellenállás (4k7 helyett 1k2)
Így a LowSpeed TWI/I2C teljesül :)

Esetleg rádiós eszköz (433 transmitter - virtualWire eljáráskönyvtár)? ESP8266 WiFi?

1-Wire esetén valamelyik kész modul? DS2438+nyomásszenzor?
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: 1 Wire adatküldés

Hozzászólás Szerző: kukuri »

Szeretném az 1-Wire megtartását. Erre már van szenzor. Így csak hozzá kellene tenni a többit.
Könnyen lehet hogy 20-30 m kábelt is ki kell húzni a két egység között.
Ez a DS2438 a rákötött feszültség értékét küldi ki ha jól látom. Így össze lehetne kötni egy nyomás szenzorral.
BMP180 szenzorokat akarok rákötni. Bár ennek meg lehet nincs analóg kimenete.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 1 Wire adatküldés

Hozzászólás Szerző: Robert »

kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: 1 Wire adatküldés

Hozzászólás Szerző: kukuri »

Köszi, de ha nem lehet belőle termék akkor felejtős az arduinos verzió. :(
Marad a DS2438 + szenzor.
Nézem milyen szenzorok vannak, de nem találok olyant ami analog jelet ad ki és a légköri nyomást méri.
Még mindig a BMP180 van előtérben. Ehhez viszont oda kell tennem egy minit.
Kérdés hogy a PWM jelhez mit szól a DS2438. Mert ha nem tetszik akkor még a PWM et is át kell alakítani analogra.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 1 Wire adatküldés

Hozzászólás Szerző: Robert »

Pl.
http://davidbray.org/onewire/barometer.html


A PWM-> Analóg kell a DS2438-nak :(
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: 1 Wire adatküldés

Hozzászólás Szerző: kukuri »

Ez sem egy rossz megoldásnak tűnik.
A szenzor amit használ még e-bay on is 6 ropi felett van. Ha van valami egyszerű áramkör ami a PWM et analogra átalakítja akkor még az arduinoval együtt is olcsóbbra kijöhet.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 1 Wire adatküldés

Hozzászólás Szerző: Robert »

I2C-s vagy SPI-s Digital - Analog konverterIC.
MCP91xxx (12bites, pl. waveshield tartalmazza)
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: 1 Wire adatküldés

Hozzászólás Szerző: kukuri »

Az volna a durva hogy ha I2C vel működne arduino nélkül. BMP180 is I2C-s. De nyilván kell egy master aki megszólítja őket.
Én eddig a MCP4725 IC-t találtam ami jó lehet.
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: 1 Wire adatküldés

Hozzászólás Szerző: kukuri »

Hali.
Megérkezett a ds2438 ic
2 jött a ferdeszeműektől. bár smd a cucc. Nem volt mibe beletenni ezért kábeleket forrasztottam rá. A 2. ic-nél talán már sikerült s.
Tesztelve az Ic-t a következő van.
ROM kiolvasása után beazonosítva letudom kérni a hőmérsékletet és a két csatorna feszültségét.
A-B csatornaként hívja az arduimo lib. A lenne amit mérek B pedig a betáp.
Bármit kötök az A csatornára nem látok érdembeni változást. Rabszódikusan változik az érték.
  • Temperature = 22.1C, Channel A = 0.0v, Channel B = 3.4v.
    Temperature = 22.1C, Channel A = 0.1v, Channel B = 3.4v.
    Temperature = 22.1C, Channel A = 0.0v, Channel B = 3.3v.
    Temperature = 22.1C, Channel A = 0.0v, Channel B = 3.4v.
    Temperature = 22.1C, Channel A = 0.1v, Channel B = 3.4v.
    Temperature = 22.0C, Channel A = 0.0v, Channel B = 3.5v.
    Temperature = 22.0C, Channel A = 0.1v, Channel B = 3.4v.
    Temperature = 22.1C, Channel A = 0.0v, Channel B = 3.4v.
    Temperature = 22.2C, Channel A = 0.1v, Channel B = 3.4v.
    Temperature = 22.1C, Channel A = 10.2v, Channel B = 3.4v.
    Temperature = 22.1C, Channel A = 0.1v, Channel B = 3.4v.
    Temperature = 22.1C, Channel A = 0.0v, Channel B = 3.3v.
    Temperature = 22.1C, Channel A = 0.0v, Channel B = 3.4v.
    Temperature = 22.1C, Channel A = 0.0v, Channel B = 3.4v.
    Temperature = 22.1C, Channel A = 0.0v, Channel B = 3.4v.
    Temperature = 22.2C, Channel A = 0.1v, Channel B = 3.5v.
    Temperature = 22.1C, Channel A = 0.0v, Channel B = 3.4v.
    Temperature = 22.1C, Channel A = 0.1v, Channel B = 3.4v.
    Temperature = 22.2C, Channel A = 10.2v, Channel B = 3.4v.
    Temperature = 22.2C, Channel A = 0.1v, Channel B = 3.4v.
    Temperature = 22.2C, Channel A = 10.2v, Channel B = 3.3v.
    Temperature = 22.3C, Channel A = 0.1v, Channel B = 3.4v.
    Temperature = 22.2C, Channel A = 0.0v, Channel B = 3.4v.
    Temperature = 22.2C, Channel A = 0.0v, Channel B = 3.4v.
Lehet hogy a forrasztás nem jó és ezért vannak zavarok?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 1 Wire adatküldés

Hozzászólás Szerző: Robert »

Jó a kapcsolás?

Pl: DS2438-ra:
http://home.arcor.de/RoBue/1-Wire/1-Wire.html
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: 1 Wire adatküldés

Hozzászólás Szerző: kukuri »

Az alábbiak szerint kötöttem be:
DQ - Data In/Out
VAD - General A/D input
VSENS+ - Battery current monitor input (+)
VSENS- - Battery current monitor input (-)
VDD - Power Supply (2.4V to 10.0V)
GND - Ground
NC - No connect

VDD - UNO 3,3 V
GND - UNO GND
DQ - UNO 2 pin
Vsens+ és Vsens- ezekre akartam rákötni az elemet vagy bármilyen feszültséget.
A DQ és a VDD között egy 4K7 ellenállás. Adatok meg is vannak.
Most nézve inkább a VAD/GND re kellene kötni a mérni kívánt elemet.
De akkor a Vsens+/Vsens- mire jó?
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: 1 Wire adatküldés

Hozzászólás Szerző: kukuri »

A VAD -re kötve a mérendő eszközt már jobban működik. Tettem rá egy 500K potit. Érdekessége hogy ha teljesen leveszem akkor nem 0 hanem 10.2V az eredmény. Ha nem teljesen kapja meg a betápot akkor már elkezd 0-tól emelkedni.

Innen már csak tovább kell lépnem.
Jöhet az MCP4725 ic. Ezzel megint gondjaim vannak. Nem akar megérkezni a kívánt érték. A kód nem túl hosszú amit találtam.

Kód: Egész kijelölése

/**************************************************************************/
/*! 
    @file     trianglewave.pde
    @author   Adafruit Industries
    @license  BSD (see license.txt)

    This example will generate a triangle wave with the MCP4725 DAC.   

    This is an example sketch for the Adafruit MCP4725 breakout board
    ----> http://www.adafruit.com/products/935
 
    Adafruit invests time and resources providing this open source code, 
    please support Adafruit and open-source hardware by purchasing 
    products from Adafruit!
*/
/**************************************************************************/
#include <Wire.h>
#include <Adafruit_MCP4725.h>

Adafruit_MCP4725 dac;

void setup(void) {
  Serial.begin(9600);
  Serial.println("Hello!");

  // For Adafruit MCP4725A1 the address is 0x62 (default) or 0x63 (ADDR pin tied to VCC)
  // For MCP4725A0 the address is 0x60 or 0x61
  // For MCP4725A2 the address is 0x64 or 0x65
  dac.begin(0x62);
    
  Serial.println("Generating a triangle wave");
}

void loop(void) {
    uint32_t counter;
    // Run through the full 12-bit scale for a triangle wave
    for (counter = 0; counter < 409500; counter++)
    {
      dac.setVoltage(counter, false);
    }
    for (counter = 409500; counter > 0; counter--)
    {
      dac.setVoltage(counter, false);
    }
}
Közben találtam egy másik IC-t is. 1wire memória. DS2431
Az megoldható hogy két arduino dolgozzon egy szenzorra?
Az egyik írja a másik meg olvassa a memóriát. Ha ez így működne akkor egy memória IC vel ki lehetne váltani mindent. Nem is kellene oda vissza alakítani a jelet. Valamint pontosan át lehetne küldeni egy értéket.
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: 1 Wire adatküldés

Hozzászólás Szerző: kukuri »

Újabb infó a DS chipekről.
Amit először kinéztem memória chipet az egy EEPROM. Ami nem jó nekem hosszú távon a rendszeres írás miatt.
A Maxim termékei között megtaláltam ami nekem jó lehet.
Ez a DS2423 https://www.maximintegrated.com/en/prod ... S2423.html Ez eg y 4Kbit memóriás ic. Ennek annyi a baja hogy már nem érhető el. Itt -ott még talán lehet venni.
Tud valaki egy olyan IC-t ami 1 wire és annyiszor írom amennyiszer csak akarom?
kukuri
Bitmanipulátor
Hozzászólások: 132
Csatlakozott: 2014. január 20. hétfő, 12:50

Re: 1 Wire adatküldés

Hozzászólás Szerző: kukuri »

A DS 2423 IC-ről tud valaki kódot?
Amit találtam az a számlálós részéhez van. Nekem pedig a memóriához kellene. A ROM-ot akarom írni és olvasni.
https://github.com/jbechter/arduino-onewire-DS2423
A cpp és h fájlokból lehet már össze tudom rakni ami kell. Bár jó lenne ha valaki szólna pár szót aki találkozott ezzel az IC vel.
Aliexpressen még elérhető, bár elég húzós az ára. Ha még rendelés előtt kiderülne hogy tudom használni arra amire akarom az sokat segítene.
Válasz küldése