Jump to content
elektro-skateboard.de

Wii Nunchuck mit Teensy 3.1


barney

Empfohlene Beiträge

Hallo Barney,

 

hab da was komisches bemerkt, kannst Du bitte prüfen ob dies bei Dir auch so passiert:devil::

 

1. niedrige bis mittlere Geschwindigkeit über den Nunchuck einstellen, nur noch Z-Taste gedrückt halten und nicht weiter beschleunigen

2. Strommessung über Poti langsam hochdrehen ... bei so ca. 35 A beschleunigt der Motor, die Stromanzeige geht auf 40 A und erst wenn ich den Poti weiter aufdrehe wird am Ende abgeregelt

3. Nice!

 

Ich denke, dass sich da der Hovermodus für den Skater einschaltet - für ungeübte wie mich kann das ins Auge gehen. Gib mit bitte Bescheid, ob Du ähnliches beobachtest.

 

VG

Dude

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Barney,

 

hab da was komisches bemerkt, kannst Du bitte prüfen ob dies bei Dir auch so passiert:devil::

 

1. niedrige bis mittlere Geschwindigkeit über den Nunchuck einstellen, nur noch Z-Taste gedrückt halten und nicht weiter beschleunigen

2. Strommessung über Poti langsam hochdrehen ... bei so ca. 35 A beschleunigt der Motor, die Stromanzeige geht auf 40 A und erst wenn ich den Poti weiter aufdrehe wird am Ende abgeregelt

3. Nice!

 

Ich denke, dass sich da der Hovermodus für den Skater einschaltet - für ungeübte wie mich kann das ins Auge gehen. Gib mit bitte Bescheid, ob Du ähnliches beobachtest.

 

VG

Dude

 

Hi Dude,

ich habe es geschafft, die Programmierung meines Motorreglers völlig zu verstellen. Dies ist mir in der frühen Experimentierphase mit der Schottky-Diode passiert. Jetzt muss ich mir die Programmierkarte von Chrizz leihen.

 

VG

 

Barney

Link zu diesem Kommentar
Auf anderen Seiten teilen

Abfrage:

 

Gibt es Interessenten, die eine Leiterplatte (ohne Bestückung!!!) haben wollen?

Ich würde die Leiterplatte zentral beschaffen und dazu den Teensy 3.1, sowie den Spannungsregler und das BT-Modul um die Kosten für die Beschaffung dieser Teile zu drücken.

 

Folgende Kosten macht eine maximale Bestückung aus:

Kostenaufstellung:
1 x Leiterplatte     12,66 €
1 x LC78_1.0A 3.3V     09,19 €
1 x Teensy 3.1        17,80 €
1 x HC-05            06,20 €

3 x LED 3mm 2mA        00,48 €
1 x Platinensteckv 2pol 00,50 €
1 x Platinensteckv 3pol 00,60 €
2 x PC503            00,70 €
1 x Stiftl.1x50p 90'f   00,67 €
1 x Stiftl.1x12pol 180' 00,25 €
1 x Stiftleiste 2x7pol  00,25 €
1 x Präzisionsso DIL08  00,25 €
1 x Z-Diode 15V 0,5W    00,60 €
1 x Dual-Koppler 5kV    00,60 €
2 x IRLR 2905 Z         01,76 €
1 x Jumper m.Grifflasc  00,10 €
2 x Platinensteckv 3pol 01,12 €
15 x Widerstände    00,75 €
5 x 100nF-50V 10% X7R   00,40 €
1 x 22uF-50V 6,3x11mm   00,20 €
1 x 10uF-63V 5x11mm     00,20 €
2 x SIL-Stecker 20p     01,80 €
1 x SIL-Sockelstre 32p  00,88 €
1 x Nunchuck        12,00 €
1 x Shottkey Diode 0,30 €
1 x 1N4004 Diode 0,30 €

optional Temperaturmessung
2 x DS18x20        04,60 €
optional Strommessung
1 x ACS756-200        14,50 €
-------------------------------
           Summe 90,36 €

 

Strom und Temperaturmessung ist optinonal.

Bestückungszeit der Leiterplatte ca. 3 Stunden mit dem richtigen Lötkolben.

 

Ist eine unverbindliche Abfrage, um zu sehen, ob überhaupt ein Interesse vorliegt. Werde diese bis zum 01.09.2014 laufen lassen.

 

VG

 

Barney

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ergänzung zur Abfrage:

 

