Friday, 1 March 2019

Flash use on the Nikon Z7

Since the Z7 is a fairly new camera model, not only for me, but for every other Nikon Z7 user also, the knowledge about how well it works with different flashes and triggers is limited. I decided to test my flashes, not because I don't trust Nikon, but because I have a two non-Nikon products also and I don't know how well they work with the Z7. These two are the JY610N, which is a sort of SB-400 clone, and a Meike MK-14EXT ring flash. Both of these worked perfectly on the D800 I had before, and both showed up in the EXIF data as if they were an SB-900 flash.

There are no surprises regarding the original Nikon flashes I have, the SB-700 and the SB-900, both of them work as described in the manual of the Z7. What I need to see is how well the cloned products behave on the Z7, and here I found out a few surprises.

The image to the left was used as reference image to test the exposure to see if iTTL works as it supposed to be.


All the pictures are all clickable if you want to see a larger image.


The Nikon SB-700 and SB900


As said before, both of them work individually, or in any combination just as described in the manual of the camera. The only thing that is not working is the AF assist LED, but this is known and is as expected.

It seems also that the SB-700 and the SB-900 together with the Yongnuo YN622N kit seems to work well in all modes, iTTL and manual, single or dual flash, compensation and so on. Once again, the only thing not working is the AF assist LED which is built in the Yongnuo YN622N kit units, but again, this is as expected.
The EXIF of the image always shows that the SB-900 is used, even with the YN622N-TX.


The JY610N is not working in iTTL mode. It worked on the D800 but not the Z7. The flash fires at full power all the time, no TTL pre-flash, and the flash is not showing up in the EXIF. As a consequence, images taken with it are overexposed, unless switched to manual mode.



So, if you consider a small flash to be kept in your pocket just in case you need one, don't bother buying this one.

The Meike MK-14EXT ring flash works also only in manual mode, which I think is sad because it is my only ring flash. I don't understand what is happening, because the flash is not firing at all in iTTL mode. In manual mode it works perfectly well, so I can still use it, but it is annoying that it is not working in iTTL mode.

Using any flash in manual mode is pretty easy, but of course, many times iTTL is an advantage, especially for people who don't have a flash meter or must change shooting distance often.


How to fool the camera


The Z7 can be fooled to believe that these flashes are also SB-900 flashes if the flash is placed in the YN622N trigger and triggered with the help of the YN622N TX.



This combination works with the JY610N, just as the SB-900. The only thing is that using the flash this way is sort of pointless because it is no longer a pocket-able small flash so I might as well use the SB-700 or the SB-900. Never the less, it works well this way.

The Meike MK-14EXT ring flash can also be used in full iTTL mode if the flash is on a YN622N trigger.



This is a usable, but an inconvenient alternative because whenever I want to use it I must add also a bracket to be able to hold everything and to be able to handle the camera at the same time. This is OK, though I would prefer if it was not needed. But at least I know how to use it in TTL mode if I want to.

Of course, in all cases when the YN622N is used, the flash information in the EXIF still claims that it is an SB-900, regardless which flash it is triggering. This doesn't really matter as long as it works in iTTL mode.

My older flashes are all made for film cameras, and they work just like they worked on my old film cameras.

Saturday, 9 February 2019

Selling my modified Nikon SB-N5 flash


This is a modified version of the Nikon SB-N5, which I made before I started making the V1-F1A. I have no longer use for this flash, mainly because I practically no longer use the Nikon 1 V1, so I decided selling the flash. The flash is in perfect condition, it works as the original SB-N5, and you have the possibility to add an external, more powerful flash if needed. Selling it with the original box, manual and the pouch.



When you need more light, or are looking to add a creative touch to illumination, then this modified Nikon 1 Speedlight SB-N5 is the one to use. Plug this compact i-TTL compatible flash unit into the Nikon 1 V1, V2 or V3 camera's multi-accessory hot shoe and use it as a flash on top of the camera, or add a radio trigger or a more powerful flash using the PC connector in front of the SB-N5. Note that i-TTL is only supported without additional flash, as the original SB-N5 is supporting it. Adding extra flash requires manual flash and camera mode use.



The SB-N5 can be tilted or twisted up, down, left or right and bounce the light if needed. The flash can double as a continuous light source illuminating for six seconds during both Motion Snapshot and Smart Photo Selector modes. Extra batteries are not required—the camera powers the SB-N5 flash from the camera battery.



