New AnyLocker- radio reference locking board

Project sources, schematics (in PDF also), and a readme

Recent changes :

Added LVDS diff receivers for better performance and more sensitivity at low frequencies.

Modified input amplifier to have better midband gain.

change to 2 layer PCB, 0603 and 1mm FR4. easier and cheaper to make….

H18-004 is the design for manufacture version, 50mm x 30mm, about 2mm high , 3mm in places.


shown in 3D with tooling strips on


This project it a successor and in spirit of the XREF reflock device by David VK3HZ and Graham VK3XDK some years ago. Boards have not been produced for some time.


I have done a new design, with e


The PCB has  similar IO to XREF , and also has USB for programming and configuration, and a single multifunction LED.

The main differences are that this project uses a fractional divider phase locked loop, so that it can provide locking for oddball rig reference frequencies, like 10.4868750 used in the FT1000,  41.344 MHz (IC-7300) ,  and maintain a high phase detector frequency for lowest PD noise.

The board can be programmed for any reference input 5 to 50 MHz, though normally 10 MHz would be used from a GPS or rubidium etc.

Although the chip will do up to 4 GHz (!!) , The board is designed for accepting 5MHz through 50 MHz as the rig reference, There is an amplifier on the PCB, and a logic slicer, as when using < 100 MHz inputs, the chip requires a minimum rise time, so a fast logic inverter is inserted in the rig reference chain. The amplifier can make inputs down to 50mV ptp work which provides some scope to sniff off not too much of the rig XO, and can operate 50 ohm or hiZ input if close to the internal XO.

Up to 150 MHz the input amplifier and logic  should still work with zero gain, so upwards of +3dBm would be required. Beyond  that the amplifier/logic slicer should be bypassed and the PCB / chip combo is probably OK to 500 MHz. probably more if you are keen.

The USB programming interface can load either firmware, or configure the dividers and the LED function.  It is an STM32F0 processor in a TSSOP20 .

Multiple regulators are used on the board to keep noise on the rails down to a minimum.

Many input options are catered for with  a handful of solder- jumper blobs that can be dobbed with a blob of solder, or not.

IO is similar to the older XREF

External reference in : usually 10 MHz, at least 100 mV ptp

Rig reference in : Min 50mV ptp at 20 MHz.  Impedance selectable.

Reference oscillator control out – goes Hi-Z on no reference input. This output is good for 0 to 5.2 Volts  of swing. It can swing a VCXO directly like many rigs, or could swing a supply rail slightly for varying XO freq by that method.

Vin : 7 to 15 V at 40 mA. Current draw depends on input frequency.

USB DP and DN  connections.

Next work- similar board with 1 pps input rather than 10 MHz etc.

I can be contacted at glen ( at ) cortexrf (dot) com (dot) au

Glen VK1XX / AI6UM

Work to date :

11 May 2018  — Got first boards back see below :

8 September committed H18-004 to mfr, rev 2.





stencil. upper and lower on the one stencil for proto.






Posted in electronics | 3 Comments

New digipeater for Mt Ginini VK1RGI

The performance of the VK1RGI packet digi on 145.175 MHz was clearly degraded on its best, or capability, and so it has been replaced.. The original install was a 1990s TNC2 and a FM-828 PMR radio.  FM828s make good split TX/RX radios and the individual TX and RX ports were diplexed into the existing 2+2 side mount dipole array used for the 146.950 voice repeater.

The new digi uses a Linux single board computer from Hardkernel called an ODROID XU-4.

. The XU4 is a total and massive overkill for the job , but I had one already built up in a diecast shielded aluminium box and power supply so why not use it… I am using the eMMC storage option, while a bit more $$, it is much more reliable as a long term storage device on a remote site, and less/unlikely to suffer severe file system damage when the power is switched off while it is busy. Compare to SD card systems.

An Odroid C1 or C2 would be just fine, also.

The software on the XU4 is  Debian flavor and the packet radio software is a package called DireWolf.  The Debian Linux OS has the usual tweaks for reducing file system update access writes and also I have the clock turned down to 1 GHz to eliminate any peak load heat issues if I decided to run it at 100%.

Direwolf is a very well written open source package, and it also has first class documentation and a good user forum. It is the best there is, in my opinion. The source code is clear and well documented. The package provides for software FSK sound modems of all  speeds 300-9.6k and beyond, digipeater, igate, locations beaconing, it does it all.

The Odroid XU4 would run about 20 instances of direwolf !  Hence a C1 or c2 Odroid, or Pi 2 or 3 would be fine, also.  On the XU4, direwolf application with the single 1200 baud VHF modem runs just a few % CPU .

For PTT I/O , I used the internal GPIO on the Odroid PCB, a single NPN transistor  with a 4.7k resistor in series with the base, and also a 10k resistor from GPIO to ground – this ground resistor ensures that while the GPIO is not set as an IN or OUT during boot up phase, and thus floating, the PTT transistor is pulled to ground.

For sound, I used a $10 USB plug in sound card. A real cheap one with 3.5mm stereo connectors, and mic level input. I would recommend a slightly easier to connect one known as a UCA-222 on  internet ebay circles that has RCA connectors and line level input.. With a mic level input be sure to turn the input mic boost off and capture mic level usually has to be all the way down..
Note that the Direwolf can run MULTIPLE modems and TNC nodes, and GPS recv etc . Just add more sound devices. Actually I think it can run separate modems on left and right channels. A startup script of many is installed and Direwolf runs at boot as a standard user with additional  Audio and Real Time privilges. It’s a good idea to run alsamixer in the scripts to ensure the mixer I/O is set correctly. I use ALSA but Direwolf has support for OSS, also, though I have not used it.

