Followup to the Onewheel XS
-
@onedangt IKR. So adorable watching it flop around.
You can tell which side I biased the cells in the battery housing by how it naturally wants to turn left. -
Got the IMU hooked up "properly". Soldered it directly to eliminate any dodgy data. However the VESC still cannot communicate over the I2C line (SDL/SDA) to the IMU.
Not sure if it's just bust or I'm missing something so will try testing it on a spare Arduino another day to verify.
Also thanks to the housing redesign the LEDs fit nicely now.
Will have to find a way to control them still, might still use an Arduino to read the hall wires from the motor to change the lights. Will need an external mosfet to control that since the tiny Arduino I have will fry if I try to power them off it. Already tight for space and still need to implement a power circuit to toggle power depending on the button's state up in the controller. I'll likely put that near the BMS since there is some room there and makes sense.
Learnt a bunch from fiddling so far although my squishy head hasn't made complete sense of
anymost of it. Updated the firmware and now most of the balance config is available. Also swapping the "App To Use" setting to enable balance settings causes the manual keyboard controls to act real weird, thought I busted the settings at first.After adjusting limits though it runs smother still without being secured properly.
.
Edit : Looks like my little MPU-6050 is dead, wild since I've had it sitting unused for like half a decade in my Arduino box. Used some test code and can't get it to spit out anything. Ordered a new one to come tomorrow :D
Edit 2 : New one showed up and worked straight away on the test bed so will look to plop it into the XS tonight after I've finished melting from today's ride.
-
They said it couldn't be done!
This is with P=1 I=0 D=0 for now.
Saw suggestions on the full scale to have P at 25 but when I tried that it attempted to take off before hitting the duty limit moments shy of screaming off the table.But wait there's more... I have invented Ghosting+
And this is with extremely limited "don't catch fire" settings. I still have to tune it! (and have it run off the internal battery)
Took longer than expected. Wired up the new MPU aaaaaand nothing. Turns out after an hour of googling I came across this gem.
https://electric-skateboard.builders/t/onewheel-build-guide/80129/449
THE DAMN PINS ARE REVERSED REEEEEEEE
After swapping those it worked. I did that on my old one but it was totally broke and didn't think to try on the new one >.>
Sandwiching the IMU between a connector and mosfet is probably fine right? I added electrical tape to the bottom afterall which is the electrical equivalent of hiding under the sheets so the monster can't get you.Next up is building some footpads (that don't ghost). The 40x40 FSR's go for about £12 each which kinda sucks but if I want this done I'll have to buy them. It'll add a tremendous amount of rigidity to the whole thing and allow me to test ride it.
In the meantime since they might take a while to come I might look at hooking up the LEDs.
I definitely need to redo the tire. That TPU does not grip to anything well enough. Guess casting rubber might be my next best bet. Print a tire in PLA, make a mold around it then cast into the mold. Printing a mold makes sanding more difficult as I discovered prior to the TPU tire.
-
Seat belt/air bag occupancy sensors would likely be the cheapest foot pad sensor option. Short of build your own with alum-in-um foil and silicone to give sensor separation to prevent ghosting.
-
@samuraipunch I do have some of those car seat sensors recommended to me by @ed_co for a full sized pad but I'd need to cut them up to fit this 1/2 scale pad.
.
Edit 1 : Did some testing with the LEDs. Built the rear bar and found some PNP transistors that I could use to power these. Would use NPN but I used a common ground making it impossible without redoing the lightbars.
Also here's the power button using the same fade animation to test.
I'll need to build a little 3xPnP transistor board to power this lot. 1 for forward, 1 for reverse and 1 for the power button :)
.
Edit 2 : Designed a small PCB to drive the LEDS from the Arduino Pro Mini tucked under the FSESC. Getting real dense in this controller box. Will need to also run split connections off the hall sensors wires into the Arduino to figure out the rotation to change the lights but that's for another day.
Also I printed a half scale stand ;)
.
Edit 3 : I think I found a simple way to add a switch to the BMS without using external mosfets.
Wanted to use the fets on the BMS but couldn't figure out what I might need to do. Found the datasheet for the protection IC and think I might be able to simple cut the trace leading off pin 3 and run the switch wires between them.https://www.ablic.com/en/doc/datasheet/battery_protection/S8254A_E.pdf
Pin 11 also controls all apparently but I don't want to require the switch to be on to charge.
Not sure if this will work as I intend, after lots of research plenty have wondered about adding switches to larger BMS's and most seem to give up, use an anti-spark circuit or wire the switch into a thermistor to cause a fault and disable it. None that I can find toy with just intercepting the gate for the output fets. I can only assume for good reason but I want to see if it will work :)
-
Finally had enough progress to share an update on this.
Nearly finished those footpads. Cut out 2 new chunks of wood and made a bunch of jigs to get it right. Hardest part so far was routing out the rear pad to accommodate the slightly taller battery housing.
Did one pass down to the first glue layer then another pass 0.5mm into the next wood layer. Took forever with my old Parkside rotary tool.
Came out good and left enough space to fit the lid. Here's an inside look without the battery housing inside the rails.
After that I removed some wood from the nose/tail ends where the bumper angles up a bit. I got it pretty close and can do a bit more to close the tiny gap left.
Will later angle the footpad, for now it's flat.
Curve is just a few more attempts at sanding away from perfection too :)
Ports still line up which is a relief too.
Left the jig to print last night that assists sanding down the footpad at the right angle.
Used my belt sander for this like time but instead of mounting the sander to the table and pressing the pad to it I did it the sensible way this time.
Came out clean :)
Waiting on some offcut veneer strips that I will make the top layer from instead of using varnish to fake it. Will also let me cut out some slots for the FSR sensors to sit in so they don't petrude too much and show through the griptape later.
Rear pad done too, had to be careful not to sand into the battery lid cavity for this one.
Last step for the sanding is to bevel the edges a bit, add the top layer and countersink the holes for the screws.
In the meantime I'm printing a new battery housing to fit the BMS properly and read light bar.
Not done yet so left the bits out on show :)
Also on a quiet period earlier in the week I printed a scale stand ;)
Here is the pinout so far for the ports on the controller.
The "Batt Extras" is wider this way so getting it backwards won't destroy anything but just reverse the lights on the tail. Gnd is shared on Batt - after checking those actually were on the same line so it'd actually work. Reason for this is there isn't room for another 5 pin connector so I can't put Gnd on it seperately or key it like the "Motor Sensor" and "Footpad" connector. -
@lia -- I am in awe of your perfectionism!
-
@s-leon At this point it's become something of an art piece much like that trophy I made for Dax which I spent much longer on than I expected.
As such I can't help but make everything just right. With all the jigs I've made making another shouldn't be as hard.
-
I wanted to get the entire battery section done today. Been putting it off for a while if you couldn't tell. Not sure why but these 4 cells alone are intimidating me more than the 60 Sanyo 21700 cells I welded and frequently have stuck to my back on rides.
Regardless I decided I'd go about getting it all setup which required a bit of setup and planning before committing. First up was deciding how the wires would route. I've upgraded to 16AWG wire since I think I can get away with that and still have the cable fit around the axle. BMW is held into it's diagonal cradle with a printed brace atop preventing the battery wires pushing it out and shorting on the lid.
Remembered to solder the balance wires on before welding. Not a hug issue but helps prevent heat getting to the cells. Prepared the connector so I can actually remove the pack later if need be since the harness will be attached permanently after.
Got the KWeld out ready to put it together and wrap it in the blue wrap however turns out 1 of my 2 large Lipos was dead. Like dead dead. 1 cells was at 3v and another at 2.4v when the lowest they're meant to go is 3.2v >.> My charger allowed me to still charge it back up to a storage voltage of 3.7v each but I don't want to trust this pack pulling huge currents so left it there and will look at getting a second hand car battery for much safer and better power delivery like I did with the DIY welder a few years ago.
It all however folds neatly into place with enough slack to work with so I'm not skinning knuckles trying to separate the connectors. Hopefully I can get a battery soon and finish up the box to run the board off it's own power and see what current draw I can get away with.
Need to wire the headlight but waiting on some 30AWG wire to come for that since the 24AWG wire seemed a bit much and bulked the cable a bit.
Got V8 of the battery housing printing since the rear P+/- wires were a bit snug under the BMS leaving the housing so made accommodations for that. For now it all sits waiting on my desk for assembly.
-
Decided to charge up my salvaged lipo, paired it with the other and welded the pack together. Thankfully it doesn't appear to have diminished the integrity of the pack and worked fine doing the few welds.
Was on edge the whole time in case the Lipo with the black X on it went up in flames or I made a mistake and set the pack on fire. Thankfully neither happened and I'm in the process of putting the lipos back at a storage voltage.
Here's the pack without the shrink wrap on it. Not pretty but it works. The blue shrink wrap actually made it just too big to fit so opted to remove it. If I can shave like 0.5mm off some walls then I might be able to add it again.
As planned the battery can be removed easily with the way I wired it.
Small red and white wires are for the tail light. GND as previously mentioned is shared on Batt- so I didn't need to have another wire to connect. Here they are working :)
Need to add 2 more wires. SW+ and SW- which will be blue and green. I'll intercept the trace going from pin 3 on the BMS's chip and the output mosfets then wire between them through SW+/- to the power button. Fingers crossed that actually works.
Printing another housing (V9) which gives a bit more space and allows easier routing of the wiring with additional consideration around the tail light.
-
@lia Had some catching up to do here. Omg im speechless!
-
@maciak Aha lots to catch up on indeed, glad it's fun for everyone else to follow :)
I don't tend to share a lot on Reddit since it's really not built well for documenting stuff like this. Probably due to share it again there soon once I've done the LED driver side.Edit: V9 of the battery housing finished and with some adjustments I can now use the blue wrap on the battery. Looks sooooooo much better now :) Also added some foam to protect the balance leads from pinching when being wrapped.
Totally didn't cover the whole pack just like FM does to stay true to their design and not because I didn't want to redo it >.> -
It was going so well.
Intercepting the output of Pin3 on the BMS doesn't disable the discharge mosfets and the transistors on the LED driver seem to operate even when the gate isn't active.
I feel like I'm missing something on how transistors like this operate. Almost like the tiny pnp transistors (S9012) I got are reaching some breakdown voltage. As for the BMS... no idea. Even triggering a fault doesn't cut the output completely making me wonder if these tiny cheap BMS's actually work 0.o
Maybe a formal education in electronics would have helped if I could have gotten one >.>
-Dramatic recreation of me googling things for the past few hours while at work.
Edit:
Okay so checklist of stuff I need to figure out still.- Change the LED bars from common ground to common VCC so I can use more commonly used NPN transistors.
- Redo the driver board to use NPN transistors with the throughhole C557B ones I was testing with that I know work.
- Summon all the dark arts to get the BMS to do as I say. That ooooor.... I cheat and find a way to get the 3A button to take 10A.
- Footpad wiring. Still waiting on the FSRs >.>
-
New PNP transistors arrived aaaaaaand same issue. However...
I wired the transistors wrong on the PCB...
*literally screaming*
WHY IS ARE THE PINS NOT LAID OUT LIKE THE CIRCUIT DIAGRAM REEEEEEEEEEE
The through-hole components have the middle pin as base so I just assumed the SOT-23 ones would too :(
Who... Whom... Whomst did this! Why don't I read spec sheets properly D:
How have I gotten his far and not set fire to something yet.Rotated the little transistor, as tiny as it is I managed to get it in place in the wrong orientation to correct the misalignment and it now works.
I've done a bunch more but until I have the LED driver in and operating off the internal Arduino Pro Mini instead of my test Arduino Uno I'll hold off sharing the other bits.
Let this be a reminder that I, Lia, am indeed a moron.
-
@lia -- It looks to me like you are learning valuable lessons!
-
Today was almost very nearly a failure buuuut I clawed back some glory after taking a break to cool off and roll about with Slush in a circle.
I spent 4 hours wiring up the last connections in the controller after redesigning the charge and power button mount plus moving the Arduino as it was going to be a nightmare connecting it to the driver board if it was under the FSESC.
In doing this I melted the positive pin off the power button when my iron got stuck to it. I may be able to fix this without needing to order another one and wait like 6 weeks.
After putting it all together the bank of SOT-23 transistors didn't behave as expected. For some reason the LEDs would come on if both were the same colour but if I had white and red operating the white wouldn't come on. Turns out I accidentally used some A92 PNP transistors which I guess just... don't work right so swapped those for S9012 since they kinda matched the spec of the test transistors. I did however cook 2 of them >.> Nothing more fun than connecting the entire thing up then watching the front and rear LEDs all come on max brightness with some smoke seeping up from the controller lol.
Nonetheless it's now 2AM... and it works currently. Behold, the second most dense thing in my flat.
The power button is missing since I need to fix it still. For full functionality I need to wire up the hall sensors to the Arduino to read motor direction but I haven't even written code to operate the lights outside of modifying the stock "blink" code. Not sure how I'll get it to read rotation. Assuming they cycle high and low depending on direction I could just butcher some code together but we'll see.
Still also need to figure out the Power On/Off function. I might need to just make a basic "balance only" circuit and have the mosfets purely as a power function and leave the FSESC to handle LVC and the charger to handle HVC.
-
@lia Absolutely beautiful layout and wiring job on that controller box!
-
@biell Thanks :)
It's so unbelievably dense. Packing it all in has meant shaving parts down by 0.1mm at a time. Got to tidy the led drive wires a little by bundling them into some heat shrink. Been pushing to finish this as I want to feature the XS in a video I've been editing for the past few weeks.@S-Leon Definitely good for learning. Reinforced some things and made me think again about other bits I thought I knew. I can safely say without custom PCBs for the ESC I doubt anything smaller or more powerful is possible at this scale.
-
Just a quick update. LEDs are working, Arduino works and through some arcane magic I managed to resurrect the tiny power button with some
micro-surgeryspells.Haven't actually tested the charger up until this point since the port wasn't hooked up until yesterday. Here it is~
Need to adjust the flash timing on the power button a little but with the example fade code from the Arduino IDE (programmer) it works fine for demo purposes :)
Half scale XLR, half scale charger and it uses a USB C port as the power input... because there is no way I'm doing 230v AC to 16.8v DC in that space! Need to move the red and green LEDs from the charge circuit up to the indicator hole on the lid but that's for another day.
Current code that was used here.
int Wled = 5; // The PWM pin the Forward LEDs are attached to int Rled = 6; // The PWM pin the Reverse LEDs are attached to int Bled = 9; // The PWM pin the Power Button LED is attached to int Wbrightness = 240; // how bright the Forward LEDs are int Rbrightness = 255; // how bright the Reverse LEDs are int Bbrightness = 0; // how bright the Power Button LED is int fadeAmount = 5; // how many points to fade the LEDs by // the setup routine runs once when you press reset: void setup() { // declare pin 5, 6 and 9 to be an output: pinMode(Wled, OUTPUT); pinMode(Rled, OUTPUT); pinMode(Bled, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // set the brightness of the pins: analogWrite(Wled, Wbrightness); analogWrite(Rled, Rbrightness); analogWrite(Bled, Bbrightness); // change the brightness for next time through the loop: Bbrightness = Bbrightness + fadeAmount; // reverse the direction of the fading at the ends of the fade: if (Bbrightness <= 0 || Bbrightness >= 255) { fadeAmount = -fadeAmount; } // wait for 30 milliseconds to see the dimming effect delay(30); }
Nothing yet for detecting rotation direction, swapping the LEDs from forward to reverse or anything else really, just enough to get it working.
-
@lia Down to the charger block, the attention to detail is masterful.