Propeller im Quadrocopter
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller im Quadrocopter
Die Änderungen brachten auch kein Erfolg.
Da ich nicht vorhabe das Teil ein weiteres mal zu schrotten bekommt jetzt wie ursprünglich gedacht jeder Sensor seine eigene Anbindung und siehe da es geht. Trotz Videoausgabe komme ich auf ca. 40 Messungen/sec.
Das nächste Ziel ist das jeder sensor mit seinem eigenem COG läuft.
WIKI überarbeitet http://hive-project.de/wiki/sen_gyro_itg3200:start
Da ich nicht vorhabe das Teil ein weiteres mal zu schrotten bekommt jetzt wie ursprünglich gedacht jeder Sensor seine eigene Anbindung und siehe da es geht. Trotz Videoausgabe komme ich auf ca. 40 Messungen/sec.
Das nächste Ziel ist das jeder sensor mit seinem eigenem COG läuft.
WIKI überarbeitet http://hive-project.de/wiki/sen_gyro_itg3200:start
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- drohne235
- Administrator
- Beiträge: 2284
- Registriert: So 24. Mai 2009, 10:35
- Wohnort: Lutherstadt Wittenberg
- Kontaktdaten:
Re: Propeller im Quadrocopter
Wie du schon auf dem KC-Treffen angemerkt hast, ist es wahrscheinlich aus Sicherheitsgründen eh besser, wenn die Sensoren getrennt sind, damit nicht ein Baustein den ganzen Bus blockiert. Kostet mehr Pin`s, aber in Verbindung mit einer eigenen COG wahrscheinlich extrem sicher, wenn nicht gerade die ganze Bordstromversorgung ausfällt.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller im Quadrocopter
Bei einem Sensor Ausfall kommt es unweigerlich zum Absturz das ist immer so.
Nur die Warscheinlichkeit das sich sie Busteilnehmer oder Software Teile sich gegenseitig Stören ist damit geringer.
So 9 Stunden dauertest und alles funktioniert noch.
So und jetzt noch Sensorsoftwate auf die COG's verteilen.
Nur die Warscheinlichkeit das sich sie Busteilnehmer oder Software Teile sich gegenseitig Stören ist damit geringer.
So 9 Stunden dauertest und alles funktioniert noch.
So und jetzt noch Sensorsoftwate auf die COG's verteilen.
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller im Quadrocopter
Kleiner Test 58 Sensorloop's in der Sekunde. Mit VGA.CLS und ausgabe eines Zählers.
Aber wenn ich den ADXL345 in einen COG laufen lasse kommt er wieder mit dem HMC5843 ins gehege. also I2C Treiber umbauen.
Aber wenn ich den ADXL345 in einen COG laufen lasse kommt er wieder mit dem HMC5843 ins gehege. also I2C Treiber umbauen.
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller im Quadrocopter
COG-Modul für ITG3200 : http://hive-project.de/wiki/sen_gyro_itg3200:start
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Re: Propeller im Quadrocopter
Hallo!
Ein paar Fragen zu dem Projekt :
Wie steuerst Du das Gerät eigentlich?
Mit einer klassischen Fernsteuerung oder via http-Server (siehe http/ftp-Fred) und Browser auf dem Smartfone. Oder läßt Du das Teil autark mit eingegebenem Einsatzplan fliegen (quasi als Roboter).
Machst Du noch ein Notprogramm um das Teil noch halbwegs ganz zu Boden zu bringen wenn Sensoren versagen oder machst Du redundante Sensorzweige?
Kriegen die Rotoren noch einen Berührungsschutz. Solche Propeller, auch wenn sie von einem E-Motor angetrieben werden, können einem ganz schön die Pelle aufschlitzen (eigene und fremde Erfahrung im Verein). Nun ja die Rotoren von normalen Hubis sind ja auch nicht ohne.
Gruß
TuxFan
Ein paar Fragen zu dem Projekt :
Wie steuerst Du das Gerät eigentlich?
Mit einer klassischen Fernsteuerung oder via http-Server (siehe http/ftp-Fred) und Browser auf dem Smartfone. Oder läßt Du das Teil autark mit eingegebenem Einsatzplan fliegen (quasi als Roboter).
Machst Du noch ein Notprogramm um das Teil noch halbwegs ganz zu Boden zu bringen wenn Sensoren versagen oder machst Du redundante Sensorzweige?
Kriegen die Rotoren noch einen Berührungsschutz. Solche Propeller, auch wenn sie von einem E-Motor angetrieben werden, können einem ganz schön die Pelle aufschlitzen (eigene und fremde Erfahrung im Verein). Nun ja die Rotoren von normalen Hubis sind ja auch nicht ohne.
Gruß
TuxFan
Wunder gibt es immer wieder.......
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller im Quadrocopter
autark mit eingegebenem EinsatzplanPIC18F2550 hat geschrieben:Wie steuerst Du das Gerät eigentlich?
weder nochTuxFan hat geschrieben:Machst Du noch ein Notprogramm um das Teil noch halbwegs ganz zu Boden zu bringen wenn Sensoren versagen oder machst Du redundante Sensorzweige
Ein Notprogramm ohne Lageregelung bringt nichts daher Motoren Aus und mit Hupsignal abwerts.
nein ist auf dem Feld nicht von nöten und beim Abdriften wegen Fehler werden alle Rotoren Ausgeschaltet(GPS)TuxFan hat geschrieben:Kriegen die Rotoren noch einen Berührungsschutz
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller im Quadrocopter
Es ist schon ein Ding der ITG-3200 geht mit dem HMC5843 nicht zusammen am Prop selbst auf unterschiedlichen port's und in seperaten COG's wollwn sie nicht.
beide arbeiten aber mit den ATXL345 ohne Probleme.
Der HMC5843 liefert keine werte oder vollkommenen plötsinn.
Werd mir nochmal das lmm-tim projekt von Parallax anschauen vieleicht mache ich da was falsch.
beide arbeiten aber mit den ATXL345 ohne Probleme.
Der HMC5843 liefert keine werte oder vollkommenen plötsinn.
Werd mir nochmal das lmm-tim projekt von Parallax anschauen vieleicht mache ich da was falsch.
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 2836
- Registriert: Fr 30. Sep 2011, 13:08
Re: Propeller im Quadrocopter
Viel Ärger mit einem schlechten Steckbord. Irgendwie habe ich mit dem Ding von Conrad in die S... gegriffen.
Da ich die vielzahl von Änderungen nicht mehr herauspusseln wollte habe ich kurzerhand das die Sensorabfrage in Spinn neu geschrieben.
Von der Verteilung auf mehrere COG's und Pinn's habe ich mich auch getrennt.
So hier was zum lesen
WIKI zum ITG3200 http://hive-project.de/wiki/sen_gyro_itg3200:start
WIKI zum ADXL345 http://hive-project.de/wiki/sen_beschl_adxl345:start
WIKI zum EMC5843 http://hive-project.de/wiki/sen_komp_emc5843:start
WIKI zum I²C Treiber http://hive-project.de/wiki/i2c:treiber
Da ich die vielzahl von Änderungen nicht mehr herauspusseln wollte habe ich kurzerhand das die Sensorabfrage in Spinn neu geschrieben.
Von der Verteilung auf mehrere COG's und Pinn's habe ich mich auch getrennt.
So hier was zum lesen
Code: Alles auswählen
CON
_clkmode = xtal1 + pll16x
_xinfreq = 5_000_000
#0, SCL 'pin 0 I2C SCL
SDA 'pin 1 I2C SDA
GPSTX 'pin 2 RS232
GPSRX 'pin 3
#8, BLC1TX 'pin 8 BLC1 - motor front right send
BLC1RX 'pin 9 BLC1 - motor front right empf
BLC2TX 'pin 10 BLC2 - motor front left send
BLC2RX 'pin 11 BLC2 - motor front left empf
BLC3TX 'pin 12 BLC3 - motor back right send
BLC3RX 'pin 13 BLC3 - motor back right empf
BLC4TX 'pin 14 BLC3 - motor back left send
BLC4RX 'pin 15 BLC3 - motor back left empf
#16, VGA_BASEPIN 'pin 16-24 VGA-Anschluß
#24,
#28, I2C_SCL_EPROM 'pin 28 BOOT-EEPROM
I2C_SDA_EPROM 'pin 29 BOOT-EEPROM
DEBUG_RS232_TX 'pin 30 DEBUG_RS232
DEBUG_RS232_RX 'pin 31 DEBUG_RS232
CON ' All the I2C registers for the ITG-3200 gyro I2C address maximum bus speed is 400kHz.
' ITG3200 = %1101_0010 '0xD0 if tied low, 0xD2 if tied high
ITG3200 = %1101_0000
ITG3200_WHO_AM_I = $00 {{R/W ID(6-1)}}
ITG3200_SMPLRT_DIV = $15 {{R/W SMPLRT_DIV(7-0)}}
ITG3200_DLPF_FS = $16 {{R/W FS_SEL(4-3) DLPF_CFG(2-0)}}
ITG3200_INT_CFG = $17 {{R/W ACTL(7) OPEN(6) LATCH_INT_EN(5) INT_ ANYRD_2CLEAR(4) ITG_RDY_EN(2) RAW_ RDY_ EN(0)}}
ITG3200_INT_STATUS = $1A {{R ITG_RDY(2) RAW_ DATA_ RDY(0)}}
ITG3200_TEMP_OUT_H = $1B {{R TEMP_OUT_H(7-0)}}
ITG3200_TEMP_OUT_L = $1C {{R TEMP_OUT_L(7-0)}}
ITG3200_GYRO_XOUT_H = $1D {{R GYRO_XOUT_H(7-0)}}
ITG3200_GYRO_XOUT_L = $1E {{R GYRO_XOUT_L(7-0)}}
ITG3200_GYRO_YOUT_H = $1F {{R GYRO_YOUT_H(7-0)}}
ITG3200_GYRO_YOUT_L = $20 {{R GYRO_YOUT_L(7-0)}}
ITG3200_GYRO_ZOUT_H = $21 {{R GYRO_ZOUT_H(7-0)}}
ITG3200_GYRO_ZOUT_L = $22 {{R GYRO_ZOUT_L(7-0)}}
ITG3200_PWR_MGM = $3E {{R/W H_RESET(7) SLEEP(6) STBY_XG(5) STBY_YG(4) STBY_ZG(3) CLK_SEL(2-1)}}
CON 'All the I2C registers for the ADXL345
' ADXL345 = %0011_1010 acc I2C address maximum bus speed is 100kHz.
ADXL345 = %1010_0110
ADXL345_ID = $00
ADXL345_BW_RATE = $2C
ADXL345_POWER_CTL = $2D
ADXL345_DATA_FORMAT = $31
ADXL345_OUTX_L = $32
ADXL345_OUTX = $33
ADXL345_OUTY_L = $34
ADXL345_OUTY = $35
ADXL345_OUTZ_L = $36
ADXL345_OUTZ = $37
ADXL345_FIFO_CTL = $38
CON 'All the I2C registers for the HMC5843 mag I2C address maximum bus speed is ???kHz.
HMC5843 = %0011_1100
HMC5843_CONFIG_A = $00
HMC5843_CONFIG_B = $01
HMC5843_MODE = $02
HMC5843_DATA_X_MSB = $03
HMC5843_DATA_X_LSB = $04
HMC5843_DATA_Y_MSB = $05
HMC5843_DATA_Y_LSB = $06
HMC5843_DATA_Z_MSB = $07
HMC5843_DATA_Z_LSB = $08
HMC5843_STATUS = $09
HMC5843_ID_A = $0A
HMC5843_ID_B = $0B
HMC5843_ID_C = $0C
OBJ '1 Cog here
vga : "vga_text"
DAT
TXT008 byte "ok ", 13, 0
TXT009 byte "failed", 13, 0
TXT010 byte "DEBUG: ITG-3200 HMC5843 ADXL345", 13, 0
TXT011 byte 1, "ITG-3200 init: ", 0
TXT012 byte "ADXL345 init: ", 0
TXT013 byte "HMC5843 init: ", 0
VAR
long XG, YG, ZG, TG 'Gyro
long XA, YA, ZA 'Acc
long XC, YC, ZC 'Compass
long time
PUB main | a, b, c
vga.start(VGA_BASEPIN)
' vga.str(@TXT010)
waitcnt(clkfreq + cnt) 'start-up delay
repeat
'******************************************************************************************************
' a := gyro.Initi(I2C_SCL1, I2C_SDA1, @XG, @YG, @ZG, @Temp) 'init itg3200
vga.str(@TXT011)
XG := YG := ZG := TG := 0
WriteLocation(ITG3200, ITG3200_PWR_MGM, %1000_0000) 'reset to defaults
waitcnt(clkfreq/200 + cnt) '5ms
WriteLocation(ITG3200, ITG3200_DLPF_FS, %0001_1010) '2000/sec, 1Khz, 98Hz low pass
WriteLocation(ITG3200, ITG3200_SMPLRT_DIV, %0000_0011) '4 samples per sample
WriteLocation(ITG3200, ITG3200_PWR_MGM, %0000_0001) 'PLL with X Gyro reference
WriteLocation(ITG3200, ITG3200_INT_CFG, %0000_0001) 'Enable data ready status
readLocation (ITG3200, ITG3200_INT_STATUS) 'reset data ready
if ((readLocation(ITG3200, ITG3200_WHO_AM_I)<<1)&$FC) == (ITG3200 & $FC) 'check device id
vga.str(@TXT008)
else
vga.str(@TXT009)
'******************************************************************************************************
' b := acc.Init(I2C_SCL2) 'init adxl345, default to ±16G
vga.str(@TXT012)
XA := YA := ZA := 0
if ReadLocation(ADXL345, ADXL345_ID) == %1110_0101
WriteLocation(ADXL345, ADXL345_POWER_CTL, %0000_0000) 'Standby mode
WriteLocation(ADXL345, ADXL345_POWER_CTL, %0000_1000) 'Measurement mode
WriteLocation(ADXL345, ADXL345_DATA_FORMAT, %0000_1000) '±2G
' WriteLocation(ADXL345, ADXL345_DATA_FORMAT, %0000_1001) '±4G
' WriteLocation(ADXL345, ADXL345_DATA_FORMAT, %0000_1010) '±8G
' WriteLocation(ADXL345, ADXL345_DATA_FORMAT, %0000_1011) '±16G
WriteLocation(ADXL345, ADXL345_BW_RATE, %0000_1010) '100Hz
WriteLocation(ADXL345, ADXL345_POWER_CTL, %0000_1000)
WriteLocation(ADXL345, ADXL345_FIFO_CTL, %0000_0000) 'bypass mode
vga.str(@TXT008)
else
vga.str(@TXT009)
'******************************************************************************************************
' c := compass.Init(I2C_SCL3, I2C_SDA3, @XC, @YC, @ZC) 'init compass
vga.str(@TXT013)
' FourFive := _FourFive
writeValue(HMC5843, HMC5843_ID_A)
if readValue24(HMC5843) == $00483433'"H43"
vga.str(@TXT008)
else
vga.str(@TXT009)
writeLocation(HMC5843, HMC5843_CONFIG_A, $3C)
writeLocation(HMC5843, HMC5843_CONFIG_B, $02)
writeLocation(HMC5843, HMC5843_MODE, $00)
'******************************************************************************************************
if readLocation(ITG3200, ITG3200_INT_STATUS) & 1
XG := readLocation16(ITG3200, ITG3200_GYRO_XOUT_H)
vga.hex(XG,4)
vga.out(" ")
YG := readLocation16(ITG3200, ITG3200_GYRO_YOUT_H)
vga.hex(YG,4)
vga.out(" ")
ZG := readLocation16(ITG3200, ITG3200_GYRO_ZOUT_H)
vga.hex(ZG,4)
vga.out(" ")
TG := readLocation16(ITG3200, ITG3200_TEMP_OUT_H)
vga.hex(TG,4)
vga.out(" ")
vga.out($0D)
'******************************************************************************************************
XA := readLocation16(ADXL345, ADXL345_OUTX_L)
XA := (XA>>8 + XA <<8) & $FFFF ' H<>L
vga.hex(XA,4)
vga.out(" ")
YA := readLocation16(ADXL345, ADXL345_OUTY_L)
YA := (YA>>8 + YA <<8) & $FFFF ' H<>L
vga.hex(YA,4)
vga.out(" ")
ZA := readLocation16(ADXL345, ADXL345_OUTZ_L)
ZA := (ZA>>8 + ZA <<8) & $FFFF ' H<>L
vga.hex(ZA,4)
vga.out(" ")
vga.out($0D)
'******************************************************************************************************
XC := readLocation16(HMC5843, HMC5843_DATA_X_MSB)
vga.hex(XC,4)
vga.out(" ")
YC := readLocation16(HMC5843, HMC5843_DATA_Y_MSB)
vga.hex(YC,4)
vga.out(" ")
ZC := readLocation16(HMC5843, HMC5843_DATA_Z_MSB)
vga.hex(ZC,4)
vga.out(" ")
' hier i2c.spin einfügen
WIKI zum ADXL345 http://hive-project.de/wiki/sen_beschl_adxl345:start
WIKI zum EMC5843 http://hive-project.de/wiki/sen_komp_emc5843:start
WIKI zum I²C Treiber http://hive-project.de/wiki/i2c:treiber
Zuletzt geändert von PIC18F2550 am Mo 8. Okt 2012, 12:47, insgesamt 5-mal geändert.
Gruß
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
PIC18F2550
drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Re: Propeller im Quadrocopter
Moin moin!
Ich will ja nicht meckern, aber wäre es für die Übersichtlichkeit der gesamten Threadseite nicht günstiger solch langen Code als .PDF anzuhängen?
Gruß
TuxFan
Ich will ja nicht meckern, aber wäre es für die Übersichtlichkeit der gesamten Threadseite nicht günstiger solch langen Code als .PDF anzuhängen?
Gruß
TuxFan
Wunder gibt es immer wieder.......