Open-Encoder-MG995

Discussions relating to development and use of the OpenServo hardware.

Moderators: jharvey, Secondary Admin, Admins

BasicFox
Posts: 59
Joined: Sun Mar 15, 2009 2:45 pm
Location: Belgium

Post by BasicFox » Thu Sep 17, 2009 5:27 pm

jharvey wrote:BatchPCB is awesome. Just got my first batch of boards. I ordered 12, they gave me 24. Cost me less than $50 for this pile. They are spot on. I can now make a couple open-encoder for real, yeah!
already made a design for the open encoder? there are a lot of unneccesary components in your schematic, all i have is a small condensator an elco and two resistors

FireBALL
Posts: 28
Joined: Fri Jul 24, 2009 4:31 am

Post by FireBALL » Fri Sep 18, 2009 5:41 pm

super glued it on custom plastic spindle. It seems strong, rest time will tell

depending upon the results I intend to make some custom spindles (brass) to hold 6x2 magnet

here are the pictures of the hand-soldered pcb, now i need to fire it up and test

Image
Image

FireBALL
Posts: 28
Joined: Fri Jul 24, 2009 4:31 am

Post by FireBALL » Sat Sep 19, 2009 1:16 pm

I'm pleased to to report that the board works like a charm and Austrian Micro chips are highly tolerant to misalignment

jharvey
co-admin
Posts: 362
Joined: Sun Mar 15, 2009 12:06 pm
Location: Maine USA
Contact:

Post by jharvey » Sat Sep 19, 2009 1:55 pm

Wow I missed the above couple posts. Looks great.

Yes I put in some extras. I included the AN out, then didn't populate it. Allows people to choose an option if so desired.

I also made some progress on getting a nice alignment. I made this shaft.

Image

Then glued the magnet like this.

Image

Works great. Spins freely, and is right against the chip. This make for a very light reading.

jharvey
co-admin
Posts: 362
Joined: Sun Mar 15, 2009 12:06 pm
Location: Maine USA
Contact:

Post by jharvey » Sat Sep 19, 2009 3:06 pm

And my first reading that tells me how much backlash this servo has.

# python ./test_OE_reading.py
pos = 26:00 status= 100110 mag: 35
pos = 26:00 status= 100110 mag: 35
pos = 26:00 status= 100110 mag: 35
pos = 26:00 status= 100110 mag: 35
pos = 26:00 status= 100110 mag: 35
pos = 26:00 status= 100110 mag: 35
pos = 26:00 status= 100110 mag: 35
pos = 26:00 status= 100110 mag: 35
pos = 26:00 status= 100110 mag: 35
pos = 26:00 status= 100110 mag: 35
# python ./test_OE_reading.py
pos = 26:80 status= 100111 mag: 35
pos = 26:80 status= 100111 mag: 35
pos = 26:80 status= 100111 mag: 35
pos = 26:80 status= 100111 mag: 35
pos = 26:80 status= 100111 mag: 35
pos = 26:80 status= 100111 mag: 35
pos = 26:80 status= 100111 mag: 35
pos = 26:80 status= 100111 mag: 35
pos = 26:80 status= 100111 mag: 35
pos = 26:80 status= 100111 mag: 35
# python ./test_OE_reading.py

That was repeatable. I have a short arm on it, I would press slightly until I hard the servo kind of click. Indicating the gears have all moved in one direction. I took the above reading. Then I pushed the arm slightly in the other direction, indicating the gear backlash was tightened up in the other direction. This gave me the next reading. Now I have a number I can correlate to as the dead band of the servo.
Last edited by jharvey on Mon May 31, 2010 3:37 pm, edited 1 time in total.

BasicFox
Posts: 59
Joined: Sun Mar 15, 2009 2:45 pm
Location: Belgium

Post by BasicFox » Mon Sep 21, 2009 10:07 am

nice results, i have made an pcb where the encoder is face down onto the pcb so it reads the servo like in the datasheet, but that did not give a good result... gonna make an other one that works the same like yours and hopefully i will have my first open encoder too :p