The SB-N5 does not have to be switched on if the SB-N5 is not needed and you just want to add an external flash or radio trigger. In this case the SB-N5 acts as an adapter only, it will not fire itself, only the external flash or remote trigger will be triggered by the camera.



Note that the added PC contact does not have any protection, so only flashes made for digital cameras with low trigger voltage should be attached. By adding a flash with high trigger voltage the SB-N5, or the camera, or both will be damaged. The flash is tested before shipping it, but there is no additional warranty, other that I guarantee that it is working when I pack it.



Technical specifications of the SB-N5


- Guide Number

8.5 m/27.9 ft. (at ISO 100, 20°C/68°F) to 12 m/39.4 ft. (at ISO 200, 20°C/68°F) 

- Effective flash range (i-TTL)

2 to 66 ft. (0.6 to 20 m) (varies with ISO sensitivity, bounce angle, and aperture) 

- Bounce Function (Rotate)

Vertical: Flash can be rotated up 90° from horizontal with stops where the flash is pointing directly ahead and at 60°, 5°, and 90°
Horizontal: 180° right to 180° left, with stops where the flash is pointing directly ahead and at 30°, 60°, 75°, 90°, 120°, 150°, and 180°
 


- Approx. Dimensions (Width x Height x Depth)

2.0 in. (50 mm)  x  2.8 in. (70.5 mm)  x  1.6 in. (40.5 mm) 

- Approx. Weight (without batteries)

2.5 oz. (70 g)

How to order


If you are interested, please send me a mail using the contact information below. Please don't pay in advance before I confirmed that the flash is still available and that I reserved for you.


After I received payment, I will need one work day to pack it and to ship it to you, using registered, traceable post. I will use the Swedish Post and will charge you what they are charging me.


Please note that I will only sell this unit to buyers from Australia, Canada, USA, New Zealand, countries of European Union, Norway, Switzerland, Iceland, Liechtenstein, Jersey, Guernsey, Monaco, Aland, South Africa, Namibia, Botswana, Swaziland, Lesotho and Japan. Note that I make no exceptions made from this list.





Contact information


adapting(dot)camera at gmail(dot)com

Please note: the mail address above must be modified by you. You must replace the (dot) with real dots, the spaces before and after 'at' must be removed and the word 'at' must be replaced by @ sign. This is done to prevent internet robots from sending me spam mail. After your modification the mail address will look like: axxxxxxx.cyyyyy@gmail.com

Price and payment


The price for this modified SB-N5 flash is 99 EUR, 110 USD or 1030 SEK, whichever you prefer. The price may change as exchange rates are changing. This price excludes the shipping and handling, the total price will be calculated when I have your personal data.

I accept payments in EUR, USD or SEK only, no other currency. Payments must be made through PayPal, no direct money transfer, checks or any other means are accepted. You are paying the PayPal fee, payments without the fee will not be accepted. Currently the PayPal fee is an additional 3.9% + a fixed small sum on top of the total costs. Shipping and handling costs will be added, this cost is not possible for me to predict, I will charge you what the Swedish Post charges me, which at this moment is 13 EUR or 15 USD for shipments outside Sweden. I will ship with registered, traceable post only.

Prices and the terms are non-negotiable, if you think this is not acceptable for you or you think the price is too high, please don't buy it.

A final note about the modified SB-N5


Even though it is based on the original Nikon SB-N5 flash, this should be regarded as a do-it-yourself product. No warranty is given, other than that I guaranty I tested the flash before shipping it, and I guaranty that it is working on my Nikon V1 when I ship it. I have no possibilities to test it on the Nikon V2, V3 or any other future models since I only have the V1.

Remember also that a deal is a deal, if you bought it, it is yours. I will NOT take it back, not even for a reduced price. This may sound harsh, but I have bad experience and this is the "lessons learned" from that experience. It is up to you to decide to buy it, and if the conditions are not acceptable, please don't buy this adapter.

Saturday, 2 February 2019

The Nikon Z7 image sensor cleaning is faulty or inefficient

I have now had my Z7 since about three months and so far I have not seen any dust problems until a few days ago. To be honest, I think that the Nikon Z7 has a faulty image sensor cleaning function because it does not seem to do anything, even though I have it set to automatically clean the sensor at shutdown, meaning that every time I switch the camera off, it should shake the image sensor so that the dust falls off.

