Jump to content
elektro-skateboard.de

Wii Nunchuck mit Teensy 3.1


barney

Empfohlene Beiträge

Hi ToniGadget,

 

das sieht schon recht krank aus.

 

Die Asphalt Temperaturmessung kannst du weglassen, die hat sich nicht bewährt. :mad:

 

Die Parameter sind alle in der BamBam_custom_settings.h aufgelistet. Dort ist der Parametername, der Wert und der Wertebereich sichtbar. Ich habe es aber bis heute nicht geschafft, die Parameter variabel und speicherbar zu machen. (Ich hoffe es kommt jetzt kein kluger drauf mir zu schreiben, mache aus #define ein int_32...., dass ist mir auch klar.) Die Variablen müssen in das Flash ROM geschrieben werden und da bin ich noch nicht ganz glücklich mit der Vorgehensweise. Und Zeit für eine Lösung habe ich momentan auch nicht.

 

Aber nur vom Aufwand her, bitte nicht schlagen oder sauer sein, wenn der Teensy mit dem Banana Pi reden kann (per BT), dann ist die Programmierung mittels Webseite angedacht. Oder wer kein Handy benutzen möchte, kann an den Banana Pi mit einem günstigen Touch Display versehen und dort den lokalen Web-Browser zum Parametrieren einsetzen. Da muss dann auch keiner was löten, nur Module zusammenstecken. -> Wollte ich nur mal gesagt haben - abgeduckt und weg -

 

Viele Grüße

 

Barney

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Barney,

 

...

Aber nur vom Aufwand her, bitte nicht schlagen oder sauer sein, wenn der Teensy mit dem Banana Pi reden kann (per BT), dann ist die Programmierung mittels Webseite angedacht...

Barney

 

Keine Bange, ich bin eh einer von der ruhigeren Sorte... ;)

Und konstruktiver Kritik bin ich noch nie böse gewesen !

 

Es ist auch eher für jene gedacht die nicht "voll Aufrüsten" wollen oder ihr geliebtes Smartphone nicht gerne auf einem "Ritt" mit dem E-Skateboard mitnehmen möchten (z.B. wegen Displaybruchgefahr bei Hardcoreabstieg...)

Zudem ist ohne viel firlefanz schnell und direkt der ein oder andere Wert angepasst. Gerade in der Anfangsphase oder bei Setup-Änderungen (Akku, Motor, Untersetzung...) am E-Skateboard.

 

Die Endversion soll ein Nokia 5110 LCD Display mit Hintergrundbeleuchtung haben und sich mit einer Kette oder Kordel um den Hals tragen lassen!

Eventuell im "Ruhezustand" mit Geschwindigkeitsanzeige (aktuell und Vmax), zurückgelegte Wegstrecke, Motor- & Akku Temp...

bearbeitet von ToniGadget
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Dude,

 

ich lade mir gleich deine aktuelle Version runter. Hast du dir das Flash-Konzept für Variablen angesehen?

 

Viele Grüße

 

Barney

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Dude,

 

ich lade mir gleich deine aktuelle Version runter. Hast du dir das Flash-Konzept für Variablen angesehen?

 

Viele Grüße

 

Barney

 

Nö, hab ich nicht :o ich bin gerade völlig begeistert und maximal gefordert die ganze Banana-Pro Geschichte aufzusetzen. Lernkurve hat maximale Steigung, hoffe ich rutsche nicht ab :arf: Btw, Kai ... Du wolltest noch die Umschaltung AP/WLAN etc. ins Git stellen. Ich freu mich schon, wenn der Lautsprecher am Banana aus dem Rucksack einem mitteilt, dass gerade auf DirectDrive geschaltet wurde und man genau weiß, jetzt haut's mich :thumbsup:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Barney,

 

und die Parameter schon gesichtet. Sind da noch Fragen offen?

 

Nope, aber die werde ich schon finden. Sollten ja alle im "void setup" stehen. :)

