I have been using an Atmel microcontroller for my robot. It works fine, but is there a better chip out there? The chip isn't powerful enough because UART is difficult to set up, requires extra hardware, and the chip isn't fast enough to do trig table look ups in real time while doing something else. I want to make a line follower that can extinguish fires for RoboRave (Northern NM, by Intel plant). I want to have an arm to hold the fire extinguisher, which requires lots of math, and it needs to find its way to the fire inside a maze thing. There are walls that you can't see through. So that requires math too. So 8 Mhz isn't going to cut it, and I would like a chip with more memory, to add in more functions. It needs to be fast (only 3 minutes to do it in), it needs to be accurate (extinguish a candle without knocking it over or touching it), it needs to have UART functions to use with UART devices, and it needs to have enough in and out ports to run 8 sensors and 4 DC motors with my special 1-line input IC h-bridge I made.
Oh, and by the way, I only know a little C, so a good programming environment is a must. An IDE that doesn't require me to know the special library commands for the chip is preferable.
For RoboRave the chip must be open source, so no proprietary IDE's, software, etc. The chip should be SOIC so I can use a standard socket to put the chip in. I hate etching boards after all, and am too cheap to pay out. Also I don't like the PCB design software.
Well if there is a chip, I'm sure some genius at Cemetech will know the answer.... Thanks in advance!
Exactly which micro are you using now? I'd think something like an ATMega at 20 MHz would have enough power to do what you're doing- it's just a matter of upping your clock.
adept wrote:
I have been using an Atmel microcontroller for my robot. It works fine, but is there a better chip out there? The chip isn't powerful enough because UART is difficult to set up, requires extra hardware, and the chip isn't fast enough to do trig table look ups in real time while doing something else. I want to make a line follower that can extinguish fires for RoboRave (Northern NM, by Intel plant). I want to have an arm to hold the fire extinguisher, which requires lots of math, and it needs to find its way to the fire inside a maze thing. There are walls that you can't see through. So that requires math too. So 8 Mhz isn't going to cut it, and I would like a chip with more memory, to add in more functions. It needs to be fast (only 3 minutes to do it in), it needs to be accurate (extinguish a candle without knocking it over or touching it), it needs to have UART functions to use with UART devices, and it needs to have enough in and out ports to run 8 sensors and 4 DC motors with my special 1-line input IC h-bridge I made.
Oh, and by the way, I only know a little C, so a good programming environment is a must. An IDE that doesn't require me to know the special library commands for the chip is preferable.
For RoboRave the chip must be open source, so no proprietary IDE's, software, etc. The chip should be SOIC so I can use a standard socket to put the chip in. I hate etching boards after all, and am too cheap to pay out. Also I don't like the PCB design software.
Well if there is a chip, I'm sure some genius at Cemetech will know the answer.... Thanks in advance!


It seems to me that you're biting off more than you can chew. If you are serious about building this robot you need to learn C and all of the "special library commands". Do you happen to have a Comp Sci/programmer friend that can help you out on this project?

It would appear to me that you kinda know what you're doing when it comes to the hardware side of this project; if you're looking for a powerful, easy to use platform I'd suggest looking into mbed and the Arduino Mega. As far as having a SOIC-packaged chip, are you sure you're not thinking of DIP? AFAIK there isn't a standard "socket" for SOIC (but I have seen SOIC->DIP adapter boards). I would imagine that since you are adverse to designing your own PCB (which really is quite simple with Eagle and not too expensive to get your own PCBs made) you might want to build everything on perfboard and mount it onto your robot's chassis.
I agree that it sounds like you're taking on a fairly big challenge for someone who's new to the field. How do you plan to detect the candle accurately enough to extinguish? What are you using for machine vision?
Quote:

KermMartian
Posted: 31 Jul 2010 04:48:38 pm Post subject:
I agree that it sounds like you're taking on a fairly big challenge for someone who's new to the field. How do you plan to detect the candle accurately enough to extinguish? What are you using for machine vision?

