designing a specialized robot controller

Status
Not open for further replies.

vreg

Member level 4
Joined
Oct 16, 2012
Messages
70
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,288
Visit site
Activity points
1,935
Until now I've been using Arduino Mega boards for interfacing sensors and controlling motors of my robot.
Would it be possible to design a robotic controller board using any specific microcontroller, so that I can have total control over which pins are used and their functionality. Also it would be easier to add any fixed peripherals that I might need and would be an interesting learning project.

I would like to know how would I program the microcontroller, burn the code and create the required libraries? Also how add serial communication, sd card for loading os, etc..

Please suggest some resources.
 

Hello!

Yes, it's possible to design I have made that kind of board, but I'm not sure it fully fits your needs, and you
may want to design it yourself, so I'm not sure this is for you.
Charcteristics:
- Simultaneous drive of 6 servos and 4 DC motors using hardware PWM (therefore CPU works only to change the
parameters and is usually asleep)
- DC motor max current 700 mA (not tried yet, the motors I use draw only 2 ~ 300 mA).
- SD card
- Huge program flash (256 k)
- Onboard Bluetooth (BT 4.0 low energy, also known as BLE or smart bluetooth)
As for the software:
- Sample programs in C showing how to drive a DC motor with hardware PWM (already online)
- Same for servos (also online)
- Sample programs for bluetooth communication (in the pipeline).
- iPhone application (one will be downloadable, some source code will be online)
- Android application (same as for iPhone)

By the way, are you sure you need an OS? I'm using a kind of self made OS in which you can register, execute,
prioritize, suspend tasks. Although it would be too much to call this an OS, it is more than enough for simple
and predictible tasks.

As an example, I have made a small car controlled by iPhone (search in my other messages with keyword
= BlueTooth, and you will find it).

Dora.
 
Last edited:

Hi,
Can you suggest some resources to start working... how did you go about doing building it... first steps to do before I can think about doing high level stuff like sd card interface and os....
With the arduino you simply upload code through the usb AtoB cable, how do I get the microcontroller up and running with the code, add serial communication functionality, assign pins, etc.?
Thanks.
 

Hello!

Arduino is a very good platform for people who don't want to bother with hardware
and low level drivers.
In fact, I have been working with TI products for a while, I have everything (compiler,
emulator, etc...) so I'm not really aware of what other makers do.
A recent move is to provide development boards that include an emulator.
If you build something by yourself, you should start with an external emulator,
therefore keeping your hardware to the strict minimal set.
You may be interested in starting with TI's MSP430 launchpad. The board itself
is very cheap, and one advantage is that you can use this board as an emulator
for your own board when you build one. It is delivered with an extra chip, and therefore
you can wire your own hardware (I would say less than 20 wires to solder), and
you will have your self designed system working.

Material:
1. 1 launchpad (about 10 euros)
2. 1 universal PCB
3. 1 DIP chip socket
4. 1 crystal (32k) with the proper load caps.
5. 1 led
6. 1 resistor

What to do:
1. Use the launchpad alone and write a LED blinker program
2. Wire above 2 to 6
3. Remove the jumpers of the launchpad in order to use it as an emulator
4. Connect your own board to the launchpad
5. Recompile and load

-> That's it, you made your first micro controller hardware, a LED blinker.

Add a motor driver, try to add PWM features, plug a motor, try, compile, debug, retry, etc...

Dora.
 

    V

    Points: 2
    Helpful Answer Positive Rating
First decide what it is you want to do
i.e. how many servo's - how many buttons - what sort of display etc.
IE Specify your board
Then look for hardware and only then think about software/compilers.

Dora's suggestions are good. alternatives (possibly better supported) below:

I'd suggest learning C but you could use basic or pascal.
If you're thinking of learning assembler - you dont need to - learn C
and go only into assembler if you absolutely have no choice
(I've never heard of a case of that happening with a good C compiler but who knows)
Dont waste your time with java/android both are rubbish.

(If you're wondering why I say select software last then start advising on software
its because I'm talking about selecting specific languages and compilers last - different
companies have different strengths - the overall approach comes first)

You don't need an OS to control a robot unless you're happy to have
a very inefficient system- in which case you may as well use a PC or tablet.

My advice is to visit Mikro's web site and have a look around their click boards.
Then decide what depth of design you want to do - do you want to design a whole PCB
from scratch or would you rather buy a processor on a PCB with USB and various I/O
you can configure (arduino or something a bit lower level - maybe a PIC based card)
Dont try and do anything but prototype sections on breadboard - robots are noisy
and breadboards should be for prototyping only - and expecting problems when used.

So for hardware and compilers and perfect support and assistance I suggest Mikro
For PCB design I'd say check out Eagle
Just be clear what you want to achieve before spending money.
And remember - toolchains are important - always get the best you can.
 

    V

    Points: 2
    Helpful Answer Positive Rating
Hello!

I fully agree that there are other solutions. I was just talking about what I know best: MSP430.

Before knowing how many motors / servos you need, I think you must just waste (some) money
with the cheapest board you can find.
The advantages of MSP430 launchpad are that you get an extra chip and this chip is a DIP device
that you can easily solder on a universal PCB.

Now I also agree that you shouldn't wast your time with assembler. With today's compilers,
there is almost nothing to gain in working in assembler. What I would recommend: you use a
C compiler, and if you have a very critical part that you want to optimise, then you can pull out
the disassembly window to check what the compiler did. And in some cases you may find ways
to optimise what the compiler has done.

Dora.
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…