rwillett
⭐Supporting Member⭐-
Posts
1,256 -
Joined
-
Last visited
-
Days Won
5
Content Type
Profiles
Forums
Events
Shop
Articles
Everything posted by rwillett
-
That's exactly my point as to why I shouldn't be let near power tools.
-
I'm tired of playing with fire... and electricity greater than 0.1A and 5V... and circular saws that jump off the bed...and heat sinks that can melt lead...and toxic fumes from playing with ABS...and picking up hot metal from forges... I just about have 10 fingers and thumbs, though I look at them and I have knocked chunks off them and have had bits sewn back on. Rob
-
That's a fair point.
-
@nekomatic Sitting on my desk as I speak are: 1 x Raspberry Pi 3, 1 x Raspberry Pi 5 1 x Leonardo Uno (Arduino) 1 x Uno (No name) but it's a nice shade of blue 1 x Keystone 16x2 LCD display with 5 press buttons 1 x CNC Shield V3 3 x DRV 8226 stepper drivers 1 x Freenove Smart Car Shield for Raspberry Pi 1 x Keystudio Motor driver board 1 x WiFi proxy gateway for FIL to get streaming services from our IP address. I know I have a few more Uno's and Pis somewhere as they came with something but got put in a box. Equipment I have, time to write a comms protocol to exchange information to drive a separate LCD display on a different Arduino, not so much.
-
I have never used punch cards or tape. Well that's not strictly true, they did get used on a Friday night when around 2cm x 2cm squares were ripped out, rolled up and Mr Rizla helped out. The year ahead of me used punch cards, but we moved to micro's and CP/M, I'm reasonably certain I have never directly programmed a main frame apart from writing six Cobol programmes in my second year. All UNIX, networking, Lisp and interesting stuff. Odd how I've moved from multi GB UNIX systems back to 256KB, a 4x4 keyboard and directly programming pins. Rob
-
My background is Unix, started with very early version of stuff on Vax 11/750's and 11/780's. We used to get 1" (?) tape from Bell Labs, I recall a certain Mr Kernighan sending stuff to us on occassion. My final year thesis was on Lisp and garbage collection and was done on a 64KB (yep 64KB) UNIX box from Motorola with a M68000 processor (might have been a variant as I suspect it had paging built in). Long time ago though,. The Arduino's are quite simple in some respects, limited memory 256KB, only 16Mhz CPU, lots of bit banging to get keyboards and LCD's working as keyboards and displays are very optional extras. I'm having to recall stuff from a long time ago as I'm writing the code, but working in limited ram space is not too bad, at least once the LCD display is connected I can get something out and be seen, the Arduino IDE has a serial IO system, so I can write debugging back. I can remember writing kernel code and using a single led on a control panel to check things were working and building things up from there. The other problem I have is that the guitar winder is downstairs as my office desk is full so I can only work on stuff in the evening. It also requires a dedicated Macbook for the IDE. Glad you have confidence in me. I don;t Rob
-
I'm not downhearted. This is normal TBH on project development. I can easily replace the 8mm pitch with a 2mm pitch that will just slot straight in. I'm hanging on as the options are: 1. Replace the 8mm with a 2mm one. Cost £10-£20. I'd prefer a ball screw but they are a lot more money but are quieter, smoother and more accurate. 2. Use micro stepping, so I can drive the motor at 1/2, 1/4, 1/8, 1/16 and I believe 1/32 steps. So I add 2-3 jumper and go from 400 steps to 800, 1600, 3200. 6400 and possibly 12800 stepers per 360 degree rotation. So the 8mm pitch is cancelled out by going to 1/4 microsteps which costs a few jumpers on the driver board. Since I've not done it yet, I have no idea of the downsides as there will be some Repeatedability is still key Rob
-
No it's not interupt driven. The view from Arduino crowd is that interupts are not a good idea on the whole, though there are exceptions. At the start I assumed interrupts would be the way to go, but the recommendation was "no". I do recall TSR programs for DOS and they were a pain so not too worried about not using interupts. Even thing like checking for the limit switch being activated is done through pollng. I think the reason is that the Arduino doesn't have an OS, though there is is RTOS (https://www.arduino.cc/reference/en/libraries/freertos/) which is too big a rabbit hole for me to go down, but is on my backlog. All you have is a call to setup() and a call to loop(), so when you press the reset button or startup, you get setup() called and then the system repeatedly calls loop(). All the main code is in the loop and the key is to keep the loop code down to the minimum, that part is fine. I call the init code for everything in setup() and then I have as little code as possible in loop(). Think of loop() as a ticker. You set the stepper motors up and then make a call to the API to do the work, the Accelstepper library API works out if there is a motor step due and if so does it. The rule is to call the code to checkl and move motors at least one per call to loop (). Making calls to the LCD is exceptionally time sensitive, so the strong recommendations for using the LCD library are: 1. Do not use lcd.clear() under any circumstances, if in doubt write spaces to clear the display. 2. Write non changing parts of the LCD once and then only change the parts of the LCD display that actually change. I'm down to changing just three characters 3. Write the changing parts as infrequently as possible, e.g. don't try and update the display 50x a second as thats pointless. I update the LCD display using a timer about every two seconds and thats just to change three characters. 4. Think about diferent displays that are quicker, some LCD displays take 200ms to update. Thats a fifth of a second. Thats crap. Suspect I may have one. 5. Use a different LCD library that is faster, so I now use https://www.arduino.cc/reference/en/libraries/hd44780/ as opposed to the standard LD library and that made a big difference, but I still get the motor stalling. I am seriously considering a wholly separate Arduino driving the LCD display and using some sort of serial comms to link them together. What puzzles me is that my Prusa printers use similar tech and have no issues updating the LCD and the motors never stall. I'll keep digging. Rob
-
I think your explanation is spot on. It's an easy fix, but at the moment I'll keep the threaded rod with an 8mm pitch. Bit annoyed but I'll live. Biggest problem now is that writing even three characters to the lcd at a 1-2 second interval, can sometimes stop the looping motor. No idea why and need to dig in. I'm suspecting a timing issue but the code is so trivial, I can't see why. If I don't update the lcd display, it just works. I have changed the lcd library I use but they all appear to be mostly blocking calls, hence why I suspect a timing issue.
-
Just worked it out. There are four threads on the rod and each thread is 2mm apart. Each thread has a pitch of 8mm but as there are four threads it looks like tighter thread. The brass nut has a internal pitch of 8mm. I suppose the only advantage I can see is that the four threads mean the nut can join in four places at the start, but since that's a one off activity, that can't be it. The solution is to buy an 8mm lead screw with a 2mm pitch. All the other stuff stays the same. Should be relatively easy. Anyone want an 8mm lead screw with an 8mm pitch? Rob
-
The next episode is where I discover that what I thought was an 2mm pitch threaded rod is actually an 8mm pitch threaded rod. This means that when I send down 400 steps to the motor, I expected the threaded rod to rotate 360 degrees and to move the winder mechanism 2mm whereas in fact it turned one turn and moved 8mm. As none of my children seem to possess a ruler, I possess digital calibers and do not need rulers, I work digitally and rely on my school age children to provide simple things like rulers, so I guessed how far it was moving until the kids finally found a ruler. As I'm a man, my guesses at distances were perfectly accurate (not). I've just spent two hours looking through Arduino code, trying to understand what I was doing wrong. I've checked motor speeds, distanceToGo(), current settings, aceleration, pulse width settings, written loads of debug code . I must have compiled the stuff 50x trying to find out the problem. I then looked on Amazon and checked what I had brought. This is the diagram I saw Note the words "Screw Spacing: 2mm". Now I thought this meant that one turn means 2mm, it doesn't mean that at all, what I should have looked for was this highlighted below. As I've been working in single steps on the motor, which is too small to see, I never noticed it was all wrong and 4x too much. It was actually one line of code to change a parameter from 2mm to 8mm and it now homes properly. I wonder if I'm actually gone mad and this is all a bad dream Why can't I have have dreams with enormous amounts of alcohol, fabulous food and beautiful women hanging on my every word. Why do I have dreams about debugging things? Off to take the dog for a walk and clear my head. Rob
-
@Woody1957 You never played "pin the tail on the bass guitar" before? What did you do as a kid at parties?
-
I've now managed to get the limit switch working on the winder. The limit switch is used to check when the stepping motor that moves the lead screw is as far left as it is allowed. See the diagram below. Stepper motors have quite a lot of torque and so can easily destroy equipment or themselves if they try to turn and something is stopping them, such as a metal and PETG frame The limit switch was a spare from an older 3d printer and has three connections, a ground, Normally Open (NO) and Normally Closed (NC). This should allow the user to work out the most sensible way to use it. Good practise is that you fail safe, so you actively keep it working and so if a wire breaks or disconnects, its the same as if the switch is closed. Think of it as the deadmans handle on a train, you have to actively keep the throttle lever working, if a driver has a heart attack, the throttle will fail back to zero. So we want Normally Closed, so if a wire breaks, the circuit goes open and its as if the switch has been activated, saving your printer, or other expensive gear from shaking itself to death. The way the Arduino implements this on a CNC shild is 'odd' and I could not understand what it was doing and why. It also turns out that the JTAG to DuPont cable I had was broken, so basically I had no idea what I was doing, couldn't understand the documentation, on a piece of hardware that changed the pinouts, with a cable that I thougth was wired incorrectly anyway and which then turned out to be broken, with a switch that was unclearly marked. In the end I took two long female to female DuPont connectors, wired them directly to the switch and to the Arduino and epoxy resined the connectors into the switch, so nothing was ever going to change and it would work. I have rage quit in the past, I have shouted and cursed at kit and software in the past (Windows 3.1 TCP/IP drivers I'm looking at you, if I ever find the developer who put that pile of utter junk out, they will never walk again), but I have never rage glued equipment together I then went back to the kids who were cowering the corner learning very new words from their father and watched Ghosts Xmas special to wind down. This means that now I *think* I have all the bits done. They aren't necessarily in the right place and they aren't all complete, but I'm now down to stuff I know about (famous last words) and just need to finish the software, assemble the bits and screw things down (actually still waiting for the 1.8 degree stepper motors), and pull apart a pickup to then reassemble it. Target is next weekend to try and do a wind. Away this weekend so thats out. Rob
-
@Jackroadkill I'm tending to agree with you. Working on this design. This gives me space for any weights or a preamp, or four knobs and a few switches. It'll probably be three knobs, vol, vol, tone
-
Gosh, not heard that pun on my name since I was around six years old...
-
I'm playing about with how the control panel will look. I'm starting to favour a more organic look, as shown by the red plate below, rather than the Telecaster or a straight line look. This looks nicer to me, but would like to take views. This also allows me to cover the very bottom of the bottom left for any weight to balance it out if needed, also this allows for more space and more options. At the moment, I just put three knobs on and a socket. I really want to preserve the rounded feel of it all.
-
I think cmake is more trouble than it's worth. Perhaps drop back to Make and makefiles and see if that works. Sometimes the extra effort of stuff like cmake to reduce effort for cross platform support is more than the additional effort of doing it manually. I used to build code for large, complex systems in the 80's and 90's that had to run on lots of different platforms, and we had less tools than we do today, but we understood how they worked then. Make is a bit awkward and basic, but it does work, we modified and built Unix kernals with it, so we know it can handle complexity. I suspect there's enough brainpower in this thread to help if and when you want it. Rob
-
Alan Partridge channels his inner Rob Willett....
-
So, had some time free yesterday and a few really dull Teams calls, so kept on playing about with the design for the bass guitar. Its getting there and I have deliberately not printed anything yet, or even worked out how I'm going to print this beast or burden. I focussed too much on printing the six string, I feel I compromised the design a little. Hopefully this one is better. I'm also pondering what the wiring will look like. I don't know yet what pickups to use, I'm intending to make my own, coz I have so much spare time on my hands (not). I might make it a Jazz like or something completely off the wall. One of the lessions learnt from the six string is not to do tunnels with the printer as they need to be big and compromise the body, so the control panel here will have a surface 6.25mm socket. At the moment I'm thinking of a Telecaster like control panel with a volume/volume/tone. That also frees up the bottom left for any lead plates to put in to counter neck dive (if needed). I'm interested in any wiring that gives me lots of options to try out. I did see this on Talkbass <gulp> which led to this beauty... Possibly overkill, but it did make me think, how do I wire it? I know how to wire it as a P or J-bass, but I'll throw the question open, if I can wire it anyway at all, what would be "interesting" and fairly sensible (not sure what that means TBH). What would you do? Thanks Rob
-
Love the name, "Animal". So cmake is for generating makefiles. It's the preprocessor that generates the most god awful makefiles as it's all automatic. You want a Makefile thats 20,000 lines long, will compile every version of GCC on every version of processor the world has ever seen, in 97 differennt languages, have I got the system for you! To be honest, cmake can be a massive PITA, actually cmake is a massive pain in the ars3. I am assuming that the build system for mod_dwarf uses cmake and so it's mandatory as it automatically brings in all the libraries you may ever want, apart from LV2, which is the one library you actually need. is this your problem https://stackoverflow.com/questions/8774593/cmake-link-to-external-library? This is a decent (but heavy duty) ref https://cmake.org/cmake/help/book/mastering-cmake/ As with most stuff in Unix, it assumes you know it all anyway and simply need to occassionally check something out. Since I know you're not stupid, I would have thought you would have seen and discounted this https://forum.mod.audio/t/plugin-dev-writing-a-sequencer/6679 I can also see that people are now putting package managers on top of cmake to manage library dependencies because cmake isn't complicated and difficult enough, so lets put another layer of abstraction on top of this and try and abstract the whole build process away. We tried that in the 80's, learnt the lesson that it was mad and produced systems that were impossible for mere mortals to build and maintain without combining Feynmann and Einstein with a hint of Bohrs. Anyway back to the problem in hand. Happy to help, not looked at cmake recently but could fire up a Linux VM to see if I can help that way. If you do need a Linux VM (for free, just to be clear) to try stuff out, let me know. I have a VMWare server sitting here with a load of disk and memory doing sweet FA. You can connect it and play to your hearts content. All Gb in and out as well so no messing around with paltry 100Mb connections. I would hope that between us and the more recently technical aware here, we can get this fixed. Let me know. Rob
-
No update for a while, work has got in the way of this. I managed to find some time yesterday as t'other half and daughter #1 went to see Lucy Worsley in Kendal talk about Agatha Cristie. I have managed to get the motors to work the way I want them to now. I did rather feel it was a battle of wills between me and the motors and they were winning. Which is sad It does look like one of my stepper motots has been abused ine the past, the only person I can think of is <ahem> me, so some more are on order from Ooznest. However I did seem to get them working with some odd and small stepper motors I found in the a box from some astrophotography project that went nowhere. I ordered some 0.9 and 1.8 degree stepper motors. The 1.8 degree version gives me a 100% speed increase for £10 so thats a bargain. I like bigger motors as I have also found a 24V 4A power supply that will replace the bench PSU I currently use. I have now managed to write the code so: 1. The lead screw goes back and forwards correctly to lay the wire down. I did like that to be honest. It makes it look like its working. 2. Rewrote the LCD code to use a different non-blocking library to display information as its winding. The issue before was that when you write a small tiny update to the LCD, the motors basically stop. I hadn't realised writing to an LCD display was so slow that you can time refreshes with you stopwatch on your iPhone. Rewrote all the sodding code and cut out everything that wasn't needed. Not it still stalls but it's very, very, very small. 3. Started writing the code for the 'home' function. This is the code that moves the winder to the left, hits a limit switch, then moves a certain user defined distance to the right. This certain user defined distance will marry the edge of the wire guides to the bobbin and will be different for each bobbin and so it needs to be flexible. I did have a mad idea of using a laser to line this up and then discarded it as I'd be blind as I cocked it up. I wanted to use the Prusa method checking for stall guard and having a physical limit switch. Stall Guard is only available on expensive stepper motor drivers so back to the drawing board and am using a physical limit switch. This is the mounting plate and this is the limit switch Of course good wiring practise is that you wire it up so the switch breaks connectivity on contact, so that if there is a real break in the wiring it "fails safe", but no, all of the sodding pre made wiring is it makes a positive contact on the switch being closed. So if it breaks, you have no idea. Which moron designs the wiring looms here? So I need to make a JATG to DuPont cable and the only thing worse than wiring JTAG is wiring DuPont connectors. Once this is wired in, I'll write the homing code, mentally written as I walked the dog this morning, but lets see. That should be it and then I can start seeing if it works. Things still to worry about: 1. Wiring tension 2. Wires coming off the main holder and twisting and jamming or breaking. 3. Mains wiring. I hate mains as it can kill me. 4. Speed. 5. It just doesn't work. Rob Rob
-
The edges will be filletted (or chamfered or something). It's just not been done in F360. The six string was and the rounded bits took on a different shine to the rest of the body. Now if I do expoxy resin the body, this 'shine' will probably go away. At the moment, the focus is getting the guitar winder to work. Struggling with issues on stepper motors not working together for some reason. Rob