Flubber hatte den wichtigen Hinweis, die verschiedenen Bestückungsmöglichkeiten näher zu erklären.

 

Die vorherige Kostenaufstellung war die "ich will alles" Variante.

 

Es geht auch:

 

1. Ich will nur steuern (Motorstellern HV-Regler mit eingebauten Optokoppler):

1 x Leiterplatte 12,66 €

1 x LC78_1.0A 3.3V 09,19 €

1 x Teensy 3.1 17,80 €

1 x Nunchuck 12,00 €

1 x Shottkey Diode 00,30 €

1 x 1N4004 Diode 00,30 €

1 x LED rot 00,16€

1 x Widerstand 00,05€

1 x Stiftleiste 00,67€

 

 

2. Ich will nur steuern (Motorsteller ohne eingebauten Optokoppler):

kommt zu 1 dazu:

1 x Präzisionsso DIL08 00,25 €

1 x Dual-Koppler 5kV 00,60 €

2 x Widerstände 00,10 €

 

Von hier an gibt es noch mindestens 10 weitere Bestückungsvarianten, die ich aber nicht unterscheiden werde.

 

Wer will kann auch noch für 5-10 € den zentralen Einschalter per MOSFET anschließen. Siehe

Externe Links nur für Mitglieder sichtbar

 

Grundkosten sind immer Porto und Verpackung, mit Versicherung maximal 6,90 €

Gerne dazu gesehen ist eine Spende von 5-X € für das Fernsteuerprojekt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Dude,

 

hast du deinen Motorregler am Optokoppler Anschuss drann? Mir fehlt hier noch die Bestätigung das dieser Anschluss funktioniert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hätte bei dir nur auf das Foto von dir sehen müssen. Nein dein Regler ist Opto. Ich benötige noch eine Bestätigung für den Optoanschluss an der Platine.

 

VG

 

Barney

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ach so. Hab das falsch verstanden, da ich dachte Dein Eigenbau-Motorregler sei ohne OPTO und du hättest den daher auf der Teensy Platine aufgebaut.

 

Dude

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ach so. Hab das falsch verstanden, da ich dachte Dein Eigenbau-Motorregler sei ohne OPTO und du hättest den daher auf der Teensy Platine aufgebaut.

 

Dude

 

Der spätere eigene Motorregler kommt an die Serielle Schnittstelle 2. Dieser wird dann auch mit einem Optokoppler galvanisch getrennt.

 

Es kommt noch schlimmer, der Bremsservo benötigt auch einen Optokoppler. Also wird die Platine ca. 1-1.5cm länger und damit die Stecker nicht aneinander klemmen, werde ich die Platine ca. 3mm breiter machen. Wird ca. 1-2€ Aufpreis alleine für die Leiterplatte ausmachen, aber galvanische Trennung ist absolut notwendig.

 

VG

 

Barney

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der spätere eigene Motorregler kommt an die Serielle Schnittstelle 2. Dieser wird dann auch mit einem Optokoppler galvanisch getrennt.

 

Es kommt noch schlimmer, der Bremsservo benötigt auch einen Optokoppler. Also wird die Platine ca. 1-1.5cm länger und damit die Stecker nicht aneinander klemmen, werde ich die Platine ca. 3mm breiter machen. Wird ca. 1-2€ Aufpreis alleine für die Leiterplatte ausmachen, aber galvanische Trennung ist absolut notwendig.

 

VG

 

Barney

 

Wie angekündigt. Die Leiterplatte ist jetzt 3mm länger. Dafür wurde ein weiterer Optokoppler für das Bremsservo eingebaut. Das Brermsservo sollte über den ESC mit BEC versorgt werden.

 

Edit:

Warum ein weiterer Optokoppler? Das Bremsservo kann nicht mit den 3.3V für den Teensy ausreichend versorgt werden. Servos wollen typisch zwischen 4.8V bis 6V. Außerdem kann es negative Auswirkungen auf die Versorgungsspannung haben und der Teensy ggf abstürzen.

 

Also musste eine Fremdspeisung her. Diese würde idealerweise aus dem BEC des ESC kommen. Damit würde aber die geschaltete GND-Verbindung, die mittels Power MOSFET geschaltet wird über den ESC kurzgeschlossen werden. Es könnten 30-120A über die kleine Leiterplatte fließe, die das nicht lange aushält. Darum die galvanische Trennung des Bremsservos.

 

Warum werden die 5-6V vom BEC nicht für den Teensy verwendet. -> Weil HV ESC kein BEC haben.

 

