3 egyforma I2C eszköz használata egy időben

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
Ecku01
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. szeptember 12. hétfő, 6:00

3 egyforma I2C eszköz használata egy időben

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

Sziasztok!

Van 3 ADSL345-ös gyorsulásmérőm és egy időben szeretném használni mind a hármat egy arduino duemilanove-val.
Wire.h és a ADXL345.h könyvárat használom és kényelmesen tudom kommunikálni egy gyorsulásmérővel.
Hogyan lehet megoldani, hogy 3 gyorsulásmérőt tudja egyszerre használni?

egy gyorsulásmérő egyszerű programja:

#include <Wire.h>
#include <ADXL345.h>
ADXL345 adxl;

int x,y,z;
int alfa;

void setup()
{
adxl.powerOn();
Serial.begin(9600);
}
void loop(){
adxl.readAccel(&x, &y, &z);
alfa = map(atan2(y, x)*180/3.1415, 0, 90, 0, 90);
Serial.println(alfa);
}
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 3 egyforma I2C eszköz használata egy időben

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

Közvetlenül Sehogy.
Egyetlen I2C címe van mind3 eszköznek.

A megoldás: kapcsolgatod a buszt az egyes IC-k közt valamilyen kétirányú átjáróchippel.
Amúgy a könyvtár nélkül a kód nem ér semmit. A *.h és *.cpp állományokat/függvénykönyvtárat egy zip-ben csatold legközelebb kérlek...
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 3 egyforma I2C eszköz használata egy időben

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

Vagy átmész SPI buszos kezelésre és a chipselect lábbal kiválasztod, hogy melyiket akarod használni.
A kód teljes átírása kell hozzá :(

Talán segít:
http://mbed.org/cookbook/ADXL345-Accelerometer
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 3 egyforma I2C eszköz használata egy időben

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

És mi értelme van ebből 3db. tenni 1 lapra?
:lol:
Avatar
Ecku01
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. szeptember 12. hétfő, 6:00

Re: 3 egyforma I2C eszköz használata egy időben

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

Egy 3 részes robotkart építettem, amit 1-1 gyorsulásérzékelővel pontosítanék, és minden karrészre teszek egyet, amikkel szöget fogok mérni.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: 3 egyforma I2C eszköz használata egy időben

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

A SPI vezérlés HW támogatott, ezáltal gyorsabb, mint az IIC.
Viszont megkel csinálnod a három –cs bemenet vezérlését az ADXL345.cpp-ben.

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

ADXL345 Signal Name,	mbed pin
Vcc	                  Vout
Gnd	                  Gnd
SDA	                  p5
SDO	                  p6
SCL	                  p7
CS1	                  p8   // 1 ADXL345 
CS2	                  p?   // 2 ADXL345
CS3	                  p?   // 3 ADXL345
Avatar
Ecku01
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. szeptember 12. hétfő, 6:00

Re: 3 egyforma I2C eszköz használata egy időben

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

Ezt a linket találtam, első egészen ígéretesnek néz ki, viszont nem látom benne, hogy mely lábakra kössem a szenzort (elsőnek csak egyet)
https://github.com/ograff/ADXL345---SPI#readme
Valaki tudna segíteni?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 3 egyforma I2C eszköz használata egy időben

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

Hülye tipp: olyan gyorsulásmérő szenzor, ami 3 irányt tud?

Ami szívatás ezekkel: nem abs. pozíciót ad, hanem elmozdulási gyorsulást:( (gyro)
Így folyamatos összegzés kell, amiből tudod, hogy hol jár...


SPI: 11-12-13as láb (mosi/miso/sck) és ehhez a chipselect.
5V esetén jelszintillesztésről, 3V-s tápról ne feledkezz el!
Avatar
Ecku01
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. szeptember 12. hétfő, 6:00

Re: 3 egyforma I2C eszköz használata egy időben

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

nem elmozdulási gyorsulással fogok számolni, hanem van egy algoritmus ami kiszámolja, hogy hány fokos szögbe álljon be a robotkarrész, az beáll, majd a gyorsulásmérőből 2 irányt felhasználva kiszámolom, hogy hány fokos szögbe áll-t be a kar és ha az eltér az algoritmus által számolt értéktől akkor módosít a karrész helyzetén.
Kissé már felhúzott ez az SPI-s gyorsulásmérő.
Hátha te jobban tudsz guglizni, nem tudnál linkelni egy szerinted működő kódot egy ADXL345-ös gyorsulásmérőhöz, ami SPI busz-t használ?
Avatar
Ecku01
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. szeptember 12. hétfő, 6:00

Re: 3 egyforma I2C eszköz használata egy időben

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

https://www.sparkfun.com/tutorials/240

Ez sem működik nálam, pedig igényesnek tűnik, és mindent úgy kötöttem be ahogy írták :/
ötlet?
Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00

Re: 3 egyforma I2C eszköz használata egy időben

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

Gyorsulásmérővel lehet dőlést mérni ugyanis ilyenkor a nehézségi gyorsulást mérjük, a gond akkor van amikor az ojjektum mozog vagy valami oknál fogva rezeg, ekkor megfelelő algoritmussal egy gyroszkóp + gyorsulásmérővel lehet szöget mérni.
Avatar
Ecku01
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. szeptember 12. hétfő, 6:00

Re: 3 egyforma I2C eszköz használata egy időben

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

Persze, de most nem is ez a problémám, a kar enyhén biztosan remegni fog, de 100 mérést gyorsan átlagolva, viszonylag pontos értéket kapok.
Most a legnagyobb problémám az az, hogy miért nem működnek az SPI könyvtárak amiket találok hozzá... :/
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 3 egyforma I2C eszköz használata egy időben

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

A bekötést hogy végezted?
:!: Arduino - 5V-os, az eszköz 3.3V-os...
Avatar
Ecku01
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. szeptember 12. hétfő, 6:00

Re: 3 egyforma I2C eszköz használata egy időben

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

Az arduinomon van 3,3V-os kivezetés, vagy arra mondod, h a kommunikációs lábakon is 3.3V kellene és az lesz a baj? de olvastam, h 5V-on is elmegy, I2C-n megy 5V-on gond nélkül.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: 3 egyforma I2C eszköz használata egy időben

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

Nem megy el a kommunikációs lábon, mert a chip nem 5V toleráns.
Lehet meg is ölted a gyorsulásmérőket.... :(
Válasz küldése