In the D800 there was also a possibility to set up so that this automatic cleaning process also was done at power on, and this could be observed by the flashing LED at the back of the camera, and the LED flashed several times after the camera was switched on or off, indicating the cleaning process. This was very efficient, and during the 7 years I used the D800, with frequent lens changes, I haven't had any dust problems, and only cleaned the sensor once, even then only dry cleaned. Now, I know the D800 has a mechanical shutter, which is closed during lens change, so the sensor is protected a bit, but I have also been a frequent live view user and in any case, during so many years, I would have expected to have serious dust issues if the sensor cleaning was not working.

I have also used the Nikon 1 V1 during the last 6 years, and even on that camera I change lenses often, and even though that is also a mirrorless camera, so the sensor is exposed to open air during lens change, the same way it is when changing lens on the Z7, I have not yet needed to clean that sensor.

Sadly, this is not the case with the Z7. Already after this short time of use, and in spite of quite rare lens changes, my camera was severely dust infected and in an immediate need of cleaning, even though I have it configured so that the automatic cleaning should take place every time I switch the camera off, and I do switch it off every time I don't consider needing it for a some time, which can be several times a day. The LED to the right of the "i" button is NEVER flashing, but that can be by design the case, or because of a firmware bug, I don't know. Never the less, the cleaning process odes not take place as it supposed to be, or it is so inefficient that it practically does nothing.

This is a test image to show the situation when I decided that I must do something about the dust. It is clear that there are far too many dust specs to be called "acceptable". Yes, to see this large number, I had to take the image at f/22 and process it so that most of the specs become visible, meaning that in a real situation these would not be visible, because I almost never stop down below f/8, but it is still disturbing because in macro images these will no doubt become visible and also in many other situations where the scenario is optimal for visible dust.

Surprised by the high number of dust specs, I decided to run the "Clean now" option in the camera. After running that once, I took a new picture but the results were the same, so I run it about 8-10 times in a row. The results were a bit better, but still totally unacceptable and still very much infected. After this test it is obvious that the built in sensor cleaning function is faulty or so incredibly inefficient that using it just gives us a false sense of security about it.

Of course, this is not acceptable and Nikon should do something about it. Especially considering that they didn't even sold the cameras with one single free och charge cleaning service, not even during the warranty, unlike both the D300s and the D800. Maybe they knew that the Z cameras will need a more frequent cleaning than the DSLRs, maybe they expected the image cleaning function to work just as good, which would have made it an unnecessary service. I don't know, but considering Nikon warns the users to clean the image sensor manually, this is not good at all.

The good thing about my dust problem is that for now, it has been easily solved using a rocket blower. A few puffs of air seems to have done more than what running the cleaning function manually 8-10 times could do. So for now, my dust infected sensor is clean again, but hopefully Nikon will do something about the cleaning function, because that seems definitely not working. It is also much faster, because for some reason, each manually activated cleaning takes 20 seconds. Don't ask me why, I have no idea.

Please note that the images are clickable, clicking on them will open a larger size image for you to check the details. Note also that the images have gone through severe post processing to make the dust specs visible, there is nothing wrong with my camera, other than the dust cleaning function.

This problem is also demonstrated in my video:


Just to clear some misunderstanding...


In case there is a doubt, I love this camera. It was worth every penny and would buy it again even if I knew about the inefficiency of the dust cleaner function, but in my opinion it is good to know that it does not do what what I expected it to do. This way I know I need to clean it regularly.

Just some words of warning


DON'T USE CANNED AIR if you decide to clean your camera. It may cause more damage than do any good. Also, whatever you do, you do it at your own risk.

Monday, 21 January 2019

No more looking into the mirror for me

Please note that this is NOT a review, I am not interested in writing "yet-another-Z7-review", there are plenty out there, so if you want to read a review just google, I will not post a link to anyone.

Note also that all the images, except the first one, are taken with my new Nikon Z7 camera and the 24-70/4 S lens. All images are clickable, so if you wish to see larger sizes, just click on any of the images.
 

As of beginning of November 2018 I no longer have a DSLR. Since the 9th of November I own and use a Nikon Z7, which is Nikon's first mirrorless full frame camera. I decided to buy a 3-piece kit, consisting of the camera body (of course), the 24-70/4 S lens and the FTZ adapter, which enables the use of Nikon F-mount lenses on the Z7.




I traded in the D800, together with two lenses, the 24-120/4 GVR and the 105/2.8 GVR Micro. I wanted a smaller and lighter kit and considered the Z7, together with the 24-70/4 S lens as a good alternative. I kept my other Nikon F lenses, the 60/2.8 G micro, the 50/1.4 G and the 70-300/4.5-5.6 GVR because Nikon currently has no alternative to those, and because they are light enough even with the necessary FTZ adapter.