Allgemeine Frage:

 

Muss ich mit noch einen Erweiterungswunsch rechnen oder sind wir durch? :confused5:

1670494034_Schaltplan2.4.thumb.PNG.836c2ac81aadbd2d878f3cfd7d6b96c6.PNG

1574541627_Layout2.4.thumb.PNG.29257af1cefb08653ded41c503bf6220.PNG

bearbeitet von barney
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja ool, hört sich gut an,

Was ist mit der aktiven Akkuüberwachung ?? Oder geht das über die Extension ???

Wo kann man den Bremspunkt einregelen ?? nur in der Software oder über einen Trimmer ??

 

Dr. B

Link zu diesem Kommentar
Auf anderen Seiten teilen

Einzelzellenüberwachung: Extension Anschluss

Bremspunkt: nur Software. Für Testzwecke könnte man ein Poti am Extension Anschluss ankoppeln.

Wann soll eigentlich das Bremslicht angehen? Bei Impuls unter 1.5ms? Oder beim deakzelarieren?

Link zu diesem Kommentar
Auf anderen Seiten teilen

<1.5 ms - davor bremsts eh net so richtig. Vermutlich weiß der Nachfolgende ohne Gebrauchsanleitung gar nicht, was er mit dem Licht anfangen soll:p

 

Dude

Link zu diesem Kommentar
Auf anderen Seiten teilen

Spannungsfest bis 60 V ;-))))

Das ist deutlich über den Spannungsregler, der nur 45V verträgt. Und der Messeingang geht auch nur bis 44V.

 

Der Teensy misst noch Spannung?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Besteller für die neue Version:

 

1 x Dude

1 x Dr. Board

2 x Barney

? x Flubber Du hattest mal angefragt! Ja oder nein?

 

Wenn alle zustimmen, würde ich auch wieder die Bauteile zentral kaufen (spart Porto). Löten ist selbst angesagt!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Barney,

 

ich nehme eine Platine. Bei den Bauteilen brauch ich aber nur die seit der letzten Bestellversion zusätzlich dazu gekommenen. Ich meine das waren 1-2 Mosfet, Opto, Diode, Stecker mit Kabel, ?.

 

VG

Dude

Link zu diesem Kommentar
Auf anderen Seiten teilen

Besteller für die neue Version:

? x Flubber Du hattest mal angefragt! Ja oder nein?

 

Moin,

so sehr ich deine Arbeit und das potenzial des "Projekt" schätze, muss ich leider einen Rückzieher machen.

Ich hab im Moment so viel um die Ohren, dass ich nicht dazu kommen werde mich daran zu setzen....

 

Danke dir

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

Auch ein Barney hat es nicht einfach...

 

Ich konnte heute zum ersten mal mein Board aus messtechnischer Sicht untersuchen. Die Strom und Spannungsmessung macht mir noch nicht so richtig Freude.

 

Spannungsmessung:

Ich habe mich gewundert, warum die Spannungsmessung um ca. 100mV schwankt ohne, dass der Motor lief. Ein Blick auf den Teensy 3.1 und hier besonders der Schaltplan verrät die Tatsache, dass die Referenzspannung für die ADC nicht aus einer stabilisierten Referenzspannungsquelle kommt, sondern die 3.3V sind, die er intern aus den 5V gewinnt, oder hier im Fall, aus den Spannungswandler den ich auf die Leiterplatte gesetzt habe.

Dieser Spannungswandler hat aber keine Referenzeigenschaften. Mal liefert dieser 3.37 oder 3.375V. Das mag mäklich klingen, hat aber bei 12Bit eine erhebliche Auswirkung. Der Spannungsteiler ist auf 3.3V als Referenz gerechnet. Sollte die Referenz abweichen (wie hier) ist der Parameter #define BattSpgMMax (float) 33.5 anzupassen. Das ist schnell getan. Kling nicht schwierig. Wird aber durch das ständige Schwanken des Spannungsregler unmöglich.

 

Strommessung:

Hier ist der Nullwert des Stromsensors zu finden und der Maximale Strom zu ermitteln. Der Stromsensor ist recht unabhängig von der Spannungsschwankung des Spannungsregler. Denn URegler = Voller Messbereich. Damit sind die Schwankungen obsolete. Der von mir verwendetet ACS756-050 ist nun nicht gerade ein Präzisionselement, besonders nicht bei der leicht verrauschten Versorgungsspannung. Hier muss noch ein wenig Aufwand mit der Glättung der Versorgungsspannung getrieben werden.

 

Fazit:

Als Präzisionsmessinstrument wird der Aufbau nicht durchgehen. Hier müsste eine sehr stabile Referenzspannungsquelle aufgetrieben werden. Der Teensy hat ein eingebaute Bandgap Referenzspannungsquelle, diese liefert aber bei 3V 2.980V und hat damit auch nicht die gewünschte Eigenschaft. Zumal diese R-Quelle nicht nur die ADC, sowie die DAC versorgen müsste, auch der ACS756 möchte versorgt werden. Da der ACS756 pulsierende Ströme beim Messen zieht, würde sich dies negativ auf die Referenzspannung auswirken.

 

Mehr als 50mV Spannungsgenauigkeit und 100mA bei der Strommessung scheint momentan nicht zu erreichen zu sein. Weitere Tests und Optimierungen stehen noch aus.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine mögliche Lösung für die Spannungsmessung:

 

Folgende Annahmen für eine einfache programmiertechnische Lösung:

 

Unter der Annahme das

UrefTeensy bekannt und stabil ist

 

Kann mittels

Uref3.3V = 3.3V (der gehoffte Wert für die Referenz der ADCs)

UrefTeensygemessen

 

USpannungsregler ermittelt werden

 

(Uref3.3/UrefTeensy)/(USpannungsregler/UrefTeensygemessen)

 

USpannungsregler = (Uref3.3*UrefTeensygemessen)/UrefTeensy

 

Mit USpannungsregler und dem Teilverhältnis vom Messspanungsteiler, BattSpgMMax dynamisch ermittelt werden. Schlussendlich könnte mit diesem kleinen offensichtlichen Ansatz die Spannungsschwankung des Spannungsregler rechentechnisch kompensiert werden.

 

Mit viel Glück kann der Teensy intern die Messung, ohne löten, durchführen. Ansonsten muss ein analoger Pin auf AREF gelötet werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tiefe Erkenntnisse:

 

Aufbau 1:

Teensy 3.1 auf Testboard mit zwei Potis. Auflösung eingestellt und Average auf 1 eingestellt.

 

Erkenntnis 1:

Zum heulen was da raus kommt.

 

Aufbau 2: Average auf 32 und 64 eingestellt.

Erkenntnis 2: Ich benötige immer noch Taschentücher.

 

Aufbau 3: Da war einer mit den ADC unzufrieden und eine neue ADC-Lib geschrieben. Diese ist in der Lage beide ADCs zu nutzen.

Erkenntnis 3: Was ist da denn los? Je nach Einstellung von "setConversionSpeed" und "setSamplingSpeed" wird auch ohne Average das Ergebnis so, dass man mit den Werten schon fast zurecht kommt.

 

Aufbau 3+Average: ein Average von 8 und slow Speed reichen aus nur noch ein Wackeln von 1LSB zu haben. Die Messzeit beträgt 148µs. Vorher waren es 2µs

 

Ein Fail gibt es noch. Es können nur die Eingänge

16 (A2), 17 (A3), 34-36 (A10-A13) für eine gleichzeitige Nutzung der beiden ADCs verwendet werden. Dann können auch beide mit verschiedener Auflösung und Average betrieben werden. Dumm gelaufen ich verwende A0 und A1. Ist was für die Revision 2.x. Aber die positiven Eigenschaften von oben lassen sich auf den jetzigen Aufbau anwenden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jetzt auf 10mV genau. Die Linearität konnte ich noch nicht testen. Sollte aber im kleinen Messfenster nicht so schlecht ausfallen.

 

Jetzt muss nur noch der Strom justiert werden....

 

#define AnalogReadResolutionBits 12       // Bit-Aufloesung fuer die Analog Digital Umsetzer (ADC) zur Strom- und Spannungsmessung
#define AnalogReadResolutionValue (uint32_t) pow(2,AnalogReadResolutionBits)   // Festlegen der ADC-Aufloesung (Wertebereich)
#define AnalogAveraging 8                 // Durchschnittswert bei der ADC-Messung bilden

 