BasicFox
Posts: 59
Joined: Sun Mar 15, 2009 2:45 pm
Location: Belgium

Post by BasicFox » Tue Sep 22, 2009 12:45 pm

i've been drawing the potentiometer and have noticed that the distance between the three metal pins are not equal. Having that in the correct way will improve our allignment i think

jharvey
co-admin
Posts: 362
Joined: Sun Mar 15, 2009 12:06 pm
Location: Maine USA
Contact:

Post by jharvey » Tue Sep 22, 2009 9:29 pm

I made my holes large enough that they don't have a problem. I hold it in place by glue, not the tabs. The tabs will allow for some motion, and there for less than 12 bits, so I glue it to make sure it doesn't move.

BasicFox
Posts: 59
Joined: Sun Mar 15, 2009 2:45 pm
Location: Belgium

Post by BasicFox » Wed Sep 23, 2009 10:01 am

I'm planning to solder the tabs onto the pcb.

Yesterday i dismantled my cnc and found out one of the parts that needs to be mounted wasn't, therefore i had backlash on my X-axes, with that fixed i don't have any backlash anymore on any of my axes :D what will make my pcb's better and faster to make (don't have to zigzag anymore)!

Now i'm waiting for the ultra small mill's i have ordered so i can mill smaler holes and paths (i've ordered one mill of 0.5mm and two of 1mm)

can't wait to see my first reading out of the open encoder!

jharvey
co-admin
Posts: 362
Joined: Sun Mar 15, 2009 12:06 pm
Location: Maine USA
Contact:

Post by jharvey » Sun Sep 27, 2009 11:04 am

I've updated the encoder MG995 wiki. It now nearly makes sense and shows pictures of the critical steps I did. Just thought I'd post about it here letting folks know it exists.

http://www.openservo.com/ConstructionTu ... en-encoder

FireBALL
Posts: 28
Joined: Fri Jul 24, 2009 4:31 am

Post by FireBALL » Sun Sep 27, 2009 12:09 pm

kewl stuff, keep it coming

BasicFox
Posts: 59
Joined: Sun Mar 15, 2009 2:45 pm
Location: Belgium

Post by BasicFox » Mon Oct 12, 2009 9:17 pm

finally i have my first open encoder finished :D With my cnc working again i was able to make the pcb and it came out quite good :D

Image
Image

Gonna test it out with the osif first.

jharvey
co-admin
Posts: 362
Joined: Sun Mar 15, 2009 12:06 pm
Location: Maine USA
Contact:

Post by jharvey » Mon Oct 12, 2009 10:55 pm

I see two resistors installed on the OE board. The OSIF has these resistors, and putting driving resistors in both places may bugger it. It will increase the current you have to sink, so it may make it hard for the I2C to pull itself on and off. I don't see any real harm in giving it a try, but it might now work.

Nice work.

BasicFox
Posts: 59
Joined: Sun Mar 15, 2009 2:45 pm
Location: Belgium

Post by BasicFox » Tue Oct 13, 2009 6:31 pm

ah i see, indeed not necessary if you use the OSIF, but if the openservo communicates with the openencoder, this will be on a seperate I²C line, or else there will be problems if you link multiple servo's on the same line. And knowing that the openservo doesn't have much left over place maybe the resistors are better on the openencoder pcb.

When the openencoder is fully tested and does its job good, maybe we can make a standard OpenServo pcb with holes for the openencoder and an openencoder pcb. Then i can make all my MG995 servo's openservo's :D and start building a hexapod or something :D.

ginge
Site Admin
Posts: 1031
Joined: Sat Jan 14, 2006 2:34 pm
Location: Manchester, UK
Contact:

Post by ginge » Tue Oct 13, 2009 9:44 pm

I have been following this quite keenly. Let me say good work to both of you.

As for the I2C reading of the chip... this may be a problem. I got it into my head we would be using the SPI functionality of the chip. This would be easy, we just hook the SPI up to the OpenServo header and off we go (well maybe not quite that easy)
I2C poses a unique problem.... we are already using it. This means we need to consider a bit banged I2C approach, which is slow and eats away what little code space we have.

Let me think about that one.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest