Improved code for Toner Reset SP C250SF/DN

This is based on the Raspberry Pi implementation of the Toner chip reset:

https://gist.github.com/joeljacobs/c57550cdb4e68e3b86d6b89fb58f305d

I am using a Raspberry Pi Zero W so the chip is BCM2835 instead and I can use 100Kbps/400KBps instead of 9600 baud as in the original code

The electrical pins we need is clustered on to top left, Pins 1 (3.3V), 3 (I2C SDATA), 5 (I2C SCLK), 9 (Ground)

Raspberry Pi Zero GPIO Pinout, Specifications and Programming language

While looking for the pinouts (https://pinout.xyz/pinout/i2c), I discovered a useful tool called i2cdetect that allows me to find out the address of the chips which means I can write a program automatically figure out the right image to load to the chip without looking:

sudo apt-get install i2c-tools
sudo i2cdetect -y 1
Sorry I forgot where I got this image from.
Please remind me in the comments section if you find out who should I credit it to.

Since I don’t have cheap pogo pins lying around, I took the 2.4mm pitch (the standard size used in PC, Arduino and Raspberry Pi) jumper block I have (so all pins are set at equal lengths to make simultaneous contact) and hope somehow there’s 4 pins that kind of align with the contact, and it did. See pictures here:

Can press the pins down by using jumpers

You might be worried about shorting into the next pin or hooking something up in reverse damaging the chips, but luckily the chips survived. My guess is that it’s a good design to put the Vcc next to Ground on one side instead of making it symmetric so the polarity can be reversed. When reversed, SCL is hooked forced to Ground, SDA is pulled up to Vcc while there is no power supply, so no damage is done. Brilliant! The worst case for my poorly aligned jumper block is that SDA and Vcc might touch each other, but it doesn’t matter because it’s a perfectly legal hookup (just not communicating)!

So no worries if you didn’t touch the pins right! The only case it might go wrong is if you intentionally flip the block and slide it by two pins (reversing Vcc and Ground). Other cases are pretty much data lines getting hooked high or low levels while power lines not getting any supplies.

I’ve designed the program that it’ll detect the chip if you hook it up right and immediately program the chip (takes only a second), so you don’t have to hold the jumper for too long to worry about unstable contacts.

#!/bin/bash

# This program detects rewrite the toner chips to "full" for a Ricoh SP C250SF/DN Printer using Raspberry PI (defaults to BCM2835 models such as Raspberry PI Zero W)

# The chip data is in file named "black" "cyan" "magenta" and "yellow". 
# The pad closest to the edge is GND (-> Pin 9), followed by VCC (-> Pin 1) , DATA (-> Pin 3), and Clock (-> Pin 5).

# Be sure i2c is enabled and installed (it's turned off by default) on Raspbian

# This line is disabled because it takes too long to unregister i2c_bcm2835 to start from a clean slate
# modprobe -r i2c_bcm2835 

# Sets the baud rate
modprobe i2c_bcm2835 baudrate=400000

# Create I2C address to color map
COLORS=( [50]="yellow" [51]="magenta" [52]="cyan" [53]="black" )
# Detect chip I2C address
I2C_address=$( sudo i2cdetect -y 1 | grep 50 | sed -e 's/50: //;s/-- //g' )
# Keep the 0x5* address lines since only 0x50~0x53 is valid. Strip the 50: header, discard all "--" entries, and you are left with the detected address
HEX_I2C_address="0x$I2C_address"

# LED flash function
function flash_once {
  period=${1:-0.5}
  target_device="/sys/class/leds/led0/brightness"

  echo 0 > ${target_device}
  sleep $period

  echo 1 > ${target_device}
  sleep $period
}

function flash {
  times=${1:-1}
  period=$2
  for((i=1; i<=times; i++)); do
    flash_once $period
  done
}

if [ -v COLORS[I2C_address] ]; then
  # Meat
  color=${COLORS[I2C_address]}
  echo "Detected toner chip for color: $color"

  echo "Short flashes before starting. Long flash after done"
  flash 5 0.1

   # "address" counter sync up with the hex code index in file
   printf "Writing"   
   address=0;
   for i in $(cat ${color}); do
     i2cset -y 1 ${HEX_I2C_address} $address $i;
     address=$(($address +1));
     printf .
   done
   echo "Done!"
  flash 3 0.5
else
  echo "Invalid I2C address for SP C250DN/SF toner chips: ${I2C_address}"
fi

I chose to flash the board’s only LED light quickly before starting and blink slowly a few times after it’s done for visual clues. It’s entirely optional. Here’s the guts of the code without the fancy indicators:

#!/bin/bash

# Sets the baud rate
modprobe i2c_bcm2835 baudrate=400000

# Create I2C address to color map
COLORS=( [50]="yellow" [51]="magenta" [52]="cyan" [53]="black" )

# Detect chip I2C address
I2C_address=$( sudo i2cdetect -y 1 | grep 50 | sed -e 's/50: //;s/-- //g' )
HEX_I2C_address="0x$I2C_address"

if [ -v COLORS[I2C_address] ]; then
  # Meat
  color=${COLORS[I2C_address]}

  # "address" counter sync up with the hex code index in file
  address=0;
  for i in $(cat ${color}); do
    i2cset -y 1 ${HEX_I2C_address} $address $i;
    address=$(($address +1));
  done
else
  echo "Invalid I2C address for SP C250DN/SF toner chips: ${I2C_address}"
fi

Download the package. Run program_toner

Just in case if people are wondering. The L01 chip’s datasheet is here:

 12 total views,  1 views today

Evoluent Vertical Mouse 4 Cable Mod

The mouse cable for Evoluent Vertical Mouse 4 is extremely long, which creates a lot of clutters especially when my keyboard has a USB hub relay built in (it’s the mouse is less than a feet away from it). Instead of splicing the cable, which creates a hard junction that’s not flexible, I modified the mouse to take a micro-USB cable instead.

 4 total views

AC Coupling (removing DC drift) 3-Amp INA Instrumentation Amplifier (DC restoration)

While clearing out my old data, I came across the teaching materials I’ve helped rewritten as a teaching assistant of Biomedical Electronics Lab (Stanford EE122A).

It’s a generic concept in electronics that often used in EKG/ECG circuits to remove the baseline drift on the fly so the analog signal won’t drift off the rails (exceed the dynamic range limited by the op-amps) before the post-processing filter (whether it’s analog or digital) kicks in to remove the DC component.

This concept is called ‘DC restoration’, which is often not taught in standard electronics textbooks. Instead it’s detailed in one of the instrumentation amp (INA) Burr-Brown (now TI) application notes.

It’s a slick trick but the rationale wasn’t very well explained even in the application note itself. It was presented as a feedback design but it doesn’t tell you intuitively what was fed back and why INA chips, and why the reference pin is the right injection point.

Most textbooks don’t even teach the existence of the reference pin (they always short the reference to the ground without explaining). Application notes talk about the REF pin, but they often jump too quickly into cookbook recipes and equations (likely because customers just want quick answers) so they never tell you the thought process.

This blog post shares my intuition of DC-restoration that’s exposed to EE122A students after I’ve updated the lab document. Hope electronic hobbyists and industry people will find it useful.


Before we get to DC restoration, we must see that the purpose of a 3-amp INA is basically a non-inverting buffer stage (primarily done to increase input impedance) followed by a single difference amp (output) stage.

Non-inverting configuration has higher input impedance as the input goes directly to the high impedance non-inverting (+) input pin without taking material current from the input (loading), so there’s no good reason to lose this property by doing inverting op-amp configuration twice.

Most practical INA chips assign some of the user-adjustable gains at the buffer stage because ‘mirrored-ground’ (superposition) allows one resistor to program the gains for the 2 buffer amps without adding more mismatch, but conceptually the first stage’s primary purpose is a buffer. The rest of the gains can be hard-coded by manufacturing with matched ‘resistors’ inside the IC, mostly at the output difference amp stage.

But for illustration (so not to drown the readers in math), let’s assume the design choice of assigning the gains at the input buffer stage and make the output stage a unity gain difference amplifier (V_pV_n), which I use small letters (n, p) to denote the outputs of the buffer stage internal to the INA chip.

https://www.ti.com/lit/an/sboa003/sboa003.pdf

The REF pin (the part of R_4 exposed in Figure 6 above) is often advertised as an offset adjustment pin. This is just one of the many uses if you really understand the idea behind the 1-amp difference amplifier configuration.

The slightly more shallow perspective (more modular or system perspective that I’ve shared with EE122A students) is that if you look at an standard 3-amp INA configuration in regular textbooks like this,

Understanding CMR and instrumentation amplifiers - EDN
https://www.edn.com/understanding-cmr-and-instrumentation-amplifiers/

the entire sub-circuit (3 amp INA) is floating so it has absolutely no idea what the reference (‘ground’) would have been if we did not ARBITRARILY define it through R_4 by tying it to the CM ground, by forcing REF pin (V_{REF}) to be 0V (relative to the common mode ground shared with the inputs)!

In other words, we now have an INA ‘ground’ and a Common Mode (CM) ground, which they do not have to be the same unless we force them to be equal by shorting the REF pin to the CM ground.

This means whatever voltage V_{REF} we set the REF pin to be, it’s the baseline of the system (amplifier) and the whole output shifts moves up and down by whatever V_{REF} relative to common mode ground we are feeding into the REF pin for the moment.

The DC restoration takes advantage of the user-definable baseline (INA ‘ground’) by extracting a low-frequency (drift) portion of the output signal V_o with an INVERTING low-pass filter (LPF) with frequency response L(\omega), and re-define it as the INA’s ‘ground’ level. This is the LPF:

e.g. if the signal’s baseline drifted up by 1V, a -1V is generated by the inverting LPF and the INA ‘ground’ respond by moving from 0V down to -1V, which pulls the entire signal down by 1V, cancelling the 1V increase in baseline. All the voltages used here are relative to the common mode ground.

As with any AC coupling circuit, there is no precise definition of what ‘DC’ or ‘baseline’ is. It’s up to the experimenter to consider what cutoff frequency in the LPF is close enough. Technically DSP engineers can call a running window of trimmed-median the baseline if they wanted to.

The feedback (how fast the INA ‘ground’ is readjusted) is as responsive as the phase delay introduced by the LPF’s time constant. If you only consider anything below 0.00001Hz to be DC, you have to pay a price for the long delay catching up to the changes which might or might not be considered a baseline drift (it’s an application specific context).


I also have an alternate view of DC restoration which does not use the concept of INA ‘ground’ (not taught in EE122A). This is based on seeing the final stage op-amp (1-amp INA) not just as a simple difference amplifier, but as a 3-input arithmetic circuit (summing and subtractions) through super-position (setting one input to 0V at a time and add the results up).

This is the gut of a 1-amp INA difference amplifier

We can break it down into a (1 input) inverting amplifier plus a summing (2 inputs) non-inverting amplifier.

The equations for inverting amplifier and non-inverting amplifiers are not symmetric! The core part of the feedback gain in EITHER CONFIGURATION are ALWAYS set at the feedback branch which ONLY goes to the inverting input (-), aka R_1 and R_2!

  1. Inverting amplifier portion do not care about the resistors at the non-inverting input (+), but
  2. Non-inverting amplifier portion’s gain is determined by the 2 resistors at the inverting input (-)! The resistors at the non-inverting inputs (+) never boost the amplifier gains! They only attenuate signal from external sources (like voltage dividers). The gain boost happens ONLY at the inverting branch!

Why? By superposition (short out other inputs you are not considering)

  1. Inputs to R_3 (V_p) and R_4 (V_{REF}) shorted to the common ground gives an inverting amplifier. They don’t matter to V_n. The gain to V_n is -\frac{R_2}{R_1}.
  2. Input to R_1 (V_n) shorted to the common ground gives a non-inverting amplifier, which the gain boost (1+\frac{R_2}{R_1}) is relative to voltage V_+ showing up at the non-inverting input (+), which is the result of attenuating V_p through R_3 and V_{REF} through R_4.

The output contributions, if R_1=R_2 and R_3=R_4,

  1. [Inverting amplifier gain of -1 relative to V_n] contributes -V_n to the output
  2. [Non-inverting amplifier gain of 2 relative to V_+] if R_4 is set to ground through V_{REF}, R_3 and R_4 forms a 1:1 potential divider which halves V_p to give \frac{V_p}{2} at V_+. Doubling (2x gain) the halved input gives an overall gain of 1, therefore contributing V_p to the output

So the overall output equation is V_p - V_n if V_{REF} is grounded to 0V.

The intuition for DC restoration is to untie the REF pin (going to R_4) from CM ground and treat it as equals to V_p pin (going through R_3, so instead of a potential divider, they form a non-inverting summing amplifier:

https://www.chegg.com/homework-help/questions-and-answers/problem-10-15-points-non-inverting-summing-amplifier-circuit-three-inputs-va-v-v-shown–r1-q34558104

So the DC restoration circuit can be seen as a 3-input arithmetic amplifier that gives the equation V_{REF}+V_p-V_n and you can subtract the baseline by setting V_{REF} to be whatever baseline your inverting LPF feedback branch judged. The overall AC-coupled system response is \frac{1}{1+L(\omega)}.


Note that ALL 3 inputs (V_p, V_n, V_{REF}) should be driven from sources with low output impedance. V_p and V_n is the outputs of a buffer op-amp so they already have good low impedance outputs feeding to the last stage. We’ll need to do the same for V_{REF} by using an op-amp to lower the output resistance whether it is an active low pass filter or active potential divider, because V_+ do not see V_p differently from V_{REF}. Noise showing up from high resistance output driving REF pin do not simultaneously appear on V_n, so it’s not canceled and therefore it’s worsening the common mode rejection (CMR).

 18 total views

XFX TS Series 550W Power Supply – Made In China – Bulging Capacitor because it was installed backwards

I opened up my ATX Power Supply as I had it for quite a few years but it has been stowed away and used intermittently until I use it a lot more in my office computer in recent years. I just don’t trust any power supplies Made in China, even from a reputable brand as a couple of decades of working with computers tells me that they are bound to break after a few years, and very often it is the capacitor that rotted and the rest are collateral damages. Lo and behold there is one:

After I took the capacitor out, I noticed something odd: the polarity marker on the circuit board is the reverse of how the capacitor was installed! Holy smokes! I just want to verify if the PCB markings is right or the installer was right, so I installed wires to the capacitor to lift it up so I can connect the multimeter leads across it to measure the voltage polarity. This picture also shows the PCB’s capacitor orientation marking:

And the multimeter reads -5V following the original orientation of the capacitor before I took it out. This means the polarity was reversed!! No wonder the capacitor bulged. I was lucky that it didn’t blow up after a few years of use! Probably it was rated 16V yet only -5V was passed to it so the electrolytic capacitor rotted slowly.

To give XFX Force credit, they didn’t slap the power supply together with the cheapest white label components from the gutters. It uses proper Nichicon and Hitachi capacitor, so it might be the reason that reversed capacitor lasted so many years.

It’s the workmanship in China. If you go with a Red Chinese (Yellow-Soviets) brand, they might use junk components, but don’t think you are safe with foreign companies that has a solid process and design. The cheap labor in China who doesn’t give a crap can still manage to fuck it up. So trust nothing

ElectroBOOM!

 28 total views

HP 54502A Datasheet typo about AC coupling

The cutoff frequency of 10Hz on the datasheet is a typo. Better scopes at the time claims 90Hz. 10Hz is just too good to be true.

Found the specs from the service manual:

Don’t be fooled by the -3dB cutoff and ignore how wide the transition band can be (depends on the filter type and the order). Turns out this model has a very primitive filter that AC couple mode still messes square waves below 3kHz up despite the specs says the -3dB is at 90Hz. You better have a 30+ fold guard band for old scopes!

Remember square wave pulse train in time domain is basically a sinc pulse centered at every impulse of the impulse train in frequency domain superimposed. Unless you have a tiny duty cycle (which is not the case for uniform square waves, they are 50%), the left hand side of the sinc function at 1kHz fundamental still have sub-1kHz components that can be truncated by the AC coupling (high pass filter).

 67 total views

ATX Motherboard 433Mhz Wireless Remote Soft Power Button

I tucked away my PC a little away from my workstation desk and the power switch is located at an inconvenient location. I tried to keep the wiring minimal so I’d rather not wire a dedicated ATX power switch onto my desk.

Unfortunately my motherboard does not support turn on by USB keyboard, and I’m not ready to upgrade because I am using it to test PCI data acquisition cards and it’s the fastest one that has 4 PCI slots and they are hard to find nowadays.

I found a $2.5 wireless module on eBay that claims to switch LED lamps which works on the standard 433Mhz channel and it replicates momentary switch pattern and can operate on 5V (My motherboard is new enough to have 5Vsb from onboard USB header).

Initially I was tempted to get the built-in relay version, but I was worried about the current draw from 5Vsb and those are 12V relays., not to mention the footprint is much bigger (the one above is 22.5mmx 11mm x 8mm).

I thought I can figure out with some sort of BJT switch instead of using a relay that has a much bigger current draw requirement, but I realized it’s a pain in the ass because the output is ‘floating’ differential. The OUT- does not tie to the power ground (it’ll short out the unit when I tried to. That’s why I added quotes to ‘floating’ because it’s only relative to OUT+). I also measured OUT+ which is +5V with respect to power ground.

I tried to power a LED and it only works if current flows from OUT+ to OUT- so it’s really sinking current from source power to do that, and it’s unidirectional.

I’d just take a gamble and hook up with a 5V NO relay that I have around. Turned out it actuates with the 5Vsb from the USB header. I glued the relay to the back of the PCB and hook up a flyback/snubber diode (reverse biased) across the relay coil so the back EMF won’t fry my motherboard.

Seems like the transmitter-receiver pair is on momentary switch mode by default, so no addition configuration is needed other than pressing the learn button and immediately press the transmitter button to pair.

I wired a jumper extension cable (male – female) to the relay output from the middle as a by-pass since I’d like to keep the original power switch’s functionality (so it’s basically OR-ing between hardwired switch and the wireless remote 433Mhz switch)

Here’s an example of taking 5Vsb from USB header and tapping into the power switch jumper in Front-Panel jumper block:

Note that the PWR SW- pin is connected to the ground. Since I’m using a relay, the relay output is floating so the polarity does not matter.

 120 total views

Lepy LP-2051 Class D/T Amplifier Turn-off Pop Fix Mod

A few years ago I switched my stereo system (I’m using them as computer loudspeakers) to Class D because I was annoyed by the heat the professional (Class AB) amplifiers generate heating up the room (electricity bill aside).

I personally prefer the sound from Tripath amplifiers (started with LP-2020A and LP-2024A), which they called Class-T, but it’s really just Class-D with better PWM feedback mechanism. To drive bigger speakers with stronger bass, I bought a LP-2051 (50W x 2 RMS), which uses TP2150 (200W driver) + TC2001 (Audio Signal Processor) Tripath chips.

However, this amplifier has a very fatal flaw: it has a ridiculous loud turn-off pop! The system has speaker protection relays, so there’s no turn-on pop as expected as speakers are connected 3 seconds after switching on the power.

The turn-off pop bad enough that I was about to toss that in the trash as the amplifier fearing that it might damage by expensive and hard to get ADS vintage speakers. However Class-T chips are no longer produced and the TI Class-D chips for some reason just doesn’t have the clarity in the mid-range and high-frequency range I was looking for in Class-T amps, so I’ve decided to figure it out.

DO NOT TOSS YOUR Lepy LP-2051 Amp because of the loud turn-off pop!
There’s a simple way to fix it if you have a soldering gun, some wires AND a relay (normally open, 5V coil)!

Before I get to the solution, here’s a a few things I figured from observing the board which helped:

  • The power line is 19V (the unit won’t turn on until it reaches 18V, so the acceptable range is 18V~19V)
  • The unit draws around 1/3 of the turn-on power when the power switch is off. The switch is AFTER the power rail smoothing inductor and tank capacitor so they are charged.
  • Turns out the speaker protection relays are hooked straight to the 19V plug input BEFORE the switch (two channel’s relay coils are chained in series, then to the collector of a NPN transistor acting as a switch)
  • The 5V regulated (rightmost pin of 78M05 when viewed from top) is always powered even when the power switch is off.

[Failed] Attempt 1): was to disconnect the left/right speaker wires with 24V external relays switched by the front panel power switch (it’s passing 19V and 19V is enough to activate the relay). The reason is that the power droop faster than the relay disconnect when losing power.

[Mixed success] Attempt 2): I have a big power capacitor 0.12F as external power smoother (initially used to fix huge transient power draw for huge bass transients like drums), which slows down the power droop when the power is switched off enough there’s no power-off pop. However, this solution is very clumsy as reasonably sized 0.022F capacitors won’t slow the power line droop enough to avoid the turn-off pop. This observation gave me the idea that it’s the power-loss detection circuit not reacting fast enough for the system to do the proper ‘shutdown’ procedures (muting the output or disconnecting the speaker wires).

