Qi wireless power receiver from scratch

Hello all,

Now a days Qi wireless power transmitters are becoming more and more popular for charging mobile phones and most of the mobile phone manufactures are now adding the Qi power receiving circuitry into their handsets. Also various wearable technology products like smart watches, fitness trackers etc are also now using wireless charging. Qi is not the only standard, but Qi is kind of most popular now for low and medium power devices.

What exactly is this wireless charging or magnetic resonance based wireless power transfer ?
          A transformer basically is very simple static (or stationary) electro-magnetic passive electrical device that works on the principle of Faraday's law of induction. But imagine a transformer without proper core and the primary and secondary coils are not coupled properly by keeping those few millimeter apart. In this case the coupling factor reduces which reduces it's efficiency and received power. To overcome this to an extend, a series capacitor is added to the transmitter and receiver coil. Now we all knows there will be a resonance frequency for an LC circuit. When the transmitter drives the LC circuit with a frequency near to the resonance frequency, it's current increases and the Inductor voltage increases. Now similarly when a receiver is also tuned to similar frequency, it's tendency to pull the energy of it's natural frequency will be very high. This can be related to a radio receiver, the basics of any radio receiver will be a resonance LC tank circuit which will be either tuned manually or using a varicap diode. You can find some better explanation by googling about resonance coupling.

Now why Qi or any standard for wireless charging ?
       We can make a very cheap wireless power transmitter circuit using a 555 IC and push-pull mosfet circuitry along with an inductive coil and a series capacitor. Same way we can make a receiver as well by matching the resonance frequency and a schottky bridge rectifier. But these circuits, especially the transmitter circuit is not at all safe. If any metalic object is kept near to or on top of this transmitter, it will heat-up due to eddy current generation (similar to our induction cooker at home). The transmitter doesn't know if it is a power receiving coil or a foreign metallic object. So there is a need for a transmitter to identify the authenticated receiver and then only transmit true power over the air. So definitely there is a need for the transmitter to identify a proper receiver to transmit power. Qi is an open interface standard that defines wireless power transfer using inductive charging over distances of up to 4 cm (1.6 inches), and is developed by the Wireless Power Consortium. Also there should be a common standard for this so that different manufacturers can make transmitters and receivers independently which are compatible to each other.
    Another requirement is to increase or decrease the transmitter power on demand by the receiver. This can also be achieved by continuous feedback from the receiver to the transmitter.

How the receiver send data to transmitter via the same charging coil ?
      When the receiver circuit receives the ping energy from the transmitter (which is on for few milli seconds), the receiver control circuitry detects the ping and modulate the same receiver coil with a 2KHz bi-phase modulated signal according to the Qi protocol standard. This is achieved with a pair of MOSFETs pulling and releasing both ends of the RX coil via a relatively smaller capacitor (much less than the resonance capacitor). This pulling-releasing mechanism will reflect the 2KHz signal on the RX coil and that immediately reflects on the TX coil as well. This is similar to RFID/NFC back-scatter modulation.

The transmitter periodically sends short PING energy signals on air and if the receiver respond with proper ping response packet according to the Qi packet structure, it starts the receiver identification process followed by continuous power transmission. (Not exactly, I just simplified it. More specific details are there on the documents which is attached towards the end of the blog post).
      Now the receiver need to send back periodically how much power is received and the error correction packet which tells the transmitter to increase or decrease the energy transmitted. When the transmitter receives positive error packet, then the transmitter increases the transmission power by moving towards the resonance ie by climbing the hill from the right to left. 

Even though the name is resonance coupling, never get confused that it always works at resonance. Generally these devices try to keep a bit away from resonance or in other words keep higher frequency offset from the peak resonance frequency because they can self adjust to increase or decrease the transmitted power on demand for various (few mm) distances from the transmitter coil. Also if load require more current, it can demand the transmitter to increase its power. But still it wont move exactly to the resonance, it just stop before reaching the resonance point because things will get a bit out of control exactly at resonance especially in series LC resonance transmitter circuit due to very high current and higher resonance voltage on the coil.

