Dan
Forum Replies Created
-
AuthorPosts
-
DanKeymaster
1. No. I know a few people have built one. Perhaps this is an opportunity to make a kick-ass youtube video 🙂
2. 4 steppers + arduino + motor shield + some nuts and bolts + 4m? timing belt + blue servo + a board + sharpie + a power supply. That’s the minimum. Your price varies with availability and shipping.
3. I don’t currently have plans myself as I am busy with another robot. A future idea would be springs between the belt and the plotter head to allow a bit of flex; better way of holding the belt against the pulleys; and some way to drop off one pen and pick up another of a different color (automatic pen changer).
DanKeymasterI believe your change makes no functional difference. If it helps you understand what’s going on, do it. 🙂
DanKeymasterI assume we’re talking about https://github.com/MarginallyClever/Skycam/blob/master/skycamFirmware/skycamFirmware.ino
I must have tried to do belt at some point. Probably got distracted and never finished the demo.
PLOTTER_Z is an offset. Say your plotter head has attachments for the belts that are 5cm above the bottom. then PLOTTER_Z would be 5.
If I had a pen in the plotter head then I would change the offsets so that they reflected the distance from the belts to the pen tip, so my G0 commands don’t require extra math in my head. Done correctly G0 X0 Y0 Z0 would touch the pen tip to the center of the floor.
DanKeymasterin servo.h,
#else // everything else
#define _useTimer1
//#define _useTimer3
typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ;
//typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ;
#endifin configure.h,
//#define HAS_LCD // if you have an LCD panel
//#define HAS_SD // if you have SD card support on your LCD panel (must be on panel?)
#undef HAS_LCD
#undef HAS_SD// only uncomment one of these options
//#define LCD_IS_128X64 // reprapdiscount Full Graphic Smart LCD Controller
//#define LCD_IS_SMART // reprapdiscount Smart LCD Controller (including XXL model)that gets me a little further.
DanKeymasteri’ve made the matching change and get the same TCNT3 problem. Unfortunately I didn’t write the servo.cpp file and I don’t know enough about timer interrupts to be helpful.
DanKeymasterNow in the dev branch of the code. Expect it in the next release.
DanKeymasteri am cleaning forums and i see no answer to your question. wait. what is your question?
DanKeymasterSomehow I missed this post. Great suggestion! I’ll see about adding it right away.
DanKeymasterThe current sanguinolulu defintions in board_sanguinolulu.h only have pins for two steppers and one servo.
There’s even a line here that says:// TODO: if ZARPLOTTER & SANGUINOLULU throw a compile error, not enough motors.
I have found some more here: https://reprap.org/wiki/Sanguinololu#Pin_Assignments
I’ve added motor 3 and 4.BUT
Motor 4 breaks with convention of all other boards because it doesn’t have a dedicated (recommended?) limit switch pin.
I’ve assigned it to pin 24, the e-thermistor pin. I hope that works for you.get the latest version here: https://github.com/MarginallyClever/Makelangelo-firmware/tree/dev
DanKeymasterI’d really like to know why it doesn’t compile before you start removing sanity checks. What are the error messages?
I’ll then open a github ticket here: https://github.com/MarginallyClever/Makelangelo-firmware/issuesNote that I don’t have a sanguinolulu so this might take several tries to get right. Did you remember to set sanguinolulu in tools > boards?
DanKeymasterI’m a little surprised it isn’t there already!
I made a ticket: https://github.com/MarginallyClever/Makelangelo-firmware/issues/48DanKeymasterMFW no videoooooooo…… http://healthyfoodkings.com/wp-content/uploads/2015/07/Dehydration-900×506.jpg
DanKeymasterD0 command should jog a motor. I forget the exact details atm. But it should give you a way to test that motor independently.
DanKeymaster@mikecogs I’ll schedule time this afternoon to test and see if I can get the same results.
Please give me a detailed step-by-step of what you are doing so I can repeat your actions as a test.DanKeymaster> The type java.lang.Object cannot be resolved.
I would Google it and see what stackoverflow says.
> can you confirm
code says “Skycam – supports raprapdiscount RUMBA controller”. I don’t have hardware set up to retest it.
All limits are relative to the origin (0,0,0). In my cube I set the home on the floor in the center at the origin. the corners are 1m away and 2m up, or
(1000,1000,2000) for limit a,
(1000,-1000,2000) for limit b,
(-1000,-1000,2000) for limit c, and
(-1000,1000,2000) for limit d.I hope that helps.
DanKeymasterTHREAD_PER_STEP should be mm – the amount of belt moved on each step of each motor. Assumes all motors are the same.
If you know the pitch of your pulley then you can say thread_per_step = pitch / actualSteps.
at 1/16 microstepping and 400 steps per turn, with twengty-tooth GT-2 pulleys,pitch = 20*2; // GT-2 is 2mm per tooth.
actualSteps = 16 * 400; // microsteps*full steps per turn
thread_per_step = pitch / actualSteps;M101 will let you adjust teh limit values at run-time so you don’t have to keep rebuilding the code while you figure out the right numbers.
movement commands like G0 and G1 understand X, Y, and Z.DanKeymasterThere are 1000 (one thousand) mm in a meter. so each of your corners would be something like (1000,1000,2000).
limit_a* is the position of the motor A relative to the origin.DanKeymasterA day and a half of work… I think I am making progress. The M117 works better and the pauses happen when they should.
Unfortunately the rewrite makes the LCD much much slower for reasons I don’t get yet.Is there anyone who is willing to grab the development version and try it out?
DanKeymasterin zarplotter.ino there should be a method called IK(). it takes the cartesian coordinates and converts them to motor steps (aka belt lengths).
Acceleration is trapezoidal and is calculated in motor.ino. You can adjust acceleration within a G command by adding an A value. M114 will tell you the current A.Keep me posted on your development, please!
DanKeymasterspools with string wound around them work poorly. each winding changes the diameter, which ruins the accuracy.
There’s definitely a calibration problem, probably a measurement issue. You’re close, I can feel it. It doesn’t take much error on a polargraph to make a big difference.
DanKeymasterTesting has found M06 tool change includes a pause command. Now that we have an explicit beep command and an explicit pause command, this is not required AND it’s invisible to the user. Oops. Removed the pause.
There’s definitely more bugs in M117 and M226. I’m still working on it.
DanKeymasterSo it would seem that with Scratch support now included, A-C are completed. Neato.
DanKeymasterYour pulley pitch should be calculated from the number of teeth. For example, if you are using GT2 belt (2mm per tooth) and your pulley has 20 teeth then your pitch is 40mm.
If your pitch is correct and your X or Y movements are wrong, check the measurement between both motors (machine width).
Does that help?
DanKeymasterplease show the finished piece!
DanKeymasteron our machines the servo wires for ground (black) and power (red/orange) are swapped. probably you have to do the same if you are using a RUMBA board.
-
AuthorPosts