I used a $2 ebay 6-20V in, 5V output 5A switchmode power supply to make 5V, and be sure to add 0.1uF (100nF) ceramic capacitors on the back of the two large electrolytic capacitors to reduce the conducted noise from the power supply. Note also the ferrite bead on the input power supply.  This is required !

Radio: I used the most excellent Tait TM8000 series mobiles, available at low cost from some 2nd hand sellers on ebay, I buy mine from a company in the UK about about USD100. These radios have EXCELLENT receivers- the receivers are base-station grade, and have overload and strong signal handling performance 2nd to few . Highly recommended. The software is easy to program and the I/O is highly configurable all on a single DB15 on the rear of the radio . All combinations of audio tap points in the radio  (pre/de emphasis, pre/post clipper, DC / non DC etc)  are supported. Also they only draw about 2W on RX.  But anything will work… I took time to carefully set up the  modulation so that the 1200 and 2200 Hz tones were not clipped, that is the 2200 Hz tone was approx 5 dB MORE deviated than the 1200 Hz tone so they come out of a receiver flat when de emphasised.


Because the radio has a single T/R port and the original setup was a separate T/R port, the means of connecting it to the antenna system had to change. We have a spare VHF 4dB gain colinear on top of the mast, omni, just what we want, however being on the same mountain it requires careful filtering to not create or suffer interference from co located services.

A Bandpass-Notch 150mm diameter  1/4 wave filter (“cavity”) pass 145.175 (packet) and reject 146.350 (repeater RX) provided 52dB rejection of noise at the rpt recvfreq.  Bandpass-Notch filters dont provide much ‘bandpass’ so an extra standalone bandpass filter is required to protect other uses on the comm site, and also protect itself from strong signals from other users that might contribute to overload / spurious products and interference….so, a bandpass only cavity at 145.175  was added in series with the pass/notch filter to provide substantial rejection out of band. It has 30dB of rejection 3MHz away and keeps on increasing… Approx 42 around 156 MHz where there are quite a few co sited hi-band services and ~ 60dB rejection at the airband frequencies.

The repeater receiver of course needs to reject the 145.175 packet TX, this pass-notch filter was already in the duplexor chain.
Additionally there is the physical isolation of the two antennas that further increases the isolation by another ~ 48dB.
What is required? At 146.350 – 145.175 = 1.175 MHz away, ideally 90dB of TX noise rejection is required, and we have 52 (pass/notch)+48 (ant-ant)+ 17 (bandpass) = 117dB. The repeater transmitter to packet transmitter isolation is 48dB (ant-ant) + 24dB (bandpass) = 72dB. plenty.


This system being a linux box is remotely administered via an SSH  connection via a ham-band 440 MHz IP link by RACOMM Rip-EX. This is a highly configurable , variable bandwidth IP link that can provide bit rates from 1 to 100 kbps, permitting operation down to -120dBm for those really hard links.

Being a remote site that takes 1.5 hours drive to get to and a bit of planning, and is nearly  inaccessable in winter , there needs to be a alternative reset facility for the single board computer to initial a power disconnect and reconnect if I got it really messed up.
In the past I have used a touch tone sequence on the radio that would trigger a power interrupt for  3 seconds.   In this case I have put a Barix Barionet 100 into service, an IP controlled analog in / out, relay I /O and BASIC code automated box in. Something just as suitable would be one of the 8 ch relay controllers from ebay. Note the 2ch ones of similar ilk do not have a web server.

The whole thing is battery power supplied, floating on a lead acid supply/charger.  An old ADSL1 modem is used as a 4 port ethernet switch for connecting up the various IP ethernet devices and draws only about 3W.

How well does it work ? Sensational. Performance is at least 12-15dB better than before. A couple of reasons for this. 1) the radio it replaced was deaf and off frequency. 2) the Dire Wolf software modem is FAR FAR superior with weak signals.

Odroid XU4 in box with power supply, PTT PCB. Black USB cable goes off on the left to the sound device.

GPIO connections , ground , PTT1, PTT2. Don’t forget to add some 0.1uF capacitors in parallel with the electrolytic capacitors on that switch mode power supply PCB. With it they are noisy as hell.

TM8100 interface on DB15 . Ground, audio in, audio out, PTT in, carrier detect out

Barix 100 IO interface and DIN rail power distribution

Installation. The Racom IP link is visible on the fore right hand side.

Posted in electronics | Leave a comment

RF check of QYT KT-8900R Chinese origin Dual bander S/N 1608181253

A friend gave me this radio to evaluate just how clean or dirty this low cost ($100) 146 / 440 MHz 25W mobile dual bander might be.

The answer is pretty bad. It has a similar in-sub band spur output to radios like U5R etc that use a dual band radio chip.  Except this is much worse in the harmonic department because it has a 25W amplifier brick on the back end.

Ideally, all spurs should be below -36dBm on a radio that is designed to be connected to a decent antenna. Portable radios have a bit more leeway due to their suboptimal antennas. -36dBm is the European spec, -30dBm is the Australian spec AS4768 etc). FCC requirements for this sort of rig and power level are approx  -20dBm

The harmonics were measured carefully using a attenuator termination and a band pass filter at the harmonic to ensure the test gear harmonic performance was not in on the act.