Ansonsten weiß ich ja wo ich fragen kann !

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nö, hab ich nicht :o ich bin gerade völlig begeistert und maximal gefordert die ganze Banana-Pro Geschichte aufzusetzen. Lernkurve hat maximale Steigung, hoffe ich rutsche nicht ab :arf: Btw, Kai ... Du wolltest noch die Umschaltung AP/WLAN etc. ins Git stellen. Ich freu mich schon, wenn der Lautsprecher am Banana aus dem Rucksack einem mitteilt, dass gerade auf DirectDrive geschaltet wurde und man genau weiß, jetzt haut's mich :thumbsup:

 

Das mit der Sprachausgabe hätte letzte Woche wirklich helfen können. Ich hatte einen überhitzten ESC.

 

@Dude:

Damit ToniGadget, Kai sowie du die BT-Ausgabe besser auswerten könnt, soll ich vor den Werten einen zweistelligen Bezeichner unterbringen?

 

32.14;40.12;26.354;5.674;124.45;26.54 Ist ja nicht wirklich aussagekräftig -> besser

 

T132.14;T240.12;U026.354;I05.674;P0124.45;L026.54

 

T1: Temperatursensor 1

T2: Temperatursensor 2

U0: Akkuspannung (ich benötige U1 bis U12 für die Akkueinzelanzeige, die noch kommt)

I0: Gesamtstrom

P0: Momentanleistung

L0: Summierte Leistung über die Fahrzeit

Link zu diesem Kommentar
Auf anderen Seiten teilen

- Korrekturpolynom fuer 42,9 V Messbereich ergänzt

 

Und Dude, bist du mit dem Messergebnis zufrieden? Hat es sich deutlich verbessert?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Barney,

 

ich hatte mir auch schon Gedanken gemacht wie man den Datenaustausch regeln kann.

Meine Überlegung ging dahin das der BamBam-Controller (BBC) ein festes Protokoll ständig sendet.

Dieses beinhaltet dann alle Größen der aktuellen ständig veränderlichen Werte. Also Livedaten wie z.B. Temp, Volt, Ah, Geschwindigkeit und so weiter. Dieses wird einfach immer und immer wieder über den BT-Äther gesendet.

Dann ein zweites Protokoll welches nur dann mit ausgesendet wird wenn eine Anforderung Empfangen wurde.

Wenn z.B. Dude, Kai oder ich ein #? senden kommen alle internen Werte wie Beschleinigungskurvenfaktor (Werte 95-155), max. Endgeschwindigkeit (8-35Km/h), Hase-Igel (Hase=1, Igel=0) Modus usw. als Protokoll --> #;122;17;0.

Diese können dann über Smartphone, BananaPi oder auch der DSU empfangen werden, geändert und per Protokoll wieder als Werte an den BBC gesendet werden.

--> #!;150;30;1

 

DSU sendet an den BBC: #? = Datenprotokollanfrage

BBC antwortet mit: # = Datenprotokoll

DSU sendet geänderte Daten an den BBC die nun Gültigkeit haben sollen: #! = BBC übernimmt geänderte Daten

 

Ein ganzes Protokoll ist bei 115200baud schnell gesendet und der BBC wird nicht durch explizite Anfragen die erst in einer aufwendigen Logikprogrammierung analysiert werden müssen ausgebremst. Spart uns allen eine Menge Programmierarbeit und dem BBC wichtige Rechen-Ressourcen.

 

Was halltet ihr, Barney, Dude und Kai davon ?

bearbeitet von ToniGadget
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Barney,

 

ich hatte mir auch schon Gedanken gemacht wie man den Datenaustausch regeln kann.

Meine Überlegung ging dahin das der BamBam-Controller (BBC) ein festes Protokoll ständig sendet.

Dieses beinhaltet dann alle Größen der aktuellen ständig veränderlichen Werte. Also Livedaten wie z.B. Temp, Volt, Ah, Geschwindigkeit und so weiter. Dieses wird einfach immer und immer wieder über den BT-Äther gesendet.

