| Autor | Neuer Beitrag |
| | |
| Mitglied Registriert seit: Mar 2009 Beiträge: 2 | Hallo Zusammen
Ich möchte die BL-Regler über I2C ansteuern. Jedoch verwende ich momentan eine andere Controller Plattform für den Regler (nicht Flight-Ctrl). Welche Daten kann bzw. muss ich dem BL-Ctrl über I2C senden. Ich nehme an, dass ich die Sollwertvorgabe für die Drehzahl des Motors irgendwie vorgeben kann. Wie muss ich das dem BL-Ctrl senden? Gibt es noch andere Befehle, die ich dem BL-Regler senden kann? Irgendwie bin ich aus dem Quellcode leider nicht ganz schlau geworden.
Vielen Dank für eure Hilfe!
Gruss Lukas |
| | |
| Mitglied Registriert seit: Jun 2008 Beiträge: 101 | du schickst zuerst die adresse des reglers z.b. 0x52 und dann den power wert zwischen 0 und 255, ne drehzahlregelung gibts nich  |
| | |
| Mitglied Registriert seit: Mar 2009 Beiträge: 2 | Danke! Werd das mal so versuchen...
Gruss Lukas |
| | |
| Mitglied Registriert seit: Jan 2010 Beiträge: 1 Ort: Siegen | kalli meinte du schickst zuerst die adresse des reglers z.b. 0x52 und dann den power wert zwischen 0 und 255, ne drehzahlregelung gibts nich 
Ich hab das gemacht und funktioniert. Danke. Aber warum 0x52? Die addresse muss 0x02 sein. Woher kommt diese 5? Danke Hamid |
| | |
| Mitglied Registriert seit: May 2009 Beiträge: 1115 Ort: Ba-Wü | brightplanet62 meinte Ich hab das gemacht und funktioniert. Danke. Aber warum 0x52? Die addresse muss 0x02 sein. Woher kommt diese 5? 
Das ist eben die Adresse im hex-Code: Adresse 0x52 für Motor 1, Adr 0x54 für Motor 2 und so weiter. Ist z.B. hier beschrieben: http://forum.mikrokopter.de/topic-post142222.html#post142222_______________ Mit dem Zweiten fliegt man besser...! |
| | |
| Mitglied Registriert seit: Jan 2009 Beiträge: 356 Ort: Zürich | Hi, I2C address = 0x28 + motorNumber The value you write into the AVRs TWDR register when setting the address = I2C address * 2. Add 1 for read, 0 for write. So MotorNumber I2CAddress TWDR(write) 1 0x29 0x52 2 0x2a 0x54 3 0x2b 0x56 4 0x2c 0x58 ................ The 0x28 could be replaced by anything else that is not 0, and does not collide with anything else on the bus. It should of course be replaced on both the master (FC) and the slave (BLC) ends. Regards Soren « Bearbeitet von dongfang am 28.01.2010 17:05. » |
| | |
| Mitglied Registriert seit: Feb 2010 Beiträge: 1 | Hi, Ich wird auch eine andere Controller Platform benutzen für meinen Oktokopter und ich habe ein paar Frage über dies I2C Daten : - Zitat den power wert zwischen 0 und 255
Meint das, dass 0 ein null power (der Motor dreht nicht) entspricht und dass 255 die maximum Leistung entspricht ? Ist diese 'scale' eben linear ? In jenem Fall, ist die Auflösung fein genug, um den Kopter genau zu steuern ? - Zitat I2C address = 0x28 + motorNumber
Stimmt das auch für das OktoKopter, mit 8 Motoren ? Danke Rose |
| | |
| Mitglied Registriert seit: Nov 2009 Beiträge: 5 | Ich habe das gleiche vor. Die Ansteuerung der einzelnen Motoren klappt auch wunderbar, nur wenn ich eine 0 (als uint8_t) an die BL-Ctrl sende, dann dreht er trotzdem noch und das nicht gerade langsam. Auch Stufe 1 ist wesentlich schneller als das, was man vom Motortest aus dem Mikrokopter-Tool an Drehzahl bekommt, wenn man da die selbe Stufe einstellt.
Kann mir da jemand helfen?
Danke schonmal! |
| | |
| MK-Betatester Registriert seit: May 2007 Beiträge: 2028 Ort: Liebenburg | Hallo Das kann nicht sein. Definitiv bei Sollwert 0 steht der Motor. Sollwert 1 da laufen nicht alle Motore mit, zu schlappig. Dann ist sicher bei deinen Programm was nicht in Ordnung Gruß Wolfgang _______________ Mein Y- Kopter hat nur 4 Motore, sollte ihm wohl noch 2 zusätzlich spendieren oder lieber einen ausbauen und ein Servo reinsetzen? http://www.vom.wowie.org |
| | |
| Mitglied Registriert seit: Nov 2009 Beiträge: 5 | Habe jetzt mal ein einfaches Beispielprogramm geschrieben, nur um die Motoransteuerung zu testen. Der Motor dreht kurz an, hört dann aber innerhalb ca einer Sekunde wieder auf zu drehen bevor er überhaupt die WUnschdrehzahl erreicht hat. Hier mein zugehöriger C-Code: TWSR = 0; TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN); while(!(TWCR & (1<<TWINT))); TWDR = adress; TWCR = (1<<TWINT) | (1<<TWEN); while(!(TWCR & (1<<TWINT))); TWDR = 10; TWCR = (1<<TWINT) | (1<<TWEN); while(!(TWCR & (1<<TWINT))); TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO); Der Code läuft fehlerfrei durch. (TWSR & 0xF  gibt 0x18 nach Senden der Adresse und 0x28 nach Senden des Geschwindigkeitswertes. Das sollte, meiner Meinung nach, auch ok so sein. Sonst würde der Motor ja nicht kurz losdrehen. Erwartet die BL-Ctrl nach dem Senden der Geschwindigkeit denn noch etwas? Vielen Dank schonmal! |
| | |
| Mitglied Registriert seit: May 2010 Beiträge: 18 | Also wäre es auch möglich die BL Regler mit einem PIC anzusteuern, richtig? Wenn sowieso nur immer ein Byte übertragen wird.... ? |
| | |
| Mitglied Registriert seit: Apr 2009 Beiträge: 684 Ort: Braunschweig, Algermissen und bei der Arbeit Chat:  | @hossmann Du musst der BL Ctrl die Werte dauerhaft neu schicken, nur einmal reicht nicht. Zitat Also wäre es auch möglich die BL Regler mit einem PIC anzusteuern, richtig? Wenn sowieso nur immer ein Byte übertragen wird.... ?
Klar, warum sollte das nicht gehen?  _______________ Es ist nicht deine Schuld, dass die Welt ist wie sie ist! Es ist nur deine Schuld wenn sie so bleibt
LG Matze
Lektion des Tages: Gebrochene Ausleger eignen sich noch super zum Bier öffnen! Für Fortgeschrittene: Gebrochene Ausleger eignen sich auch super zum Bau von Tulpen!
http://www.landkamp.de |