The analyser used was a Rhode and Schwarz CMA-180, a pretty good modern test set. Highly recommended for analytical jobs like this.

This radio in my opinion is only suitable for operation using a harmonic filter. However… there are two bands with overlapping harmonic requirements, so a transmission line notch/stub filter is required that will provide harmonic suppression by means of overtone modes on the stub lines.

Otherwise, without a harmonic filter or a  harmonic insensitive bandpass filter, use at your own risk. Just don’t use it near a communications site ! At the bottom of a deep valley, sure.

How does an Icom/Kenwood/Yaesu/Alinco perform ?  The answer is well and much much better . The 3rd harmonics are usually ~ 65-70dB down and all other harmonics < -40dBm ! So it is not that hard, it is simply that these manufacturers have NFI about designing radios and understanding industry acceptable operational parameters. They should be prohibited imports. There is a reason the name brand radios are $$$.

So what’s it like as a FM voice radio ?

On TX- within a few ppm. The tx audio is low in mic gain.  The peak deviation that can be achieved by yelling into the microphone is 4.7kHz, however the average deviation approx 1 inch away from the mic talking loudly is  around 1kHz. So these radios will does like crap. The low frequency sensitivity is poor, below 800Hz, so they are low in audio and tinny.

On RX, the sensitivity is very high at  -127dBm 12dB SINAD but this ‘fantastic’ sensitivity comes at a price- the in band (600kHz spaced) 3rd order intercept point is approx -30dBm which is really poor .  My guess is that the designers simply put a wideband MMIC on the input to up the sensitivity and destroyed the strong signal performance.

To summarize, these radios are first class junk. The designers need to understand what is acceptable ., these radios are not. You get what you pay for. That’s why when you spend $300-$400 on a  Kenwood/Icom/Yaesu/Alinco dual bander, you get a high quality radio with RF spectral purity that meets industry expectations, a radio that has good TX audio and a radio that wont flake out everytime it gets within 10km of another transmitter.

Glen VK1XX



TX 146.350. note marginal in band spurs at 132 and 158 MHz


third harmonic at 440 MHz of 2m TX. only -33dBc….. This is unacceptable.


440 MHz fundamental. In band spurs at 426 and 452 MHz are acceptable.


2nd harmonic of 440 MHz. approx -50dBc. very poor . Lands right in the middle of cellphone downlinks . great cellphone jammer.


7th harmonic of 146 MHz in the aircraft nav band. Not cool ! -70dBc meets ham specs but does not meet industry acceptable specs, misses by about 10dB. 


6th harmonic of 146 MHz !. >-65dBc. Not bad but still doesn’t meet acceptable spec.


5th harmonic of 146 MHz. about -55dBc. poor.


4th harmonic of 440 MHz. not so bad really. not great though.


3rd harmonic of 440 MHz at 1320. very poor

Posted in electronics | Leave a comment

Ryzen7 and Xilinx Vivado and B350+

I’m putting a Ryzen system together for evaluating the AMD work. It’s important to support the Intel competition. My system is a 1700  on a B350+ Asus , 128GB M2 SSD, 4 xGB DIMMs 2400. 8GB? this is a cheap eval. If I like it, I’ll stick 32GB in it.

Tried to install Debian 9 AMD64  net install. The installer chooses the wrong network driver  . It’s an RTL 8168 etc. So I downloaded the Non-Free firmware Debian image, 3.4GB, and that installed just fine.

Ran up Vivado 2017.3 on it. Copied over  a Windows project directory,  and Vivado was not happy. All the MIF file paths are screwed up. For some reason, VIvado is on the windows install storing the full path including the drive name when pointing to the MIF files ? WTF Xilinx ??? so, there would be a script to write to fix that up.  Still, the Vivado install worked like a charm – good one Xilinx !  It ran just fine, all the graphics and boxes all works as it should. Hooray Java.

OK, so that runs OK. Linux and Vivado and Debian will work for people.

Time for windows 10 pro. Installs OK. Geez there is alot of fluff now in a Windows install.  Can’t we just have a Pro install without the cheese please MS ?  Finally, after the endless reboots and updates I install Start-Is-Back, Opera, Ryzen Master , Vivado , Lasoo.

I run a few Vivado runs.
Compare box is Haswell… i5-4690k, turboing to 4 GHz, 32GB dual channel DDR3 1600 MHz  and it benches Synthesis- 4:21, Implementation 5:29.

Still getting my head around The Ryzen Master Utility, and BALANCED/High performance mode etc. .

OK, Using ProcessLasoo to lock Vivado to Upper CCX cores 8-15…

general.Maxthreads=8 (was =4 for i5-4690k).

So 1st run 3.6GHz:  5:22 6:20. 3.6GHz (1.25V)

2nd run 3.8 GHz:  5:07, 6:32 (1.25V).  slightly better synthesis.

3rd run 4 GHz :  4:47 , 6:11  (1.35V). The heat came up along way on this one (48 deg C) (ambient 23). synthesis still 9% faster , implementation 11% faster on Haswell
…another run at 4 GHz  : 4:46 ; 6:10…….so that’s real.

Conclusion is that Zen slightly slower than Haswell,  clock for clock ….approx even with 2400 versus 1600 memory.

The 2400 memory wont go any faster without overclocking voodoo which pro users are not going to bother with I think . Might get some 3200 memory and see how the benchmarks compare. I slowed he memory down to 2166, went about 8 seconds on synth and impl, or ~3% (for a 10% reduction- although the RAS/CAS timings got  faster 14 14 14 instead of 15 15 etc)