I plan to detect the infrared radiation given off by the candles as my main sensor. Maybe another one for edge detection.
Quote:


Ultimate Dev'r
Posted: 31 Jul 2010 11:26:57 am Post subject: Re: Robot Microcontroller
adept wrote:
I have been using an Atmel microcontroller for my robot. It works fine, but is there a better chip out there? The chip isn't powerful enough because UART is difficult to set up, requires extra hardware, and the chip isn't fast enough to do trig table look ups in real time while doing something else. I want to make a line follower that can extinguish fires for RoboRave (Northern NM, by Intel plant). I want to have an arm to hold the fire extinguisher, which requires lots of math, and it needs to find its way to the fire inside a maze thing. There are walls that you can't see through. So that requires math too. So 8 Mhz isn't going to cut it, and I would like a chip with more memory, to add in more functions. It needs to be fast (only 3 minutes to do it in), it needs to be accurate (extinguish a candle without knocking it over or touching it), it needs to have UART functions to use with UART devices, and it needs to have enough in and out ports to run 8 sensors and 4 DC motors with my special 1-line input IC h-bridge I made.
Oh, and by the way, I only know a little C, so a good programming environment is a must. An IDE that doesn't require me to know the special library commands for the chip is preferable.
For RoboRave the chip must be open source, so no proprietary IDE's, software, etc. The chip should be SOIC so I can use a standard socket to put the chip in. I hate etching boards after all, and am too cheap to pay out. Also I don't like the PCB design software.
Well if there is a chip, I'm sure some genius at Cemetech will know the answer.... Thanks in advance!


It seems to me that you're biting off more than you can chew. If you are serious about building this robot you need to learn C and all of the "special library commands". Do you happen to have a Comp Sci/programmer friend that can help you out on this project?

It would appear to me that you kinda know what you're doing when it comes to the hardware side of this project; if you're looking for a powerful, easy to use platform I'd suggest looking into mbed and the Arduino Mega. As far as having a SOIC-packaged chip, are you sure you're not thinking of DIP? AFAIK there isn't a standard "socket" for SOIC (but I have seen SOIC->DIP adapter boards). I would imagine that since you are adverse to designing your own PCB (which really is quite simple with Eagle and not too expensive to get your own PCBs made) you might want to build everything on perfboard and mount it onto your robot's chassis.

I don't feel like I have enough time to REALLY learn C before April. Even if I find time, which I probably can't, I would have a difficult time learning the libraries that control the chips functions. Propeller chips look really nice, but from what I read in the product description , it uses propeller assembly, which would drive me nuts. The hardware is the easy part. Programming is EVERYTHING in robots. Bad programming will get you nowhere, even with the best robot, and good programming is hard to do.
Arduinos are open source indeed, with lots of support, but it uses the same AVR I have been using. The whole purpose of this question was to see if there is a better brain for the bot, if you know what I mean.

I would like to know now though, what everyone thinks of the Axon by SoR. I think it is WAY overpowered for my purpose, and its expensive. But is there something like it out there, just less UART, less Analog, and less Digital I/O? Most importantly for less money. The limit is $1100 dollars. Plenty of money if you ask me! I have the chassis all made out, and the arm has a left-right motor to turn the arm, a up-down to adjust the height, and another left-right because I feel it will give more flexibility. Then I have 4 of my 1-line-input-8-transistor-h-bridges. These give you control of larger motors without using multiple inputs. So that will be a total of 7 outputs. I need 1 UART for my USB or Bluetooth dongle. Then I have 8 emitter-detector pairs to detect the line, possibly 2 Sharp IR vision sensors, and some form of heat detection. I'm open for suggestions on doing that! Maybe photoresistors... IR.... anything! So that will be about 12 sensors, and I haven't picked brands yet, so it could end up Analog or Digital. An ATmega8 doesn't cut it on the demanding specs I need.

On top of all this, I need to have it DONE by April! I have marching band to do all semester, so I have about 100 hours of robot plan, build, and program this semester. That isn't much time when you think of all the engineering I have to do...