I have been using the Z7 for over two months now and very happy with the results. It is widely better than I expected in every aspect. I am amazed by the very high image quality at any ISO, the ability to focus under really poor light, the sensor shift based image stabilizer (IBIS), the auto white balance and a lot of other things. Basically, the only disappointment is the poor support for old, manual focus lenses, since the focus indicator LED is not working with old manual lenses. The other thing which was a slight disappointment is the lack of external AF assist light support. I don't know why the AF assist LED of the external flash is never activated. The only possible AF assist light is the one built in the camera, but the LED is misplaced and the light is blocked by my hand or the lens hood. It is completely useless. Never the less, the camera focuses amazingly well without the AF assist LED light, so it is not a big deal for me.


The Z7 is in my opinion an excellent travel camera, it is reasonably light and compact, considering the image sensor size, and as mentioned above, the image quality is far superior to anything I have ever had or seen, even in dark places, like a pub, restaurant or night streets.




With the Z7, my days of DSLRs are over, after these months I am certain that I will never buy a camera with mirror again, except perhaps for nostalgic reasons an old film camera of some sort. The first time I used an SLR was in 1970, starting with the Zenit E, a camera made in USSR. I have used different brands up until 2006, when I started using DSLRs, and now, more than 12 years after it is time for the next big change and a move towards mirrorless cameras. I have used mirrorless for many years now, but only the small, 1" Nikon 1 V1. It was actually that very positive experience which helped me trust the jump to Z7, mirrorless full frame camera from Nikon. I believe I will be just as happy with the Z7 as I was with the Nikon 1 V1. I trust Nikon made the right decision about this camera and I am happy they released it just when I seriously was looking for a lighter alternative to the D800.

I will write some more about the camera later on regarding tests I have made, so please stay tuned and continue to follow up on it, but as I said at the top, I will not write a review.

Wednesday, 29 August 2018

How to make your own Olympus RM-1 compatible remote

Some history


Back in 2006, after a lot of research and experimenting I managed to crack the way Olympus controls the E-500 using the RM-1 IR remote control. This was my first digital camera related work and did it for fun. Recently I received some questions about it, so since it seems that the idea still interests some people I decided to post this article again. Olympus no longer makes any DSLR and I have no idea if this works with the more modern mirrorless cameras, so this is history. So whatever you make of this is up to you. I will not be able to provide any support, other than I know that the code worked very reliably and well with the remotes I made.

About the IR remote


The remote has five buttons but the picture shows a three button version. I managed to crack the function of all five. I don’t think any deep explanation is necessary, any person with a basic knowledge of microcontroller programming can implement the code in any type of microcontroller. The code is primarily written for the 12F629 PIC made by Microchip (which I believe is also out of production now) but it is easy to translate to other microcontrollers if you have enough programming knowledge and can read and understand assembly language.



Technical functional description


Modulation is 40 kHz symmetrical pulse modulation.
Each command starts with 3.8 ms 40kHz pulse train followed by 4ms Low state on GP5 and finished off with 550us 40kHz pulse train.

1 = 1500us GP5 Low state followed by 500us 40kHz pulse train.
0 = 500us GP5 Low state followed by 500us 40kHz pulse train.

After each button press there is a 500ms button repeat delay.

The Olympus button control codes are:

Fire button: 0110 0001 1101 1100 1000 0000 0111 1111
W button:    0110 0001 1101 1100 0100 0000 1011 1111
T button:    0110 0001 1101 1100 1100 0000 0011 1111
- button:    0110 0001 1101 1100 0010 0000 1101 1111
+ button:    0110 0001 1101 1100 1010 0000 0101 1111


The hardware


The hardware is very simple, it contains only of three resistors, one transistor driving the IR LED and a Microchip 12F629 PIC microcontroller and five buttons. The source code below is a fully working code example for the 12F629.

Click on the image to the right to see the schematics.





The picture shows a three button pocket version. With 4.5 V (3x1.5 hearing aid batteries) the range is about 12-15 meters outdoors. My remote has been working very well since May 2006, used it for as long as I used Olympus cameras.




 

 

The Source code


The source code is also very simple. It is written in assembly language, so just copy the code below and paste it into an assembler and compile it, or modify if you wish to modify it to your purpose.