On the other hand, the computer didn’t become useless when implementation really started cracking the whip – a full 4 cores, 8 threads left over to run other stuff, no problem.

Ran a mixed PRIME95 all thread stress test, with the supplied-with-the-CPU stock cooler, 1.35V, 3.9GHz, got a 46 deg C ambient rise.. Not bad. With a liquid cooler, would be no issue.  Went to 4 GHz stress test-  crash, did same with 1.4V no problem, but got too hot (>70). So there is room to experiment…











Posted in electronics | Leave a comment

Paste jetter – inkjet lessons

I ordered my Piezo actuator today. My Piezo actuators came from    I got a -30>>150V actuator type SA050520.  Have been learning about making small features, including  EDM

The block that houses the delivery chamber will be temperature controlled I’ve done alot of reading, including this short gem

drawing below from the above thesis :


Other required reading..

Particularly figures 6,7 and 8 showing  the Thixotropy


Posted in Pick and place | Leave a comment

random thoughts toward a successful paste dispenser.

These are RANDOM thoughts out loud, right now….there are a few things that need to be done to make the paste dispenser work, I have studied the various syringe/ auger constructions, their claims over others etc etc extensively.

rough drawing……



simpler Visio-dispenser

MK1 will be direct syringe pressure type.
the syringe types need a bit of work- a combination of the below :
0) needs temperature stability/control
1) no air piston- direct piston driven by lead screw/stepper. no air anywhere .
2) pressure in the chamber needs to be monitored . have to figure this one out. something on the wall that provides pretty reasonable consistency. I am thinking resistive or similar sensor on the walls of the pressure chamber.
3) pressure into the chamber by a piston is easy to increase by pushing the piston down, but on the withdrawal which is important has to be done without introducing air.

A withdrawal is required as part of the cycle. Many system have problems with voids created. A vac created may not pull back the fluid reliably and as desired, so that needs to be worked on. there may need to be the vac created by the retreating piston PLUS another means to pull the fluid back up the needle. Perhaps an opposing (with hole in the middle) piston at the bottom of the chamber to push the fluid back up. Surface tension will permit the fluid in the nozzle also to assist pulling the fluid back up (and avoid any voids- that’s the idea- no voids are to be created.
There are other means to push/pull the fluid.   Constricting a channel of sorts (squeeze) or expand- the fluid needs to be pulled up the nozzle.
It’s hydraulics, also.  Hydraulic systems are using push , pull…..Must remember. if only the piston moves back, we are relying on the vac and the surface tension to pull everything up. the question is for example, if the pressure chamber was full, that’s alot of fluid to pullback on vac and surface tension. So I think there needs to be assistance of sorts. maybe there are ribs or something on the walls that move, I dunno, but I will start thinking.  if there is pullup (by vac due to piston pullback) AND pressure from the bottom of the chamber UP (by another piston) then we can avoid voids in the main chamber and only the small quantity in the nozzle needs to be pulled back up the nozzle, not a large volume up the chamber.
Perhaps…. deforming the walls , changing the shape of the entire chamber with a crush, or a expansion would provide useful methods, also,

IE use a piston for movement  of fluid to ensure the chamber stays pressurized, but also use deformation of the chamber for dispensing. Epiphany : If  a large surface area of the chamber deforms  this is acting on a much larger  surface area than the end of a piston.
such a deformative wall though is a difficult thing to build . The pushing piston is required to keep the deformation chamber  full, as the deformation chamber has finite breathing ability.  so the deformative chamber for dispensing is a  hard but interesting option.

Either the chamber (stock) or the applicator (needle ) could be deformed..There is a good supply of piezoelectric actuators around, time to learn about them…
Air or fluid could be used to deform a container, also, like a bladder or sealed container inside a container to squeeze or open the contents.

now we have good pressure and release control and pressure sensors, when the dot is deposited, best performance is a precise delay before the precise pullup.
Distance to Z=0 is going to have to be known to at least half the dot size- at least 0.1mm , so there will need to be a very precise distance sensor and height control of the head.

The 32 gauge auger system that is designed for 01005s and it is successful, uses a 0.1mm nozzle internal diameter.  I will start with that size.
There will need to be multiple devices to be able to deposit with reasonable speed on a mixed PCB- IE different nozzle sizes. Watching on my air dispenser dispensing through a 0.1mm nozzle, there is at least a 1/2 of a second for the dot to be let go- IE takes a while for the small amount of surface tension, presumably because the area is very small, takes time to let go. Pull up too fast and the blob is not reliable, the head pullup needs to be slow. So the smaller dots end up being quite time consuming to put down.

I read that the surface tension and behaviour  changes quite a bit with temperature so the chamber paste AND the PCB surface will need to be temperature controlled.  No use dropping carefully controlled paste onto an icy PCB.

To summarize :
VERY accurate control of Z height  with better than 10um movement resolution .
Piston compression from one end of the chamber
Piston compression from the other end of the chamber..
Deformation of the chamber or applicator (needle)

another idea is that once the paste is moved into the applicator (needle) this area could be sealed off from the stock chamber.(rotating / sliding ) , constriction of the applicator etc) and the applicator could then be deformed by a fast pulse (IE a piezo actuator or solenoid) . This way the only way for the paste to go is out the needle.