Anyway, if this doesn't even exist, I would be happy to lower my goal in the competition, and try to do my best with whats available and cheap. Most people in the competition spend more time than what I and my team have.

Well, be back next week to read this, after band camp is over...
adept wrote:
I plan to detect the infrared radiation given off by the candles as my main sensor.
Err, by a single sensor? How are you going to accurately localize it? Is the IR sensor going to be scanning, are you going to use a pair of IR sensors with a differential algorithm?
Quote:
I don't feel like I have enough time to REALLY learn C before April. Even if I find time, which I probably can't, I would have a difficult time learning the libraries that control the chips functions. Propeller chips look really nice, but from what I read in the product description , it uses propeller assembly, which would drive me nuts. The hardware is the easy part. Programming is EVERYTHING in robots. Bad programming will get you nowhere, even with the best robot, and good programming is hard to do.
Arduinos are open source indeed, with lots of support, but it uses the same AVR I have been using. The whole purpose of this question was to see if there is a better brain for the bot, if you know what I mean.


8 months is plenty of time to learn C; you could probably learn enough C for your needs in a week if you wanted to.

As for the Propeller platform, it's built more for raw parallel processing power and doesn't come with too many hardware peripherals, so a lot of whatever peripherals you'd need in a robot you'd have to code yourself in either ASM or SPIN, which would require a considerable amount of time and skill to do (unless you can find code that someone else already wrote).

The reason I suggested the Arduino platform was because of its portability, ridiculously easy-to-use libraries and massive collection of example designs to learn from. Here are some links you may want to peruse:
http://arduino.cc/en/Tutorial/HomePage
http://www.arduino.cc/en/Reference/Libraries
http://arduino.cc/en/Reference/Extended
Ultimate Dev'r wrote:
8 months is plenty of time to learn C; you could probably learn enough C for your needs in a week if you wanted to.
If you're used to object-oriented or structural programming. I think it would take longer to self-teach otherwise.

Ultimate Dev'r wrote:
As for the Propeller platform, it's built more for raw parallel processing power and doesn't come with too many hardware peripherals, so a lot of whatever peripherals you'd need in a robot you'd have to code yourself in either ASM or SPIN, which would require a considerable amount of time and skill to do (unless you can find code that someone else already wrote).

The reason I suggested the Arduino platform was because of its portability, ridiculously easy-to-use libraries and massive collection of example designs to learn from. Here are some links you may want to peruse:
http://arduino.cc/en/Tutorial/HomePage
http://www.arduino.cc/en/Reference/Libraries
http://arduino.cc/en/Reference/Extended
Most heartily agreed, especially for beginning programmers / roboticist like the OP.
Kerm:
My plan was to use the Sharp IR detector. I have seen some of the things you can do with it, and it looks powerful enough. The guy at SoR used it for edge detection. It has 2 different parts to it though, like 2 eyes. It probably is scanning.
UltDev:
I know a little C already, and can do some programs. I am not using any code when I write a program like this (Just pretend the header is there...):
main()
{
int tax;
int cost;
int total;
cout << "Cost: "; cin >> cost; cout >> "\n";
cout << "Tax: "; cin >> tax; cout >> "\n";
total=((tax*0.01)*cost)+cost;
cout << "Total: "; cout << total; cout << "\n";
ret 0;
}
But I don't feel knowing that much C is going to help me in programming with libraries designed for a particular chip that I haven't even picked yet.
BTW, I have marching band and driver's ed. So 75 hours is about the maximum time I have. Maybe 8 hours on a few weekends, just before I play for a game. My team has more time though, but I don't know how much. So learning C must be easy enough for me to do VERY quickly, a week is pushing it!

Finally, all my team knows is BASIC stamps, and I think that is a stupid way to make a robot. You don't learn half as many life lessons in basic, I should know, because I learned BASIC when I was 8, and it has less power than a lawnmower next to the Ferrari known as C!

