Posted on Leave a comment

Mini Teardown: Eberspacher 701 BT Controller

It’s well known that there are two versions of the 701 type controller available for Eberspacher heaters, the version with the blue logo is the official un-restricted model, while the version with the white logo is a version built for BT that restricts the heater to 1 hour runtime & has no diagnostics built in.
As these devices are microcontroller driven, I assumed that the hardware would be the same, only the code running in the micro being the bit that Eberspacher changed. This option would certainly have been the lowest cost.

Controller PCB Rear
Controller PCB Rear

Here’s the PCB removed from the plastic housing. There are definitely some differences that I can tell. As the un-restricted version has an extra wire for the diagnostic serial interface, and this board has no unpopulated parts, the PCB is definitely a different version.
In the centre is a Microchip PIC16C622 microcontroller, the OTP version in this case for cost reductions. (I may try reading the binary from this chip in the future, chances are it’s code protected though).
Below the micro is an NXP PCF8577C 32-segment LCD controller, this has an I²C interface to the PIC.
The temperature control function on these heaters is done via applying a resistance to one of the control lines, between 1750Ω-2180Ω, ±80Ω. (Very odd values these, not to mention no standard components can create this range easily, bloody engineers >_<). This is accomplished in hardware with a BU2092F I²C shift register from Rohm, which is connected to a bank of resistors. The microcontroller will switch combinations of these into the circuit to get the range of resistances required.
The rest of the circuit is local power regulation & filtering.

Controller PCB Front
Controller PCB Front

There’s not much on the other side of the PCB, just the LCD itself & the contacts for the buttons.

Posted on Leave a comment

Raspberry Pi Timelapse Script

To make my timelapse video capture a little easier, I wrote a small script that handles creation of a new folder for every timelapse instance, deals with the runtime & frame interval flags & generally makes everything a little cleaner.

As with most of my code, it’s rough, but functional

#!/bin/bash

INPUTFILE="$1"
INPUTFILE+="_%d"
FRAME_INTERVAL="$2"
FRAME_INTERVAL_MIN="1250"
RUNTIME="2073600000"
DATE=$(date +"%T_%m-%d-%y")
if [ -z $1 ]
    then
		echo "Raspberry Pi Timelapse Script v1.2"
		echo "2015 Ben Thomson 2E0GXE"
		echo "Images will be taken in 1920x1080 format for transcoding into video."
		echo "This script expects some options in the following format:"
		echo "./timelapse.sh <File Prefix> <Frame Interval>"
		echo "<File Prefix> The script will prepend this name to every image as a unique capture session identifier."
		echo "A sequential number is appended to the end of the filename for frame identification."
		echo "<Frame Interval> This is the interval between frames, in milliseconds. Minimum 1250."
		echo "This minimum is required to retain stability & prevent dropped frames."
		echo "Every time the program is started, a new folder with the current date & time is created for the images."
		exit 0
fi
if [ $FRAME_INTERVAL -lt $FRAME_INTERVAL_MIN ]
	then
		echo Frame Interval Too Low!
		echo This will cause dropped frames! Exiting!
		exit 0
fi

mkdir -p ./$DATE-$1
echo Image Folder $DATE-$1 Created
echo Image Capture Interval $FRAME_INTERVAL ms 
echo Starting Timelapse Capture... CTRL+C To Exit...
raspistill -k -n -ex auto -awb auto -mm average -w 1920 -h 1080 -o ./$DATE-$1/$INPUTFILE.jpg -tl $FRAME_INTERVAL -t $RUNTIME

echo Timelapse Complete!
echo File Prefix: $INPUTFILE
echo Frame Interval: $FRAME_INTERVAL ms
echo Folder Name: $DATE-$1

[download id=”5593″]

Posted on 2 Comments

Arduino Based SWR/PWR Meter – The Board

I recently posted about a small analog SWR/Power meter I got from eBay, and figured it needed some improvement.

After some web searching I located a project by ON7EQ, an Arduino sketch to read SWR & RF power from any SWR bridge.
The Arduino code is on the original author’s page above, his copyright restrictions forbid me to reproduce it here.

I have also noticed a small glitch in the code when it is flashed to a blank arduino: The display will show scrambled characters as if it has crashed. However pushing the buttons a few times & rebooting the Arduino seems to fix this. I think it’s related to the EEPROM being blank on a new Arduino board.

I have run a board up in Eagle for testing, shown below is the layout:

SWR Meter SCH
SWR Meter SCH

The Schematic is the same as is given on ON7EQ’s site.
Update: ON7EQ has kindly let me know I’ve mixed up R6 & R7, so make sure they’re switched round when the board is built ;). Fitting the resistors the wrong way around may damage the µC with overvoltage.

SWR Meter PCB
SWR Meter PCB

Here’s the PCB layout. I’ve kept it as simple as possible with only a single link on the top side of the board.

PCB Top
PCB Top

Here’s the freshly completed PCB ready to rock. Arduino Pro mini sits in the center doing all the work.
The link over to A5 on the arduino can be seen here, this allows the code to detect the supply voltage, useful for battery operation.
On the right hand edge of the PCB are the pair of SMA connectors to interface with the SWR bridge. Some RF filtering is provided on the inputs.

PCB Bottom
PCB Bottom

Trackside view of the PCB. This was etched using my tweaked toner transfer method.

LCD Fitted
LCD Fitted

Here the board has it’s 16×2 LCD module.

Online
Online

Board powered & working. Here it’s set to the 70cm band. The pair of buttons on the bottom edge of the board change bands & operating modes.
As usual, the Eagle layout files are available below, along with the libraries I use.

[download id=”5585″]

[download id=”5573″]

More to come on this when some components arrive to interface this board with the SWR bridge in the eBay meter.