;----------------------------------------------------------------
;
;    Emulation of Olympus RM-1 IR remote control using PIC 12F629.
;
;    The PIC GPIO 5 controls an IR-LED via one BC557 and a 2.7Ohm
;    resistor in series.
;
;    Olympus control codes are:
;

;    Button        GPIO    Code
;
;    Fire          0        0110 0001 1101 1100 1000 0000 0111 1111
;    W             1        0110 0001 1101 1100 0100 0000 1011 1111
;    T             2        0110 0001 1101 1100 1100 0000 0011 1111
;    -             3        0110 0001 1101 1100 0010 0000 1101 1111
;    +             4        0110 0001 1101 1100 1010 0000 0101 1111
;
;    Modulation is 40 kHz symetrical pulse modulation.
;
;    Each command starts with 3.8 ms 40kHz pulse train followed by
;    4ms Low state on GP5 and finished off with 550us 40kHz pulse train.
;
;    1 = 1500us GP5 Low state followed by 500us 40kHz pulse train.
;    0 = 500us GP5 Low state followed by 500us 40kHz pulse train.
;
;    After each button press there is a 500ms button repeat delay.
;
;
    title        "Olyremote-1"

    include     <p12f629.inc>
    __config    _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_OFF

    errorlevel    -302    ; No bank selection messages

;----------------------------------------------------------------
;
;            REGISTER DEFINITION
;
;----------------------------------------------------------------

DELAY_H        equ    0x20
DELAY_L        equ    0x21
IR_LENGTH    equ    0x22

;----------------------------------------------------------------
;
;            CODE
;
;----------------------------------------------------------------

    org     0x0000            ; RESET VECTOR
               
;----------------------------------------------------------------
;
;    Initialize PIC
;
initialize_pic

    bsf        STATUS,RP0        ; Sel Bank 1
    call    0x3ff            ; Get OSCAL value
    movwf    OSCCAL            ; write to OSCCAL register

    bcf        OPTION_REG,7    ; Enable weak pullups
    movlw    b'00010111'        ; on GPIO 0-4
    movwf    WPU

    movlw    b'00001000'        ; Enable port change interrupt
    movwf    INTCON

    bcf     STATUS,RP0        ; Select bank 0
    clrf    GPIO            ; Init GPIO
    movlw    0x07            ; set GP2 to digital
    movwf    CMCON
   
    bsf        STATUS,RP0
    movlw    b'00011111'           
    movwf    TRISIO            ; Set I/O 5 as outputs

    movlw    0x1f            ; Enable port change IRQ on GPIO 0-4
    movwf    IOC

    bcf     STATUS,RP0        ; Select bank 0
    bcf        GPIO,5            ; Set GPIO 5 Low

;----------------------------------------------------------------
;                                    
led_main_loop

    bcf        INTCON,GPIF        ; Clear interrupt flag
    bcf        GPIO,5            ; Set GPIO 5 Low

    sleep                    ; and go to sleep to save power
;
;    Wake up from sleep
;    Check which button generated wake-up
;
Test_W
    MOVF    GPIO,W            ; Read GPIO and test for W button
    ANDLW    b'00000001'        ; Mask for the W switch
    BTFSS    STATUS,Z        ; Check ZERO first
    goto    Test_F
    call    Exec_W
    goto    led_main_loop
   
Test_F
    MOVF    GPIO,W            ; Read GPIO and test for Fire button
    ANDLW    b'00000010'        ; Mask for the Fire switch
    BTFSS    STATUS,Z        ; Check ZERO
    goto    Test_T            ; Not Z
    call    Fire
    goto    led_main_loop

Test_T
    MOVF    GPIO,W            ; Read GPIO and test for Fire button
    ANDLW    b'00000100'        ; Mask for the Fire switch
    BTFSS    STATUS,Z        ; Check ZERO
    goto    Test_M            ; Not Z
    call    Exec_T
    goto    led_main_loop

Test_M
    MOVF    GPIO,W            ; Read GPIO and test for Fire button
    ANDLW    b'00001000'        ; Mask for the Fire switch
    BTFSS    STATUS,Z        ; Check ZERO
    goto    Test_P            ; Not Z
    call    Exec_M
    goto    led_main_loop

Test_P
    MOVF    GPIO,W            ; Read GPIO and test for Fire button
    ANDLW    b'00010000'        ; Mask for the Fire switch
    BTFSS    STATUS,Z        ; Check ZERO
    goto    led_main_loop    ; Not Z
    call    Exec_P
    goto    led_main_loop

