I have done contract electrical engineering for ages. Previously mostly for university and friends, but as time went forward, more and more professionally for companies. As I also got my own lab and couple of employees - it was time to go official. So I got involved with couple of companies.
Tech-thing OÜ - electrical design and small scale manufacturing. We have capability to design and prototype wide area of devices - from small LED devices to big motor controllers and RF circuits.
Crystalspace OÜ - nanosatellite subsystems and components. We specialize into making small satellite components, like power supplies, attitude determination and communication systems. Also mechanical components like frames and reaction wheels. And finally - whole small satellites.
I have to match 7.799 Ω+1.3158j to 50 Ω load with PI filter at 430 MHz. My advisor's advice - use pen and paper and Smith chart. But since I'm determined not to do maths on paper ever again (we have computing machines available now) then I started to search other ways out. So I read a tutorial on Impedance Matching and The Yin-Yang of Matching, really great stuff.
Then I found program called linSmith. Runs natively on linux, but requires compiling. User interface is quite good and no user manual is needed. I just typed in working frequency and starting complex impedance. Next I put in PI filter components with approximate values. It started showing all values on Smith chart. Little bit of playing around with sliders to adjust values. After couple of minutes I had values for my filter that matched impedance well and was made out of readily available components.
Next step is testing the calculated values on real circuit board. Real board and components have parasitic elements. The final values will be determined by trial and error, but the calculators give very good starting point.
I was searching for a program to match RF circuits. I already calculated input complex impedance and choose pi filter as topology.
First I looked Motorola Impedance Matching Program. It is really old program, runs in Dosbox and is quite awful. User interface is manageable after reading the manual couple of times. Got the filter values from the program, but I'm not sure in these since I'm not sure I used it correctly. But in its free and cross platform so, why not use it.
I also tried Agilent Advanced Design Studio, but yea, it is meant for full time RF engineers. It looks like it can do everything. Usability is almost okay, feels inconvenient like ltspice.
Next I tried to simulate the circuit with scikit-rf. Importing the network worked fine, but the easy part ended there. To make components I first needed to make Media. There was no lumped element Media, so I took the one easiest to use - Freespace. Also the connections don't sound really correct.
#Program accepts one argument - C1 value in picoFarads of PI filter. #It outputs transistor output impedance (calculated from amp.s1p file) #and a graph showing preferred PI filter component values. import matplotlib.pyplot as plt from pylab import * plt.ion() import skrf as rf rf.pico = 1e-12 import sys #amp that we are matching only S22 amp = rf.Network('amp.s1p') print amp.z #we need media to make components. weird media = rf.media.Freespace(amp.frequency) def get_db(C1, L, C2): #pi filter begin C1 = media.shunt_capacitor(C1*rf.pico); L = media.inductor(L*rf.nano) C2 = media.shunt_capacitor(C2*rf.pico); filter = rf.connect(rf.connect(rf.connect(amp,0,C1,0),0,L,0),0,C2,0) return filter.s_mag print get_db(10,22,7) out =  for L in range(1,15*3,3): out.append() for C2 in range(1,15*2,2): out[-1].append(get_db(int(sys.argv),L,C2)) #raw_input() #print out figure() title('Pi matching network, C1 = '+sys.argv+' pF') imshow(out) xlabel('C2 value [pF]') ylabel('L value [nH]') xticks(range(15), range(1,15*2,2)) yticks(range(15), range(1,15*3,3)) cbar = colorbar() cbar.set_label('Return Loss Magnitude') grid(False) show() raw_input()
And this program provides graph you can see on the right. Really nice graph what in theory should show right values. I like how I can look at the graph and pick values that exists in the shop and see how effective filter would be. But again, I can't verify these values on other tools so there is probably small miscalculation in my code.
I'm building a small 430 MHz 1 W RF amplifier to get some practical knowledge about RF design. Choosing components and making the PCBs was walk in the park. But suddenly my instructor said that I have to match my amplifier with next stage. It is weird, because I thought that RF amplifier meant that output would be 50 Ω, but no, it is something totally random.
So, my amplifier TQP7M9105 has page with S parameters. S parameters are parameters that describe RF components working in a 50 Ω environment. In our case S22 is what we want. 22 mean that it is second port reflections to second port aka output information. S22 at 400 MHz is -2.73 dB 176.91 degrees. This is - connecting output directly to 50 Ω output you get attenuation of 2.73 dB and phase shift of 176.91.
To calculate complex output impedance I used scikit-rf python library, because I couldn't find any online calculators doing the same job. Input was fed from Touchstone SnP Format file type, because this was the only way I could think of to convert dB form to rectangular form:
# MHz S DB R50 400 -2.73 176.91
And code itself was:
import skrf as rf amp = rf.Network('amp.s1p') print amp.z
So, my amplifier output impedance @400 MHz should be 7.799Ω+1.3158j. Quick check from mismatch calculator confirmed my results. Next I used PI-match impedance matching calculator to calculate necessary values. Got some answers, probably will use other methods to check if they are correct.
I'm building quite high power (for me) buck-boost converter for a friend. It takes in 12-45 V and has to output regulated 24 V. Total output power has to be more than 300 W. I don't understand switching regulators well enough to build more than 100 W regulators from 555 timer (that is basically how your computer power supply is built). Just too much phase shifting and output oscillations and whatever else to take into account. You know, the things you learn in electronics classes (which there was none in my school).
So I took the highest power buck-boost controller I could find - LT3791-1. It satisfied all my specifications so I calculated what parts would I need to make a 300 W board out of it. After ordering stuff and soldering it together it looked awesome. But after some playing around I couldn't get it to boost more than 100W, buck worked well but boost didn't. After lots of debugging and bunch of fried chips I finally figured out that the MOSFET drivers are too weak. My big and high power mosfets didn't even get warm at 300W output, but the chips internal voltage regulator fried all the time.
So, lessons learned from high power:
- Every watt adds problems to MOSFET driving
- Don't over specify parts three times
Next prototypes will be smaller and there will be several of them in parallel. Maybe some pictures soon.
I have been visiting finnish Aalto-1 satellite project a couple of times. I am building half of one of their experiments - motor control board for electric plasma brake. Took bunch of cool pictures of their technology. Enjoy.
My old lab was in the corner of my dorm room and as projects proceeded I needed a bigger lab. So, I got one. I teamed up with couple of my friends and we got 80m2 of space in nearly industrial building. It is nice to have room big enough to have 7m Yagi antenna indoors. In the same room there is EDM OÜ making small CNC machines and soon, couple of more startups.
I needed a bicolor LED cube, so I designed one. One coloured cubes are useful only as toys so bicolor one seemed like the easiest to make. I used Atmega8u2 to control two TLC5926 and high side switching was done with four small mosfets. As a bonus feature I used NCP3170 to convert USB 5V to 2.2V more suitable for red and green LEDs. Using a switching regulator let me use power from USB more efficiently.
My second led cube was much more ambitious - 6x6x4 RGB led cube. I planned to use one big Atmaga and charlieplex all the pins. I did the easy part - calculations, designing the system, routed and soldered the circuit board. Then I faced with the killer part - soldering 144 small surface mount three color LEDs to thin wires to form a cube. I tried couple of different racks but it was too time consuming to do even one. Some day when I think of a better way I will build a dozen, but for now it goes on my Out of Development wall.
So I got the opportunity to visit AMSAT-UK Colloquium. What is that anyway? Well - Radio Amateur Satellite Corporation UK edition's meetup.
On the first day there was a bring your own board meetup. So we took about all of the ESTCube-1 PCB and threw them on the table and went off to talk with other people. It was really fun and I took a lot of pictures of other people's work. From that I learned that many people have the same problems as us. System engineering problems, internal communication protocols and so on.
There was a bunch of talks about well, amateur radio satellites. European Space Agency guy was talking about their workflow (which made me doubt in them a bit more) and then about their projects (which made me to like them again). QB50 guys were talking about behind the scenes and future of this project. I got more confirmation that system engineering is awesomely hard. So I want to do it even more.
We got a tour in the Surrey University space center and Surrey Satellite Technology LTD headquaters and could see in their cleanrooms. They had more cleanroom soldering places as whole Tartu has normal ones..
But most importanly - I meet up with a lot of cool people. If everything goes well then I will be involved in some ESA projects soon.
NB. And I got to see the PCBSat, wee!
I looked at commercial reflow ovens and saw that they are expensive. That is a pity, because the hardware in them doesn't cost anything (Yea, I know, the development costs).
So I made a board controller that allows you to temperature control anything with minimum components. It has 4A TRIAC to control the heater, temperature sensor and attiny13 to control the heating. Also a red button, LED and on line regulator. The BOM cost was about 6$ in single quantities from Farnell.
Debugging the prototype was quite "fun". On line regulator meant that my ground was actually quite close to line voltages, so the probing was pretty dangerous. To use oscilloscope I used one channel as a virtual ground and divided two channels with math.
I got the regulator and zero volt crossover detection working but the TRIAC drive circuitry didn't work. The code was finally working, but I managed to blow the TRIAC somehow. I used small pulse after each zero volt crossover to turn on the TRIAC for the next half cycle. It brought the projects energy consumption quite low, only couple of mA. This allowed me to use quite small (100 nF) mains rated capacitor for the regulator.
At some point I decided to stop this project. Debugging it was too dangerous and I had made couple of bad design decisions. Like believing screw terminal over 300 V rating. Line voltages and 3.5 mm pitch screw terminals shouldn't go together.
Since I still needed a reflow oven: I took a sandwich grill, added a thermistor, a small 5V relay and simple atmega32u4 devboard. Half an hour of coding later and now I have a reflow oven. PID controllers and thermal profiles are overrated, everything works perfectly with "go to 220 degrees then shut down" logic.
School is over, I'm finally able to do some work again.
I had some PCB orders to make. So, script I have been wanting to make for a long time - KiCad gerber renamer. It is a shell script that takes gerber files that KiCAD produces and renames them to match ITEAD or Seeedstudio file requirements. Really handy. Works with multiple versions of KiCAD (daily and older).
So I tore town my hot air station another day. It was bugging me that it restarted every time my refrigerator turned on. Probably a problem with not enough (if any) filtering.
Couple of screws later and it popped open. First impression - it is dirt cheap. Well, it is THE cheapest hot air and soldering iron station but wow.. It has a big transformer in its core. Transformer powers board with microcontroller, that controls the screen and buttons. Power for the soldering iron comes from different winding and is controlled by thyristor through a opto-isolator.
Some critisism: Single layer paper PCB, insides is a cabling nightmare. Everything is through hole, because you know - workforce is free.. It didn't even have a 7805, but a TIP122 transistor and a zener. Very weird design that I have also seen in couple of other ultra cheap Chinese stuff.
Positive side: it is really cheap - under 80 €. It works - I bough it some years ago and still no problems. All the tips and replacement parts are available really cheap also. So, I recommend it.
The upgrade: It actually had a lot of Y2 capacitors from power lines to mains earth. But I live in an old soviet building where is no mains earth. So I added more capacitors. Mains line got a biggest X2 that I found. Circuit 5V power line got couple of big electrolytes and some of small ceramic capacitors.
I also found the soldering iron tip grounding line and added 1 MΩ resistor between it and the ground. This gave me the ability to solder live circuits. Before I had couple of nasty incidents.
So I wanted to study RF. To start with the most basic I wanted to build an oscillator. All the places were full of fancy and hard schematics. But to understand the need for good we must try the worst. The simplest and worst oscillator seems to be Schmitt trigger one. Information on in is scarce, but there is some information about it in AN-118.
The idea of circuit is that inverter with schmitt trigger input feeds into its own input through RC circuit. Frequency is dependant on selected R and C values.
I used 74HCT1G14 inverter 1 nF capacitor and 100k 25 turn trimmer. All the signals looked fine on the oscilloscope, so I started to increase the frequency to see how far can it go. Datasheet says that rise time is about 5 ns. That should get up to 100 MHz output. However I'm only able to get about 75 MHz out. The more frequency goes over 10 MHz the more the output looks like sine wave and the less like square.
But we still don't have answer why is it so bad. Signal looks okay on the oscilloscope. Time to get out "spectrum analyser". It is a DVB-T dongle with GNU radio software from computer side. Quick look on the waterfall display shows how awful the signal is. To give perspective - the whole frequency band I was targeting is 50 - 52 MHz.
The part on the top where the signal is weird is part where I switched off the power.
ESTCube-1., the cubesat satellite project I have been a part of over a year was successfully launched couple of days ago. It was on Vega rocket start on 2013-05-07. CW morse beacon is broadcasted on radio amateur frequency 437.505 MHz.
I was mainly in the hardware team designing and manufacturing the final circuit boards using components tested by people before me. Most of my time was spent in working on electrical power system, but I also helped with attitude determination and control system board layout. Most independent work I spent on one of the payload circuit boards. I designed and assembled piezoelectric motor driver boards as my thesis work.
Long live the satellite! I will work on many more satellites.
Some time ago I bought myself a Owon DS7102V 100MHz oscilloscope. It is similar to the Rigol entry level scope DS1102E, but thinner and with bigger screen. Oh, this beautiful screen, totally worth the money. But as time passed first flaw of this eBay originated scope surfaced - the fan broke. It didn't stop, it just started to make screeching noise whenever I turned it on. When taking aparart for the first time I also managed to break soft power button.. Oh well. I ordered new 12 V 60 x 60 x 10 mm fan and KDC-A11 power button to fix it.
Internal layout is really impressive. One third of the scope is cheap power supply, middle section is battery compartment, and all the scope electronics is one small PCB. Whole scope worth of electronics small enough to put in pocket.
Interesting chips I found from scope:
My circuit board with MSP430FR normally took ~ 3 mA from 3.3 V line. But one evening, it started taking 200 mA. It seemed to function correctly but the power had to go to somewhere. 200 mA * 3.3 V = 660 mW. It is not enough power to burn the fingers so how can to track it down - use drying solvent. Normally I clean my boards with acetone (but isopropanol is better) so I just wiped that to random components until I noticed that the die part of the MCU was drying much faster than other bits of the board. After replacing the MCU the current consumption dropped back to 3 mA. The resistivity of acetone is in the order or megaohms so no problem with misoperation.
We all love solder paste reflow soldering. Of course we do: its the fastest way to solder boards and can also be used to produce more than one of them. But getting stencils has been a pain: smtstencil.co.uk sells them for 20€ and a week of waiting. A bit too much for playing around. And I broke couple of school's endmills trying to mill out stencils so no more of that.
A week ago Kalle showed me a blog post about cutting stencils with plotter. So I have a plotting machine now. Cuts pretty stencils from polyester sheets. KiCad exports SVG files that is useable with minimal modification. Polyester stencils are transparent - aligning is easy even without aligning holes. It is strong enough so I can use it more times than I ever will. Also it it soft enough to modify it with scalpel.
While trying to solder some 10x10 cm CubeSat 4 layer boards at home I found out that it is really hard. In school we have hot plate and infra-red preheater, so soldering big boards and components is easy. Preheater heats whole board up to about 120 degrees and this makes soldering of any kind much simpler. The amount of heat needed to warm up a joint is much smaller. Soldering big ground pad, massive heatsink tabs and big center pads becomes a piece of cake.
So, I wanted a preheater too. Preferably hot plate one, because it is cheaper, easier to use and good enough in most cases. I searched and no shop could sell me table stove small enough. The cheapest hot air ones were about 50€. So - I made one myself.
The Blazing Track - PCB preheater from PCB. It is 10 x 10 cm big hot plate. Top side is filled with 4 Ω worth of 1.1mm track. On the bottom side there is 5.5 x 2.1 mm barrel connector, red led to indicate if it is powered or not and some unpopulated bonus tracks. The PCB is inspired by Sick of Beige standard PCB sizes, but bigger. Standard should be DP100100, if there ever will be it. In all four corners there are legs, made from countersunk bolts so the top side is totally flat.
Power it with 12 V and it will take a bit under 3 A and will settle down to 2 A when hot. At 12 V it will get about 90°C. For other temperatures, try other voltages. This temperature is pretty good and helps with soldering.
There are extra pads on the bottom to solder SMD pinheader and 0603 thermistor, so you can make your own daughter board which measures and controls temperature.
Okay.. So our CubeSat power supply subsystem should have batteries. There will probably be some solar cells to. Something else too?
The system level design is done after ESTCube-1 power system. Public information about it is available in the article.
- Two lithium ion cells in parallel
- Both are two way current limited
- Current limits have auto retry
- Enable signals are connected to controller
- Temperature monitoring
- Optional: Some kind of heater (pcb track)
In case of one battery failure the satellite can still operate. Batteries are connected through protection to a net named Main Power Bus (MPB).
- SPV1040 maximum power point tracking boost converter
- 6 or 12 channels
- Each solar cell is in parallel with others. You can smash 11 of the 12 cells and still have a working satellite.
- If it makes channels smaller - I will use ideal diode controllers before MPPT to reduce number of MPPTs needed.
- If it is needed - ideal diodes between SPV1040 output and Main Power Bus
- Parallel regulators on 3.3 V, 5 V and 12 V rails
- Output current limits/ideal diodes
- If needed - input current limits
- If regulators are wimpy and there is room - more than 1 power rail to all voltages.
- We will have a microcontroller monitoring everithing (MSP430FR or maybe Arduino)
- All FAULT signals are connected to MCU
- Reasonable amount of enable-disable lines
- Digital communication with other subsystems (SPI, UART or I2C)
- Possibility for zombie check signals from other subsystems (to function as a watchdog)
- Battery voltage measurement
- As much other voltage measurements as possible
FreeCAD is an open source freeware 3D CAD program. I needed some 3D models for my CubeSat battery post and it looked user friendly, so I gave it a try. I have previously used Blender3D, Solid Edge, SolidWorks, Google Sketchup and HeeksCAD. So I have some experience with 3D modelling and no experience with formula generated modelling (like many open source CAD programs tend to be).
First impression - where are ALL the buttons. Then I discovered workbench switching - makes sense now. Couple of small tutorials later and I was able to model simpler things.
It has usable 2D sketching tool and possibility to modify 3D models. Also almost normal assembly making ability.
Like all open source tools - the GUI is still a bit rough from the edges. SolidWorks style constraints are a step to the right direction, but they are still a bit buggy. For example clicking on the constraints is pretty challenging. I modelled CubeSat PCB after CubeSat Kit PCB Specification and made some simple assemblies. Pictures are in the last post and here are the models.