ik1xpv hamradio software & hardware

Filament weight scale for Ender-3

When the filament reel of a 3D printer begins to decrease, it becomes difficult to tell whether the remaining filament in the reel will be sufficient for the next print.

A similar scale to the vehicle's fuel gauge would be needed.


Here is a weight scale that allows you to estimate how much filament remains in the printer roll and helps to predict whether it will be sufficient for the print you are about to undertake.
There are many other similar projects on the web at www.thingiverse.com and other sites dedicated to 3D printing.
The particularity of this realization is that it is housed between the support bracket of the filament roll and the 20x20 mm profile at the top of the Ender-3. The power supply is taken from the 24V rail from the nearby power supply. I added a rocker switch to the 24V input to turn off the scale when not needed, it is useless to waste even a small energy of a few watts. 

lt shows weight readings averaged over several seconds and therefore display is quite stable. Note that the force applied to the filament by the extruder generates a variation in the reading of some grams. I modified the pin that supports the roll by inserting a support with two ball bearings that allows rotation with less friction. See Thingiverse "Another Ball Bearing Filament Support Ender-3"



A printed circuit board connects the pre-assembled economic modules together:

a 5kg load cell and an ADC HX711 module - M1, http://bit.ly/2TgD3bu ;
an ESP12E module -M4 , http://bit.ly/2TVHokU or ESP12F http://bit.ly/2TSCXHz ;
a graphic OLED display - M2, http://bit.ly/2TlLhyW ;
a button - S1, http://bit.ly/2TPz4Tx (the plastic cap is not used) ;
a power DC-DC 24V to 3V3 module -M3, http://bit.ly/2TqkHoI
a rocker switch, http://ebay.to/2uFnEYn ;


Directly on the printed circuit board there are few filter capacitors and some resistors.
A programming connector for the ESP-12 is made with a strip of aligned pads and is also used in the firmware development phase. In the development phase I soldered a female strip connector tilted inwards to easily connect the serial interface and programming switches.
The power supply wire added to the 24V is a double insulated plastic cable, since it runs outside the profile is black. I recovered it from a broken laptop power supply

Here: Circuit diagram and pcb layout pdf.



To program in circuit the ESP-12 module I used the following adapter scheme:


 I used this USB - serial adapter.

The FS101 software has been compiled using the Arduino environment for ESP8266 and the subsequent libraries:

- ESP8266_and_ESP32_Oled_Driver_for_SSD1306_display , https://github.com/squix78/esp8266-oled-ssd1306
- HX711 , https://github.com/aguegu/ardulibs/tree/master/hx711 ;
- OneButton , https://github.com/mathertel/OneButton ;
- eeprom , https://github.com/esp8266/Arduino/tree/master/libraries/EEPROM.

The current firmware ( FS101 version 1.0 )  does not activate the WIFI function of the ESP12 and the module is used as an economical micro-controller.

In order to configure the weight scale and modify some parameters I used a single button library user interface with 3 events: button pressed once, button pressed twice, timeout for unpressed button.  The parameters are saved in Flash (Eeprom). Among the parameters is selectable the density in grams per cm3 of the filament. It is used to calculate the estimation in meters of the filament assuming a diameter of 1.75mm.
The default calibration parameters can be modified into the ESP-12 module program by recompiling.

Hereafter a map of the user interface.



I used my 3D printer (Ender-3) to make the weight scale box, the cover and some spacers, see https://www.thingiverse.com/thing:3537459

The box has dimensions of 215 x 32 x 20 mm and is fixed to the top profile of the Ender-3 using 2 bolts of 25mm and one of 8 mm that will be screwed in captive data to the groove of the profile.
I have used bolts and M5 data, however this requires drilling the two M5 holes in the load cell with a 5 mm drill bit to allow the bolts to pass freely and thus tighten the load cell at the base and at the profile.


Two holes in the box allow the passage of the hex key and are also used to cool the electronic circuit and to pass with a small screwdriver to open the rear cover.