I initially looked into expediting disconnecting speaker protection relay when the power switch goes to off position, but realized it’s already done in the transistor switch logic (cascaded NPN stages) that controls the speaker protection relay as I trace the circuits.

I started looking up the datasheet looking for built-in mechanism in the IC that mutes the amplifier as I switch the unit off (the unit is partially powered once the DC plug is in). Turns out there is: the mute pin is on TC2001’s pin 24 (MUTE):

TC2001, pin 24 is the mute pin (it’s active, aka mute, on high)
TC2001 Mute (Pin 24) has internal pull-up resistor

I tried flying pin 24 to the 5V regulated output (on 78M05) and it muted as expected. I didn’t really bother to check, but when I take out the jumper wire, it’s unmuted as expected (which contradicts with the datasheet description that floating is considered high/mute, so I assumed there’s other logic driving it low by default)

[Failed] Attempt 3): Use a NPN transistor like 2N9304 (and a potential divider to tap the 19V logic to 4.5V) to drive the mute pin (TC2001 pin 24) high (which means muted) when I power the unit off. The turn-off pop is still there because it turns out that there’s a 200ms delay for the mute pin:

So now the goal is to have mute activated (set to high) FIRST a little before the 19V power line gets disconnected. The timing order for turning on does not matter because the speakers aren’t going to be connected until after 2.5 seconds once it’s hooked up to the 19V source, it doesn’t matter what’s the logic transient logic level of the mute pin (it’s going to be NOT connected to the 5V when the SPDT power switch is ON steady).