;----------------------------------------------------------------
;
;        SUBROUTINES
;
;----------------------------------------------------------------

;----------------------------------------------------------------
;
;    The FIRE button was pressed, execute control sequence
;
;    Fire = 0110 0001 1101 1100 1000 0000 0111 1111
;
Fire
    call    Send_Header

    call    Send_One
    call    Send_Null
    call    Send_Null
    call    Send_Null

    call    Send_Null
    call    Send_Null
    call    Send_Null
    call    Send_Null

    call    Send_Null
    call    Send_One
    call    Send_One
    call    Send_One

    call    Send_One
    call    Send_One
    call    Send_One
    call    Send_One

    movlw    .250
    call    DELAY_X_msec        ; 250ms delay before return
    movlw    .250
    call    DELAY_X_msec        ; 250ms delay before return
    return

;----------------------------------------------------------------
;
;    The W button was pressed, execute control sequence
;
;    W = 0110 0001 1101 1100 0100 0000 1011 1111
;
Exec_W
    call    Send_Header

    call    Send_Null
    call    Send_One
    call    Send_Null
    call    Send_Null

    call    Send_Null
    call    Send_Null
    call    Send_Null
    call    Send_Null

    call    Send_One
    call    Send_Null
    call    Send_One
    call    Send_One

    call    Send_One
    call    Send_One
    call    Send_One
    call    Send_One

    movlw    .250
    call    DELAY_X_msec        ; 250ms delay before return
    movlw    .250
    call    DELAY_X_msec        ; 250ms delay before return
    return

;----------------------------------------------------------------
;
;    The T button was pressed, execute control sequence
;
;    T = 0110 0001 1101 1100 1100 0000 0011 1111
;
Exec_T
    call    Send_Header

    call    Send_One
    call    Send_One
    call    Send_Null
    call    Send_Null

    call    Send_Null
    call    Send_Null
    call    Send_Null
    call    Send_Null

    call    Send_Null
    call    Send_Null
    call    Send_One
    call    Send_One

    call    Send_One
    call    Send_One
    call    Send_One
    call    Send_One

    movlw    .250
    call    DELAY_X_msec        ; 250ms delay before return
    movlw    .250
    call    DELAY_X_msec        ; 250ms delay before return
    return

;----------------------------------------------------------------
;
;    The - button was pressed, execute control sequence
;
;    - = 0110 0001 1101 1100 0010 0000 1101 1111
;
Exec_M
    call    Send_Header

    call    Send_Null
    call    Send_Null
    call    Send_One
    call    Send_Null

    call    Send_Null
    call    Send_Null
    call    Send_Null
    call    Send_Null

    call    Send_One
    call    Send_One
    call    Send_Null
    call    Send_One

    call    Send_One
    call    Send_One
    call    Send_One
    call    Send_One

    movlw    .250
    call    DELAY_X_msec        ; 250ms delay before return
    movlw    .250
    call    DELAY_X_msec        ; 250ms delay before return
    return

;----------------------------------------------------------------
;
;    The + button was pressed, execute control sequence
;
;    + = 0110 0001 1101 1100 1010 0000 0101 1111
;
Exec_P
    call    Send_Header

    call    Send_One
    call    Send_Null
    call    Send_One
    call    Send_Null

    call    Send_Null
    call    Send_Null
    call    Send_Null
    call    Send_Null

    call    Send_Null
    call    Send_One
    call    Send_Null
    call    Send_One

    call    Send_One
    call    Send_One
    call    Send_One
    call    Send_One

    movlw    .250
    call    DELAY_X_msec        ; 250ms delay before return
    movlw    .250
    call    DELAY_X_msec        ; 250ms delay before return
    return

;----------------------------------------------------------------
;
;    Send_Header:    Remote codes must starts with this sequence.
;
Send_Header
    movlw    .120                ; Pulse 8ms
    call    Send_IR_Pulse
    movlw    .200
    call    Send_IR_Pulse
    movlw    .4                    ; Space 4ms
    call    DELAY_X_msec
    movlw    .22                    ; Pulse 550us
    call    Send_IR_Pulse

    call    Send_Null
    call    Send_One
    call    Send_One
    call    Send_Null

    call    Send_Null
    call    Send_Null
    call    Send_Null
    call    Send_One

    call    Send_One
    call    Send_One
    call    Send_Null
    call    Send_One

    call    Send_One
    call    Send_One
    call    Send_Null
    call    Send_Null

    return