Alternatively, M4 bolts and nuts can be used; drilling of the load cell is not necessary.
Be careful to drill holes in the load cell. Do not damage the wiring, and use a column drill and vice to secure the load cell securely. CAUTION: Do not pierce the cell by holding it temporarily - you would be seriously injured!
The roll support bracket has two 5mm fixing holes 20mm apart, while the load cell has two M4 threaded holes 15mm apart.
I designed a small spacer that fits the 5mm holes and has two 4mm holes.
It is necessary to mark and cut the second 4 mm hole in the original metal bracket.

Here you need a column drill and a vice to fix the bracket firmly. CAUTION: do not pierce by holding the bracket temporarily: you would be seriously injured!

I populated the pcb with only the power supply module and I connected it temporarily to a 24V power supply (the module holds up to 28 volts input).
I then adjusted the trimmer to have an output voltage of 3.35 volts. I decided to desolder the resistive trimmer from the module and replace it with a fixed resistor that in my case is about 19.6 kOhm (parallel of 20 kOhm and 1 Mohm). In this way the voltage cannot be changed by mistake.


I soldered the other components on the printed circuit board. Be careful to install the spacer under the button, it serves to have the correct spacing towards the front.



Before mounting the OLED module it is necessary to configure the I2C interface by installing on the back of the OLED module the resistors R1, R4, R6, R7 = 4k7, R8 = 0 Ohm.



The FS101 pcb does not require any modification (fixing the modules when they do not exactly coincide in position may require tilting the connection pins a little and some adaptation).


I have some spare pcb, if some maker wants one pcb can send me an email (ik1xpv AT gmail.com) with the full destination address and after my email confirmation of availability, send a Paypal donation to my email for expenses incurred (I think > 4 Euro).





BBRF103-2 RC3 is here!

Radek Haša is a shortwave and airband listener living in Czech republic.
He decided to redesign the PCB layout and assembled a prototype of the BBRF103-2.
Thanks for allowing his project to be published.


While designing the PCB in Eagle 8.x format, he noticed and fixed some bugs in my layout.

- Referring to transformers T1,T2,T3. The Coilcraft WBC4-6TL type is better than the WBC4-1TL. The insertion loss is 0.65 dB instead of 1 dB. (WBC datasheet)
Note that terminals 4 and 6 of the primary winding are interchanged in the electric scheme and the SMD footprint used in the PCB. This does not affect performance and will be corrected in the future PCB version to match the original SMD footprint.

- The Q1,Q2,Q3,Q4 SMD footprint is corrected in RC3 PCB.

- C44 and C55 silkscreen locations are swapped in the BBRF103-2 original PCB. Footprint is corrected in RC3 PCB layout.

Prototype was tested on desktop PC equipped with Intel Pentium G4600 CPU and B150 chipset USB 3.0 hub controller. Hereafter some pictures of prototype under testing.





He made some test of temperature of the ADC and R820T2 in VHF mode.
“There are no heatsinks on ADC and R820T2. The temperature of the ADC reached 73 ° C while the R820T2 reached 60 ° C at 100MHz. Room temperature was 27 ° C.“

WARNING: notice that this description is a BETA test version without any warranty and is intended for non-commercial purposes.

Radek’s PCB design files can be downloaded here: http://www.steila.com/radek/BBRF103_2_RC3.zip
The archive contains:

Finally please notice that ExtIOsddc.dll ver 0.96 software does not yet control the antenna power via dll panel window and to enable VHF (R820T2) mode you must undefine _NO_TUNER_ in config.h and recompile.



email: ik1xpv AT gmail DOT com

Just another BBRF103 version

A new board to experiment with undersampling technique.

“..If we use the sampling frequency less than twice the maximum frequency component in the signal, then it is called undersampling. Undersampling is also known as band pass sampling, harmonic sampling or super-Nyquist sampling. Nyquist-Shannon Sampling theorem, which is the modified version of the Nyquist sampling theorem, says that the sampling frequency needs to be twice the signal bandwidth and not twice the maximum frequency component, in order to be able to reconstruct the original signal perfectly from the sampled version. If B is the signal bandwidth, then Fs > 2B is required where Fs is sampling frequency. The signal bandwidth can be from DC to B or from f1 to f2 where B = f2 – f1. The aliasing effect due to the undersampling technique can be used for our advantage. When a signal is sampled at a rate less than twice its maximum frequency, the aliased signal appears at Fs – Fin, where Fs is the sampling frequency and Fin in the input signal frequency. “ from Why Use Oversampling when Undersampling Can do the Job? - Texas Instruments.

In an example case looking at FM band we sample the input 98 MHz with Fs = 56MHz and the aliased component will appear at 14 MHz ( 56*2 – 98).
As we know in advance that the signal is aliased, we can recover the actual frequency by using the N*Fs – Fin relationship. The undersampling technique allows the ADC to behave like a mixer or a down converter in the receive chain. For a band-limited signal of 98 MHz with a 20-MHz signal bandwidth, the sampling rate (Fs) of 56 Msps, the aliased component referred to 2*Fs will appear between 4MHz to 24 MHz (20 ±10 MHz.
An analog band pass filter is required at ADC input to avoid interference from other Nyquist band.


Undersampling Case of 98MHz Signal with 20MHz Bandwidth.


I designed a new breadboard with some modification. The PCB is named BBRF103 ver 0.5.


BBRF103 ver 0.5 - block diagram.

The J1 input uses a band stop filter for the FM Band 88-108 MHz.
This input is planned for experimental use within 120-500 MHz frequency range. Some specific band pass filter and LNA will be externally added for 50MHz, 144MHz or 432MHz band.


The FM Band Stop Filter - LTspice simulation.

The J2 input has a band pass filter for the FM band to analyze the full 88-108 MHz band spectrum at once. This filter is quite simpler as the FM signals are very strong versus possible interference.


FM band filter response.

Finally J3 is the HF input. The filter components values are changed from first version of BBRF103.


HF low pass filter.

The connector J4 is an optional input for an external reference signal. A capacitor must be mounted to enable this signal.

J5 and J6 are two programmable clock output from the Si5351 generator. May be used to synchronize external tuner oscillator.

RF switch type
I like to test a bi-stable subminiature DIP relay type HFD2/005-M-L2-D to switch RF instead of active switches. 
The relay is a 5Volt dual coil latched one.  I shielded it using adhesive copper tape that will be soldered to the PCB ground plane.


Relays used. The left one with a copper tape shield added.

The board scheme and PCB layout is at link http://www.steila.com/test/BBRF103_5.pdf

24/04/2019 - here http://www.steila.com/test/BBRF103_5B.pdf annotated scheme circuit to keep relays off during power on.

I preview to receive the PCB within September and then to start testing.


24/04/2019 - My prototype shows that the PCB layout around the PCB is worse and noisier than the previous PCBs. A makeover is needed.


email: ik1xpv AT gmail DOT com




BBRF103 - Band L reception

BBRF103_2 PCB adds a switchable LNA power supply through the antenna cable

I tested it with an Outernet L-band ceramic patch antenna.  This antenna requires  power and can be connected to BBRF103_2 PCB. The antenna onboard filter helps to reduce problems from interfering signals and restricts reception to 1525 - 1559 MHz.

The antenna is a 12 by 12 cm square PCB.  I placed it into a plastic radome ( an empty IKEA FIXA series DIY kit ).



A picture of the installed radome.


Some screenshots of the band L:


Reception of Inmarsat C  with  WinSTD-C program.



Ten MHz down there are many other satellite signals.  The gap in the spectrogram shows the BBRF103 noise when the antenna power is switched off;  two spurious signals are visible on the right.

BBRF103_2 PCB notes

ADC:  I mounted the BBRF103_2 prototype with a LTC2208 ADC instead of LTC2217. I wanted to check compatibility and I had not any other LTC2217 sample. The LTC2208 is a little noiser than LTC2217 by some 2 dB.  The LTC2208 draws  some mA more current.

Antenna power: The  scheme uses 2N3906,2N3904 : Q2,Q3,Q4,Q5. The pcb footprint is wrong. Mount them upside down on the pc board.

I mounted R42,R43,R44 = 10 Ohm,  it increases the output current. 

R820T2:  I added some bypass capacitors to the VCT line on the top layer. 

Temperature: I made some measure of the temperature of R820T2 and LTC2208 with a small copper radiator.


The temperature of the ADC with a small copper radiator reaches 67 ° C while the R820T2 with the radiator reaches 45 ° C.

Preview: I will use MAX4995 50mA to 600mA Programmable Current-Limit Switch to control the LNA current in a new pcb's revision and some heat radiators will be added to ADC and RT820T2...


 email: ik1xpv AT gmail DOT com

SMD viewer MkII

My hobby desk is limited in space nevertheless I added a SMD viewer with a relatively long working distance.

Here the result. In the screen you can see some 0603 components.


I started reading this very nice post http://operationalsmoke.blogspot.it/2014/05/diy-usb-soldering-microscope.html

I found in my cellar an old camera made in URSS (1965?). I made some test of the focusing distance of the lens. I used an empty can of tuna in oil as spacer ( use protective gloves when cutting the tin). I took the lens threaded mounting ring from the old camera and fixed it to a hole in the can.  The can is painted mat black to avoid light reflections.

A black plastic box houses the webcam.


I bought a cheap HD (720p) webcam with manual focus (www.banggood.com).

To modify the webcam remove the webcam board from its housing. Unscrew the lens mounting and cut the black plasic ring. DO NOT TOUCH the red infrared IR filter placed at bottom near the camera sensor. All optics exited the front after cutting the upper black ring. Do not touch the filter glass.  Protect the sensor with paper tape when attaching the camera to the new box. Fix the camera pcb using nylon spacers and screws.



Before attaching the camera card, experiment a little bit with the distance of the lens as the magnification depends on the lens type and the layout of the camera.

I use the camera with a Windows PC 10. The applications I prefer are VirtualDub and Windows native Camera. VirtualDub seems a bit faster.

The positioning of the camera must be very solid to ensure stable images. In my setup I placed 9 neodymium magnets on the back of the plastic box and an iron plate (from an old CD drive cover) is screwed onto the top of my holder. The magnets allow to  move and unplug the camera easily.



To obtain a wide depth of field a low aperture and a strong lighting must be used.

I made a try of a home made lamp with a 10 watt led and a focusing lens taken from an old video camera. A fan cools the led aluminum radiator. Some magnets are used to suspend the lamp. 





Lens (taken from old photocamera) --
webcam 13 €
plastic box 3 €
neodymium magnets 2 €
spacers, screws, paint etc 5 €
Led 10Watt + power supply + fan 7 €
Lens for led (taken from an old videocamera)  --
Total 30 €


 email: ik1xpv AT gmail DOT com

R820T2 update - BBRF103_2 PCB

A bug crashed the USB3.0 stream at random time while the R820T2 tuner was active. ( Troubleshooting BBR103 )

It was caused by a spurious coupling via the 3V3 power supply. 

I thought of a problem in the firmware of FX3 while the cause was hardware.
I decoupled the R820T2 3V3 power supply using a separate LDO from the 5V USB bus to
solve the problem in the prototype.

The R820T can be used to receive frequency band in the range 30MHz -1800MHz.
The tuner uses a clock generated by Si5351A at 32.000MHz, the REGDIV bit of reg 4 is set to 1 to divide it by two internally to the nominal 16MHz.
The IF output is selected at 5MHz ( I used up to 7.5MHz) and it’s sampled by the ADC at 64Msps and then decimated down to 8Msps or less. The R820T data sheet states that the standard IF filters are implemented for 6/7/8 MHz channel bandwidths.

The LNA, the mixer and the VGA gains can be set manually although their precise values are absent from the datasheet.
They can also be set automatically via automatic gain control (AGC) in order to optimize the signal to noise ratio (SNR).

A revision of PCB  BBRF103_2 has been designed: ( www.steila.com/test/BBRF103_2B.pdf )

- A separate LDO voltage regulator for R820T2 has been added

- 1000 uF capacitors with a mosfet delayed switch has been added to 5VBUS and 3V3 R820T2.

- Antenna power supply with software switch added to HF and VHF input

- SMD pad dimensions have been increased a little bit to simplify manual assembly.

- Board profile modified to house SMA connectors. 

- BAV99 smd layout corrected.

- A header P7 with some GPIOs added.

- Possibility of external frequency reference input to Si5351a  ( P8 ).

- Aux clock ouput  (P9).


I just received the manufactured pcb and possibly I will test it in the next month.



Newer posts → Home ← Older posts