lunes, 20 de mayo de 2013

Full Rotation Servos - Schema


As promised, I added support for Full Rotation Servos. Here you have the Fritzing Schema. It looks simpler than the Drivers Version ( here ).

I'm testing the modified LIB using prototype 1 ( this one ). This way I will test if there is any problem using another type of Arduino. Prototype 1 has an Mega ADK, prototype 2 has a Leonardo.

I expect to finish test in one or two days, depending of the free time available... Some comments from your side will encourage me to do it faster!

Keep Doing!

martes, 7 de mayo de 2013

The motors(2)

I received a few days ago the new motors. Now I use 12 Volts, 90 rpm motors. You can see yourself in the picture the big different between the old ones (the little thing in front) and the new ones.

The new motors allow a fast movement while having a very good behavior at low speed.
I purchase these new motors directly in China here.

You can see them in action here:

The next step will be to use full rotation servos. This will ease the construction and keep the bill of materials shorter, therefore the cost of materials will be reduced. 

But this involves writing software to control them... hope to be finish this week end!

Keep Making!

lunes, 6 de mayo de 2013

1000 thanks for 1000 Visits!

I just wanted to inform you that the visitor's counter reached 4 digits this week end. Thank you all for considering this little blog good enough to click through and invest your time reading it!

I was quite busy at home lately. I will re-take full speed immediately. For the moment, I need to post another video with the new motor (higher gear ratio, slower but with more torque!), then I want to try using normal servos (software needed), then I have an idea on how to build an "El Chiapo LIDAR" that I would like to test (materials on the way to me)...

Hope to double the visit counter soon... Meanwhile, keep making!

domingo, 28 de abril de 2013

Code is uploaded to Sourceforge

Hi folks!

I just uploaded the library with comments and 2 examples to Sourceforge. You have the code here:

As you can see there, I put quite a lot of comments on the Lib file. It should be easy for you follow the code. 

I create 3 classes: 

B_Wheel: Virtual class to deal with any wheel / driver combination. 

Driver_Wheel: Class to deal with wheels commanded by a driver using 2 outputs to define direction and a PWM output.

Platform: Class able to control a 3 omni-wheel platform. This class uses an array of pointers to B_Wheel variables. This way, this class can control any kind of wheels.

I will extend this lib by providing an additional wheel-drive type: Full Rotation Servo like this one of Sparkfun. This way, 99% of wheel-drive combinations were covered.

The To-Do list is quite long: Full rotation Servo, 4 wheel platform, 2 wheel platform (not omni), incorporation of compass to control direction, LIDAR support...

If you have any question or doubt, please put an comment in this page and I will answer you.


domingo, 21 de abril de 2013

Platform 2.0

Here you have! Platform 2.0 on moving. 

I think the motors are too fast. To set the platform on moving you must request a high speed from the remote controller. Moving slowly is hard... 

Too much speed and to few torque:  I choose a wrong gear ratio (too low). I will test it with a different motor type/gear ratio to see what are the results.

I'm just adding comments to the Arduino source code to make it more understandable. I hope to be finish  this week.

Keep Reading!

viernes, 12 de abril de 2013

To be open or not to be open... that's the question

Sometimes I have discussions with my colleagues about how economics can be influenced by Open Source creations.  Basically, they consider stupid to give out know-how for free. Companies making their know-how open are throwing out value or, even worst, giving engineering for free to their competitors. When we reach the hot point of the discussion, I always mention the same history. It’s the history of a big company giving a book for free. Not  a little company, not a simple book… look:

There are a few books that dramatically influenced human history. Some of them are about religion, others about economics, politics... I would like to present you one of those books. This one is about computers.

Here you have a photo of it:

I recovered it during a warehouse clean-up in my former company.  I still have it. Please read the preface. Why did we stop to do this kind of things?

This book describes in very deep detail the first IBM Personal Computer. Standard communication protocols were explained, electronic diagrams were included, even the BIOS was disassembled, including comments!



This book helped to create a lot of parallel business, from printers to video cards, from file compressing software to anti-virus. But, most of all, it gave millions of companies, individuals and families a wonderful gift: the transaction cost of complex communication decreased by a factor of 10^n.

At that time, Apple was selling his Apple II with commercials showing it at home, in the kitchen. 

On the early 80’s, IBM was a Hardware company in a hardware world. The name of the game was “the one who grows faster gets all” (sounds familiar?) and the Pc won that first round of the game. Macintosh came a few years later. Then the mobile phone, the Ipad… The rest is history.

IBM created the XT (including Hard disc, wow!), then the AT (having mathematical coprocessor, wow again!). Mobile computing came right after. But plenty of alternative companies were struggling to deliver better & cheaper Pc’s. IBM won a huge pile of money selling Pc’s but 25 years after his creation, IBM completely left the Pc business making loses on this part of the company.