Realizing that there the power switch acts the fastest, then the mute pin, with relay actuation being the slowest, and the power switch that came with the unit is a SPDT, I don’t even have to implement a timer to delay disconnecting the 19V line before it finishes muting. Here’s the winning solution:

I accidentally wrote 18V rail voltage instead of 19V. The unit works anywhere from 18V to 19V, so you get the idea that I meant the same thing.

I happen to have a Fujitsu/Takashimaya JY5H-K5VDC reed relay which happens to be a NO (Normally Open switch) which happens to fit the design like a glove. Here’s a picture for the experimental (working) hook up that the turn-off pop is completely gone:

On the board, there’s actually a reserved spot for a on-board jumper in place of the supplied/installed SPDT switch. Those are the two red wires rerouted to the relay switch.
(FYI, the bottom node goes to 19V of the DC jack, the top node goes to the rest of the 19V circuit)
The 5V line is the green wire. Goes to the common/middle pin to be switched by the SPDT switch.
The mute pin (pin 24) is the brown wire. Goes to the furthers/longest pin of the switch
Ground is the black wire. Goes to any one side of the relay coil
The shortest pin of the switch goes to the other side of relay coil. I soldered it directly to the relay pin

Completed mod after cleanup:

Overview

There’s a few cleanup that I did:

  • I hot glued the relay on the two hard switches as they are not near any heat sources and mechanically stable
  • I stole the ground (going to the coil) from the nearby C5’s ground pad (C5 is the moderately big 470uF SMD cap nearby).
  • The old right-angled hard switch’s pins were lifted from the board by bending the pins straight.
  • The utmost pin/pad (leftmost, closest to the power plug) for the switch is not connected anywhere else on the board. It was a dummy as the SPDT switch was only used as a SPST switch. Good for me so I can solder one of the 3 pins there for mechanical support (otherwise we’ll twist the front two dummy solder joints for mechanical stability when we toggle the lever repeatedly). I chose to bend the middle pin to solder it to the board because the other two are either too far out or too short.
  • In summary, furthest SPDT switch pin goes to mute pin, the middle is the 5V regulated rail to be switched between the mute pin or the relay coil. The shortest SPDT switch pin goes to the coil. The rest are obvious

