• Halogen to LED Headlamp upgrade Suzuki SX4

    03/30/2018 at 09:13 0 comments

    I ordered one of these for my 2011 Suzuki SX4 sedan. Finally found some time today to swap halogens with new LEDs. Current pair of halogens are Philips H4 90/100w and they are pretty good. I wanted to switch to LEDs primarily to lower power consumption, Headlamps will run cool and white headlamps looks neat!  This page will serve me as a reference in future if I ever go back to halogens or need to replace these LEDs. 


    Complete Unit: LED, fan cooled heatsink, driver unit and H4 plug.

    CREE LEDs (XHP50+XM-L2)

    Active cooling: small fan encased in heatsink

    5 Pin connector to LEDs

    LED driver unit in aluminium heatsink

    Installation Issues:

    These LED headlamps are designed to be simple plug and play units, however, while installing, I could not get them attached to the bulb receptacle. Rubber/Silicone boots which provide dust and water protection to the headlamp interior seems to have an issue and needed some work to get them to accept these LEDs. The modifications I made to the boots does not compromise its dust and water resistance and they can absolutely work again with halogen bulbs!

    The LED lamp needed to be installed a little differently by first removing the notched metallic collar , fixing the collar to the headlamp bulb receptacle, securing it  with the wire clip, sliding on the protective rubber boots and then inserting the LED unit and twisting it into a locked position. 

    Metal notched collar

    The portion of the rubber boot which goes around the neck/stem of the bulb was interfering with the locking of LED bulb and I had to trim about 2 mm of its length. 

    Original rubber/silicone boot

    I also needed to remove four protrusions on the back of boot. They were interfering with the complete insertion of LED bulb and getting in the way of heatsink. 

    Need to remove these!
    removed them with a sharp blade

    I did a mock assembly on my desk before heading out to the car

    a little soap water helps get things moving!
    Insert LED lamp, twist about a quarter turn and LED lamp will lock against metal collar on the other side.
    Assembled successfully!
    Back view

    Now, need to repeat these steps in the car.

    Testing LED lamp - very bright!
    Replacing bulb is not easy, I wish I had smaller hands :/
    H4 receptacle with retaining clip (open)

    Install metal collar first in correct orientation.

    Metal collar in place secured with clip
    Wet rubber boot with soap water for easy installation. Ensure no water gets inside headlamp enclosure.
    Rubber boot is secured in place around the metal collar
    Finally install the LED lamp, insert - twist clockwise quarter turn and lock.
    LED bulb installed correctly in the proper orientation
    Connect driver unit to LED and secure it in place with tape or cable ties.
    Complete installation by connecting H4 plug from LED driver unit to existing headlamp harness.


    Comparison Test (Halogen Vs LEDs).

    Wall distance = 13 feet.

    Low Beam (ISO 100, White balance - Daylight, Exposure -Frame Average)

    High Beam (ISO 100, White balance - Daylight, Exposure -Frame Average)


    100watts halogen definitely looks a shade brighter and more focused. I still have to do real world test and night time drives to get to a fair conclusion. 

    I will post updates later.

  • EPOCH to Time Date converter

    03/24/2018 at 03:36 0 comments

    I needed a lightweight code to convert EPOCH to Date, Day, Year, Time etc for my NTP sync clock. I could not find a code example online and wrote my own. Message me if you find any bugs.


    EPOCH to human readable time and date converter for microcontrollers (PIC, AVR, Arduino, STM32)
    Current EPOCH time can be found at https://www.epochconverter.com/
    The code can be suitably modified to suit your requirements. I have extensively
    tested this code with valid inputs. If you have any questions or if you find a bug, please contact me. 
    Author: Siddharth Singh 
    Date: June 15, 2017 
    #include <stdio.h>
    #include <stdlib.h>
    static unsigned char month_days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    static unsigned char week_days[7] = {4,5,6,0,1,2,3};
    //Thu=4, Fri=5, Sat=6, Sun=0, Mon=1, Tue=2, Wed=3
    unsigned char
    ntp_hour, ntp_minute, ntp_second, ntp_week_day, ntp_date, ntp_month, leap_days, leap_year_ind ;
    unsigned short temp_days;
    unsigned int
    epoch, ntp_year, days_since_epoch, day_of_year; 
    char key;
    int main()
       //---------------------------- Input and Calculations -------------------------------------
        printf("Enter EPOCH => ");
        scanf ("%d",&epoch);
        // Add or substract time zone here. 
        epoch+=19800 ; //GMT +5:30 = +19800 seconds 
          ntp_second = epoch%60;
          epoch /= 60;
          ntp_minute = epoch%60;
          epoch /= 60;
          ntp_hour  = epoch%24;
          epoch /= 24;
          days_since_epoch = epoch;      //number of days since epoch
          ntp_week_day = week_days[days_since_epoch%7];  //Calculating WeekDay
          ntp_year = 1970+(days_since_epoch/365); // ball parking year, may not be accurate!
          int i;
          for (i=1972; i<ntp_year; i+=4)      // Calculating number of leap days since epoch/1970
             if(((i%4==0) && (i%100!=0)) || (i%400==0)) leap_days++;
          ntp_year = 1970+((days_since_epoch - leap_days)/365); // Calculating accurate current year by (days_since_epoch - extra leap days)
          day_of_year = ((days_since_epoch - leap_days)%365)+1;
          if(((ntp_year%4==0) && (ntp_year%100!=0)) || (ntp_year%400==0))  
             month_days[1]=29;     //February = 29 days for leap years
             leap_year_ind = 1;    //if current year is leap, set indicator to 1 
                else month_days[1]=28; //February = 28 days for non-leap years 
        for (ntp_month=0 ; ntp_month <= 11 ; ntp_month++) //calculating current Month
               if (day_of_year <= temp_days) break; 
               temp_days = temp_days + month_days[ntp_month];
        temp_days = temp_days - month_days[ntp_month-1]; //calculating current Date
        ntp_date = day_of_year - temp_days;
       // -------------------- Printing Results ------------------------------------- 
        switch(ntp_week_day) {
                             case 0: printf("\nSunday");
                             case 1: printf("\nMonday");
                             case 2: printf("\nTuesday");
                             case 3: printf("\nWednesday");
                             case 4: printf("\nThursday");
                             case 5: printf("\nFriday");
                             case 6: printf("\nSaturday");
                             default: break;        
      printf(", "); 
      switch(ntp_month) {
                             case 1: printf("January");
                             case 2: printf("February");
                             case 3: printf("March");
                             case 4: printf("April");
                             case 5: printf("May");
                             case 6: printf("June");
                             case 7: printf("July");
                             case 8: printf("August");
                             case 9: printf("September");
                             case 10: printf("October");
                             case 11: printf("November");
                             case 12: printf("December");       
                             default: break;        
      printf(" %2d",ntp_date);
      printf(", %d\n",ntp_year);
      printf("TIME = %2d : %2d : %2d\n\n", ntp_hour,ntp_minute,ntp_second)  ;
      printf("Days since Epoch: %d\n",days_since_epoch);
      printf("Number of Leap days since EPOCH: %d\n",leap_days);
      printf("Day of year = %d\n", day_of_year);
      printf("Is Year Leap? %d\n",leap_year_ind);
      printf(" Press e to EXIT, or any other key to repeat...\n\n");
    Read more »