But Basic Stamps are always a backup plan if everything goes wrong with my search...
Well, input, output, and math are certainly a good start; next you need to learn about functions (subroutines), then objects and object-oriented techniques. C/C++ is absolutely miles above BASIC for powerful programming like this. Do you have a link to information or a datasheet about this IR detector?
Kerm, here is a link: http://www.sparkfun.com/commerce/product_info.php?products_id=8958
That is what I'm looking at. I don't really know exactly the limits of the device and what it can do.
I don't know that much about functions, and that's just a console application, but what do you expect from an amateur like me? I can write anything in the world you asked me too in BASIC, but when it comes to C or Assembly, just math and input output is what you get. If you can think of a better way to find a fire, I'd love to hear about it.
adept wrote:
Kerm, here is a link: http://www.sparkfun.com/commerce/product_info.php?products_id=8958
That is what I'm looking at. I don't really know exactly the limits of the device and what it can do.
Ah, good thing that you showed me that; that's not what you want at all. That is an infrared emitter/receiver pair used to do range-finding of things that don't themselves emit infrared radiation.
So what could I use to interpret infrared light for finding the fires? Just a detector, not an emitter, or am I just confused on how fires work?
adept wrote:
So what could I use to interpret infrared light for finding the fires? Just a detector, not an emitter, or am I just confused on how fires work?
Aye, you want just a detector. I was thinking that a pair of detectors might be good. If you separate them by a foot or so, you can check the difference between them. If the left one is detecting stronger IR, you turn towards the left until they're equal. If the right one is detecting stronger IR, you turn towards the right until they're equal. If they both are detecting no or very weak IR, you navigate the maze. If they're both detecting very very strong IR, you back up a bit and spray your fire extinguisher. Razz
adept wrote:
UltDev:
I know a little C already, and can do some programs. I am not using any code when I write a program like this (Just pretend the header is there...):
main()
{
int tax;
int cost;
int total;
cout << "Cost: "; cin >> cost; cout >> "\n";
cout << "Tax: "; cin >> tax; cout >> "\n";
total=((tax*0.01)*cost)+cost;
cout << "Total: "; cout << total; cout << "\n";
ret 0;
}


Actualy that's C++, but close enough Razz

Quote:
But I don't feel knowing that much C is going to help me in programming with libraries designed for a particular chip that I haven't even picked yet.


