-         

Ergebnis 1 bis 9 von 9

Thema: BDLC-Controller mit Bascom und ATMegaXX

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    10.11.2011
    Beiträge
    9

    BDLC-Controller mit Bascom und ATMegaXX

    Anzeige

    Hallo Bascom Programierer,

    nachdem ich jetzt in Bascom und mit verschiedenen ATMega's diverse Motorsteuerungen mit normalen Bürstengleichstrommotoren aufgebaut habe möchte ich mich jetzt an einen Brushlesscontroller ranwagen. Im WEB findet man diverse Selbstbauprojekte, sollte also machbar sein. Leider habe ich keinen einzigen gefunden, bei dem die Software in Bascom geschrieben ist. Ist das so? Auch hier im Forum habe ich kein erfolgreiches Projekt gefunden. Hat von Euch schon mal jemand soetwas gemacht? Weis jemand Links zu solchen Projekten in Bascom oder hat jemand ein funktionierenden Bascom Code in den ich michr einlesen kann?
    Ein befreundeter Roboterbastler (C-Programmierer) hat mir gesagt soetwas würde in Bascom nie funktionieren weil da "Echtzeitanforderungen" bestehen. Versteh ich nix von! Ist das so? Ist hier die Grenze von Bascom erreicht?

    Ich würde mich freuen wenn Ihr in meinen Thread einsteigt. Vielleicht bewahrt mich das davor doch noch C lernen zu müssen (will ich nicht, bisher hat alles mit Bascom geklappt dann wird das doch wohl auch gehen).

    Gruß

    Andreas

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.11.2004
    Beiträge
    451
    Nimm Assembler, dann musst du kein C lernen

    Möglich ist es mit Bascon bestimmt auch, aber wie schon gesagt wurde ist die Ansteuerung Zeitkritisch und da wäre Assembler sogar C vorzuziehen

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo!

    @ Bastler0815

    Ich habe zwar mit BLDC's nur geringe Erfahrung, aber z.B. ein Lüfter sollte mit Bascom regelbar sein, da die PWM Frequenz, wegen Trägheit des Rotors, sehr niedrig seien darf (z.B. 1 Hz).
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Zeitkritisch? Ich erinnere mich nicht an viel Belege dafür, dass Bascom langsamen Maschinencode liefert. Soweit ich weiß, hat willa seinen Tricopter mit Bascom programmiert. Drei BLDC (ich hatte in diesen Thread eigentlich nur in deswegen geguckt, weil ich wissen wollte, was ein BDLC ist) regeln, drei Gyros, und etliches noch dazu . . . wie gesagt, soweit ich weiß in Bascom. Frag Willa einfach.

    ... Ein ... Roboterbastler (C-Programmierer) ... würde in Bascom nie funktionieren ... "Echtzeitanforderungen" ...
    Oooch - das ist ein übliches Argument, gerade von C-Anbetern. Hundert Maschinencyklen bei 20 MHz sind gerade erst 5 µs (MIKROsekunden). Und ein BLDC bei 30000 Umdrehungen pro Minute braucht für EINE Umdrehung schon 2 ms (MILLIsekunden). Das sind schon satte zwei (zweieinhalb) Größenordnungen dazwischen.
    Ciao sagt der JoeamBerg

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Zeitkritisch? Ich erinnere mich nicht an viel Belege dafür, dass Bascom langsamen Maschinencode liefert. Soweit ich weiß, hat willa seinen Tricopter mit Bascom programmiert. Drei BLDC (ich hatte in diesen Thread eigentlich nur in deswegen geguckt, weil ich wissen wollte, was ein BDLC ist) regeln, drei Gyros, und etliches noch dazu . . . wie gesagt, soweit ich weiß in Bascom. Frag Willa einfach.

    Oooch - das ist ein übliches Argument, gerade von C-Anbetern. Hundert Maschinencyklen bei 20 MHz sind gerade erst 5 µs (MIKROsekunden). Und ein BLDC bei 30000 Umdrehungen pro Minute braucht für EINE Umdrehung schon 2 ms (MILLIsekunden). Das sind schon satte zwei (zweieinhalb) Größenordnungen dazwischen.
    Jap der Quellcode von dem Copter ist in Basic geschrieben (und das Teil fliegt nicht schlecht wie man in dem Video sieht )
    Mag sein das Bascom recht "großzügig" mit den Zyklen ist, aber ich denke für das was man mit Basic machen kann recht es locker(!) aus.
    Und im zweifelsfall, falls es auf Mikrosekunden ankommt kannst du immernoch mittendrin auf Assembler wechseln.
    Wie Oberallgeier schon geschrieben hat. Ein "normaler" Mega32 mit 16MHz braucht 6-7µs für einen Zyklus und das ist im Vergleich zu den Millisekunden / Sekunden in denen sich eine Motorsteuerung bewegt nichts.
    Und wie gesagt....du hast immernoch die Möglichkeit mit dem Wechsel zu Assembler
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Zitat Zitat von Kampi
    ... Ein "normaler" Mega32 mit 16MHz braucht 6-7µs für einen Zyklus ...
    ...Millisekunden / Sekunden in denen sich eine Motorsteuerung bewegt ...
    6 - 7µs - das sind rund 143 kHz bis 167 kHz. Richtig ist - bein 16MHz-Controller - egal welcher - dauert ein Zyklus 62,5 ns (NANOsekunden), die meisten Maschinenbefehle dauern einen, etliche zwei Zyklen, nur wenige Befehle haben drei oder vier Zyklen . . .

    Ich habe meine Motorregelung mit nem P I D bei normalen, kleinen Gleichstrommotoren auf 100 Hz. Die Motoren drehen selten über 700 Hz - das sind aber immerhin schon über 40000 Upm (vierzig tausend - pro Minute), deren Zeitkonstante ist ca. 8 ms (selbst gemessen). Und wenn ich mich richtig erinnere, dauert mein Regler für ZWEI Motoren weniger als 3 % CPU-Zeit bei nem 20 MHz-Controller. *ggg* nicht in Bascom - aber wie gesagt - die angebliche Trägheit von Bascom ist ne wenig ergiebige Diskussion.
    Ciao sagt der JoeamBerg

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Zitat Zitat von oberallgeier Beitrag anzeigen
    6 - 7µs - das sind rund 143 kHz bis 167 kHz. Richtig ist - bein 16MHz-Controller - egal welcher - dauert ein Zyklus 62,5 ns (NANOsekunden), die meisten Maschinenbefehle dauern einen, etliche zwei Zyklen, nur wenige Befehle haben drei oder vier Zyklen . . .
    Doof -.- Rechenfehler ^.^
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Hallo,

    ich bin auch sehr Interessiert daran einen BLDC Controller in Bascom zu Programmieren.
    Bin seit einiger Zeit am rumprobieren. Hardware mäßig müsste soweit klar sein. Ist so wie das BL-CTRL von mikrocopter.de, ist warscheinlich dem ein oder anderen bekannt.
    Der Code dazu ist in C. und da hab ich nicht so den durchblick. Hab schon mal versucht die Interrupt Routine für Sensorlosen betrieb in Bascom um zu Basteln aber ohne Erfolg. Gehört warscheinlich doch noch mehr dazu.

    Den Motor starten und laufen zulassen ist ja kein problem. Abgesehen davon das er am angünstigten Punkt komutiert und somit viel zu viel Strom benötigt. Und das er eben nicht auf Last reagieren kann, weil sich ja dafür das Timing anpassen muss.

    Es scheint mir auch so als ob die Software von Mikrocopter.de gar keinen Timer für Komutierung verwendet sondern einfach nur den Interrupt vom Analog Komperator. Jedoch in den AppNotes AVR444 wird der Timer1 und auch schein nur der ADC anstelle des AC.

    Vllt findet sich ja gemeinsam ein Lösung.

    Mfg

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Bastler0815 Beitrag anzeigen
    Ein befreundeter Roboterbastler (C-Programmierer) hat mir gesagt soetwas würde in Bascom nie funktionieren weil da "Echtzeitanforderungen" bestehen.
    Sieh's als Vorteil, dann hast Du doch gleich jemand, den Du löchern kannst, wenn's um Übersetzungsdetails geht.

    Wenn man sich das BL-Ctrl Projekt ansieht, wird man feststellen dass der Hauptteil der Arbeit in der SIGNAL(SIG_COMPARATOR) in BLMC.c erledigt wird und da ist auf den ersten Blick nix drin, was Bascom nicht im brauchbaren Zeitrahmen erledigen könnte.

    Es gibt Unterschiede, Bascom nimmt ein Byte, verarbeitet es und speichert es zurück, C hält besonders in Optimierungsstufe -Os die Werte soweit wie möglich im Register. Ein weiterer Punkt ist die umfangreiche (pauschale) Sicherung der Prozessorregister in Bascom.

    Den Vorteil, Werte im Register zu halten, kann C in einer ISR nicht recht ausspielen, da eine ISR zu jedem Zeitpunkt den Hauptcode unterbrechen kann und damit in der ISR verwendete Variablen sowieso immer neu geladen werden müssen. Da auch keine umfangreichen Berechnungen mit einer einzigen, sondern Zugriffe auf verschiedene Variablen sowie IO-Register vorkommen, hat hier C keinen rechten Vorteil. Der Punkt der Taktverschwendung per Pauschalsicherung kann durch den Parameter NOSAVE und selektiver Sicherung umgangen werden.

    Die Ausführung der kritischen ISR('s) in ASM wäre das Beste, dann weis man auch gleich, welche Regs zu zu sichern sind, bei Bascom-Code muss man das erst durch Analyse des Disassemblats herausfinden.

    Würde sagen, das geht in Bascom zu schreiben. Allerdings solltest Du den Umfang der Dateien zu BL-Ctrl beachten, da hast Du sicher etwas Arbeit vor Dir

Ähnliche Themen

  1. Atmegaxx Crashkurs und wichtiges
    Von blenderkid im Forum Robby RP6
    Antworten: 20
    Letzter Beitrag: 24.05.2008, 12:35
  2. externes EEPROM an AtmegaXX ?
    Von jmayer im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 11.04.2007, 14:18
  3. AtmegaXX, SPICE Simulation für Multisim?
    Von mr.burns im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 11.12.2006, 21:19
  4. Dual-Controller LCD mit Bascom?
    Von DarkNet im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 14.03.2006, 23:20
  5. Controller als I2C Slave mit Bascom
    Von Newbie im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 41
    Letzter Beitrag: 05.01.2005, 00:12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •