Jump to content
elektro-skateboard.de

barney

Elektro-Skater
  • Gesamte Inhalte

    3.658
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    8

Alle erstellten Inhalte von barney

  1. Da drängt sich auf: Hase, Igel, Senioren. ...
  2. Hi Sonni, ich hätte noch einen Sensor Vorschlag. Nach der letzten SkatebyNight in Berlin, benötigen wir noch einen Detektor für den schlagartigen Blutverlust im Gehirn. Wenn nochmal solche minimal bekleideten Skaterinnen herumfahren, ist das wesentlich notwendiger, als der Detektor für den Funkabriss.
  3. Hi Dude, ich hatte nicht vor die SMD Serie mikrobe zu verwenden. 1206 reicht auch. Und mit der Weller und der Nadelspitze lässt sich das auch sehr gut löten. Auch für alte Sacke wie wir im Forum. Wobei ich die Vermutung aufstellen möchte, das die jetzigen E-Skater von heute, die Skater der 80er waren...
  4. Damit die Leiterplatte nicht so groß wird, dass wir die Räder daran anschrauben können, nehme ich dann SMD Bauteile.
  5. Gut ist eine Ansage. Ich baue einen 40V Spanungswandler auf das Board. Für das Andocken nehme ich dann Flachbandverbinder mit ggf. Mit Raste ich überlege noch...
  6. Hi Sonni, Hi Dude, jetzt Butter bei den Fischen. Soll ich die Schaltung für 40V auslegen? Rastverbindungen für eventuelle Erweiterungen? VG Barney
  7. Bis 36V http://de.rs-online.com/web/p/schaltregler/7773301/
  8. Ganz schlechte Idee, Widerstand funktioniert nur bei konstanten Lasten. Z-Diode wäre da eine bessere Idee. Aber auch nicht besonders schön, da jedes V Spannungsabfall * 0.5A = 0,5W Verlustleistung bedeutet. Nee finde ich nicht überzeugend. Lieber dann schon richtig. VG Barney
  9. Hi Dude, jetzt 80% Handgeroutet. Elektroskate Teensy 20140621_II.zip
  10. 3.3V 1.0A bis 40V http://www.segor.de/#Q%3DLM2575T-3.3%26M%3D1 Da müsste noch eine Induktivität, Diode und zwei Kondensatoren ran. http://www.onsemi.com/pub_link/Collateral/LM2575-D.PDF oder: http://www.segor.de/#Q%3DStepDown-Modul%26M%3D1 So groß wie der Teensy! ?
  11. Darum der Expansion Port. Dann kann eine weitere Platine angedockt werden, die zu mindestens die Zellspannung messen kann. Ob beim Laden noch eine Balancer Funktion möglich ist? Da bin ich derzeit überfragt. Der Spannungsteiler für die Spannungsmessung kann anders bestückt werden. Einen 3.3V Spannungswandler, der mehr als 32V verträgt habe ich nicht gefunden (und auch gesucht). Da müsste ein anderer genommen werden. Oder ich müsste die Spannungsmessung mit einen eigenen Pin abtrennen damit nicht die volle Akkuspannung auf die Schaltung gegeben werden muss. Hier wäre ein Jumper von Vorteil für diejenigen, die das nicht brauchen. VG Barney
  12. Hi Dude, hier die (hoffentlich) Finale Version von der Leiterplatte. Ich habe noch einen Expansionsanschluss mit den freien Anschlüssen vom Teensy eingebracht. Sonni wollte noch einen Balancer für die Akkus haben. Die Serielle 1 und 2 sind für den Toshiba Sigma BLDC. Der Spannungsteiler ist für 33V gerechnet. Es sollten aber nur Akkus bis 28V angeschlossen werden. Der Rest ist Reserve. Warum 28V? Der R78 3.3-0.5 verträgt nicht mehr als 32V Eingangsspannung! Es gibt einen potentialfreien Motorsteller Anschluss. Wer nicht die Opto HV-Serie (Flugregler) verwendet, sollte damit glücklich werden. Der Power MOSFET für das Ein/-Ausschalten des Leistungsteil, schaltet den MOSFET mit 12V (oder 15V, je nach Z-Diode). Damit sollte der MOSFET wirklich niederohmig sein und damit auch keine großen Verluste auftreten. Ein Anschluss für den Stromsensor ist auch vorhanden, einschließlich der passenden Spannungsversorgung des ACS756-050. Der Nunchuk Empfänger ist ein Anbauteil geworden, da dieser später dieser nicht mehr gebraucht wird. Die Widerstände musste ich alle vergrößern. Die 7mm waren zu knapp, jetzt sind es 10mm Widerstände der E24 Reihe. Man sollte immer die Libs prüfen. Das Gehäuse der MOSFETs stimmte auch nicht (DPACK -> TO252AA). Der Bestückungsdruck ist auch generiert. Kannst du bitte einen geneigten Blick auf die Leiterplatte werfen. Vielleicht habe ich was übersehen oder falsch angeschlossen. Danke für die anstehende Mühe Barney Elektroskate Teensy 20140621.zip
  13. Hi LiFePO, danke für die schöne Frage. Ich möchte es aus mehreren Seiten beleuchten: 1. hören/sprechen: Doch die Motoren sprechen. Und der Motorcontroller hört ihnen zu. In Analogie zum elektrischen Drehstromnetz, könnte man argumentieren, dass die Brushless Motoren einfach nur dem vorgegebenen Rotationsfeld folgen müssten. Das könnte sogar funktionieren, aber für unseren Anwendungsfall nicht anwendbar. Warum hören die Controller den Motor zu? Um die (elektronische) Kommutierung rechtzeitig ausführen zu können, wird die back emf ausgewertet (http://de.wikipedia.org/wiki/Stromwendung). Der Controller hat damit das wissen über die Motorlage. Hätte er dieses Wissen nicht, kann es passieren, dass das Feld schneller drehen will als der Motor aus seiner Situation überhaupt kann (Last, maximale Frequenz). Die back emf funktioniert nicht beim Stillstand oder niedrigen Drehzahlen! Hier wird auf Vermutung ein rotierendes Feld vorgegeben, in der Hoffnung, dass der Motor einrastet und mitdreht. Wenn das nicht funktioniert, singt der Motor hässliche Töne und blockiert sogar. Für unsere Off Roader hier im Forum wäre so was nicht akzeptabel, daher hier die nahezu 100% Verwendung von Hall Sensoren, die das Magnetfeld erkennen können und damit auch im Stillstand die wichtige Informationen über die Motorlage liefern. Damit sollte deine Frage beantwortet sein! Der Motorcontroller muss wissen, wie der Motor steht. Wie soll der Controller mit zwei Motoren umgehen? Beide Motoren drehen auch aufgrund ihrer Aufgabenstellung nicht synchron. Also werden zwei verschiedene Drehfeldfrequenzen benötigt, die ein Controller mit drei Anschlüssen nicht leisten/ liefern kann. VG Barney
  14. Jetzt das Bild zum Text.
  15. Wenn ich nur wüsste wo ich die MOSFETs hin verbummelt habe....
  16. Und damit ist es bewiesen, Chri hat uns belogen, von wegen leichtestes Board 3.46Kg u.s.w. der fährt nur kick push (Ohne Akku). Der Ars.. . Der hat uns alle belogen! Und im falschen Forum ist er auch. Das ist ein E-SKATE Forum. Du alter Bretttreter!
  17. Chri meine, sein Board zickt und gab mir seinen Motorregler. Ich weiss nicht, warum das nicht richtig läuft. Seht ihr da einen Fehler? VG Barney
  18. Hi Metzga, Dieser Motortyp kann nicht parallel geschaltet werden.
  19. Hallo Fabian, coole Sache. Noch eine Frage, wo ist der Einschalter? Persönlich würde ich das Display aussen tragen, also nicht am innenarm, sondern wie eine Uhr. VG Barney
  20. Die Timerroutine ist nur für eine langsame Ausgabe der virtuellen Joystickwerte.
  21. Fußballspiel? Das lenkt produktive / kreative nur unnötig ab Den Code für die Exponenten Version steht hier im Thema!
  22. Hi Dude, da du momentan aktiv an der Software herumschraubst, kannst Du bitte die Exponenten Funktion mit in der aktuellen Version von dir mit einbauen? Hoffentlich blickt man vor lauter Customizing noch bei den Parametern durch.... VG Barney
  23. Jetzt auch mit Unterscheidung für Beschleunigung und Bremse: // Nunchuk - Steuerparameter SollWertvorgabe und Programmablaufsteuerung #define YAchseMin (uint16_t) 27 // MinmalWert y-Achse ganz unten (0..65535,0..30) #define YAchseMax (uint16_t) 250 // MaximalWert y-Achse ganz oben (0..65535, 240..255) #define YAchseNeutralstellung (uint16_t) 2000 // Neutralstellung Y-Achse (0..65535, 125..135) #define YAchseWertMax (uint16_t) 2047 // Neutralstellung Y-Achse (0..65535, 125..135) #define YAchseTotpunkt (uint16_t) 50 // Totpunkt der Y-Achse +-8 digits (0..65535, 125..135) #define YAchseExpNeg (float) 1.4 // 1 linear, 2 quadratisch #define YAchseExpPos (float) 2.0 // 1 linear, 2 quadratisch uint16_t JoystickWert = 0; IntervalTimer timer0; void setup() { Serial.begin(38400); timer0.begin(ISR_Timer0, 15000); } void loop() { } void ISR_Timer0() { uint16_t YAchseMapped = 0; JoystickWert = JoystickWert++; if (JoystickWert > YAchseMax) JoystickWert = YAchseMin; Serial.print(JoystickWert); Serial.print(";"); if (JoystickWert < YAchseMin) JoystickWert = YAchseMin; // Sicherheitsfunktion, da bei unterschreitung die map Funktion Ueberlauf produziert if (JoystickWert > YAchseMax) JoystickWert = YAchseMax; // Sicherheitsfunktion, da bei ueberschreitung die map Funktion Ueberlauf produziert YAchseMapped= map(JoystickWert, YAchseMin, YAchseMax, 0, 4095); Serial.print(YAchseMapped); Serial.print(";"); Serial.println(JoyExponent(YAchseMapped, YAchseExpPos, YAchseExpNeg, YAchseTotpunkt, YAchseNeutralstellung, YAchseWertMax)); } int JoyExponent (int16_t WertY, float ExponentPos, float ExponentNeg, uint16_t Totpunkt, uint16_t Neutral, uint16_t WertMax) { int16_t Wert = 0; WertY = WertY - WertMax; uint16_t joyMax = Neutral - Totpunkt; int16_t joyLive = abs(WertY) - Totpunkt; if (WertY < 0) Wert = - (WertMax * (pow(joyLive, ExponentNeg) / pow((WertMax-Totpunkt), ExponentNeg))); if (WertY >= 0) Wert = WertMax * (pow(joyLive, ExponentPos) / pow((WertMax-Totpunkt), ExponentPos)); return Wert; }
  24. Hi Dude, anbei die saubere Lösung für die Jostick Abfrage. Ist wie ein Überraschungsei: -> Es ist zukünftig Egal, welche Werte der Joystick liefert und wie groß sein Wertebereich ist. Alle Ausgaben werden auf +-2047 normiert. -> Sollte der Joystick unerwartet seine Min oder Max Werte unter-/überschreiten ist das auch egal und wird abgefangen. -> Für den Controller Eigenbau ein Wichtiger Schritt, da dieser mit 12Bit auflöst und Werte von 0..4095 liefert. -> Der Weg ist jetzt einstellbar. Linear oder Exponentiell. -> Meine Joda Variablenbezeichnung wurde korrigiert. MinYAchse -> YAchseMin VG Barney Was ich noch heute probieren werde ist die Exponentialfunktion für beschleunigen und Bremsen getrennt zu parametrieren. VG Barney // Nunchuk - Steuerparameter SollWertvorgabe und Programmablaufsteuerung #define YAchseMin (uint16_t) 27 // MinmalWert y-Achse ganz unten (0..65535,0..30) #define YAchseMax (uint16_t) 250 // MaximalWert y-Achse ganz oben (0..65535, 240..255) #define YAchseNeutralstellung (uint16_t) 2000 // Neutralstellung Y-Achse (0..65535, 125..135) #define YAchseWertMax (uint16_t) 2047 // Neutralstellung Y-Achse (0..65535, 125..135) #define YAchseTotpunkt (uint16_t) 50 // Totpunkt der Y-Achse +-8 digits (0..65535, 125..135) #define YAchseExp (float) 1.4 // 1 linear, 2 quadratisch uint16_t JoystickWert = 0; IntervalTimer timer0; void setup() { Serial.begin(38400); timer0.begin(ISR_Timer0, 15000); } void loop() { } void ISR_Timer0() { uint16_t YAchseMapped = 0; JoystickWert = JoystickWert++; if (JoystickWert > YAchseMax) JoystickWert = 0; Serial.print("JoystickWert: "); Serial.print(JoystickWert); Serial.print(" "); if (JoystickWert < YAchseMin) JoystickWert = YAchseMin; // Sicherheitsfunktion, da bei unterschreitung die map Funktion Ueberlauf produziert if (JoystickWert > YAchseMax) JoystickWert = YAchseMax; // Sicherheitsfunktion, da bei ueberschreitung die map Funktion Ueberlauf produziert YAchseMapped= map(JoystickWert, YAchseMin, YAchseMax, 0, 4095); Serial.print("YAchseMapped: "); Serial.print(YAchseMapped); Serial.print(" ExpJoystick: "); Serial.println(JoyExponent(YAchseMapped, YAchseExp, YAchseTotpunkt, YAchseNeutralstellung, YAchseWertMax)); } static inline int8_t sgn(int JoystickWert) { if (JoystickWert < 0) return -1; if (JoystickWert==0) return 0; return 1; } int JoyExponent (int16_t WertY, float Exponent, uint16_t Totpunkt, uint16_t Neutral, uint16_t WertMax) { int16_t Wert = 0; WertY = WertY - WertMax; uint16_t joyMax = Neutral - Totpunkt; int16_t joySign = sgn(WertY); int16_t joyLive = abs(WertY) - Totpunkt; Wert = joySign* WertMax * (pow(joyLive, Exponent) / pow((WertMax-Totpunkt), Exponent)); return Wert; }
  25. Exponentialfunktion für die Bremse?
×
×
  • Neu erstellen...