ideas…ideas.. a solenoid smacking into a deformable wall would work…
if there was a sub chamber from the main stock chamber like a hollow block that had the applicator on it and it was sealed from the stock chamber, an deformation actuator could be one or more of the walls of this stock chamber. I think for success, the pushing force needs to be applied over a very large area  to volume ratio. Not just over a small area of the volume.
Additionally, if there is a separate deformation chamber to the stock chamber, a pull-back motion in the stock chamber may not be required.

In fact, ipso facto, if the paste is pumped in, there might really be no need of a piston/ construction bladder for the stock chamber.

Constriction of the duct  between the stock  and delivery chamber can be simplified. A duck valve. (thanks Robert)

OR just constrict the stock chamber (for delivery and pullback)  and have no separate delivery chamber.This solves the problem if refilling the delivery chamber without ooze.
The thing is, the small chamber removes a whole lot of fluid the pulse has to be transferred through.. so perhaps another valve is required on the delivery needle.

My guess if the bigger the volume getting squeeze, the more  low-pass the delivery behaviour. and the harder to control over temperature and paste variation…

Might use ultrasonics to measure density, voids, pressure.
Like three transducers in a 120 deg  arond… 1MHz transducers…


No need to go crazy with piezo though, voice coils, solenoids they all work.
golly there are all sorts of piezo things


Posted in Pick and place | Leave a comment

Guides arrived…


From “Jiean Robot” in Zhejiang, China. “Zhejiang Sikete Technology co ltd”
Very easy to deal with Chinese company, good customer service, understood my needs, able to customize, and 7 day delivery once TT received. Well priced also, about USD400 each approx .

Photo is before the mounting plates go on to interface the rails and the extrusion.

Well I think I went a bit  too big !   NSS95 for the dual X rails and a smaller NSS75 for the Y gantry. The idea is X gantry has to support (and accelerate )  the Y guide and the gear.
Motion specs for the 75 and 95 are the same, just the loading. In hindsight, NSS75 all round would have been fine.  I went with the ’95 because they were only about 15% more .

75 guide is 7.5 kg, and ’95 is 12.5 kg. Lots of extra Aluminium plate…The 75 guide (Y) is 600 travel. The X is 800 travel,
The guides come with photo-interrupter limit and home switches and cables that can be put on either side of the guide.

There is 780 between the supports so the head on the Y can be quite wide (in Y) and still run full travel.

They are silky smooth… I have run them up with a motor and they scared me….

Posted in Pick and place | Leave a comment

PnP : On stereo imaging and more focus

I had in my plans for two cameras in a stereo scopic setup for down vision so I could figure out depth and distance to things on the table .

However. doh! , I was playing with my fancy PointGrey camera last night and realised I don’t need two cameras, I just need to take a image, and move the camera and take another image ! and I can move the camera with sub pixel accuracy in the FOV.

And then, another obvious penny dropped.  Image de blurring and refocussing  (enhancing depth of field) can be done with a series of images takes when a camera moves in a plane tangential to the object. I read that many  years ago .

And of course I can move my down (and up) camera and take multiple shots.

So a bit of searching and googling later reveals google have done it for Android





Posted in Pick and place | Leave a comment

OpenPNp multithreaded directions..

added here  from my post in the forum..

I had a chat to Jason about this a week ago.. essentially…
after component pickup, Open PNP motion thread tells motion-controller (external)  to go to the target location (PCB place)
motion thread blocks on image processing thread.
image processing thread is also blocked at this time.
motion controller takes care of getting the UP camera in the right place and takes the exposure.
motion controller then sends signal to PC (say a char on a serial  port) and this unblocks the image thread
image thread now unblocked processes image, and comes up with a new offset for the placement and rotation.
Image thread posts this new info to the motion thread and blocks-
motion thread unblocks and updates the new target positon to the motion controller , and also updates rotation.
motion thread blocks waiting for ‘on station’ signal to come from the motion controller, and the placement ensues.
of course there various things that might happen different if we are placing a big component  where we most likely need to STOP over the camera and have afew goes at rotation, putting the part down, picking it up again, rotating etc to get that right- but that’s not often (for hard parts) .
and also if people  have a camera that requires everything to be stationary, slightly different but similar events occur.
However my idea is basically to decouple the motion and image processing so that the machine can be on its way while the images are being worked on..
of course if the image was bad, or the uncertainly level by the image processor was low, then it is going to have to tell the motion thread to send the head back to where the camera is (or sent the camera to it or something)
Of course this having to have another look at the component and moving the head back  to the camera etc is a great advantage of flipping a mirror in the way and looking at the component that way.. I just have not yet found a good way of doing that for multiple nozzles. More thought required.

Posted in Pick and place | Leave a comment

L6470 ST stepper driver

Wow, this baby is complex.
Read this first…L6470 presentation

I bought two eval kits from digikey/mouser $25 each. (mouser: 511-EVAL6470H-DISC )
It  has a USB interface, JTAG interface and some buttons. The eval software for the board is  comprehensive. There is alot to this chip- it is NOT for the non engineering types.

It is not just a fancy bridge driver, it is a stepper /motion control ‘co-processor’ you tell it where you want to go and it goes and manages it… SPI interface…

In a nutshell- on my steppers this chip is smooth. I mean REALLY smooth on microsteps.
it uses Voltage Mode drive (rather than current mode drive) with BEMF compensation, and from my non stepper standpoint, voltage drive is much preferable for driving this sort of device.

I have steppers clamped to my steel bench for eval, so any vibration gets amplified through the bench…. I tested steppers with inertial load, and without.