;----------------------------------------------------------------
;
;    Send_One:   Sends 1677us low signal followed by pulse
;                modulated by 40kHz (25us) symetrical pulses sent
;                for 559us. Corresponds to Olympus IR code "1"
Send_One
    call    Delay_1500us        ; Space 1677us
    movlw    .22
    call    Send_IR_Pulse
    return

;----------------------------------------------------------------
;
;    Send_Null:    Sends 559us low signal followed by pulse
;                modulated by 40kHz (25us) symetrical pulses sent
;                for 559us. Corresponds Olympus IR code "0"
Send_Null
    call    Delay_500us            ; Space 559us
    movlw    .22                    ; Pulse
    call    Send_IR_Pulse
    return

;----------------------------------------------------------------
;
;    Send_IR_Pulse will send a 50% duty cycle pulse until
;    IR_LENGTH is zero. Puls sent on GPIO 5
;
Send_IR_Pulse
    movwf    IR_LENGTH    ; Save number of IR cycles
IR_Pulse                ; loop
    movlw    .3            ; set this to 3 to get 40kHz modulation
    movwf    DELAY_L
    bsf        GPIO,5        ; Set GPIO 5 High
High_20
    decfsz    DELAY_L,F    ; This gives about 12 us High
    goto    High_20
    nop                    ; set this two nops to get 40kHz modulation
    nop
    movlw    .2            ; set this to 2 to get 40kHz modulation
    movwf    DELAY_L
    bcf        GPIO,5        ; Set GPIO 5 Low
Low_20
    decfsz    DELAY_L,F    ; This gives about 12 us Low
    goto    Low_20
    nop
    decfsz    IR_LENGTH,F    ; Decrement IR cycle counter
    goto    IR_Pulse    ; and loop if not zero
    nop
    return

;----------------------------------------------------------------
;
;     Delay routines for correct output pulse width
;
;    This delay is used for output pulse width control
;
DELAY_X_msec                ; Call here with W = X msec delay
    MOVWF    DELAY_H

DELAY_1msec
    MOVLW    .250            ; 1 msec delay loop counter
    MOVWF    DELAY_L
   
DELAY_1ms                    ; 1 msec delay loop
    NOP
    DECFSZ    DELAY_L, F
    GOTO    DELAY_1ms

    DECFSZ    DELAY_H, F        ; Loop counter 1 msec delay loop
    GOTO    DELAY_1msec        ; until counter is zero
    RETLW    0

;----------------------------------------------------------------
;
Delay_1500us

    call    Delay_500us
    call    Delay_500us

;----------------------------------------------------------------
;
Delay_500us
    movlw    .122
    MOVWF    DELAY_L
    call    DELAY_4us
    nop
    nop
    return

;----------------------------------------------------------------
;
DELAY_4us                    ; 4usec delay loop.
    NOP
    DECFSZ    DELAY_L, F
    GOTO    DELAY_4us
    return
   
    end


And finally...


For those of you who only are interested in the HEX code, here it is:
 
:020000040000FA
:100000008316FF23900081131730950008308B0072
:10001000831285010730990083161F3085001F3039
:100020009600831285120B108512630005080139B2
:10003000031D1C284A20132805080239031D222805
:100040003420132805080439031D282860201328AC
:1000500005080839031D2E287620132805081039B5
:10006000031D13288C201328A220BB20BF20BF20F3
:10007000BF20BF20BF20BF20BF20BF20BB20BB2090
:10008000BB20BB20BB20BB20BB20FA30D520FA30E0
:10009000D5200800A220BF20BB20BF20BF20BF204A
:1000A000BF20BF20BF20BB20BF20BB20BB20BB2068
:1000B000BB20BB20BB20FA30D520FA30D520080069
:1000C000A220BB20BB20BF20BF20BF20BF20BF205D
:1000D000BF20BF20BF20BB20BB20BB20BB20BB203C
:1000E000BB20FA30D520FA30D5200800A220BF204E
:1000F000BF20BB20BF20BF20BF20BF20BF20BB2010
:10010000BB20BF20BB20BB20BB20BB20BB20FA30C4
:10011000D520FA30D5200800A220BB20BF20BB206C
:10012000BF20BF20BF20BF20BF20BF20BB20BF20DB
:10013000BB20BB20BB20BB20BB20FA30D520FA302F
:10014000D52008007830C320C830C3200430D52023
:100150001630C320BF20BB20BB20BF20BF20BF2044
:10016000BF20BB20BB20BB20BF20BB20BB20BB20AF
:10017000BF20BF200800DE201630C3200800E0208A
:100180001630C3200800A2000330A1008516A10B81
:10019000C728000000000230A1008512A10BCE2864
:1001A0000000A20BC42800000800A000FA30A10043
:1001B0000000A10BD828A00BD6280034E020E020B6
:1001C0007A30A100E6200000000008000000A10B2A
:0401D000E628080015
:02400E00843FED:00000001FF