// ADC Einstellungen
 pinMode(Pin_Ubatt, INPUT);                  // Spannungsmesspin aktivieren
 pinMode(Pin_Strom, INPUT);                  // Strommesspin aktivieren
 // ADC_0
 adc->setReference(ADC_REF_EXTERNAL, ADC_0); //change all 3.3 to 1.2 if you change the reference
 adc->setAveraging(AnalogAveraging, ADC_0);  // set number of averages
 adc->setResolution(AnalogReadResolutionBits, ADC_0); // set bits of resolution
 // it can be ADC_VERY_LOW_SPEED, ADC_LOW_SPEED, ADC_MED_SPEED, ADC_HIGH_SPEED or ADC_VERY_HIGH_SPEED
 adc->setConversionSpeed(ADC_VERY_LOW_SPEED, ADC_0);  // change the conversion speed
 adc->setSamplingSpeed(ADC_VERY_LOW_SPEED, ADC_0);    // change the sampling speed
 // ADC_1 diese Einstellung werden erst wirksam, wenn die speziellen ADC-Pins verwendet werden.
 // 16 (A2), 17 (A3), 34-36 (A10-A13)
 adc->setReference(ADC_REF_EXTERNAL, ADC_1); //change all 3.3 to 1.2 if you change the reference
 adc->setAveraging(AnalogAveraging, ADC_1);  // set number of averages
 adc->setResolution(AnalogReadResolutionBits, ADC_1); // set bits of resolution
 adc->setConversionSpeed(ADC_VERY_LOW_SPEED, ADC_1);  // change the conversion speed
 adc->setSamplingSpeed(ADC_VERY_LOW_SPEED, ADC_1);    // change the sampling speed

Ubatt = adc->analogRead(Pin_Ubatt, ADC_0)*UbattFaktor; // Ubatt in V messen
Strom[stromIndex] = (adc->analogRead(Pin_Strom, ADC_1)*StromFaktor)-Strom0A; // Strom in A messen und in Array ablegen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja und es wird noch besser:

 

 // kann nur verwendet werden, wenn nicht mehr die Pins A0 und A1, sondern A0 und A2 verwendet werden.
 // Vorteil ist, dass die Abfragezeit der ADC unter einer us sinkt
 adc->startContinuous(readPin, ADC_0);                // Starte die Dauermessung der beiden
 adc->startContinuous(readPin2, ADC_1);               // ADC im Hintergrund. Dies beschleunigt die Messwerterfassung um das
                                                        // 150 Fache. Auch hohe Average stören nicht mehr
 // Die Abfrage der ADC muesste entsprechend angepasst werden
 adc->analogReadContinuous(ADC_0);                    // Hole den Messwert des ADC_0 ab Achtung asynchron
 adc->analogReadContinuous(ADC_1);                    // Hole den Messwert des ADC_0 ab Achtung asynchron

Der Lib Autor hat einen Continuous Mode spendiert. D.h. die beiden ADCs messen permanent im Hintergrund und man kann sich irgendwann den letzten Messwert abholen.

 

Warum ist das so gut?

Leider sind viele Arduino Libs so ausgelegt (und teilweise geht das auch nicht anders) das eine Aktion ein Abwarten zur Folge hat. Es macht an vielen Stellen dann aber keinen Sinn eine CPU auf 72MHz zu takten, wenn die nur wartet, bis was fertig ist.

 

Hier ein Beispiel mit den ADCs: Eine Messung mit 8 Durchschnittswerten dauert ca. 147µs. Solange wartet der Teensy. Da Strom und Spannung gemessen wird, sind locker 300µs CPU-Zeit damit verbraten. Der Strom wird sogar 10 x Sekunde gemessen. Damit sind 10 x 147µs + 1 x 147µs idle angesagt. Nicht gut! Durch den Continuous Mode wird permanent im Hintergrund gemessen. Der letzte Messwert wird weggeworfen und durch den aktuellen ersetzt. Wenn jetzt nach dem letzten Messwert gefragt wird, dauert diese Abfrage unter einer 1µs! Das ist mal eine Ansage.

 

Wo ist die Fußangel?

Dummerweise habe ich die analogen Pins A0 und A1 verwendet und beide zusammen kommen nicht in den Genuss vom Continuous Mode (Kotz). A0 und A2 funktionieren. A1 ist Pin 15 und A2 ist Pin 16. A2 geht derzeit ungenutzt auf den Extension Stecker und ist nicht belegt. Eine kleine Drahtbrücke zwischen A1 und A2 und man kommt in den vollen Genuss vom Continuous Mode und noch weiteren Annehmlichkeiten, wie paralleles Messen und verschiedene unabhängige ADC Einstellungen, wie Average, Auflösung, Referenzbezug, ....

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...