Dann ein zweites Protokoll welches nur dann mit ausgesendet wird wenn eine Anforderung Empfangen wurde.

Wenn z.B. Dude, Kai oder ich ein #? senden kommen alle internen Werte wie Beschleinigungskurvenfaktor (Werte 95-155), max. Endgeschwindigkeit (8-35Km/h), Hase-Igel (Hase=1, Igel=0) Modus usw. als Protokoll --> #;122;17;0.

Diese können dann über Smartphone, BananaPi oder auch der DSU empfangen werden, geändert und per Protokoll wieder als Werte an den BBC gesendet werden.

--> #!;150;30;1

 

DSU sendet an den BBC: #? = Datenprotokollanfrage

BBC antwortet mit: # = Datenprotokoll

DSU sendet geänderte Daten an den BBC die nun Gültigkeit haben sollen: #! = BBC übernimmt geänderte Daten

 

Ein ganzes Protokoll ist bei 115200baud schnell gesendet und der BBC wird nicht durch explizite Anfragen die erst in einer aufwendigen Logikprogrammierung analysiert werden müssen ausgebremst. Spart uns allen eine Menge Programmierarbeit und dem BBC wichtige Rechen-Ressourcen.

 

Was halltet ihr, Barney, Dude und Kai davon ?

 

Hi ToniGadget,

 

der Teensy sendet derzeit im Sekundentakt diese Daten.

Die Auswertung der aktiven Anfrage ist für ein 96 MHz Prozessor kein Thema, aber der Teensy wird durch die Routinen der Seriellen Kommunikation ausgebremst. Heißt, wenn der Teensy Daten versendet, macht er nichts anderes, bis der Serielle Buffer meldet, er hat alles versendet. Das ist großer Mist, aber der Arduino Vereinfachung geschuldet. Daher kommuniziert der Teensy mit dem BT-Modul mit 230400 Baud. Dies verkürzt die Kommunikationszeit und gibt den Teensy schneller wieder frei.

 

Eine Auswerte Routine habe ich schon für den BamBam Sender vor ein Jahr gebastelt. Diese könnte man hier sicher einsetzen.

Externe Links nur für Mitglieder sichtbar

 

Wie gesagt, ich muss die Parameter noch ins Flash bekommen, damit diese Persistent sind.

 

Viele Grüße

 

Barney

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das mit der Sprachausgabe hätte letzte Woche wirklich helfen können. Ich hatte einen überhitzten ESC.

 

@Dude:

Damit ToniGadget, Kai sowie du die BT-Ausgabe besser auswerten könnt, soll ich vor den Werten einen zweistelligen Bezeichner unterbringen?

 

32.14;40.12;26.354;5.674;124.45;26.54 Ist ja nicht wirklich aussagekräftig -> besser

 

T132.14;T240.12;U026.354;I05.674;P0124.45;L026.54

 

T1: Temperatursensor 1

T2: Temperatursensor 2

U0: Akkuspannung (ich benötige U1 bis U12 für die Akkueinzelanzeige, die noch kommt)

I0: Gesamtstrom

P0: Momentanleistung

L0: Summierte Leistung über die Fahrzeit

 

Ich weiß noch nicht, ob das nötig ist. Wenn das Protokoll feststeht wissen Sender/Empfänger welche Werte kommen. Andererseits hätte man mit einem Identifier mehr Möglichkeiten. Dann würde ich mich aber gleich an einem Standard wie xml orientieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich weiß noch nicht, ob das nötig ist. Wenn das Protokoll feststeht wissen Sender/Empfänger welche Werte kommen. Andererseits hätte man mit einem Identifier mehr Möglichkeiten. Dann würde ich mich aber gleich an einem Standard wie xml orientieren.

 

XML: Auf dem Handy nicht mehr lesbar und die gleiche Argumentation wie an ToniGadget gerichtet. Die Übertragung blockiert den Teensy. Daher so kurz wie möglich. Sorry, dann geht nur noch die USB-Schnittstelle mit 12 MBit/s. Oder ihr schreibt eine neue serielle Kommunikation mit IRQ Handler. :D

 

