Good news, project is alive and goes forward :). PCB works and can show all those nice things from simulator, with subpixel font smoothing:
USB uploader also works. Very convenient for users - ST-Link/V2 not needed at all.
I started to write assembly manual. It's not complete, but enough to understand simplicity. Feel free to PR grammar fixes, because english language is not native for me :).
Found small issues, not enough to create next PCB version, but worth to remember for future works:
Plan is to learn how to use 3D printer, and print all plastic components (openscad drafts have been pulished on github. Then we can start debug dispense algorithm. Goal is to auto-tune on the fly all params (speed, retract level) via motor current sensor. But it's difficult to predict in advance, is it possible to to this with desired quality or not. I think, in 2-3 months we should get something final, ready to use.
Assembled third version of PCB:
My friend, second author of our sensor-less speed control for grinder decided to join this project too. He will help with drivers debug (current firmware runs in simulator only). And i will continue with reflow micro table for this time.
Sorry for slow updates - that's specific of OSS development. Instead of doing single project, i prefer to do multiple things in parallel. This allows to share efforts, and each can pick preferable parts where he is most qualified.
Everything become better if done by professionals :). Since i have no illusions about my own skills, i usually forward art-related parts to designer. Here are screenshots of new interface:
IMO looks nice. Current demo will be updated soon.
After some reviews, decided to do one more iteration prior to start bare metal debug. Updated schematic & PCB https://easyeda.com/puzrin/dispenser:
Will take couple of days to recheck everything, and then order new PCB, SMT stencil & components.
Received new PCBs. Still not final, but looks sweet:
And with 1cc syringe (supports are not final, only for prototyping):
Also, i got very useful advice about align SMT stencil with reference points:
I did two 0.7 mm holes and used 22 Ga (0.65 mm) SS wire from vape to pin PCB & stencil to cork sheet. That position stencil very easy and very precise. When you make order at JLCPCB, stencil adds ~ 8$ - very low price for comfort assembly. The only thing you need to do - select custom size and reduce default to minimal possible.
Note, PCB still needs some care. Don't order now if you have no plans to join development :)
With all those changes, i probably will add 5mm to PCB tail.
It may sound strange, but in many devices the most time-consuming task is interface prototyping and polishing. Good news is, there exist embedded GUI libs with desktop support. If you design application properly, you can do almost everything on PC, without real hardware at all. That reduces development and debugging time in x10 times and more.
I selected LittlevGL. It's not ideal, but can work on MCUs with small memory.
As perfectionist, i don't like compromises about quality. So, to make LVGL "useable", i had to design new storage format for bitmap fonts and create appropriate font convertor. Here is the result:
This tool properly uses kerning, autohinting and allows create nice texts on display. See animated demo above. Now you can just take TTF or WOFF font, and convert it for embedded use without quality loss. Of cause, convertor allows merge multiple fonts, select subsets and so on. Data format is universal and not limited to LVGL only.
Lets return to dispenser interface. As you can see on image, it has 3 "screens":
Controls is done with 5-way tactile switch + dispense button:
Seems convenient. Next step is to ask designer draw everything "properly".
Source code with current progress available on github: https://github.com/puzrin/dispenser. If you need more details about abstracting hardware, you can find those there.
That's a side note, not directly related to dispenser, but very useful. When we not use syringe, needle should be closed to protect content from drying. Here is a recipe, how to organize things with ease.
First, if you need professional use, and have a lot of space, the best approach would be to keep syringes vertical, with needle in glycerine bath. But.. let's be honest... that's too much for rare hobbyist's use :). And most of us don't care to keep soldering paste in refrigerator. We just need small cap to restrict air access.
This can be done with heat shrink tubes. Original recipe, i was advised, suggested use one fat pipe and thermal glue to close the end. I used a bit different approach:
First, shrink small tube to needle and cut it at needle end. Then shrink bigger one and squeeze the end. See result:
Then add a drop of silicone oil for additional safety. You can vary approach, use 1:2 ratio tubes and so on. But principle is the same.
Hope this helps!
Since PCB-s are very cheap, it's convenient to make draft prototype and check how it fits in hands. Here is photo with different syringes:
This is NOT expected to work, only to test mechanics, materials, size and so on.
Thoughts and observations:
That's the most notable things. Here is render of reworked PCB (source - https://easyeda.com/puzrin/dispenser):
Seems nice. Need to meditate some days before new order, may be new ideas appear.
There are 2 major pusher approaches - with rotating rod and rotating tube. Let's leave aside rotating tube, as it's more complicated for DIY. So, we need cylinder with M3 inside. Here are 2 choices again:
All appropriate drawing for 3d print are available on github. But for 1cc syringe detail will be too thin - metal pusher needed. Can we do it good enough without lathe? Yes. We need suitable tube and make thread inside.
After experimenting with lot of available materials, it seems optimal use SS tube ID 4mm OD 2mm (description says ID 2.5 mm but it's 2mm). This material is a bit not convenient for drilling, but nothing impossible. So, we need:
To make holes straight, put tube into screwdriver and push with static drill bit (use separate chuck to hold it). After some training, that's not difficult:
Here is a result:
Small pieces of soft adhesive tape add friction with syringe body and exclude rotation on install.
So, even for 1cc syringe, everything can be done at home, without advanced and expensive tools.
Next step is prototype assembly & testing to it fits in hand.
To push paste out of syringe, we need threaded shaft. There are 2 ways:
Coupler with threaded rod
You can take this coupler 2.3mm to 3mm. Use 2.5 mm drill bit to enlarge hole, then tap M3 thread and insert 60mm M3 rod or screw with loctite.
Disadvantage is loosing 20mm of movement length (or increase length of device). Let's leave this for Plan B.
Gearbox with built-in long shaft
There are no ready mini stepper solutions with M3 shafts, but we can assemble it from two donors:
In may sound strange, but those parts are compatible!
See photo. Donors are on left side, result on right side. Total cost with delivery will be about 10$. Not ideal price, but acceptable, requires zero efforts and is the most compact.
If you decide to combine other components - check gearbox sizes, those should be equal (the most popular can have 10x12mm or 12x14mm plates).
If components go out of stock - we still have Plan B with coupler. Both solutions do not require complicated tools and can be reproduced by anyone.
Many hand made dispensers use 28BYJ-48 motors. Those are very cheap, but not enough small and not convenient to mount. We need something better:
Let's estimate desired gearbox ratio.
All small 10-15mm steppers usually have 18° step (20 steps per turn). Gearbox can be:
Desired portion size per single motor step is 0.006 mm³.
Let's calculate, what stepper with plastic gearbox 1:50 can give us:
(3.14 * 15² / 4) * 0.5 / 50 / 20 => 0.09
0.09 mm³ is very bad. It's 1.5x more than portion size and 15x more than desired precision. What can we do?
1cc syringe has dia about 5mm. Portion per step will decrease in 9x. Better, but not perfect. Let's use metal gearbox 1:295.
Estimate for 3cc syringe (9mm inner dia):
(3.14 * 9² / 4) * 0.5 / 295 / 20 => 0.005
Estimate for 1cc syringe (5mm inner dia):
(3.14 * 5² / 4) * 0.5 / 295 / 20 => 0.001
Of cause, we could use dynamic model (quick step forward and back) and cheat with paste viscosity. But that's much more complicated and result will depend on paste temperature. Also, it's not good idea to use micro stepping, because it's not precise with cheap motors and consumes more power.
That's all with boring maths, next time I'll try to post some pictures :)