About

On this site you will find various projects from my workshop.

Most of my spare time is spent on either Electronics projects or in my metalwork shop.

I’ve worked in the Electronics/IT industry for more than 30 years now so hopefully I can share some of my projects, learn something along the way and hopefully motivate myself to be more productive!

My workshop is pretty well equipped both on the machinery side and electronics side. My electronic projects tend to be mostly surface mount device based. This seems to be frowned upon by most hobbyists but the truth is  – it makes tidy projects on small circuit boards.

I like working with platforms like the Arduino since my spare time is limited. I’ve spent enough time on Assembly language over the years to quickly become fond of the modern offerings!.

Hopefully you will find something here of interest. If you do, or have any comments/suggestions – let me know.

 

 

 

 

 

20 comments

  1. Hello!
    Thank you for this great DIY project! Could you tell us where to buy the AS5311 sensor and the LS7366 ?
    Congratulation for your project!

    Like

    1. Hi Alain,

      You can buy the AS5311 from either Digikey.com or direct from ams.com. Ams also sell 300mm lengths of magnetic strip. Longer lengths are available from Bogen-electronic.com but they have a minimum order value.
      The LS7366 is available from omnipro.net.

      Peter

      Like

  2. Peter great project! Thanks for sharing.
    Before my question have to say I’m new to Arduino please take this in consideration before reading my question.
    AS5311 have SSI output why not use this straight away? Mean, taking downgraded incremental and converting it to serial ?
    Thank you in advance

    Like

    1. Hi,

      I used the quadrature outputs because it was more simple.
      With my project the pulse counting is all done by the LS7366 chips. This means I do not loose position. If I counted directly with the Arduino, on x,y and z and had to drive the display, I do not think the Arduino would keep up.
      I also wanted to avoid having to write an SSI interface and having to use interupts. SPI to the LS7366 looked a lot easier to me!
      With the quadrature outputs I get 0.002mm resolution. Plenty for me.
      I guess if you really want the extra resolution with the SSI interface then one Arduino per axis will probably work fine.

      Peter

      Like

  3. This is awesome what you’re doing. I’m really looking forward to see what your doing next.
    I’m trying to use the AS5311 for something very similar, but I’ll trying to use the PWM feature to get even smaller increments. Have you looked into implementing the PWM function at all?

    Like

    1. Thanks. I didn’t really consider the PWM output. The incremental output was accurate enough for me at 1.94um and combined with a quadrature decoder, it is easy to use. If you want better accuracy, you are probably better off using the SSI output. The PWM output is only acurate to +-5% unless you have a good way of measuring pulse width and calibrating.

      Like

    1. Hi, If you use a rotary encoder rather than the AS5311, Then you would connect the encoder quadrature A B outputs to the LS7366. The height gauge example code uses 512 pulses per mm since this is what the AS5311 outputs.
      The higher PPR the better. Use any PPR but highest number gives best resolution. Just adjust the code. See the line ‘mm = (float)encoder1count/512.000’ – just replace the 512 with your pulses per mmm.

      Like

  4. Hi, do you have some AS5311 left somewhere? I have a small project and would need 10 up to 50 or so, but currently this part has 40weeks+ lead time. I would pay very good price, since I need to redesign all my stuff otherwise,…

    Like

  5. Hi Peter,

    Great DRO for machinery. I would like to build one for a single axis using a 500ppr rotary encoder.
    Please can you supply the Arduino sketch as well as the pcb files.

    Regards,
    Paul

    Like

    1. You could use a rotary encoder but you would have issues.
      I assume you would be using a lead screw driving the rotary encoder.
      The backlash in the lead screw would cause error every time you change direction. You could minimize this using a ballscrew but it would be a waste.
      If you are determined to do this, you could supply the A and B outputs from the encoder directly into the LS7366 in my circuit providing the logic level of your encoder is the right voltage. There would be little modification needed to the code. See the code for my height gauge. this should be all you need.
      You may want to consider correcting for backlash in the code every time you change direction but the backlash will change over time. Not really an ideal solution.

      Like

      1. Hi Cebalo,

        I will be using a ballscrew so there shouldnt be a problem with backlash.
        My concern is what maximum speed can be achieved with this design without losing encoder counts so that it maintains accuracy.

        Like

      2. Currently I am counting 512 pulses per mm with the mag tape. With a 5mm ballscrew you would be counting 100 per mm with a 500ppr rotary encoder. (your resolution would only be 0.01mm)
        Count Freq of the LS7366 is 40Mhz at 5V from their spec sheet. I think you will need to turn your ballscrews quite fast to have a problem…(about 6.6k rpm)
        There’s also the distance limit with the counter size on the 7366. It has a 32bit counter so will only count to 2,147,483,647. (or about 21km with 5mm ballscrew in your case.)
        So if my math and interpretation of the datasheets is correct, you probably won’t have a problem. 🙂

        Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s