Es ist wirklich unglaublich eine Serielle Kommunikation zu schreiben, die einen 96 MHz Prozessor ausbremst. Der 8 Byte Buffer im Teensy bringt mich da auch nicht weiter. Erst wenn Buffer leer, dann darf weiter gemacht werden. Nicht nebenläufiger Prozess.

 

Edit:

Externe Links nur für Mitglieder sichtbar

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Barney,

 

ich hatte mir auch schon Gedanken gemacht wie man den Datenaustausch regeln kann.

Meine Überlegung ging dahin das der BamBam-Controller (BBC) ein festes Protokoll ständig sendet.

Dieses beinhaltet dann alle Größen der aktuellen ständig veränderlichen Werte. Also Livedaten wie z.B. Temp, Volt, Ah, Geschwindigkeit und so weiter. Dieses wird einfach immer und immer wieder über den BT-Äther gesendet.

Dann ein zweites Protokoll welches nur dann mit ausgesendet wird wenn eine Anforderung Empfangen wurde.

Wenn z.B. Dude, Kai oder ich ein #? senden kommen alle internen Werte wie Beschleinigungskurvenfaktor (Werte 95-155), max. Endgeschwindigkeit (8-35Km/h), Hase-Igel (Hase=1, Igel=0) Modus usw. als Protokoll --> #;122;17;0.

Diese können dann über Smartphone, BananaPi oder auch der DSU empfangen werden, geändert und per Protokoll wieder als Werte an den BBC gesendet werden.

--> #!;150;30;1

 

DSU sendet an den BBC: #? = Datenprotokollanfrage

BBC antwortet mit: # = Datenprotokoll

DSU sendet geänderte Daten an den BBC die nun Gültigkeit haben sollen: #! = BBC übernimmt geänderte Daten

 

Ein ganzes Protokoll ist bei 115200baud schnell gesendet und der BBC wird nicht durch explizite Anfragen die erst in einer aufwendigen Logikprogrammierung analysiert werden müssen ausgebremst. Spart uns allen eine Menge Programmierarbeit und dem BBC wichtige Rechen-Ressourcen.

 

Was halltet ihr, Barney, Dude und Kai davon ?

 

my 2 cent:

Während der Fahrt würde ich lediglich Werte zur Information über BT an den Pi versenden und keine Änderungen machen lassen. Ausgabe via WebBrowser. Änderungen hinsichtlich Steuerung (Hase/Igel; Direct/Tempomat) während der Fahrt bleiben wie gehabt Sache des Nunchuk.

Zur Änderung von Steuerparametern (aus Komfortgründen auch via Webapplikation) würden die Parameterfiles entsprechend geändert und dann mittels Teensyduino-Kommandozeilen auf den Teenys geflasht. Dafür wäre aktuell noch eine USB-Kabelverbindung notwendig. Ich hatte das bislang als unkritisch eingeschätzt, da diese Änderungen nur sehr selten gemacht werden. Falls Ihr da anderer Meinung seid, müsste man das nochmals überdenken ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und Dude, bist du mit dem Messergebnis zufrieden? Hat es sich deutlich verbessert?

 

Differenzwerte zwischen Messwert und tatsächlicher Spannung haben bei 25 V eine seltsame Nichtlinearität - mit dem Korrekturpolynom hab ich's aber einigermaßen hinbekommen. Ich leg bei Gelegenheit die xls mit den Sourcen ins Git, dann kann sich jeder die Qualität der Korrektur ansehen. Ich denke es sihet ganz gut aus, wäre aber auf Dein Urteil als Experte gespannt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zur Änderung von Steuerparametern (aus Komfortgründen auch via Webapplikation) würden die Parameterfiles entsprechend geändert und dann mittels Teensyduino-Kommandozeilen auf den Teenys geflasht. Dafür wäre aktuell noch eine USB-Kabelverbindung notwendig. Ich hatte das bislang als unkritisch eingeschätzt, da diese Änderungen nur sehr selten gemacht werden. Falls Ihr da anderer Meinung seid, müsste man das nochmals überdenken ...

 