Communication protocol:

Bit encoding scheme
The Power Receiver shall use a differential bi-phase encoding scheme to modulate data bits onto the
Power Signal. For this purpose, the Power Receiver shall align each data bit to a full period tCLK of an internal clock signal, such that the start of a data bit coincides with the rising edge of the clock signal. This internal clock signal shall have a frequency š¯‘“CLK = 2±4% kHz.
NOTE A ripple on the Power Receiver’s load yields a ripple on the Power Transmitter’s current. As a result, such a ripple can lead to bit errors in the Power Transmitter. The number of bit errors can be particularly high if this ripple has a frequency that is close to the modulation frequency š¯‘“CLK. The Receiver shall encode a ONE bit using two transitions in the Power Signal, such that the first transition coincides with the rising edge of the clock signal and the second transition coincides with the falling edge of the clock signal. The Receiver shall encode a ZERO bit using a single transition in the Power Signal, which coincides with the rising edge of the clock signal.

Byte encoding scheme
   The Power Receiver shall use an 11-bit asynchronous serial format to transmit a data byte. This format consists of a start bit, the 8 data bits of the byte, a parity bit, and a single stop bit. The start bit is a ZERO. The order of the data bits is LSB first. The parity bit is odd. This means that the Power Receiver shall set the parity bit to ONE if the data byte contains an even number of ONE bits. Otherwise, the Power Receiver shall set the parity bit to ZERO. The stop bit is a ONE. Figure below shows the data byte format including the differential bi-phase encoding of each individual bit using the value 0x35 as an example.

Packet structure
The Power Receiver shall communicate to the Power Transmitter using Packets. As shown in below figure.

Packet consists of 4 parts, namely a preamble, a header, a message, and a checksum. The preamble
consists of a minimum of 11 and a maximum of 25 bits, all set to ONE according to the above mentioned bit encoding scheme. The preamble enables the Power Transmitter to synchronize with the incoming data and accurately detect the start bit of the header. The header, message, and checksum consist of a sequence of three or more bytes encoded as above mentioned byte encoding scheme.

My receiver:

I have only two aims while trying this. The receiver should get powered by the transmitter continuously.  I should be able to control the power received by adjusting the error packets, in my case I am trying to keep received voltage always 10v.

There are lot more but I am only interested in this two features for now, so I will not be following the complete Qi specs described on the WPC documents, by the way, it worked for me without any issue.
This is purely experimental.

     (Will redraw the schematic in few days)


  1. nice project , good explanation . Keep it up .

  2. Nice !
    What currents (Amps) can the receiver supply to the load ?

  3. It is now delivering 1A at 5V. This is limited by my transmitter, may be if I try with a higher watts transmitted, I believe I can get higher currrent.

  4. Great work! could you please make a easer to read schematic? Possibly even a digital one.

  5. Hi,
    Very Good work. Keep it up.
    Have you mentioned fet and diodes no any where in schematic.

    1. Diode should be any schotky with a relatively higher Current rating and the mosfets can be anything which can turn on with a Vgs of at least 3V. You can use OA3400 or whatever you like. Let me know if something is not working.

  6. It would like to build something similar. The credit card size Qi wireless receivers - designed for retrofitting to non-wireless charging phones - can only supply 5W max. I tested one that claimed to be "2A", but that proved to be BS.

    There are "Fast Charging" Qi transmitters that claim to deliver 7.5, 10 and 15W when used with a suitable mains power adapter (the adapters have multiple output voltage specs, typ. 5V, 9V and 12V, which must change according to transmitter demand).
    I want 85% efficient 10W power transfer at a distance of 6 to 12mm when used with one of the "Fast Chargers". The credit card size Qi receivers are not capable of that.

  7. Anybody know how I can modify the code to work with Espressif ESP32?