I needed an RPM measurement from a helicopter motor. The ESC I use is a YEP7A from HobbyKing. Unfortunately it has no free solder-pads. The pads used for programming are also connected to the FETs, probably to save some space on this ultra-small ESC.
I choose to remove the LED, since it is not used by the BLHeli firmware anyway. The LED is connected on PORT D, PIN 3 (PD3). Before removing the LED, lets first test if we can show the RPM measurement using a blinking LED. The LED is connected to +5V with a pull-up resistor. That means that the LED is ON when the output on PD3 is LOW and vice versa.
This worked, so it was time to remove the LED and replace it by a wire. I also removed the pull-up resistor, because then I could use both pads of the LED to solder the wire. This wire goes to the autopilot which processes the pulses from the ESC. A drop of hot-glue was also added to relief the solder joint.
First, we need to configure the LED pin (PORT D, PIN3) as an output. This part of the code was modified to accomplish this.
;********************* ; PORT D definitions * ;********************* ;.EQU = 7 ;i ;.EQU = 6 ;i ;.EQU = 5 ;i ;.EQU = 4 ;i .EQU LED_Pin = 3 ;o .EQU Rcp_In = 2 ;i ;.EQU = 1 ;i ;.EQU = 0 ;i .equ INIT_PD = 0x00 .equ DIR_PD = (1<<LED_Pin)
All the way at the bottom are the macro’s for the RPM measurements. They are empty by default. It is changed as follows:
.MACRO Set_RPM_Out sbi PORTD, LED_Pin .ENDMACRO .MACRO Clear_RPM_Out cbi PORTD, LED_Pin .ENDMACRO
These macro’s will be called from the main code. The sbi and cbi commands are assembly instructions for “set bit” and “clear bit”.
After these modifications, the code needs to be compiled. This is easiest on Windows, since a batch file is provided that does it for you. Simply run MakeHexfiles.bat. The generated HEX and EEP files appear in the Output folder. This script needs the avr assembler. I got it by installing Atmel Studio. In the MakeHexfiles.bat file, I changed the AtmelPath to:
SET AtmelPath="C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avrassembler"
The generated HEX file can be uploaded with BLHeliSuite. The EEP file needs to be in the same directory.