Die USB-Kommunikation war auch ein Ansatz von Kai! Macht auch Sinn. Willst du auf dem Banana Pi den Teensy kompilieren? :skep:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Barney,

 

OK, dann werde ich meine DSU auch auf 230400baud umstellen.

 

Wie gesagt, ich muss die Parameter noch ins Flash bekommen, damit diese Persistent sind.

Keine Eile, ich habe auch nur sehr begrenzt Zeit um meinen DSU-Kram auf die Reihe zu bekommen. :smilewinkgrin:

 

Aber das mit der Abwicklung #, #!, #? geht so in Ordnung?

 

Liebe Grüße aus dem hohen Norden

Toni Gadget

Link zu diesem Kommentar
Auf anderen Seiten teilen

Differenzwerte zwischen Messwert und tatsächlicher Spannung haben bei 25 V eine seltsame Nichtlinearität - mit dem Korrekturpolynom hab ich's aber einigermaßen hinbekommen. Ich leg bei Gelegenheit die xls mit den Sourcen ins Git, dann kann sich jeder die Qualität der Korrektur ansehen. Ich denke es sieht ganz gut aus, wäre aber auf Dein Urteil als Experte gespannt.

 

xls im Git

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Barney, Beatbuzzer, et.al.

 

kann ich eigentlich den PWM-Ausgang vom Teensy zur Ansteuerung des ESC's einfach parallel auf zwei separate ESC's (gleiche Einstellungen) drauf geben wenn ich 2 Motoren mit demselben PWM-Signal ansteuern möchte oder ist ein echter Dual-ESC (den ich nicht habe) völlig anders aufgebaut??

 

Danke

Dude

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Barney, Beatbuzzer, et.al.

 

kann ich eigentlich den PWM-Ausgang vom Teensy zur Ansteuerung des ESC's einfach parallel auf zwei separate ESC's (gleiche Einstellungen) drauf geben wenn ich 2 Motoren mit demselben PWM-Signal ansteuern möchte oder ist ein echter Dual-ESC (den ich nicht habe) völlig anders aufgebaut??

 

Danke

Dude

 

Ja!

Aber auf der Leiterplatte sind zwei getrennte Anschlüsse, die derzeit den selben Wert ausgeben.

 

VG

 

Barney

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

Kleine Neuigkeiten vom Compiler:

 

Arduino: 1.6.5r2

Teensyduino: 1.2.4

 

adc->setReference(ADC_REF_EXT, ADC_0);

Externe Links nur für Mitglieder sichtbar

 

Dann freut sich auch der neue Compiler.

 

Jetzt auch im GIT

bearbeitet von barney
Link zu diesem Kommentar
Auf anderen Seiten teilen

xls im Git

 

Hi Dude,

 

ich komme nicht so schnell nach. Die 12S Leiterplatte wird doch recht SMD-lastig. Wenn ich nur 0805 verwenden könnte....

 

Ich werde mir deine Version bald aufspielen und testen. Ich kämpfe derzeit mit meinen Nunchucks. Akkus sind scheinbar hinüber.

 

VG

 

Barney

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kleine Neuigkeiten vom Compiler:

 

Arduino: 1.6.5r2

Teensyduino: 1.2.4

 

adc->setReference(ADC_REF_EXT, ADC_0);

Externe Links nur für Mitglieder sichtbar

 

Dann freut sich auch der neue Compiler.

 

Jetzt auch im GIT

 

Ist dafür was im Code anzupassen - dann würde ich das mit meiner Version mergen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tritt dem Gespräch bei

Du kannst jetzt posten und dich später registrieren. Wenn du bereits einen Account hast kannst du dich hier anmelden.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...