Here’s the finished mod with different angle shots for you to see the wiring:

Given the amp itself is cheap (but it’s really an excellent bang for the buck: clear sound, solid bass, class-D efficiency, small size and light weight), those who are not that electrically savvy might not be inclined to do that mod. If you are going to throw it away anyway, please send it to me (I’ll pay for postage).

It’s a very very simple mod that any beginner electronic hobbyists or an electronics student might be willing to do it for you with the instructions here for a small fee. Basically it’s just some wires and a relay and some good solder wick (or if you have a nice desoldering pump, it works fine too).

I typically don’t take petty service orders (under <$500), because of all the hassles shipping back and forth, opening it up, putting it back, and keeping records for the IRS, plus the liability risks. So please find a kiddo, hobbyist or tech to do it.

 115 total views

System Engineers’ tip to HKCEE/HKALE Math and Physics

Shortly after I’ve graduated with Mathematics and Electrical (and Computer) Engineering degrees, I realized a few supposedly difficult topics in Hong Kong’s Mathematics and Physics (Electric Circuits) curriculum was taught in unnecessarily painful ways.

Here’s an article I’ve written to show that it is less work to teach secondary (high) school students a few easy-to-learn university math topics first than teaching them dumb and clumsy derivations/approaches to avoid the pre-requisitesHKDSE EE Tips

Here are the outline of the article

  • Complex numbers with Euler Formula
  • Trigonometric identities can be derived effortlessly using complex number than tricky geometric proofs
  • Inverting matrices using Gaussian elimination instead of messing with cofactors and determinants
  • Proper concepts of circuit analysis and shortcuts
  • Solving AC circuits in a breeze with complex numbers instead of remembering stupid rules like ELI and ICE rules and messy trigonometric identities.

 101 total views