Good luck. I hope some of you will still find this old code useful.

Wednesday, 10 January 2018

Improving my Scheppach SD 1600v scroll saw


Please click on the images for larger view if you would like to see more details.

As many of you know, I bought a Scheppach SD1600v scroll saw.


I find it very useful for some work, for instance sawing PCB and other thin material, as well as where other type of saw is not possible to use. It can manage quite well not only thin and soft material, but also aluminium up to 10mm (tested). Probably it could also be used on steel with the right blade, but I have had no reason to try that.

Of course, for this price one should not expect miracles. The machine seems to work well, but it would be surprising if I could not find some weak points.

The LED light


It is a very useful feature to have a LED light on a long arm, but...

I don't like is that the LED light is pretty weak and it is not possible to turn it on without starting the motor also. This is definitely something I will fix at a later stage.

The dust blower


Again, a very good idea and a useful feature, but the pump pumping the air is not very efficient at low speeds, and the flexible pipe is not intended for this purpose and it takes too much space as well as it gets in the way all the time. I will replace the whole thing with a simple fan later on which will blow more efficiently at a constant power independent of the sawing speed. In the meantime I replaced the tube with a soft silicon tube which is much better than the one delivered with the machine.

A fence


There is no fence delivered, so sawing in straight line is practically impossible. Maybe it is not the proper machine for straight sawing, but I intend to use it for that as well, so in my opinion a fence is necessary. Again, this is going to be done later, but for now I use some temporary solution.

The throat plate


The delivered one may works for general wood work or large pieces, but when small items are sawed the plate is not really a good design, mainly because of the huge gaps in it. I don't know how the designers were thinking at all. Even if the table is tilting, the huge gaps are not necessary.

 Regardless which way I rotate the plate the gaps are there and they are making the actual sawing more difficult, even for larger items. I regarded this as the higher priority of all the possible improvements and decided to fix it immediately. As many of you know, I built a CNC which could easily be used for making a new plate out of any material, wood, aluminium or plastic, but because I fairly recently bought a 3D printer kit I decided that this is a perfect exercise in 3D printing so I designed an printed a new plate.

The actual design is fairly simple and straight forward using FreeCAD software. All that was needed was to use a caliper and measure the original one for the dimensions and measure the position of the saw blade when inserted in the saw arms.





On the left is the original, on the right is the 3D printed one. The hole for the saw blade is 6mm in diameter and the gap to slide the throat plate into place is 1.5mm wide. Quite a huge difference compared with the original.





Printing time was about two hours on my printer with my settings, but the results are good, the plate fits perfectly. OK, this is actually the third version, the whole was misplaced a little bit in the first version and after printing the second one and testing, I realized that a small gap was indeed very good to have, so I added the 1.5mm wide gap to be able to change blade without the need of having the plate inserted at the same time.

Now the plate is as good as it gets, the saw blade is perfectly centred and is easy to change blade if necessary. Of course, I can not tilt the table with this plate, if I want to do that I need to change to the original plate for now.





I need to design and make a new one if I want one for tilted table operation with very small gap, but the advantage of a 3D printer is the very short lead time between design and product, and especially for single item, or prototype manufacturing it is very nice to have the possibility of quickly printing readily usable items. Of course, using the CNC would be even faster since it would only take a few minutes to mill out such a plate on my DIY CNC, so perhaps for the next one I will use the CNC, but for now, the 3D printer is the latest toy and is great fun to use it.

Download the STL file


If you want to print one for your own scroll saw then you can download the STL file through this link:

Scroll saw throat plate STL file.

The plate may even other scroll saw machines, there seems to be plenty with similar circular plate.

A quick Google search shows hundreds with similar plates.

The plate whole diameter is 80 mm and with the normal PLA shrinkage the printed item is just perfect. The plate is 3mm thick. Measure your machine before printing because it is pointless to print if you can't use it.