C is going to be a HUGE help; as a beginner you only need to focus on the basic syntax and structure of C programs (learn your data types, scopes, creating functions & passing data between them, structs, etc.), then you simply read up on the documentation of whatever library you want to use (this is why I've suggested using an Arduino; a good deal of the code is abstracted. For example, if I wanted to add serial communications to an Arduino, I would just hook up one of the Arduino's UARTs to a serial port on my computer, run PuTTY on my computer to listen to the data from the Arduino's UART that we're using, and from the Arduino's side I can upload and run this sketch:


Code:

/* Source: http://www.ladyada.net/learn/arduino/lesson4.html
 * Hello World!
 *
 * This is the Hello World! for Arduino.
 * It shows how to send data to the computer
 */


void setup()                    // run once, when the sketch starts
{
  Serial.begin(9600);           // set up Serial library at 9600 bps
 
  Serial.println("Hello world!");  // prints hello with ending line break
}

void loop()                       // run over and over again
{
                                  // do nothing!
}


And it'll print "Hello world!" on PuTTY's console. Very simple.

You should go back and re-read the links I sent you in my last post, esp. the tutorials, along with these new links:
http://www.ladyada.net/learn/arduino/
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1233203563
http://www.windmeadow.com/node/45 <-- This guy's already built what you're trying to build with an Arduino

Quote:
BTW, I have marching band and driver's ed. So 75 hours is about the maximum time I have. Maybe 8 hours on a few weekends, just before I play for a game. My team has more time though, but I don't know how much. So learning C must be easy enough for me to do VERY quickly, a week is pushing it!


By "a week" I mean an hour or two a day practicing, which should be doable if you commit yourself to it.

Quote:
Finally, all my team knows is BASIC stamps, and I think that is a stupid way to make a robot. You don't learn half as many life lessons in basic, I should know, because I learned BASIC when I was 8, and it has less power than a lawnmower next to the Ferrari known as C!

But Basic Stamps are always a backup plan if everything goes wrong with my search...


If you're really that pushed for time and the rest of your team is already familiar with BASIC Stamps, then why are you looking for an alternative platform?
Quote:
If you're really that pushed for time and the rest of your team is already familiar with BASIC Stamps, then why are you looking for an alternative platform?


Just because we never win the contest, we just have fun doing all the building, design, and work. I think we would do better if we moved away from what everybody else is doing and tried something new. We're never going to get the prize if we never try something new, right?

The arduino is a good choice. Everybody I've asked says that it can do what I want just fine. Maybe I have the whole thing wrong in my head. I did make my own development board last time... And it was lots of work and frustration. Then in the end, I ended up improving to complete the project, and didn't stick to the plan. That isn't something I want to do, and as I've said, I don't have time for mistakes. Planning is critical to success.

Maybe I should do a poll here to see what everybody thinks. I'll pick between what suggestions I've gotten and start one. Problem is, I don't know how. Kerm could tell me...

The RoboRave website is down right now, but I'm assuming the rules and stuff are the same. All they have is a screen that says when the site will be up with the rules and everything for the contest.

BTW, if I use the Axon and write a tutorial about the robot I make, I could enter it into the SoR tutorial contest and make another few hundred bucks. Enter the same thing into as many contests as possible, and maybe, if the design is good, it will more than pay for itself.
adept wrote:
Quote:
If you're really that pushed for time and the rest of your team is already familiar with BASIC Stamps, then why are you looking for an alternative platform?


Just because we never win the contest, we just have fun doing all the building, design, and work. I think we would do better if we moved away from what everybody else is doing and tried something new. We're never going to get the prize if we never try something new, right?
An excellent point, and I'm sure very much in the spirit of the competition.

adept wrote:
The Arduino is a good choice. Everybody I've asked says that it can do what I want just fine. Maybe I have the whole thing wrong in my head. I did make my own development board last time... And it was lots of work and frustration. Then in the end, I ended up improving to complete the project, and didn't stick to the plan. That isn't something I want to do, and as I've said, I don't have time for mistakes. Planning is critical to success.
But on the other hand, you don't want to cripple yourself by adhering religiously to a plan that needs tweaking and adjustment over the course of your work on the robot.

adept wrote:
Maybe I should do a poll here to see what everybody thinks. I'll pick between what suggestions I've gotten and start one. Problem is, I don't know how. Kerm could tell me...
You can edit your first post, or just create a new topic. Your call; a new topic is likely to get more votes.

adept wrote:
The RoboRave website is down right now, but I'm assuming the rules and stuff are the same. All they have is a screen that says when the site will be up with the rules and everything for the contest.

BTW, if I use the Axon and write a tutorial about the robot I make, I could enter it into the SoR tutorial contest and make another few hundred bucks. Enter the same thing into as many contests as possible, and maybe, if the design is good, it will more than pay for itself.
That sounds like a good goal, although don't count on winning that SoR tutorial contest; I bet they get a ton of solid submissions, no?
SoR didn't get hardly any into the contest. It was kind of depressing when I found out it ends on August 30th. I can't make a robot that fast!
I'll make the new topic. Hope lots of people vote. The more results, the more accurate the conclusion!
Sorry it took so long to respond, between band and school and driver's ed, I didn't find much time. Sad I'm good tonight, no AP homework for the first night in a long time. I'm practically asleep right now. Feels like I never sleep.
That's fair and understandable, and I hardly ever sleep myself. Laughing Sorry to hear that you won't be able to make the deadline.
adept wrote:
SoR didn't get hardly any into the contest.
What? You mean they hardly got any entries?
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement