Lab where I work lately bought a Keysight U2001A RF power meter. It was an expensive, but is a nice device. Since the software that you have to use was subscription only I wrote my own GUI to take measurements.
As all USB connected measurement devices, this power meter needs a software to display the measurements. As it turns out, the only supported GUI for this and many other similar devices is Keysight BenchVue. BenchVue is a good and big tool for big labs, but comes with its problems. As many electronics software - it is Windows only. It also is around 1GB big and has its own license servers. Also you have to pay subscription fee. After buying measurement device for multiple thousands of euros, you also have to pay monthly subscription fee to use your legally owned measurement device.
All this seemed a bit much for me, to just take simple RF power measurements so I wrote IviGui. Most connected devices provide a way to program scripted test automation. This particular device uses USBTMC. So I took python-usbtmc library and wrote a simple GUI on top of that to measure and display this measurement continuously.
I also added some features that I felt, were missing in the gigantic BenchVue application. Like a blinking dot to indicate when an actual measurement is updated. Also a clear and simple way to do relative measurements to subtract cable and attenuator losses.
At the moment the GUI script only works with this device and doesn't offer all the functionality of the device. But I'm sure it can be used with other similar USB RF power meters with only minor changes.
Probing mains powered schematics is hard. Most oscilloscopes are earth referenced, so connecting ground probe to random spot of mains connected device will make a small explosion. Also there is the risk of electric shock by touching wrong part of the schematic while being in contact with something grounded like a desktop computer case.
To combat these dangers I built an isolator box. I took an 1:1 transformer rated for 230 VAC 50 Hz mains voltage used in Europe. With 0.76 A current output capability it gives me ~170 W to play with. To make it even more useful I added a second output that goes through a diode bridge and has bunch of filter capacitors. This gives me rectified DC voltage to use, since most schematics rectify it anyway.
For electronic construction I didn't use any PCBs. There was only a handful of components and all of them are really big and chunky so I just wired everything together. For front panel I used colour coded 4 mm with 19 mm pitch and illuminated power switch. I added fuse holder to the back, since I like to not die when working. First I tried quick acting fuse, but transformer inrush current blew it, so I settled with slow acting one.
Mechanical construction was done quite hastily. Front and back panels are made out of 15 mm polyethylene sheets. I cut the sides out of 2 mm acrylic sheets I had lying around and screwed to front and pack panel. Heavy transformer is screwed to back panel and lies on its side to provide support.
First test were successful, powered some schematics and probed random parts of it happily. After turning on high power portion of the schematic the fuse blew and no smoke escaped. So win for protection.
I needed small ultrasonic sensors for a flying sensor. So I got the smallest one - . Quite nice unit, works down to 0 cm. There were some problems with it - Maximum detection frequency is only ~14 Hz and the resolution isn't so great (1 cm). Also, on some occasions after falling from a high height the transducers broke and sensor would only give out constant distance reading. To fix the broken sensors (which I had many) and to satisfy my curiosity I took one apart and reverse engineered it.
From component side: It has series 3 pin connector for communication and power. Since the working voltage is 3.3 - 12 V it uses LP2980 3.3V voltage regulator to power all the components. The transducer used is 400PT from china/Multicomp. Received signal is amplified by dual 10MHz op-amp. Then it is fed to ADC. The ADC frequency 500 ksps so the whole received 40 kHz signal is digitalized for analysing. This gives the benefit of extra resolution and ability to measure distances closer than 30 cm. Normally this is not possible with one transducer design because the transducer is still ringing from transmitting.
The analog front end is an active band pass filter. First stage is configured with a gain of 26x and second one with 5.6x. Gain-bandwidth product for both stages is <=1 MHz so the op-amp is more than decent enough. Filter cutoff frequencies are 8.8 kHz for low pass and somewhere >70 kHz for high pass. Top capacitor is somewhere in the pF range where my multimeter can't measure.
The necessary driving signal is generated by two IO pins. Driving the transducer this way gives 6.6 voltage peak-to-peak to the speaker. After generating 8 pulses @ 40 kHz it switches bottom pin of the transducer to GND and top side to input.
In conclusion it is a nice little sensor. It does some nice tricks to get its performance. Control software is has one pin serial interface to get data. Biggest problem with it is the detection rate. Measurement can be triggered only every 70 ms. The reason for this is to hear echoes for the maximum range of 6 m. Good idea, but for shorter distances the time could be much shorter. This speed is good enough for human interface, but not good enough for many control applications.
EDIT: Lot of people were interested in the failiure reason and fix. The failiure was caused by mechanically braking tranducer. I managed to destroy 5+ sensors and all of them had the same problem. Broken tranducers had slightly different capacitances, I didn't measure other parameters. Same tranducers were available from Farnell for quite cheap so I just swapped these for any broken sensor.
I designed couple of vocoder encoders. Vocoders are devices that encode sound by chopping it up by frequency bands and express each frequency band only by its amplitude. This kind of representation allows to mix all the frequency bands with each other. This have been used as a method of speech encryption in the past. I build one part of the system - relay board that took analog voltages and mixed them up with each other to provide encoding/decoding.
Board itself had 12 inputs and 12 outputs. To switch the combinations between them there was 144 FRA3C-DC12 open case relays and indicator LEDs. 144 relays are needed because every channel has to have the ability to switch to every output. There would probably be smaller relays or even smaller solid state solution. But this went to an art installation it had to have relay clicking sound and see-through/open relays so user would see the movement happening. To drive all of these relays I used driver chips and for communication with central controller - a circuit with nrf24l01 chip. For communication I had to put the chip on the board because there was no good RF modules with external antennas available. External antenna was needed to reach out of the metal case it was mounted in.
First version of the board used TLC5940 LED drivers to drive the relays. Relays were rated 100mA @ 12V so I put in current limiting resistors to limit TLC current to 120 mA, just to be safe. Control circuit had Atmega168 with Arduino bootloader. Board was manufactured from 2 layer 1.6 mm FR4. After building it up problems started to appear. The code was working well and radio links were working, but switching wasn't so reliable. It turned out that led drivers with current limit at 120 mA couldn't switch some of the relays. Switching current was probably higher than 120 mA, combine that with 288 different relays that I had and some of them were bound to be a little out of spec. Secondly - the voltage regulator couldn't handle all the power needed from 5V rail. Every LED driver used tens of mA from the rail and since I had 9 of them - it added up to too much.
Final problem - that finally killed the board - was mechanical in nature. Board - with the size of about A4 paper, had about 1.3 kg of relays on it. When taking the PCB from the sides and rising it up from the table to move it to next one - you could hear copper tracks braking apart. Each move destroyed some tracks. Shipping with courier probably broke tens. When LEDs and relays didn't light up because of that I subsidized failing tracks with wires. But in the end, it was all wires and all broken.
Since there was still need for a working board I designed a new board. It had the same relays, LEDs and control circuit. I used industrial hot air gun to desolder all 288 relays from the old board. But I used new driver chips - TPL9202 8 channel relay drivers. These were rated at 200 mA, which gave me a 100 mA of safe zone. And testing showed no problems. They were 8 channel so I needed 18 of them per board, but no big deal. I also moved control circuitry to a separate add-on board to make the design more modular and easier to debug. To drive all the SPI slave select pins I used CD54HC154 4- to 16-line decoder chip. Voltage regulator issue also fixed itself - the motor controllers had their own 5V regulators built in so I just took one of those 5V lines and used it to power control circuit.
For mechanical stability - many changes were made. All the tracks going to relays were as wide as possible. I used as big teardrops for all through hole components. Also - to make soldering easier I had red LEDs with 12V rating. This how I didn't need to solder 288 small SMD resistors that could potentially fail. But the most important mechanical difference - I went to 2.4 mm thick PCB. There were some weird problems with it - like through hole headers didn't want to reach through. But the mechanical strength that came with it - amazing.
All source files are free and available. PCB design was done in Altium Designer, code with Arduino IDE.
I got my hands on three different glucose meters. Glucose meters consumer level medical devices. They normally have chemical test strips that you put your blood on and then plug the strip to the meter. Meter measures the test strip either electrically or optically and displays the result.
First one to look at is the oldest of the meters: Bayer Ascensia Entrust. The design looks oldest and lowest volume. There are many components: MCU, external ADC, multiple opamps. The screen is through hole soldered. It also has a card edge connector for calibration card. With each pack of test strips there came a small memory stick with calibration data for these strips. Quite complicated and expensive, but this is what was necessary for precise measurements.
Second one Accu-Chek Active is a bit newer and looks more like a mass production device. Atmel microcontroller and only a few external components. LCD ribbon cable is hot bar soldered to the main board. Sensor looks like an optical measurement with several optical sensor dies on the PCB. Like the first one it has slot for calibration sticks.
Third is Contour TS. Smallest and most consumer level. Single chip solution, no amplifiers or calibration connectors. Buttons are rubber membrane and LCD is zebra strip - cheap and easy to manufacture.
It is interesting to see same product develop through age. All these tree provide the same purpose, but have different levels of complexity and very different BOM prices. There is more electronics integration from device to device with Panasonic custom chip in the last one. But there are also developments in sensor technology that allow to measure with same precision using cheaper electronics.
Went to hardware hackaton Tehnohack this weekend. It's a hardware oriented hackaton that local hackerspace Skeemipesa organises. Different from hackatons I have been before this was pleasantly not business oriented, I would say less than 10% of people there weren't engineers. Most projects had some kind of business case behind it, but no big work was done on this end.
I was in team called Players-tracking. We designed a device that would track football players in real time on the field. It uses radio wave time-of-flight measurement to measure distance between radio modules. For prototype we used Arduinos and DWM1000 radio modules.
One of the projects I have been working on is full body tracking for virtual reality. Virtual reality is a new hot topic in tech and gaming field with many headsets and devices being developed. I have been working with Criffin R&D for a virtual reality input device. No tech details unfortunately but a lovely tech demo showing what the system can.
I got myself an 3 axis CNC machine from local machine manufacturer EDM OÜ. Since I focus mostly on electronic design I got a small hobby machine. It has Nema stepper motors, chinese parallel port stepper controller and 300W DC spindle. Controller is LinuxCNC and g-code is made with MeshCAM. I used it to cut polycarbonate and polyethylene pieces of a prototype.
After using it for a while I accidentally managed to destroy axis of the spindel motor. Since I needed to cut more plastics I ordered new 800W air cooled AC spindle. New spindle worked much better and quieter.
iPad Rehab did a video part on using Half Ohm to debug water damaged iPhone. Video demonstrates well how small changes - like probe pressure can affect low ohms measurements. For all the users I recommend sharp probes and when searching for a short - holding one probe constantly on one pad and moving another. This minimises errors from contacts.
I have a new and prettier lab. Although it is smaller than the previous one. Now I reside in new creation space called Aparaaditehas (Apparatus factory).
I also started cooperation with embedded hardware developer Krakul. They are known in Estonia mainly for making solutions for drones.
So Estonian LED display company VoltaLumen installed bunch of LED displays to bigger bus stops in my home town Tartu. As always - this requires a teardown. As it turned out - taking it apart without destroying it is practically impossible. It has been riveted shut and painted over. That stopped my teardown a bit.
In the accessible hatch there was bunch of debug connectors. RS485 for control over the wire, USB for programming, SD card slot for flashing firmware and GPRS modem slot. RS485 and 230VAC connections are brought out of the screens via nice cable for local controlling. Information is sent over RS485 in XML format to change bus times and clock. It also has an internal RTC, so clock synchronization doesn't has to happen every day.
From LEDs side - it uses orange PLCC2 leds. Quite high brightness, blinded us several times in the lab. Fortunately there is brightness control.
I have lately been doing bunch of different LED matrices. One of the most interesting one is an infrared matrix, made out of old Soviet infrared light that was used for data transmission (if I remember correctly - in studios). We repurposed it to LED screen that is visible only through cell phone camera.
We stripped out the insides of the device and mounted in our stackable led controller boards (link to github source). These two boards are designed to convert random amount of LEDs to Arduino controlled matrix. There is high side controller - 8 P-channel mosfets per board. And low side controller uses TI TLC5940 16 channel led controller. Low side board is stackable sideways, since I originally used it to control 8x70 matrix made out of cell phone backlights.
Ventspils University College in Latvia got itself a kit to teach cubesatellite technology to students. The kit was developed by company called LATspace. I got my hands on it and made pictures of everything.
The kit is made out of normal components so it won't work in the orbit, but it is a good studying tool for students. The cool element about the kit is that power supply and ADCS board are with same design and for different systems different parts of the PCB were populated.
Power system consists of small cheap solar panels mounted on PCB side panels. For storage there are two normal 18650 lithium ion cells and to charge them - two little linear charger chips.
Also with the system came external big battery and charger units. Probably because space industry really likes big bulky systems with D-subminiature connectors.
Attitude control and on board computer
On earth you cannot two thee axis attitude control because you have gravitation. But when suspending the model with a string, you can make attitude control around one axis. This system has one axis of reaction wheel that is controlled by L298P motor controller. The motor is a normal brushed DC motor with small flywheel attached. On the board there is also two axis magnetorquer controlled by the same motor controller chip. I couldn't find any sensors, but I presume they were hidden away to somewhere where I couldn't get.
On board computer is just an empty board where you can mount your Arduino. There is also Xbee for communication and microSD card slot.
After another frustrating desoldering session I ordered desoldering hot tweezers. Because I don't know how much will I use it I bought the cheapest - Aoyue 950. The price was about 50 € with shipping.
It came with two sets of tips: sharp and big blocks. Big blocky ones looked fine but the design was so stupid that it didn't work on any component I had.
Next - I teared it apart. The insides look like normal cheap chinese station. Big ugly transformer and even uglier piece of electronics.
In the end of the day - device works, makes desoldering of some components easier. As a common tool I would recommend hot air station first but to a bigger lab - this is a good tool to have for those nasty situations where other tools are not so suitable
I also got a vacuum pen. Useful when using solder paste method to assemble PCBs. It is a small box with a speed control button and two vacuum heads. Mechanics are exactly the same as in regular aquarium pump. It uses two channel diaphragm/membrane pump to make the vacuum. Another trick I like is that they use non filtered mains to move pump up and down.
Device itself comes with different tips, but for small components it is best to use syringe tip on original nozzle.
Me and my friends mechatronics company EDM OÜ cooperated. The result - automated drilling machine for a factory. Machine uses stepper motors to move aluminium rails and drills holes in them. Then it uses a saw to cut it necessary length. The machine is controlled from touchscreen connected to raspberry pi. Software gets in files with drill and cutting information and sends commands to low end. In the low end there is an Arduino Mega that controls bunch of stepper drivers. As necessary for such devices - everything is optically isolated.
EDM made all the mechanics and integration. I designed and made the control electronics and wrote the software. The most interesting part was writing stepper pulse generator with acceleration and deceleration. Also we found out that rotary encoders need interrupts to give proper feedback, because of small vibrations.
There was a mini Maker Faire in Estonia in the city I operate. I was out there with my electronics development company Tech-thing. I met bunch of awesome people, saw cool projects and met up with old friends. Because Estonia is so small, practically everybody were there.
First I saw Prototaip, a mechanical R&D company. List of other friendly faces: Wazombi labs, Intelligent Materials and Systems Laboratory, Skeemipesa, robot mannequin project (Fits.me), Idea lab protocenter. There was probably bunch of more people who I forget but they know who they are.
Overrall impression was really good. The place was packed with 3D printers and kids. Didn't expect so much of either. I am waiting for the day when everyone has a 3D printer and then they go - now what.
I also talked with couple of DIY guys about 3D CAD and most of them seemed to use sketchup. Seems reasonable since it is so easy, but on the other hand - it is the most awful program to use for mechanical drawings. FreeCAD wins on every day (and of course bunch of commercial programs).
I had lots of fun and I hope that Maker Faire will be back to Estonia soon.
I have been working closely with ESTCube satellite project that is developed by Tartu Observatory. Tartu Observatory is Estonian space technology centre that does space science and builds satellites. Couple of years ago they got a new building and now the electronics labs have been shaping up too. I am working closely with them so I use the laboratories and testing facilities quite often.
Everyone likes LEDs. I like when I have a bunch of them. So one day I realised that I have about 15 big 32x16 RGB LED matrices in my lab. They are cheaper versions of Adafruit's led matrixes. Both matrices use standard HUB75 pinout. The pinout is same, LED count is the same, but display doesn't work - it is wired differently inside.
Most simple way to do a led matrix is to drive low side columns with sinking driver chips and rows with high side mosfets. When you have bigger display - let's say 24 driver chips in total, then usually you will make multiple parallel lines of data to clock information faster.
HUB75 is a standard interface to control matrices like that. It has binary inputs for mosfet control: A, B, C and D. So you can have up to 16 rows. Also, you have 6 data buses: R1, G1, B1, R2, G2, B2. Now, to control a matrix you have to know two things: how many virtual rows and columns does your matrix have and how are they mapped with reality.
Differences from device to device
The Adafruit matrix has 12 driver chips and 8 rows controlled by mosfets. Mine have 24 driver chips and 4 rows. Also, Adafruit's one seems to be mapped quite straightforward way. Mine in the other hand.. rows are separated to eight banks that are all in different directions. Still - no problem. Mark Laane, a programmer in my lab, sat down with the matrix and soon we had a working library. You can find it from here:
I soldered my matrices directly to Arduino Micros. Since the pinout is slightly different from Uno, the connection diagram got hurt a bit. This library works with following connections:
|HUB75||Connect to||On Micro|
I needed a computer controllable 32 channel light dimmer for an art installation. After looking around a bit I found out that there isn't even a Arduino shield for the work. So I made a quick 4 channel stackable board to control lights.
The board uses SHARP thyristor based solid state relays to switch mains voltage. As normal with thyristors -
all the outputs can be used as dimmers through zero-crossing detection.(Edit: It turns out since these have built in zero crossing detection, dimming is not possible) All outputs are able to handle 0.9 A / 200 W. We connected 40 W incandescent light bulbs to it but you can control whatever with it - lights, electronics, computers, motors etc.
The end device has Arduino as a controller, so all the lights can be switched from computer over USB. And since all the outputs are optically isolated from controller, the USB side is quite safe even in error situations. Also the Arduino can be reprogrammed for any preset pattern.
Get the controller source code from github: https://github.com/jaanuskalde/light-controller
I got my hands on a broken Satel OY multicode transmitter. It is an transmitter used to get information from remote sites - alarm codes, telemetry or sensor values. You can attache it to your pump or ground station and it sends a message up to 30 km if something is wrong. It puts up to 4 W of output power to VHF band 152 MHz in FSK modulation. As alarm systems go - it also had a place for backup battery.
This device is designed and produced in the end of nineties and it can be seen from the build. Old chips and packages.
The device itself is screwed in a thick aluminium box for weatherproofing, RF shielding and mechanical rigidity. Input power and signals come from DB15 connector and all go through low pass filters for protection. It has to survive the scariest test ever - the user! The brain of the thing is socketed Atmel TS87C51RB2 in a PLCC44 package. It is a device before flash memory - only single programmable!
From RF section we don't find fancy transceiver chips. Frequency synthesise is done by temperature controller temperature oscillator in a separate metal can. Modulating multicode is generated by Motorola MC14515 PLL frequency synthesizer. Bunch of analog RF circuitry filled by RF inductors does the modulation and matching. The output is amplified by BLT50 Power amplifier that is used out datasheet frequencies. Do your own datasheet - typical for RF power stuff. They don't use air core inductors, so they lose a bit of efficiency, but since it is externally powered they don't care. Also TLC542 ADC is used to get some feedback from RF front end.