The results are chalk-and-cheese against my other stepper drivers 8825, 6620 etc.This chip does not want to do anything BUT microsteps. I found compared to the other drivers, the microsteps were pretty much within the 5% of a full step tolerance.

and, as expected, the microstep performance was vastly improved by having some sort of load on the shaft. This is why i think the component rotation application is going poorly for some users  – no load and undamped resonances and vibrations. IE needs a chunk of steel on the shaft.
(And even worse with the abrupt current mode chopper drivers I am used to_

Its a good eval kit (Discovery kit), but before you start, you MUST read at least the eval datasheet, the eval software manual, upgrade the software on the board etc.

Then you MUST READ (because results will be disappointing otherwise)  AN4144. I say again. MUST READ.

Then be sure to read AN4241, UM1691, AN3991, then, optionally, AN4290, DT0055, DT0056.








Posted in Pick and place | Leave a comment

Nozzle pitch

The main reason I went to NEMA14 for the  Z axis was the need to pack the nozzles in tighter. NEMA14 body is 35mm versus ’17 which is ~43.

Ideally my nozzles will be the same pitch as the tape feeders, or the same pitch as the strip feeder tape component pitch- IE 4mm or 8mm multiples. This way multiple nozzles can do a simultaneous plunge and pick  without moving the gantry .

I will likely use NEMA8 rather than NEMA11  for the rotation, so weight will drop 60 grams.

Also I have assumed a accel=decel curve for maximums.. but -if decel is to be faster, the stepper is going to have to be bigger, which helps for it to have more authority. This means going to the next NEMA14 up  , the 0.22Nm.
There IS a 0.4Nm one, also.  You are well and truly into ’17 territory there. A ’17  can do bigger work with a shorter body , but the nozzle pitch suffers. 0.4Nm is approx midrange ’17 territory.
On the DOWN plunge is easy for the Z, because the UP is lifting against gravity.  Of course on decel, the opposite applies- lots of work required to slow the payload as the nozzle approaches the Z=0 at mach2.

Posted in Pick and place | Leave a comment

Stepper component rotation accuracy mitigation

More on this subject

(see other post at component rotation…


Did a bit more playing. Got some Nema11s today, also (hollow) . These seem to be worse on  in accurate microsteps than the nema8s or 17s I have.

But – the microstep error is always deterministic it appears, which makes mechanical sense.  When I say “always”- on a few tries.

The idea is,  if you are not satisfied with the rotation step that you receive  from the stepper for say 1/16 step, put the component down, turn the nozzle so the stepper is in a different spot. , and then pick the component back up and rotate again.

The microstep errors are in a pattern, so the steps you will need  do not have to be a total guess.

The assumption is, the UP camera will take a look at the rotation you can, and what you get after  the component is put back down, nozzle moved, and picked back up….and rotate again from a different stepper position

So this way, really any step to whatever the stepper drive controller is capable of can be provided. Optionally , I would suggest the step point be ‘current held’ so avoid anything moving, if the controller permits it.





Posted in Pick and place | Leave a comment

Nozzle Z probing ideas

Using pressure sensitive resistor.
At about 10% spring compression, resistor drops from 10M to about 50k,  and about 10k >50%.

The nema8+adaptor (85g) sitting up top  compressed the nozzle spring about 85%

nozzle resistor

Posted in Pick and place | Leave a comment

PnP Z axis lift requirements- what size stepper

Z axis must be fast. ideally I want 50mS for 20mm travel.
12.5 mS to full velocity
maybe use a big NEMA14 stepper with rotor inertia  18g/cm2
Total lift weight  – 16g (carriage) +20g( stepper mtging plate) + 120g (NEMA11 hollow stepper) + juki adaptor and nozzle (36g) + air fittings (20g)  .

call it 220g
Driving sprocket size : 24 teeth of GT2

I plug the numbers into my spreadsheet-
Stepper pull out torque , lifting- 0.093Nm
Rotational acceleration = 5235 rad/sec2
Nozzle change – requires a >700g push down… = ~ 7N on the belt or 0.052Nm on the motor shaft.

Choose NEMA14 (35mm square) with 2x lifting = 2 * 0.093 = 0.186Nm…

Click to access 14HS13-0804S.pdf

Not included in calcs- rotational inertia of pulleys (not much) , and belt weight (not much) , frictional loads of the MGN9 linear guideway (not much).





Posted in Pick and place | Leave a comment

PnP frame – Aluminium cut

2020 and 8020 extrusion. wow it is big. big because while travel is 800×600, you need a fair bit each side of the travel.  The single bits of 2020 on top are the top table supports- three tables. Not shown are the bracing plates , guideway mounting plates.


Image | Posted on by | Leave a comment

component rotation…

On Friday I investigated reported forum issues of not being able to rotate a component with the component on the end of the hollow stepper with sufficient accuracy and resolution.
I set up a job to test this on a basic driver with 1/16 stepping capability.

In all, as in the documentation , there is a periodic sequence between full steps.
Most certainly, in 1/16 mode, I’ll go into 1/32 resolution for the discussion :
you  might get something like 2/32, 2/32 , 1/32, 1/32, 3/32, 2/32, 2/32, 1/32,1/32, 1.32, 3/32, etc .  Sometimes the errors was less than 1/16.

In all cases, the full step is preserved . That’s why microstepping is still accurate over multiple microsteps for a integer number of full steps

1/8 stepping similar- (using 1/16 to demonstrate) 2/16, 2/16, 2/16, 1/16, 1/16, 3/16, 2/16 etc

The different sizes (8,17,23s I had on hand) behaved all differently. Under load with inertia, the 23s where right on 1/16 precisely. On my 6040Z with planet cnc controller- driver, even 1/32 steps were near perfect. So,  different behaviour with different loads.

Which is expected- with no load they are a unloaded and hence underdamped system.

The datasheets say +/-5 % of a full step. OK that us 0.05 * 1.8 = 0.09 degrees. Or 1/20 of a full step. And that is about what I am seeing approx. Maybe a little worse.

Another thing I noticed- behaviour is different going forwards or backwards = a 1/32  step forward in 1/16 mode (under stepped)   might be 3/32 backwards  from the same location- so there is opportunity to iterate to get the right step.
So what is required ?
To get a 20 x 20 LQFP144 down, I want placement better than 1/5 of a pad width (0.35mm)  so 70um..

The outer pins are on a 22mm square – 15.55mm radi circle-  a circumference of 97.7mm.
So, 70um on that is 97.7/0.070 = 1395 steps around the circle or 360/same = 0.257 degrees.

0.257 degrees  is 1/7 step. So I think we are OK. People have reported bad steps in 1/8. So this required more investigation.

In OpenPNP- I wonder if there is enough certainly for the placement estimation ?
In signal processing world, I would take multiple snapshots, and then do multiple estimations and as a starting point, just average the estimations (yes, sure you can get alot more rigorous about the sort of estimation you generate).

I think the direct stepper control should be sufficient. There are a few mitigation strategies for interpolation/ iterative solutions I think. especially if the up vision is involved. You’d need a 2000 step encoder on the stepper shaft to otherwise see what was going on- and that could be printed fairly easily for a largish circle.

The alternative is a reduction drive and a belt , a 1:3 would do it nicely.
If we said the GT2 belt uncertainly was 50 micros, then a simplistic way so look at how big a sprocket we need is  if we need say half of our 0.257degrees with is 0.128 degrees, this is 2801 steps of 0.05mm (belt error)  an a circumference of 140mm (70 teeth at 2mm) .
That would be likely be plenty. Less would likely suffice.
With a 12 tooth drive, say 40 teeth takeup, 1/8 steps would be more than  sufficient.

Is this super resolution required for all components- no- I don’t think do, anything up to about 10×10 should be fine even with +/- 1/8th precision steps.











Posted in Pick and place | 1 Comment

Head prototypes

latest head design


The intended placement of the two cameras is visible, also
Belts are not shown, have not figured out how to do belts in Fusion360 yet…




Posted in Pick and place | Leave a comment

Pick and place Update page

I added a bit more last night on my PnP story, particularly items on up and down vision, and feeders. i also added a bit more  on stepping resolution, particular belt drive calcs that show when microstepping is using, the torque is in the toilet. The belt system needs lots of  torque from time to time at slow speeds to overcome stiction .



Posted in Pick and place | Leave a comment

Rpt linking using CODEC2

The PCB is designed for linking  analog radio repeaters by  using David Rowe’s CODEC2  speech codec codec2. It takes audio from an analog repeater audio output (ideally the FM detector so that it can  measure SNR) , and encodes this into digitized speech, then sends to via a link radio as FSK  – using a the mic or ‘packet’ input.

It also has an analog input from the link radio, and performs the reverse function- decodes  CODEC2 FSK data, turns it into analog and drives the repeater audio input.

It also will perform the usual repeater control and repeater audio turnaround and ident.

The plan is to use Codec2 at 3200 bps  to start with, but an an option incorporate my own extensions (and increased codec2 bitrate) by increasing both numerical and temporal precision.

On the modem, AC coupling will  used and  8b10b encoding (or something else when I get into the modem ) will ensure no LF/DC issues at a 20% bit rate cost. My experience is stay away from the LF with stock PLL radios. Don’t try and modulate much under 250Hz from the mic/VCO mod input. The newer fractional mod radios are a bit different. Brady O Brien commented on the error propagation issues of 8b10b, and he is right, I will certainly have to come up with something better. I have a green field.
Maybe I’ll go DQPSK OFDM if there is enough horsepower left over… dunno.

There is a ‘link’ SPI port on the PCB so that multiple PCBs can be linked together and share compressed data for a ‘system’.


I wanted to make this cheap . Basic BOM should be less than $30 …So it is a little modular- you can put everything on or very little on.  I have used nothing smaller than 0603 size , and I also have landed it on a double sided PCB to return proto and pcb costs.  Having a fast processor on a double sized board takes alot of care with bypassing and ground bounce, and putting too many breaks in the ground plane in critical spots.  In fact in commercial world it would be false economy to spend 4 hours extra painstaking time  dealing with the 2 sided approach when I could spend an extra $150 during proto and use a 4 layer… I would be happier on 0.8mm FR4 but I think 1.6mm FR4 will be better suited to the audience.  The 0.8mm thick PCB would be about half the via inductance.

I am using the Cortex M7 (STM32F) as it is a real ‘ball tearer’ in the processor department . It is a little more complex to use in the memory department than the ‘F4 oh but the speed… Also the usual stuff is there- USB programming, JTAG, opto isolated interfaces for PTT/ signalling, GPO. A few extra jumpers, pins brought out, 8x LEDs.

It is designed to fit in an off the shelf Hammond extrusion box # 1455J1202 box

I started off with using the internal ADC, DACs for all the analog IO. I used  Cauer filters to get nice flat group delay over the passband, while giving me just the right amount of aliasing protection.  I used a 5 section on the analog inputs because these could see up to 8-10kHz of audio with relatively low sample rates (32k),
The Cauer (Elliptic filter) enables me to get a nice flat group delay and passband, important. A butterworth or cheby wouldnt cut the mustard.

But as I started laying out the PCB with all those filters (4 x quad opamps) , wow that’s alot of passives…. So I went down an alternative route.

I used a cheap $3 codec chip . Why ? Well they have a sigma delta stereo ADC/DAC, and the sigma-delta converter means I can essentially forget about the need for aliasing filters.  Viola nearly no analog circuitry !
This also means I have lots and lots of SNR and dynamic range which is better to handle the various IO….

The STM32F7 processor has a really nice new peripheral- a ‘proper’ audio codec interface, – the SAI. … not the half baked I2S like it used to have. Now DMA is easy, 24 bit audio is easy etc etc.

There is the option for using the switched mode supply or an analog LDO for the 3.3V.

So I spent a full day and a half on it and it is ready to go… (yes I do this for a living).

Tooling strips are on it if anyone wants to have them machine loaded but I will just put them components on myself for the two I need.


Now I have thought of one more thing to add….

A GPS receiver might be handy for those that want it… So that, there is the potential for time-stamping received audio so that at the other end, multiple signals can be voted upon with different link latencies. OK I will try and jam one of those on one corner.

(updated) GPS receiver now in…..





Posted in comms | Leave a comment

Cyclist’s Black Box

A road cyclist’s next problem after he is hit by a motorist  is that the motorist gets away scott-free when fault is theirs.  I’ve been stewing on this project for 3 years now, lacking the time and money to put it into reality. Sooner or later I think I will probably get swiped and I want court admissible evidence to back up my story. So now is the time.


I am looking for general interest to find out whether I am just a bit too serious about all this, or if there is a genuine need for such a device that I have to this point produced a concept prototype.

The functionality is as follows :

  1. High quality video and audio for 5 seconds before and 5 seconds after the impact. 25 frames per second progressive video provides for highly granular history.
  2. All movements 5 seconds BEFORE and 5 seconds AFTER  the impact are recorded in high detail (by accelerometer)  so that the direction the cyclist was hit from, the impact force, and the trajectory post impact are all available for analysis and re-creation.
  3. Impact detected by 3 axis accelerometer triggers the storing into memory of the previous 5 and next 5 seconds of video, audio and acceleration forces.
  4. GPS for location and time fix
  5. Encryption of evidence in flash to prevent data tampering.
  6. Minimal video compression to provide for high zoom without degradation of image.
  7. To be located underneath saddle between saddle rails- this is probably the most solid part of the bike and is also rigidly attached to the rest of the bike (important to transfer forces accurately)
  8. Size – about 2 x matchboxes (or less) and waterproof.
  9. Battery life : 12 hours. charge via non-contact charger .
  10. two tiny cameras with 180 deg lens take care of side and rear impacts
  11. forward looking 180deg FOV  camera  (1/2″ cube) must be located up front – no other way to get a good forward look.
  12. No on-off switch- movement activates system.
  13. Single ‘trigger’ button to take care of stationary altercations.
  14. Price sell for $250 or less ? I am not trying to make any more out of this, I would like though to see justice for riders that have been killed by motorists.

Recently,  devices with low enough power consumption have become available to make this a reality. In order to compress the video with virtually no compression artifacts (so that, for example a license plate can be zoomed in) , a large amount of memory must also be provided.  This memory is always storing the past 5 seconds of action, and is written to flash memory upon the trigger.  This memory requirement puts a base on cost and complexity. There are chips like Ambarella in the Go-Pro that can do the compression almost well enough but with too high a power consumption, and also there is a $250K pay-to-play up front fee for this sort of device. I choose a Xilinx FPGA which I can develop for a moderate cost .

I have considerable experience with all the electronic development aspects of this project, I possess all the expensive tools to make it go  but I lack skills in selling the concept, so I am all ears when it comes to suggestions partnering. I’ve built a basic prototype but to progress this I would like to see what interest there is.

What is important is the ability to present the data and it be beyond a reasonable doubt that it is accurate and untampered. I suspect a motorist, knowing that if an impact with a cyclist went to a court of law, if the evidence was to be so solid, they make a greater attempt to avoid the incident.

Maybe Garmin or someone will take it on, not sure, I’d be happy to talk to anyone who would like to bring this to fruition.

Posted in Cycling | 6 Comments

Stabilised universal references for precision radio work

I developed a GPS stabilised frequency reference that goes about disclipining an oscillator in a different way than most.  It can also function as a stand alone WSPR beacon.
The power point file is available on this site named ddsref.ppt  (link below)


We will get a bunch of boards loaded for sale in the next few months. I have a handful of V1.0 blank PCBs (double sided, silkscreened , masked) if anyone wants them.

Additionally, Inspired by other’s work, (VK3WRE/VK3ZYC), I will develop a very small and thin low noise DDS clock generator that uses a 10 MHz input and provides auto switchover to internal. It can generate ANY frequency for any radio.  This can work in conjunction with any external timebase, 10 MHz being a standard. It will also fit in an FT817 without removing other plug in boards.

demo setup for universal frequency reference – $4 oscillator is on the lower LHS.

Posted in comms | 10 Comments