In my opinion, IBM made 2 wrong assumptions:
- They expected to be & to remain the center of a community forever.
- This community was formed by companies creating & providing hardware depending on IBM new Spec’s.  “Who cares on the software? Who knows which software will be used tomorrow? “

But once you get open, you are just one more. People care about which is the original one only for a short while, then they go for the best option.

Microsoft took over IBM by proposing a radically different paradigm. They detected that future was all about software, not hardware. And, on top of all, they didn't focus on the hardware community: they focus on end users. Computer producers were just the sales channel, not the customers. They focus on End User Companies using a nice approach: You must have our products because everybody else have them.  Do you want to share documents with other companies? Then you must pay us first!”  Brilliant: The more people entering into this Ponzi scheme now, the more people will enter in the future.

Microsoft was /is not an open company.  You get nearly nothing for free out of them. Microsoft philosophy is: “I develop, you install & deliver, they pay us”. One could think that the Microsoft /Copyright concept won the IBM/Openness one. But it is not true. Microsoft (and many other) used the Open System provided by IBM to grow.  

After earning a huge amount of money, IBM went to his real core business: let’s create information systems that help people. They went software. And Microsoft... well Microsoft will die as Microsoft.

 To be or not to be open, that's the question...   What is your answer to this dilemma?

viernes, 29 de marzo de 2013

Wiring up the elements

First things, first. We need to create a diagram of our wiring in order to prepare our job. Normally, an engineer creates wiring diagrams to indicate other people how to connect things together in the proper way. So, if I will wire myself... why shall I do a wiring diagram? 

There are a few very good reasons: 

1.- To keep track on what you did! Working a few hours per week, you shouldn't assume you will remember everything. 

2.- If you need to troubleshoot your design, you will need to check 2 things: the concept and the implementation. To visualize the concept you need a wiring diagram. 

3.- Obviously, if you need external help you need your wiring anyway.

So, do yourself a favor and create proper documentation of your projects!

If you're a beginner, I recommend you to use Fritzing. Once more, this software is easy to learn, to install and yes, it's for free! Here you have my Fritzing diagram:

CAUTION: When using library elements on Fritzing, please double check for accuracy. For example, the pin out of the Bluetooth Modem included in Fritzing is not compatible with mine. If you have a close look on the photos of real wiring you will realize the difference.

You can find the source code of this fritzing wiring here. It is not possible to preview this type of files. If you want to work with it, you must install Fritzing first and then download the file to your computer...  or you use the above picture!

Bill of materials:
1x Arduino Leonardo.
2x Motor Driver 1A Dual TB6612FNG
1x Bluetooth Mate Silver WRL-10393
3x small motors (I'm trying some different motor types. I will update this when I'm finished!)
1x Battery

4x Accumulators, to create 4,8 Volts.
1x +/- bus as explained here below.

Wiring Description:
I always create a + - bus for my projects. This is useful to power all the electronics we will install. It looks like this.

To avoid problems with the polarity, I use the 3 points plug I described here some time ago.

Bluetooth Modem: Imagine you are connecting 2 microphones with 2 loudspeakers. You must connect Data Source with Data Destination. Serial communication is the same: I connected the Tx Modem to Rx Arduino and also RxModem to Tx Arduino.

I used an "DiY plug" to connect it. This is the result

Drivers: The selected driver must receive 2 power voltages: one for the electronics and another one for the motors. I used a battery pack for the 7Volts, then I use the +5Volts from the Arduino Board to power the drivers and the modem. Here, a picture of the splitter board:

I wired together both "Stby" pins to control them with a single output. (Output No 2). 

Then I wire PWM, AN1, AN2 of motor1 to outputs 3, 4, 5. I repeat the same for motors 2 and 3 using outputs 6,7,8 and 9,10,11. I prepared the wiring of motor 4 on the driver's side, but I didn't connect it to the Arduino. 

This leaves us only 2 digital in/out's (12 and 13) available for other purposes. If I need more digital I/O's I will use alternative techniques to free some of them. But for the moment I prefer to solve the wiring of the drivers using simple techniques.

Phase 1: soldering the wiring.

Phase 2: Gluing the plugs to create a socket.

Observe that I bend the motor pins to allow me to plug / unplug them when the driver is in his socket. Believe me, it is always a help to have an easy way to disconnect motors...

Then we add the battery pack. The final result looks like this:

I needed some 2 "part-time days" to create the concept, figuring out how to put all the elements together, then soldering & wiring. So, this is something you can do in a single week end. If you are good at soldering, you may be finish in a few hours.

Wiring is finished. Now, the very interesting part of the project. The software! But you must give me some little more time for it. 

Keep doing!